Еженедельник "Computerworld", #29, 2000 год // Издательство "Открытые Системы" (http://www.osp.ru/)
Постоянный адрес статьи: http://www.osp.ru/cw/2000/29/030_0.htm

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

Рассел Кей

04.08.2000

Определение
Язык программирования — набор ключевых слов (словарь) и система правил (грамматических и синтаксических) для конструирования операторов, состоящих из групп или строк чисел, букв, знаков препинания и других символов, с помощью которых люди могут сообщать компьютеру набор команд.

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

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

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

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

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

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

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

Различные представления

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

Первым известным языком такого рода стал Fortran (сокращение от Formula Translation — «преобразование формул»), который до сих пор популярен у инженеров и ученых.

Распространение

Существует несколько тысяч языков программирования, но лишь немногие из них используются широко. Языки создавались с различными целями:

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

Многие языки программирования стали достоянием истории (Algol). Другие связываются с конкретными областями деятельности: бизнес (Cobol, RPG), информатика и искусственный интеллект (Lisp, Prolog), обучение программированию (Basic, Pascal), системное программное обеспечение (Си, C++), Web (HTML, Perl, Tcl) и публикации (SGML, PostScript).

Некоторые языки были созданы в расчете на то, что они будут интерпретироваться не компьютером, а другим приложением. Их называют языками описания сценариев (Visual Basic Script, JavaScript) или макроязыками (Rexx, HyperTalk).

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

Наконец, Web породила абсолютно новый спектр языков программирования. HTML и Java — это универсальные языки Web. Tcl — базовый язык для узла www.computerworld.com. Java был разработан для Internet, а Microsoft анонсировала свой новейший язык C#.


Антология языков

(языки, выделенные красным цветом, используются более широко)

Название Год создания Основная область применения Комментарии
ADA 1980-83 Общие приложения Используется МО США
Algol 1958 Наука  
APL 60-е Наука Использует криптосимволы, матричные операции
Basic 1963 Образование Первый продукт Microsoft: интерпретатор Basic
C 1972 Системы Оригинальный язык Unix с низкоуровневым доступом, высокоуровневые операторы
C++ 1982 Системы Основные системы, язык программирования для разработки приложений
Cobol 1960 Бизнес-
приложения
Излишне многословен
Eiffel 1990 Общие приложения  
Forth 1969 Общие приложения Язык, ориентированный на работу со стеками и много-потоковую обработку
Fortran 1954 Наука  
HyperTalk 1986 Сбор информации Широко использовался на Apple II
Java 1994 Web  
JavaScript 1994 Web  
Lisp 1956 Информатика, искусственный интеллект (В операторах (используется много) скобок)
Logo 1967 Образование  
Pascal 1968 Образование  
Perl 1986 Web Мощный язык описания сценариев для текстовых документов
PL/I 1964 Общие приложения  
PostScript 1982 Подготовка документов Язык, ориентированный на работу со стеками и много-потоковую обработку
Prolog 1979 Информатика, искусственный интеллект  
RPG 1965 Бизнес-
отчеты
Циклический генератор отчетов
Smalltalk 1972 Информатика, искусственный интеллект Первый объектно-
ориентированный язык
Snobol 1962 Текстовый анализ Язык, оптимизированный для обработки строк
Tcl 1990 Web  
TeX 1978 Подготовка документов  
VisualBasic 1990 Общие приложения  
VisualBasic Script 1995 Макросы  

Hosted by uCoz