Эволюция и классификация языков программирования

Дяя самых первых компьютеров, появившихся в 1940—1950-х гг., программирование велось непосредственно в машинных кодах, а основным носителем информации были перфокарты и перфоленты. Программисты обязаны были досконально знать архитектуру машины. Программы были достаточно простыми, что обусловливалось, во-первых, весьма ограниченными возможностями этих машин и, во-вторых, большой сложностью разработки и, главное, отладки программ непосредственно на машинном языке.

Первым этапом развития языков про- АССЕМБЛЕР

граммирования является появление языка -

АССЕМБЛЕР, который обеспечивал возможность символического кодирования машинных команд, т.е. обозначения их с помощью осмысленных названий. Одна команда АССЕМБЛЕРа может представлять собой не одну машинную команду, а целую последовательность.

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

В 1954 г. группой разработчиков ФОРТРАН

во главе с Джоном Бэкусом был создан -

язык программирования ФОРТРАН (FORTRAN — от Formula Translator, т.е. язык для программирования математических расчетов).

Это первый язык программирования высокого уровня. Впервые программист мог по-настоящему абстрагироваться от особенностей машинной архитектуры. Ключевой идеей, отличающей новый язык от АССЕМБЛЕРа, была концепция подпрограмм. Транслятор с ФОРТРАНа в машинные коды был весьма сложной программой, которая в отличие от современных трансляторов не выполняла контроль многих ошибок программиста. Кроме того, генерируемый машинный код был менее эффективен, чем если бы программа изначально писалась на АССЕМБЛЕРе.

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

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

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

<ОБОЛ В 1960 г. был создан язык программиро-

- вания КОБОЛ (COBOL — Common Business-Oriented Language). Он задумывался как язык для создания коммерческих приложений. На КОБОЛе написаны тысячи прикладных коммерческих систем. Отличительной особенностью языка является возможность эффективной работы с большими массивами данных. Популярность КОБОЛа столь высока, что даже сейчас, при всех его недостатках, появляются его новые диалекты и реализации. Например, недавно появилась реализация КОБОЛа для Microsoft.NET.

В 1964 г. в корпорации IBM был создан - язык ПЛ/1 (PL/1 — Programming Language 1), который был призван заменить КОБОЛ и ФОРТРАН в большинстве приложений. Язык обладал исключительным богатством синтаксических конструкций. Однако язык оказался крайне сложным для написания и в особенности отладки программ, поэтому так и не приобрел широкую популярность.

В 1963 г. в Дартмутском колледже БЕЙСИК

был разработан язык программирова--

ния БЕЙСИК (BASIC — Beginners’ All-Purpose Symbolic Instruction Code — многоцелевой язык символических инструкций для начинающих) . Язык задумывался в первую очередь как средство первоначального обучения программированию. БЕЙСИК действительно стал языком, на котором учились программировать несколько поколений. БЕЙСИК был также доступен на ПК, обычно он встроен в ПЗУ.

Так БЕЙСИК завоевал популярность. Он и сегодня самый простой для освоения из десятков языков общецелевого программирования. Было создано несколько мощных реализаций БЕЙСИКа, поддерживающих самые современные концепции программирования (ярчайший пример — Microsoft Visual Basic).

В 1960 г. командой во главе с Петером д^ рол

Науром был создан язык программирова--

ния АЛГОЛ (ALGOL — Algorithmic Language). Этот язык дал начало целому семейству алголоподобных языков (важнейший представитель — ПАСКАЛЬ). В 1968 г. появилась новая версия языка. Она не нашла столь широкого практического применения, как первая версия, но была весьма популярна в кругах теоретиков. Язык обладал многими уникальными на тот момент характеристиками.

Эти языки (ФОРТРАН, КОБОЛ, ПЛ/1, БЕЙСИК, АЛГОЛ и др.) послужили фундаментом для более поздних разработок. Все они представляют одну и ту же парадигму программирования — императивную[1].

В1970 г. Никлаусом Виртом был создал П АСКАЛ Ь

язык программирования ПАСКАЛЬ (PAS--

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

Хотя ПАСКАЛЬ был разработан как язык для обучения программированию, он впоследствии получил широкое развитие и в настоящее время считается одним из самых используемых языков. Отрицательной чертой языка было отсутствие в нем средств для разбиения программы на модули. Никлаус Вирт это осознавал и разработал язык Modula-2 (1978), в котором идея модуля стала одной из ключевых концепций языка. В 1988 г. появилась Modu- la-З, в которую были добавлены объектно-ориентированные черты. Логическим продолжением ПАСКАЛя и Modula являются языки Oberon и Oberon-2. Они характеризуются движением в сторону объектно- и компонентно-ориентированности.

языка является компиляция в код некоей абстрактной машины, для которой затем пишется эмулятор (Java Virtual Machine) для реальных систем (см. далее).

В 1999—2000 гг. в корпорации «Microsoft» был создан язык С#.

Он в достаточной степени схож с Java (и задумывался как альтернатива последнему), но имеет и отличительные особенности. Ориентирован в основном на разработку многокомпонентных интернет-приложений.

В 1983 г. под эгидой Министерства Языки Ada и Ada-95

Обороны США был создан язык Ada -

(в честь первой программистки Ады Лавлейс). Язык замечателен тем, что очень много ошибок может быть выявлено на этапе компиляции. Кроме того, поддерживаются многие аспекты программирования, которые часто отдаются на откуп ОС (параллелизм, обработка исключений). В 1995 г. был принят стандарт языка Ada-95, который развивает предыдущую версию, добавляя в нее объектную ориентированность и исправляя некоторые неточности. Оба этих языка не получили широкого распространения вне военных и прочих крупномасштабных проектов (авиация, железнодорожные перевозки). Основной причиной является сложность освоения языка и достаточно громоздкий синтаксис.

Все перечисленные ранее языки явля- Язь|КИ обработки данных

ются языками общего назначения в том -

смысле, что они не ориентированы и не оптимизированы для использования каких-либо специфических структур данных или для применения в каких-либо специфических областях. Было разработано большое количество языков, ориентированных на достаточно специфические применения. Приведем несколько примеров таких языков.

В 1957 г. была предпринята попытка создания языка для описания математической обработки данных. Язык был назван APL (Application Programming Language). Его отличительной особенностью было использование математических символов и очень мощный синтаксис, который позволял производить множество нетривиальных операций прямо над сложными объектами, не прибегая к разбиению их на компоненты. Широкому применению помешало использование нестандартных символов как элементов синтаксиса.

В 1962 г. появился язык Snobol (а в 1974 г. — его преемник Icon), предназначенный для обработки строк. Синтаксис Icon напоминает С и ПАСКАЛЬ одновременно. Отличие заключается в наличии мощных встроенных функций работы со строками и связанная с этими функциями особая семантика. Современным аналогом Icon и Snobol является Perl — язык обработки строк и текстов, в который добавлены некоторые объектно-ориентированные возможности.

  • [1] О парадигмах программирования рассказывается в гл. 6.
 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >