Найти в Дзене

История языков программирования часть 2

Вот и 2-ая часть постараюсь затронуть как можно больше языков программирования, начнем со старых языков, которые знают только люди, которые профессионально этим занимаются, до языков,которые у всех на слуху. В прошлой части мы остановились на языке COBOl, далее по списку идет у нас ALGOL. В 1958 году на недельной конференции в ETH (Цюрих, Швейцария) был разработан Алгол как универсальный язык программирования для широкого круга применений, а затем доработан комитетом, созданным Международной федерацией по обработке информации. В комитет вошёл ряд ведущих европейских и американских учёных и инженеров-разработчиков языков.В ходе работы возникали большие трудности непринципиального характера. Так, например, один из членов комитета вспоминал «десятичную бурю» — крайне резкую дискуссию между американскими и европейскими участниками по поводу того, какой именно символ должен быть использован в качестве разделителя целой и дробной частей числа. Американцы настаивали на точке, европейцы же тре

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

В прошлой части мы остановились на языке COBOl, далее по списку идет у нас ALGOL.

В 1958 году на недельной конференции в ETH (Цюрих, Швейцария) был разработан Алгол как универсальный язык программирования для широкого круга применений, а затем доработан комитетом, созданным Международной федерацией по обработке информации. В комитет вошёл ряд ведущих европейских и американских учёных и инженеров-разработчиков языков.В ходе работы возникали большие трудности непринципиального характера. Так, например, один из членов комитета вспоминал «десятичную бурю» — крайне резкую дискуссию между американскими и европейскими участниками по поводу того, какой именно символ должен быть использован в качестве разделителя целой и дробной частей числа. Американцы настаивали на точке, европейцы же требовали применять традиционную для Европы запятую. Чтобы избежать конфликтов по мелким вопросам, было решено, что описание Алгола будет трёхуровневым, включающим уровень описаний, публикаций и реализации. Мелкие вопросы, типа выбора между точкой и запятой или используемого алфавита, были вынесены на второй-третий уровень, что позволило относительно быстро решить принципиальные вопросы. На уровне публикаций, согласованном позже, допускалось использование национальных ключевых слов и стандартов представления данных (в том числе и десятичной точки), уровень реализации определял язык совершенно строго — согласно ему должны были строиться трансляторы.

Вначале предлагавшееся название ALGOL (ALGOrithmic Language) было отвергнуто. Но поскольку оно стало общеупотребительным, официальное имя IAL пришлось впоследствии изменить на ALGOL 58. Новая версия появилась в 1960 г., и ALGOL 60 (с небольшими изменениями, сделанными в 1962 г.) с 60-х и до начала 70-х гг. прошлого века был стандартом академического языка программирования. У нового языка нашлись как приверженцы, так и критики. В США Алгол приняли холодно, он был популярен только в академической среде, и то не повсеместно. Те, кто попытался реализовать Алгол, столкнулись с целым рядом сложностей. Так, например, обнаружилось, что ни один из существовавших тогда компьютеров не поддерживал ввод-вывод всех 116 литер, из которых состоял алфавит Алгола. А вот в Европе Алгол приняли с энтузиазмом. Он быстро завоевал популярность в академической среде, повсеместно шла разработка компиляторов, многие из которых, несмотря на сложности реализации, оказались весьма успешными. Алгол распространился от Великобритании до Дальнего востока СССР, став как универсальным языком описания алгоритмов в научных публикациях, так и средством реального программирования.

Пример программы, написанной на Алгол
Пример программы, написанной на Алгол

BASIC. Возможно, до сих пор некоторые люди на нём что-то пишут, по крайней мере я видел, что в некоторых заведениях учат на QBasic’е — такое синее окошко, где написано «1989». В общем, «вовсю» живёт! Он придумывался как язык для непрограммистов. В то время программист была такая очень специализированная профессия. А здесь тебе говорят: «Вот у нас есть классный язык Basic, и любой разумный человек возьмёт и напишет программу на нём — легко». Опять же тот Бейсик и современный Бейсик — это огромная разница.

Первый из языков, который у всех на языку
Первый из языков, который у всех на языку

Ещё одна забавная история — язык Паскаль, широко известный в вузовских кругах, в основном в России и в странах бывшего Советского Союза. Он использовался и продолжает использоваться на удивление как учебный язык. Во всём остальном мире он поменьше распространён, но тоже живёт и здравствует. Есть такой человек Вирт — вот он учёный, теоретик. Он участвовал в обсуждении Алгола, ему не понравилось то, что получилось, и он придумал свой язык — Pascal. Правда потом вмешались некоторые компании и получилось не так, как он изначально задумывал.

Помню те времена, когда еще в школе проходили этот язык, хорошее время было
Помню те времена, когда еще в школе проходили этот язык, хорошее время было

