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

Все многообразие современных языков программирования имеет общую эволюционную историю, поэтому существуют классификации по истории языков программирования («по поколениям»). В каждом новом поколении языки программирования становятся все более высокого уровня.

Рассмотрим одну из таких классификаций.

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

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

Вместе с появлением компьютеров третьего поколения, развитие языков программирования также вступило в новую фазу. Период с середины 50-х до 70-х годов отмечен появлением первых языков программирования высокого уровня. Эти языки впервые позволили ученым (прежде всего, математикам) работать с компьютерами. Языки третьего поколения, такие как С, Pascal и Fortran, состоят из английских слов, например FOR, IF, GOTO, и математических символов. В отличие от языков первого и второго поколений синтаксис в языках третьего поколения не зависит от компьютера, на котором исполняются написанные на них программы. Язык программирования FORTRAN позволял довольно легко определять переменные и использовать для вычислений математические выражения. Для языков высокого уровня, таких как FORTRAN и COBOL, понадобились более быстрые, высокоэффективные компиляторы, поскольку при преобразовании исходного кода, выходные программы получались большими.

Четвертое поколение языков программирования зародилось в конце 70-х, и можно сказать, что их развитие продолжается по сей день. В них достигнут еще больший уровень абстракции. Это такие языки как SQL (структурированный язык запросов для работы с базами данных) или Mathematica и MathCad (языки для сложных математических вычислений и решения научных задач). Эти языки предоставляют программисту гораздо более естественную форму общения с компьютером, но применимы для решения очень ограниченного круга задач. Эти языки существенно уменьшили время разработки ПО и позволили выполнять эту работу даже людям без технического образования, не прибегая к помощи профессиональных программистов. Сегодня для выполнения многих задач программирование как таковое вообще не требуется. Например, появление приложений электронных таблиц (spreadsheets), таких как Microsoft Excel, позволяет обычным пользователям обрабатывать финансовую информацию и управлять большими массивами данных. В 60-х и 70-х годах так просто, без применения языков программирования, использовать возможности компьютеров было невозможно.

Когда пришло пятое поколение языков программирования (это прежде всего сценарные языки), эволюционный путь развития оказался нарушен. Сценарные языки программирования гораздо проще языков четвертого поколения. По сути, все они - языки-интерпретаторы. Это делает сценарные языки идеальными для написания небольших программ, но не для использования в крупных проектах. Кроме того, сценарные языки допускают вольную трактовку правил написания кода, на компьютерном жаргоне они называются «нестрогими». Сценарные языки предназначены для быстрого написания программ - посредников между другими программами, а не самостоятельных приложений. Они подобны клею, что делает их удобными для использования в интернет-приложениях, суть которых как раз и состоит в обмене данными между программами. Изящество языков программирования, так ценимое прежними поколениями разработчиков, здесь принесено в жертву удобству использования. Эти языки получили широкое распространение из-за высокой гибкости и адаптации к нуждам Интернета. Яркие примеры - Perl, применяемый для обмена данными между интернет-сервером и компьютером пользователя, и Python, используемый, помимо прочего, для управления интернет-форумами, Tcl/Tk, awk, C Shell, JavaScript (название JavaScript - не более чем маркетинговый ход, поскольку этот язык никак не связан с Java).

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