Работа, карьера, бизнес
Игорь Вадимов Грандмастер

Языки программирования: сколько их было?

С самого первого пуска первой ЭВМ ей для работы был необходим набор инструкций. Когда они появились, какие проблемы решали и сколько их всего?

Фото: Depositphotos

Для появления языков программирования само существование ЭВМ не было нужно, посему появились языки программирования задолго до появления ЭВМ, их создали для программирования создания рисунка на ткани.

Жаккардовые станки, изобретенные в 1804 году, нуждались в программе, содержавшей перечень инструкций по автоматизированному созданию крупноузорчатых тканей.

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

Заполненная перфокарта в текстовом режиме
Заполненная перфокарта в текстовом режиме
Фото: ru.wikipedia.org

Аналитическая машина Чарльза Бэббиджа тоже нуждалась в программах для работы, поэтому в начале 1840-х графиня Ада Лавлейс написала для нее несколько программ — в том числе для вычисления чисел Бернулли. Эта программа тоже была написана на перфокартах.

Графиня Ада Лавлейс, акварельный портрет
Графиня Ада Лавлейс, акварельный портрет
Фото: ru.wikipedia.org

Первый язык программирования для компьютеров «Plankalkul» (расчет планов) был разработан Конрадом Цузе в 1943—1945 гг. для его компьютера Z4. С компьютером не получилось, зато был создан первый язык программирования.

Первые ЭВМ программировали в машинных кодах. В наше время эти двоичные языки принято называть языками первого поколения.

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

Часть разностной машины Чарльза Бэббиджа, собранная после смерти учёного его сыном из деталей, найденных в лаборатории отца
Часть разностной машины Чарльза Бэббиджа, собранная после смерти учёного его сыном из деталей, найденных в лаборатории отца
Фото: ru.wikipedia.org

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

Во избежание лишних проблем, придумали общие стандарты языков программирования и компиляторы с них в машинные коды. Программист пишет, скажем, «разделить А на Б», а компилятор (для данного типа ЭВМ) пишет реализацию деления. Программист пишет «распечатать результат», а компилятор задает подпрограмму подготовки результата в виде строки символов и распечатки этой строки на таком-то принтере (именно на том, который на данной ЭВМ предназначен для распечатки результатов задач).

Языки Ассеблера называют языками второго поколения. Языки Ассемблера, созданные в 50-е годы для древних ЭВМ являются мертвыми, но их принципы работы стали основой для новых языков, к каждому новому семейству процессоров создается язык ассемблера для данной системы команд. Эти языки используются при создании драйверов и подпрограмм ядра операционных систем.

В 1950-е начали создавать языки третьего поколения. Эти языки, их еще называют «языками высокого уровня» (ЯВУ), в зависимости от компилятора, могут работать на разных типах ЭВМ, в исполняемый машинный код их приводит свой компилятор для каждого типа ЭВМ.

EDVAC, установленный в здании 328 Лаборатории баллистических исследований
EDVAC, установленный в здании 328 Лаборатории баллистических исследований
Фото: ru.wikipedia.org

В конце 50-х появился Алгол-60 (Algol — от ALGOrithmic Language), на трансляторах для него писали программы в 60-е и в 70-е годы. Впоследствии Алгол-60 породил Алгол-68, значительно более продвинутый инструмент программирования. Ныне этот язык уже практически не используется, но на его основе было создано много других языков — Паскаль, Ада. Паскаль впоследствии дал толчок в создании Делфи (Delphi).

Так что если Алгол-60 сегодня язык мертвый, то его правнук Delphi — живее всех живых. Его умение создавать GUI и работать с базами данных, а более того — бесплатное распространение упрощенных версий компилятора, снискали ему славу среди пользователей. Сегодня существуют компиляторы Delphi для Windows и для Linux.

Во второй половине 50-х кроме Алгола появились еще Фортран (FORmula TRANslator — переводчик формул), Лисп (LISt Processing language — язык обработки списков) и Кобол (COmmon Business Oriented Language — Обобщенный бизнес-ориентированный язык).

Фортран существует и по сей день, в начале 60-х были созданы трансляторы Фортрана, работавшие на многих компьютерах семейства IBM, и, ввиду его распространенности, начали создавать компиляторы Фортрана для других компьютеров — в 60-е Фортран де-факто стал одним из стандартов программирования. Впоследствии после Фортрана-4 были Фортран-66, Фортран-77… последний на сегодняшний день стандарт Фортрана — Фортран-2008.

Электронный числовой интегратор и вычислитель (ЭНИАК)
Электронный числовой интегратор и вычислитель (ЭНИАК)
Фото: ru.wikipedia.org

Лисп — язык обработки списков. Разработан целый спектр разнообразных версий языка для исполнения разных типов задач.

Кобол — в 90-е годы на Коболе производилась обработка примерно 90% всех финансовых транзакций мира.

Являются ли вышеназванные ЯВУ живыми? Определенно — да. Достаточно совершить поиск в базах данных работодателей, чтобы убедиться, есть вакансии и для программистов и на Форатране, и Лиспе, и на Коболе. А уж программисты на Delphi — дорогой и очень востребованный товар.

Когда в 70-е годы появились персональные ЭВМ (они же ПЭВМ), число новых языков программирования начало увеличиваться в геометрической прогрессии. Все началось с С.

Обновлено 1.11.2018
Статья размещена на сайте 8.10.2018

Комментарии (2):

Чтобы оставить комментарий зарегистрируйтесь или войдите на сайт

Войти через социальные сети:

  • Наталия Нечухаева Наталия Нечухаева Профессионал 6 ноября 2018 в 22:22 отредактирован 6 ноября 2018 в 22:22

    Спасибо за перфокарточку! Вспомнилось, как мы на них то ли забивали дырочки,то ли вырезали лезвием- чтобы изменить код знака. Например А (большая английская !) имеет код 065. Всегда и везде. "Туз, он и в Африке туз",- поговорка преферансиста.

    Оценка:5

    Оценка статьи: 5

    • Да, Наталия Нечухаева, "было дело под Полтавой"...
      То, что пробивал в картах перфоратор, называли "мозги" - такие мелкие прямоугольнички.
      Их брали и, чтобы заменить символ на другой, в ненужные дырки запихивали "мозги", а в нужных местах лезвием безопаски делали вырез - и пускали карту через перфокопирователь.
      А децимальный код 65 - это октальное 101, а код символа "собака" был октальное 100.
      А перевод строки и возврат каретки - 12-15, а бип - 7...
      Сколько лет прошло - а что-то еще осталось, хотя с перфокартами не работал с 1979 года - тогда уже пошли перфоленты.

      Оценка статьи: 5