Доходим до той самой буквы, которую не знает только ленивый, С, дамы и господа. Си придумали инженеры. Если Паскаль придумал учёный, то Си придумали Керниган и Ритчи, они работали инженерами в Bell. Как это произошло? В то время на Fortran, COBOL и Algol ничего системного написать было нельзя. Что такое «системное»? Например, операционную систему, драйвера какие-нибудь, ещё что-то. Эти языки предназначались для математических расчётов, для бизнес-расчётов, для всего такого. А всё остальное писали на Ассемблере. Были какие-то языки, они сейчас умерли, то есть язык Си появился не сразу от Ассемблера, а через какие-то промежуточные вещи. Суть в чем? Керниган и Ритчи любили играть в игрушку Asteroids — летает космический корабль, он стреляет в астероиды, а они разваливаются на части. У них был сервер, на котором они играли, но там было много народу, и игрушка тормозила. И они обнаружили у себя где-то в кабинете, что у них стоит какой-то компьютер, которым никто не пользуется. Но было проблема — он другой архитектуры был, а игра была написана на Ассемблере. Они её переписали, конечно, даже впилили фичи какие-то, чтобы играть на нём. Но это навело их на мысль, что переписывать под новую архитектуру каждый раз — это не очень умно. И они решили написать такой язык высокого уровня, который будет подходить для системного программирования, то есть, в котором можно будет управлять памятью, в котором можно будет понимать где-что лежит и как обращаться к этим кусочкам памяти. И так появился язык Си, который оказал огромное влияние на всё дальнейшее. Алгол, Фортран и прочие упомянутые языки оказали большое влияние, но вот Си — просто колоссальное, если я не ошибаюсь, то именно на Си был написано тот самый Windows (если я не прав, то поправьте меня).

Пример программы на Си
Пример программы на Си

Еще позже появился C++. Язык C имеет огромное количество недостатков. C++ создавался сначала как набор дополнений к языку C, который облегчит разработку. В то время стало модно объектно-ориентированное программирование и люди решили, что всё можно описать в виде иерархии, то есть — есть у вас мячик (абстрактный), вы от него наследуете футбольный мяч, волейбольный мяч, ещё один абстрактный мяч. При этом на то время с C можно было легко перейти на C++.

Где-то на рубеже 80-х и 90-х (когда производительность компьютеров возросла) появилось множество языков: Perl, Python, PHP, Ruby... Они использовались для обработки текстов. В общем случае никакого системного программирования, да и никакой бизнес-логики никто не писал на них в то время.

Perl был предназначен для обработки текстов — в те времена в компьютерах стало настолько много памяти, что туда можно было запихнуть какой-то текст и с этим текстом что-то полезное делать (например, считать слова, выполнять поиск). Но он получился слишком замороченный какой-то.

Примерно в то время, в середине 90-х, появился интернет. Сначала это были почта, сайтики со статичным HTML, но людям захотелось добавить туда какую-то динамику, чтобы у нас всё происходило динамично, формочки какие-то можно было заполнять, гостевые книги делать, ещё что-то. Соответственно это требовало какого-то взаимодействия, придумали протокол, как это взаимодействует, и, самое главное, генерацию этих статических (условно) страниц, которые будут «выплёвываться» пользователю в ответ на его запрос.
В общем, ничего кроме Перла на тот момент не подходило. Писать на чистом Си или на C++ обработчик было плохой идеей. И от неимения лучшего в то время (и достаточно долго) Перл был популярным языком для веб-разработки. Конечно, масштабы не сравнятся с тем, что сейчас происходит.

PHP появился как… случайно. Один человек довольно быстро перестал заниматься этим — делал свою страничку какую-то, была у него гостевая книга какая-то, ещё что-то, какие-то штуки. И он написал набор макросов каких-то для Перла, которые были похожи на Си, потому что он на Си умел. И назвал это Personal HomePage. Расшарил и говорит: «Люди, смотрите какую штуку я написал, здесь всё намного понятнее, чем на Перле, и можно править». И людям это понравилось. Потом он это дело бросил. В общем, в итоге этот PHP стал жить и стал со временем гораздо популярнее, чем Perl. Но вот эта его «родовая травма» (задумка как набор макросов для Перла) с ним сыграла довольно злую шутку. Язык получился странный. То есть он развивался сам по себе, его никто не проектировал, никто не администрировал процесс развития (ни компания, ни какой-то человек), а было много группок, каждая из которых пилила то, что им нравится. В итоге там функции называются по-разному, даже стиля нет, всё через подчёркивания, в общем как попало, настройки лежат здесь и там, и как всё это будет работать не очень понятно. Зато можно сесть и через два часа писать на PHP, потому что он так задумывался.

Пример программы на PHP
Пример программы на PHP

Так и появилась Java (Ява). Там тоже связана довольно забавная история, как название появилось у этого языка. Там программисты, они всё время пьют кофе, и в то время было модным пить кофе, который рос на острове Ява . Язык задумывался как язык для встраиваемых приборов, в частности для кофе-машины. Вот так и получилось название… Программы на ней можно было переносить куда угодно - хоть на кофеварку, хоть на кофемолку, хоть на компьютер, хоть на телефон.

Я хотел бы еще вставлять картинки с кодами, но думаю для большинства они все на один вид, поэтому дальше будет только текст, но ничего, уже немного осталось, потерпите)

Следующее, что появилось - .Net, в частности C#. Он объединил в себе мощь Java и простоту C++. (Очень похож на Java, но с отличиями в деталях).

И JavaScript. Наиболее широкое применение он находит в браузерах как язык сценариев для придания интерактивности веб-страницам. На JavaScript оказали влияние многие языки, при разработке была цель сделать язык похожим на Java, но при этом лёгким для использования непрограммистами. Языком JavaScript не владеет какая-либо компания или организация, что отличает его от ряда языков программирования, используемых в веб-разработке. Также он своим появлением обрушил порог входа в профессию «программиста» практически до нуля. Собственно, человек, практикующий JavaScript, иногда даже не зовется программистом, а приравнивается к верстальщикам. Толпы народу, не имеющие ни малейшего представления об указателях и рекурсии, не знающие даже основных алгоритмов — спокойно пишут на языке, где правил оформления кода нет как не было.

На этом пока история развития закончилась, но кто знает, кто будет следующий гений, который создаст уникальный язык, на который перейдут все, может быть это окажется кто-то один из вас ;)