Из истории языков программирования

ВВЕДЕНИЕ В ОБЪЕКТНО-ОРИЕНТИРОВАННОЕ ПРОГРАММИРОВАНИЕ

Любая методология программирования имеет свою концептуальную основу. Эволюция языков программирования направлена на ускорение процесса создания надежных программных средств.

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

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

К началу 70-х годов уже было очевидно, что программные проекты стали слишком сложными для успешного проектирования, кодирования и отладки. Кроме того, программисты, решающие сложные задачи, столкнулись с проблемой разрастания количества и размера программ до такой степени, что дальнейший процесс разработки становился практически неуправляемым. Никто из разработчиков не мог с уверенностью сказать, что созданный программный продукт всегда выполняет то, что требуется, и что он не выполняет ничего такого, что не требуется. Таким образом, стала проблема коренного изменения подходов к созданию больших программных комплексов.

Исходя из этих проблем, лучшими программистами 70-х годов (Дейкстра, Вирт, Дал, Хоар, Йордан, Константин, Майерс и другие) были разработаны строгие правила ведения проектов, которые получили название структурной методологии.

Важным этапом становления новых методологий стали международные конференции по программированию в 1968 и 1969 годах. На второй из них Эдсгер Дейкстра (Dijkstra) впервые использовал термин «структурное программирование» и предложил принципиально новый способ создания программ. Он рассматривал программу как совокупность иерархических абстрактных уровней, которые позволяли четко структурировать программу, что улучшило ее понимаемость программистами, выполнять доказательства ее корректности и тем самым повышать надежность функционирования программы и сокращать сроки ее разработки.

Еще одним толчком к изменению способа программистского мышления стало опубликованное письмо Дейкстры редактору одного из научных издательств, которое было озаглавлено «Оператор GOTO нужно считать вредным». Это письмо вызвало острую полемику среди программистов того времени, но в итоге победило все-таки структурное мышление, которое кроме Дейкстры активно поддерживали профессор Цюрихского технического университета Вирт (Wirth) и профессор Оксфордского университета Хоар (Hoare). Одним из результатов полемики было доказательство того, что любая программа может быть написана с использованием только простой последовательности операторов, итеративной конструкции типа while и конструкции выбора case, а оператор goto не является необходимой управляющей конструкцией в структурном программировании. К сожалению, споры об операторе goto имели один отрицательный «побочный эффект» – довольно часто программирование без оператора goto стало отождествляться со всем структурным программированием.

Однако цели структурного программирования намного глобальнее и серьезнее, а именно:

· Обеспечить дисциплину программирования;

· Улучшать читабельность программы. Читабельность улучшается, если придерживаться следующих правил:

- избегать использования языковых конструкций с неочевидной семантикой;

- стремиться к локализации действия управляющих конструкций и использования структур данных;

- разрабатывать программу так, чтобы ее можно было читать от начала до конца без управляющих переходов на другую страницу;

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

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

· Уменьшать время и стоимость программной разработки, что достигается в том случае, если каждый программист команды разработчиков становится способным писать и отлаживать большее количество программного кода, чем раньше. То есть, когда повышается производительность труда программиста.


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



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