От безумного ассемблера до Swift: История развития языков программирования

539e70590fa4ec22c261b1b29b9011ce.jpg

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

История языков — хроника поиска оптимальных способов выражения логики и решения задач.

Машинный код и Ассемблер

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

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

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

Про него даже ходят мемы. 

3404936011deee65ebccbf8ee2ab4085.jpg

Для комфортного программирования этого было недостаточно. Возникла весомая потребность в языке «для народа». Точнее, для специалистов из науки, которые смогли бы активно проводить исследования. 

Первые высокоуровневые языки «для народа»

После изобретения транзисторов и первых доступных компьютеров IBM разработали Fotran (его же альтернатива Algol Cobol и другие). Программисты получили возможность абстрагироваться от низкоуровневых деталей и сосредоточиться на разработке  читаемого и структурированного кода. Это был первый, так называемый, высокоуровневый язык. Кстати, крайне коммерчески успешный. 

5e3c253d7785ebb1f25ef8ca2b6f5c7e.jpg

Уже появилась потребность в специалистах, была необходимость в быстром подъеме скиллов программистов в областях ЭВМ. 

По-настоящему массовым программирование стало с появлением языка BASIC в 1964 году. Преподаватели Дартмутского Колледжа — Джон Кемени и Томас Курц — разработали его для обучения студентов основам программирования. 

Одна из важных черт Basic — его широкая доступность. Многие домашние компьютеры, такие как Commodore 64, Apple II и IBM PC, предоставляли встроенные среды Basic. Это позволяло обычным людям сразу начинать программировать, не устанавливая и не настраивая дополнительные инструменты.

Тот же ABC, про который мы чуть подробнее рассказывали в другом нашем материале, созданный в конце 1970-х годов в Центре математики и информатики в Амстердаме, как раз пытался заменить устаревший Basic. ABC также был направлен на упрощение программирования и делал упор на читаемость кода. Он включал в себя некоторые инновационные идеи, такие как автоматическое выделение памяти и использование строгой типизации.

Smalltalk, разработанный в исследовательском центре Xerox PARC в конце 1960-х, стал пионером объектно-ориентированного программирования (ООП), добавив в мир программирования новый подход. Всё в Smalltalk представлено в виде объектов. 

Но период подобных языков быстро сменился 70-ми. Временем, когда стали как раз появляться уже известные языки современности: C++, С, Pascal. 

К современности (70-е — наше время)

00efcaf6048576f7c5fc0efa9fae8d11.jpg

Появление первого языка семейства С — непосредственно сам C. Язык программирования был разработан в Bell Labs Деннисом Ритчи в 1972 году. Его создавали в контексте  разработки операционной системы Unix, и он быстро приобрел популярность благодаря своей простоте, эффективности и возможности низкоуровневого программирования. 

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

Не стоит забывать и про последующий C++ со своим знаменитым ООП.

С другой стороны появляется Pascal, созданный Никлаусом Виртом в 1970 году с целью предоставить язык, который способствовал бы обучению программированию и разработке надежных и структурированных программ. Pascal внес множество инноваций, таких как блочная структура программы, строгая типизация, использование процедур и функций. 

Он был призван стимулировать хорошие практики программирования и был широко использован в учебных заведениях для обучения основам алгоритмов и структур данных. Pascal также оказал влияние на развитие других языков программирования, включая Ada и Delphi.

Scheme, являясь диалектом языка программирования Lisp, отличается своей простотой и чистотой дизайна. Разработанный в MIT в 1975 году, Scheme является минималистичным языком, фокусирующимся на функциональном программировании и лямбда-исчислении. В его особенностях включены динамическая типизация, замыкания и сборка мусора. 

Кстати, о сборке мусора. Появляется и наш любимый Python. Но о его истории создания — читайте в другом материале. 

В конечном счете, появляются и языки разметки по типу HTML, веб-разработки по типу JavaScript и популярный Java, обеспечивающий независимость от машины, где запускается программа. Кстати, именно поэтому Java топ-1 в мобильной разработке. 

На самом деле, в 2020-е годы происходит интересная ситуация. Мы ждем создание полноценных квантовых компьютеров, которым потребуются свои ассемблеры. Уже появились языки крайне высокого уровня для обработки огромных массивов данных по типу R и Matlab. А в 20-ке используемых языков можно найти совсем молодой Swift от Apple. Впрочем, обо всем этом — уже в других материалах… 

Прошедшие десятилетия принесли с собой волну инноваций в мире языков программирования. Код ассемблера был буквально про самый глубокий уровень программирования и работу с железом. Basic, недоработанный ABC — «народные» языки, которые помогали учиться писать код. И, конечно, Smalltalk — первый язык, построенный вокруг ООП. Или «C», созданный в 1972 году — «мост» между низкоуровневыми и высокоуровневыми языками, обеспечивающий эффективность и гибкость. 

От функциональных языков, таких как Lisp, до объектно-ориентированных, воплощенных в языках Java и C++ — все это и есть история языков программирования. Каждый этап в развитии предоставил программистам новые инструменты для решения сложных задач.

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

© Habrahabr.ru