Прикладное программирование

Предисловие

Это пособие основывается на конспектах лекций, которые читались на первых курсах ММФ Новосибирского госуниверситета в течении последних??. Отправной точкой в развитии этого курса являлось пособие «Современные средства и методы программирования», написанное в 19?? году М.М.Бежановой и И.В.Поттосиным, которые в свою очередь стояли у истоков преподавания программирования в НГУ. Понятно, что многое поменялось за это время: появлялись и сходили на нет языки программирования, кардинально повысилась мощность и, что ещё важнее, доступность вычислительных машин, формировались и приобретали первостепенное значение новые области применения. Как следствие, изменялось и представление о профессиональных знаниях, умениях и навыках, которыми должны обладать программисты. Поэтому данный курс не претендует ни на полноту, ни на соответствие последним тенденциям современного программирования, а ставит целью критическое осмысление базовых понятий и их выражение в различных языках программирования. Предполагается, что курс закладывает основу для дальнейшего освоения объектно-ориентированного программирования, методов работы с базами данных, разработки пользовательских интерфейсов, вычислительной математики, машинной графики и многих других областей. С другой стороны, ожидается, что слушатель обладает знаниями в объёме школьного курса «Основы информатики» и соответствующими навыками работы с компьютером и способен самостоятельно написать простые программы.

Одним из самых спорных вопросов, который возникает при постановке подобного курса, является вопрос о выборе языка программирования. Не вдаваясь в детали этого обсуждения, сразу скажем, что в данном курсе это язык С. Однако, ни в коем случае данное пособие не следует рассматриваеть как справочное руководство по языку. Мы считаем, что осваивать конкретный язык образованный программист должен самостоятельно в процессе решения практических задач, пользуясь соответствующей технической документацией. Нам же язык С требуется для демонстрации конструкций и понятий из «лексикона» программирования, а там, где его окажется недостаточно, мы будем привлекать и другие языки, такие как Паскаль, Алгол-60, Фортран, АПЛ, Алгол-68 и пр. Наша задача не столько в том, чтобы в совершенстве освоить конкретный язык или стать компьютерным полиглотом, а в том, чтобы научиться ставить вопрос: «Почему так и как можно было бы по-другому?».

 

Введение

Программирование можно определить как способ заставить кого-то достичь поставленной нами цели. Часто в качестве примера программирования приводят кулинарные рецепты, которые описывают пошаговый процесс приготовления из исходных продуктов некоторого блюда. Программой может служить и математический алгоритм. Например, алгоритм Евклида задаёт последовательность операций, которые достаточно выполнить для нахождения наибольшего общего делителя по двум заданным целым числам. Однако следует иметь в виду, что последовательность и пошаговость не является неотъемлемой чертой программирования. Даже в случае с кулинарным рецептом некоторые операции можно выполнять параллельно. Если же мы в качестве примера программы рассмотрим Правила дорожного движения, целью которых является обеспечение безопасности и избежание заторов на дорогах, то мы заметим, что это в большей степени достигается не явным предписанием того, что и в какой последовательности надо делать, а формулировкой ограничений – того, чего делать не надо. Этот пример демонстрирует и то, что исполнителей программы может быть несколько. К программированию можно отнести описание технологических процессов, рекламу, уставы организаций и многое другое. Но нас в рамках данного курса будет интересовать в первую очередь программирование для компьютера (ЭВМ).

Программирование как вид деятельности может иметь весьма разные аспекты. Условно выделим четыре вида программирования, которые рассмотрим ниже.

Прикладное программирование

Прикладные (или пользовательские) программы составляют конечную и основную цель программирования, поскольку именно они влияют на повседневную жизнь обычных людей. Этим объясняется и огромное многообразие таких программ. Сюда можно отнести, например, текстовые процессоры и электронную почту, игровые программы, бухгалтерские и банковские системы, автомобильные навигаторы, интернет-магазины, встроенные программы управления бытовой техникой и многое-многое другое. Соответственно, основное внимание в прикладном программировании должно уделяться таким вопросам, как

Надёжность, устойчивость: постоянно ломающаяся, «зависающая» программа не представляет никакой ценности для пользователя;

Безопасность, «защита от дурака». Программа может быть не только полезной, но и вредной. Даже если не рассматривать компьютерные вирусы и другое целенаправленное нанесение ущерба, должны быть предусмотрены все возможные пользовательские сценарии, в том числе и «неразумные».

Интуитивность, удобство пользовательского интерфейса. Взаимодействие программы с пользователем должно формулироваться в понятных ему терминах и соответствовать той деятельности, для которой программа используется. Эффективность интерфейса подразумевает, в частности, минимизацию суммарного количества действий, которые необходимы для достижения цели. Понятно, что действия могут различаться по сложности: от простейших – нажатий на клавиши или перемещения курсора, до выбора элемента в длинном неупорядоченном списке.

Эффективность. Программа должна обладать адекватным быстродействием. Адекватность здесь понимается как соответствие времени исполнения и других потребляемых программой ресурсов ожиданиям пользователя. Очевидно, что эти ожидания меняются со временем – по мере развития вычислительной техники там, где раньше пользователи готовы были ждать час, теперь их раздражает задержка в несколько секунд.

Гуманитарные аспекты, к которым можно отнести учёт того, что пользователь может плохо различать цвета, иметь физические проблемы с использованием клавиатуры, не знать иностранных языков и т.п.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: