Второй этап развития языков программирования (1960— 1980 гг.)
Период 60-х, 70-х и 80-х годов положил начало для развития нескольких десятков языков программирования, некоторые из которых применяются и сейчас, правда в учебных целях (например, Basic и Pascal), ведь эти 2 языка уже прожили больше 30 лет, а учебная необходимость в них так и не пропала. Не стоит забывать, что 1974му году мы обязаны за рождение SQL, ну и, конечно же, рождение полюбившегося всем языка C++ в 1983 году, ну обо всем по порядку.
Начнем с периода 60-х годов, а именно с 1964-го года, когда компания IBM разработала язык программирования, который бы позволял объединять компьютеры, созданные для разных целей (одни для научных, другие — для бухгалтерских приложений) в одну целую систему, что бы позволило явно упростить работу на разных машинах.
Язык программирования ПЛ/1
Научные и бухгалтерские программы не только использовали разные компьютеры, но ещё и писались на разных языках: научные — на Фортране, бухгалтерские — в основном на Коболе. Целью ПЛ/1 было создание языка, подходящего для обоих типов приложений. Другой целью было добавление конструкций для структурного программирования, взятых из Алгола-60, не поддерживаемых в то время ни Коболом, ни Фортраном.
Для разработки ПЛ/1 был сформирован комитет, состоящий из программистов IBM и пользователей со всех концов США. Работа комитета длилась несколько месяцев. Изначально планировалось, что ПЛ/1 будет готов к использованию к моменту запуска System/360, но это не было выполнено.
Язык изначально был назван NPL (NewProgrammingLanguage — «новый язык программирования»), но эта аббревиатура уже использовалось британской Национальной физической лабораторией (NationalPhysicsLaboratory). Поэтому название изменили на ПЛ/1.
Поначалу ПЛ/1 вызвал большой энтузиазм, но оказался не так успешен, как планировалось, по следующим причинам:
· Чрезвычайная сложность языка, в значительной мере потому, что язык был разработан комитетом, пытавшимся найти соглашение и удовлетворить нужды совершенно разных пользователей (научных и банковских).
· Трудность реализации компилятора, и, как следствие, большое количество сбоев и ошибок и низкое качество первых компиляторов. Это возникало также из-за того, что ПЛ/1 содержал много почти не используемых большинством пользователей возможностей, вроде поддержки многозадачности.
· Неоптимальность скомпилированного кода, что было очень критично для математических расчётов. Поэтому ПЛ/1 не смог заменить собой Фортран. Асинхронная модификация переменных (например, в результате конструкции onerror) крайне затрудняла оптимизацию.
· Компиляторы языка ПЛ/1 реализовывали различные подмножества языка, что приводило к непереносимости программ.
Хотя ПЛ/1 и не смог вытеснить Фортран и КОБОЛ (или даже сравниться с ними по популярности), тем не менее, он широко использовался во второй половине 1960-х и в 1970-х годах, особенно для бухгалтерских приложений, в основном из-за отсутствия в то время лучшей альтернативы. Как Фортран, так и КОБОЛ были бедны по своим возможностям даже для задач того времени. ПЛ/1, напротив, представлял богатый набор средств.
Так, проект Multics, одна из первых попыток написать ОС на языке высокого уровня, использовал EPL (Early PL) — диалект ПЛ/1, разработанный в МТИ в 1964 году. Впоследствии для Multics был реализован «настоящий» ПЛ/1. Диалект XPL был использован для создания языка HAL/S, на котором программировались компьютеры космических кораблей проекта «Шаттл». Для ещё одного подмножества — PL/C — в Корнельском университете был создан уникальный компилятор CORC, который мог скомпилировать программу с любыми синтаксическими ошибками, путём исправления многих ошибок и преобразования оставшихся в объектный код (это свойство в значительной степени присуще также компиляторам IBM для мейнфреймов). Первая система резервирования авиабилетов, SABRE, была написана (по крайней мере, её предполагалось написать) на ПЛ/1. Ещё одним диалектом ПЛ/1 был PL/S, на котором фирма IBM написала в начале 1970-х годах операционную систему MVS. IBM до сих пор использует усовершенствованный PL/S (который ныне известен как PL/X) для работы над системами семейства z/OS для IBM System z. На базе ПЛ/1 был разработан язык PL/M, фактически представляющий собой приблизительный аналог языка Си с синтаксисом, близким к подмножеству ПЛ/1. Компилятор языка PL/M был разработан Гари Килдаллом, когда тот работал в Intel и использовался ею для написания операционной системы CP/M и большинства программного обеспечения под CP/M и MP/M. Позже Гари Килдалл основал фирму DigitalResearch, которая продавала компилятор к PL/M для CP/M и MS-DOS, который сам был написан на PL/M. PL/M широко использовался для написания программного обеспечения к компьютерам, использовавшим интеловские процессоры 8080, 8085 и Z-80.
В СССР ПЛ/1 также был популярен в 1970-х и до первой половины 1990-х годов благодаря широкой распространённости ЕС ЭВМ, совместимых с мейнфреймами IBM. Кроме того, ПЛ/1 был реализован на БЭСМ-6 и Эльбрусе.
ПЛ/1 был, вероятно, первым коммерческим языком, компилятор для которого писался на компилируемом языке.
(Подобные экспериментальные языки были и раньше: например, NELIAC был разработан как минимум за 5 лет до ПЛ/1).
История языков программирования: 1960-е
1950-е годы продемонстрировали рост интереса к компьютерам и программированию. В прошлый раз мы поговорили о появлении большой четвёрки языков: Fortran, COBOL, Algol и Lisp, – составившие надёжный фундамент для будущего.
Следующее десятилетие ознаменовалось уникальным подходом к разработке языков – коллективным. Технологический прогресс продвигался так быстро, что необходимо было стандартизировать новую информацию, не допуская дублирование. В отношении языков программирования этот принцип проявлялся наиболее ярко.
CTC DataPoint-3300. Компьютеры обретают современный облик.
К примеру, уже упомянутый Fortran вовсе не был первым языком, который решил проблему с повторяющимися макросами ассемблера. Компания Remington Rand ещё в 1952 году запустила линейку компиляторов A, которые использовали готовые библиотеки. Однако у Fortran был мощный покровитель IBM и самые современные машины, поэтому компиляторы А остались лишь в истории.
Комитеты и новые языки
Таким образом, к началу 1960-х годов было создано два крупных комитета. Первый – академический, был создан эгидой Министерства Обороны США. Второй комитет, более крупный, представлял коммерческие интересы и имел статус международного. Изначально все они работали над развитием Fortran. Но, как мы уже заметили в первой части, из-за отсутствия нормальной работы с текстом он не мог в полной мере удовлетворить потребности бизнеса и науки. Так в привилегированной группе языков программирования появились COBOL и Algol. Ответвлением последнего, по сути, являлся Lisp, именно поэтому в общей истории его роль несправедливо преуменьшена.
Если вы взгляните на список языков программирования 1960-х, увидите преимущественно знакомые названия. Главные достижения комитетов, а значит и всего софтверного мира IT – версии ALGOL 60 и 68, Fortran IV и 66, COBOL 61, 65 и 68. Собственно все свои характерные черты, указанные языки, приобрели именно в 1960-х годах.
Языки ответвления имели узкоспециальный характер и развития не получили:
* СPL, BCPL и B – предшественники языка C. Опирались на основные идеи Algol, обладали схожим синтаксисом, но популярность не обрели из-за отсутствия явных преимуществ перед «комитетным» языком.
* Planner – язык для функционально-логического программирования. Являлся развитием языка Lisp, использовал его в качестве подмножества. Вплоть до 1972 года, пока не появился Prolog, был востребован и использоваться в том числе в СССР (адаптация ПЛЭНЕР-БЭСМ для компьютера БЭСМ-6). Аналогичной участи удостоился другой язык конца 1960-х – PAL.
* FORMAC, QUIKTRAN – частные ограниченные реализации Fortran для запуска на конкретных машинах для увеличения их быстродействия.
* AMBIT, SNOBOL – попытки привести COBOL и Fortran к единому знаменателю, не увенчавшиеся успехом.
Программирование для каждого
Главным же итогом 1960-х в мире IT стало вовсе не создание комитетов и не формирование облика современных высокоуровневых языков, а то, что программирование стало народным. Теперь ему повсеместно обучали в университетах, студентам больше не требовалось быть инженерами, чтобы понимать, как функционирует машина с написанным ими текстом. Огромную роль в этом сыграли специально придуманные образовательные языки – BASIC и Logo.
Несмотря на общее назначение, подход был принципиально разным. Про Logo мы уже писали – язык, отметивший в этом году полувековой юбилей, всё ещё остаётся востребованным в университетах и школах. Благодаря графической оболочке, он позволил окунуться в мир программирования и студентам, и маленьким детям. Основные идеи обучения и подход легли в основу одного из самых стремительно развивающихся языков – Scratch.
BASIC – симбиоз FORTRAN II и ALGOL 60. Несмотря на большое количество ограничений, по сути он стал первым языком, позволившим обучать программированию на «взрослом» уровне. То есть сделать переход от теории к работе с Algol или Fortran быстрым и безболезненным.
В истории влияние BASIC трудно переоценить. Без него, возможно, не было в современном виде никакого ПО, ведь и Microsoft, и Apple во многом обязаны именно этому языку и его ответвлениям. VB6 и Visual Basic .NET по-прежнему востребованы, причём не в обучении, а в создании полноценных приложений.
Программирование в СССР
Тем временем в нашей стране именно в 1960-е начинают применять «комитетские» языки. Первым доехал ALGOL 60, транслятор с него был создан для машины БЭСМ-6. Долгое время именно он и ALGOL 68 считались «базовыми» для применения в научной сфере.
БЭСМ-6
Экспансия Fortran началась с физиков. Из-за того, что большинство вычислений в CERN проводилось на этом языке, советским учёным пришлось создавать компиляторы для своих машин. Сначала это был компилятор для Минск-2 в 1967 году, а через год был выпущен ФОРТРАН-ДУБНА для всё той же БЭСМ-6. С этого момента Fortran входит в категорию избранных языков программирования в СССР, его начинают преподавать в вузах и научных институтах.
А вот Lisp был ввезён официально самим создателем, Джоном Маккарти. Он прочитал ряд лекций в Москве и Новосибирске в 1968 году, рассказав про язык и «искусственный интеллект». Кстати, этот термин придумал тоже он. Маккарти во время гастролей высказывал сомнения, что его язык будет работать на советских машинах. Наши учёные вызов приняли и в том же году адаптировали его под БЭСМ-6. Лисп-система на этих машинах успешно применялась вплоть до середины 1980-х, пока элементная база физически и морально не устарела.
Таким образом, 1960-е годы ознаменовались тотальным расширением идеи программирования на языках высокого уровня. Теперь с машинами работали не только учёные и инженеры, но и учащиеся вузов во всех уголках мира. Технологическая эволюция подошла к порогу тотальной доступности.