Современные языки программирования

Теоретический блок

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

Первое поколение – вплоть до конца 50-х годов программирование сводилось к детальному кодированию длинных последовательностей команд двоичными, восьмеричными или шестнадцатеричными числами. Эта деятельность называлась кодированием в отличие от программирования, к которому относилась более трудная задача – конструирование алгоритмов.

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

С появлением более быстрых вычислительных машин с большим объемом памяти трудности кодирования настолько возросли, что стала очевидна неэффективность выполнения этой работы человеком.

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

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

Эти трудности привели к созданию так называемых языков программирования «высокого уровня».

Третье поколение – самое «обширное» поколение языков. Это универсальные языки высокого уровня, с помощью которых удается решать задачи из любых областей. Начало оно ведет с 1955 года с появлением языка ФОРТРАН (FORmulaTRANslator – переводчик формул), первого компилируемого языка, созданного Джимом Бэкусом в 50-е годы. ФОРТРАН продолжает активно использоваться во многих организациях и в сегодняшние дни.

В 1960 году появился АЛГОЛ (ALGOritmicLanguage- алгоритмический язык). Он был призван заменить Фортран, но из-за более сложной структуры не получил широкого распространения.Однако он долгое время пользовался определенной популярностью в программистских кругах.

1965 году был создан один из наиболее популярных и поныне языков программирования – БЭЙСИК (BASIC – Beginner’sAllpurposeSymbolicInstructionCode – дословно: «многоцелевой код символической инструкции для начинающих»). Широкое распространение БЭЙСИК получил на персональных компьютерах. Он создавался в качестве учебного языка и очень прост в изучении. На нынешний день существует несколько достаточно мощных версий этого языка.

В 1970 году Никлаус Вирт создал язык Pascal (Паскаль), во многом напоминающий Алгол, но в нем ужесточен ряд требований к структуре программы и имеются возможности, позволяющие успешно применять его при создании крупных проектов. Этот язык обладает весьма развитыми средствами, особенно те его версии, которые используются в настоящее время.

В 1980 году появился язык ADA (Ада) – один из самых мощных языков программирования. Он принят в качестве основного языка на вычислительных центрах министерства обороны США. Структура самого языка похожа на Паскаль. В нем имеются средства разграничения доступа к различным уровням спецификаций, доведена до предела мощность управляющих конструкций. Назван по имени леди Огасты Ады Байрон, дочери английского поэта Байрона.

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

Четвертое поколение языков – это языки управления программным обеспечением, или, как их еще называют, «генераторы программ». Для примера можно привести такие языки, как Clipper, dBase, SuperCalc.

Все названные языки являются процедурными, в противоположность языкам «Пятого поколения», которые являются декларативными. Основные языки этого поколения – LISP – язык обработки списков /ЛИСП/ и PROLOG – программирование в терминах логики /ПРОЛОГ/.

ЛИСП появился в 1961 году. Он ориентирован на структуру данных в форме списка и позволяет организовывать эффективную обработку больших объемов текстовой информации. LISP является очень мощным и многообразным языком, но он может оказаться достаточно большим и громоздким. ПРОЛОГ создан в 1973 году Аланом Колмероэ. Программа на этом языке строится из последовательности фактов и правил, а затем формулируется утверждение, которое Пролог будет пытаться доказать с помощью введенных правил. При решении задач на этих языках от программиста требуется описать, ЧТО надо сделать, а не КАК это следует делать. Об этом позаботится сама система (ЛИСП или ПРОЛОГ).

Таким образом, все языки программирования можно разделить на три категории: языки НИЗКОГО уровня – машинные языки и языки Ассемблера, то есть языки первого и второго поколения; ВЫСОКОГО уровня – все процедурные языки, то есть языки третьего и четвертого поколений и СВЕРХВЫСОКОГО уровня – языки пятого поколения.

Говорят, что программирование – это искусство получения ответов от машины, и, если мы решили применить компьютер, нам предстоит пройти три основных этапа:

1. Ясно и точно установить, что же должно быть сделано.

2. Установить точно определенную последовательность действий, ведущую к желаемому результату, то есть, предложить алгоритм.

3. Выразить алгоритм в виде понятном для машины.

Первый этап носит название СИСТЕМНЫЙ АНАЛИЗ. Второй этап – КОНСТРУИРОВАНИЕ ПРОГРАММЫ. Третий этап – ПРОГРАММИРОВАНИЕ.

Происхождение самого термина «алгоритм» связано с математикой. Это слово происходит от Algorithmi – латинской транскрипции имени Мухаммеда аль-Хорезми, выдающегося математика средневекового Востока. В своей книге "Об индийском счете" он сформулировал правила записи натуральных чисел с помощью арабских цифр и правила действий над ними столбиком. В дальнейшем алгоритмом стали называть точное предписание, определяющее последовательность действий, обеспечивающую получение требуемого результата из исходных данных. Алгоритм может быть предназначен для выполнения его человеком или автоматическим устройством.

Чтобы не было недоразумений, введем термины, которые будем применять в дальнейшем.

Задача характеризуется известными величинами (исходными данными), отношениями между ними и величинами или отношениями, значения которых неизвестны и должны быть определены в результате решения проблемы.

Действие – одно из важнейших понятий. Это нечто, что имеет конечную продолжительность и приводит к желаемому результату.

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

Инструкция – описание действия с помощью некоторого языка или системы формул.

Процесс (вычисление) – действие, которое можно разложить на составные части. Если эти части во времени следуют строго друг за другом и никакие две части не выполняются одновременно, то процесс называется последовательным.

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

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

Алгоритм – это и есть совокупность строгих предписаний-приказов для исполнителя, выполняя которые он (исполнитель) может достичь цели, в частности решить задачу, составив программу на языке программирования.

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

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

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


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



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