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

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

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

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

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

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

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

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

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

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

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

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

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

  • упростить и облегчить обработку конкретных видов информации, таких как строки символов (Snobol), матрицы (APL), логические выражения (Prolog) или базы данных (SQL);
  • стимулировать использование определенных видов программирования, в том числе программ, которые будут понятны людям, не имеющим специального образования (Cobol, Basic), очень больших программ (ADA), объектно-ориентированного программирования (Eiffel, C++, Java, SmallTalk) и визуального программирования, при котором пользователь связывает одну пиктограмму с другой и применяет таблицы стилей для описания их взаимодействия (Salsa, Visual Basic, Visual C++);
  • моделировать картину реального мира, в том числе случайные события (Simula, GPSS).

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

Многие языки программирования стали достоянием истории (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#.


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

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

НазваниеГод созданияОсновная область примененияКомментарии
ADA1980-83Общие приложенияИспользуется МО США
Algol1958Наука 
APL60-еНаукаИспользует криптосимволы, матричные операции
Basic1963ОбразованиеПервый продукт Microsoft: интерпретатор Basic
C1972СистемыОригинальный язык Unix с низкоуровневым доступом, высокоуровневые операторы
C++1982СистемыОсновные системы, язык программирования для разработки приложений
Cobol1960Бизнес-
приложения
Излишне многословен
Eiffel1990Общие приложения 
Forth1969Общие приложенияЯзык, ориентированный на работу со стеками и много-потоковую обработку
Fortran1954Наука 
HyperTalk1986Сбор информацииШироко использовался на Apple II
Java1994Web 
JavaScript1994Web 
Lisp1956Информатика, искусственный интеллект(В операторах (используется много) скобок)
Logo1967Образование 
Pascal1968Образование 
Perl1986WebМощный язык описания сценариев для текстовых документов
PL/I1964Общие приложения 
PostScript1982Подготовка документовЯзык, ориентированный на работу со стеками и много-потоковую обработку
Prolog1979Информатика, искусственный интеллект 
RPG1965Бизнес-
отчеты
Циклический генератор отчетов
Smalltalk1972Информатика, искусственный интеллектПервый объектно-
ориентированный язык
Snobol1962Текстовый анализЯзык, оптимизированный для обработки строк
Tcl1990Web 
TeX1978Подготовка документов 
VisualBasic1990Общие приложения 
VisualBasic Script1995Макросы