Определение
Язык программирования — набор ключевых слов
(словарь) и система правил (грамматических и синтаксических) для конструирования
операторов, состоящих из групп или строк чисел, букв, знаков препинания и других
символов, с помощью которых люди могут сообщать компьютеру набор команд.
По-хорошему, компьютер заслуживает только одного определения — тупая железяка. Он понимает только две вещи — ноль и единица, что составляет бит информации. Однако он манипулирует этими битами так быстро, что способен выполнять полезные задачи. Фактически процесс программирования самых первых компьютеров сводился к тому, что оператор набирал последовательность нулей и единиц с помощью переключателей на передней панели.
Понятно, что в то время и речи не было о дружественности к пользователю и приемлемой эффективности. Языки программирования были созданы для того, чтобы дать людям возможность понять самим, что же они велят делать компьютеру.
Языки программирования реализуют несколько важных идей. Они представляют операторы в более понятном для пользователей виде, что существенно упрощает процесс программирования. Нам, для того чтобы разделить одно число на другое, достаточно нескольких символов, но компьютеру для этого требуется выполнить десятки операций.
Кроме того, языки программирования позволяют присвоить осмысленные имена таким объектам, как переменные и константы, благодаря чему программы значительно проще создавать, они становятся понятнее и их легче отлаживать.
На самом нижнем уровне нули и единицы машинного кода вообще нельзя назвать языком. Самым первым настоящим языком программирования был ассемблер, и для каждого типа компьютера он был свой.
Ассемблер использовал аббревиатуры для общих операций, таких как 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 | Макросы |