История языков программирования: 1970-е

Третья часть, в которой программирование станет действительно общедоступным.
26 февраля 2018ThumbИлья Бубнов3864713

В 60-х годах 20 века программирование развивалось благодаря комитетам. В 70-х ситуация кардинально изменилась – теперь новые языки придумывали небольшие группы людей. Это произошло благодаря доступности компьютера – теперь заполучить ЭВМ мог буквально любой человек. Именно в 70-х берёт своё начало история языков Pascal и C.

Dartmouth BASIC

Но прежде всего 70-е в программировании ознаменовались подъёмом BASIC. Он был создан в 60-х Джоном Кемени и Томасом Курцем в Дартмутском колледже в США, и должен был выполнить две основные функции:

  • Разработать систему и язык, который был бы дружелюбным, простым в освоении и использовании.
  • Сделать программирование общедоступным курсом.

Однако мгновенного отклика BASIC не нашёл. Комитеты, отвечавшие за разработку Фортрана, Алгола и Кобола, преследовали совершенно иные цели, а потому на высших уровнях до образовательного языка долгое время не было никакого дела. В первой версии BASIC было несколько ограничений:

  • Оперировать можно было только функциями LET, PRINT, END, FOR, NEXT, GOTO, IF THEN, DEF, READ, DATA, DIM, GOSUB, RETURN и REM.
  • Не было различия между целыми и действительными числами.
  • Имя переменной было ограничено одной буквой или одной буквой и цифрой.

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

Первые массовые ПК имели не более 4 Кбайта памяти, позднее – 16 Кбайт. В определённой степени это было возвращение на 20 лет назад, ведь компиляторы языка высокого уровня занимали сотни килобайт, поэтому часто приходилось работать с машинными командами и кодами. Но было одно исключение – BASIC.

Поскольку он предназначался как учебный язык, для мини-ПК было создано множество реализаций, основанных на интерпретаторе и компиляторе. Так BASIC стало можно запустить на машинах с ограничением памяти в 8-16 Кбайт. Именно поэтому BASIC быстро стал естественным выбором для любого, кому нужен был язык высокого уровня для ПК того времени.

Altair-8800. ПК, который изменил мир.

Первым совместным проектом Пола Аллена и Билла Гейтса был как раз интерпретатор BASIC для PDP 8 (мини-ПК). Они учились в средней школе, когда свет увидел компьютер Altair из MITS. Юные изобретатели увидели в этом уникальную возможность, урезали свой интерпретатор до 4 Кбайт так, чтобы он позволял системе запустить небольшую программу.

Билл Гейтс утверждает, что им потребовалось три с половиной недели, чтобы подготовить первую версию и около восьми недель, чтобы отполировать ее. Чтобы вы лучше представляли, как сложно уместить интерпретатор в 4 Кбайт: им пришлось урезать традиционное READY до OK, чтобы выиграть три байта памяти.

Продукт получил название «4K BASIC» – первая версия Microsoft BASIC. Было много других реализаций языка для Altair и не только - Tiny BASIC Ли Чен Вана, TRS-80 BASIC Стива Лэйнинера, EBASIC и CBASIC Гордона Эубэнкса, 6800 BASIC Роберта Уиттеркика, целая серия интерпретаторов BASIC для Apple от Стива Возняка. Но именно Microsoft BASIC Билла Гейтса оказал наибольшее влияние на программирование и ПО в целом.

Всё дело в его деловой хватке и даре убеждения – даже японцы купили Microsoft BASIC. Вишенкой на торте стало включение детища Гейтса и Аллена в IBM PC. Microsoft продолжала разрабатывать BASIC вплоть до 90-х годов, а окончательной версией стал Quick BASIC – полностью структурированный язык, который сохранил свою простоту и понятность.

Pascal

Так как BASIC достаточно долго шёл к мировой известности, многие учёные продолжали создавать образовательные языки. Никлаус Вирт руководствовался теми же идеями, что и Кемени с Курцем. Он хотел создать язык, пригодный для обучения информатике в школах и вузах, при этом он должен был работать на мини-ПК и быть походим на один из комитетских языков.

Взяв за основу Algol, в 1972 году Вирт создал язык Pascal, названный в честь французского математика XVII века Блеза Паскаля. Упрощение коснулось не только синтаксиса, но и компиляции. Например, функции и процедуры должны быть определены в начале программы, это позволяло использовать однопроходный компилятор.

Pascal стал очередной революцией в программировании.

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

Именно так до бытового уровня дошла идея использования виртуальной машины – концепции программирования, которая особенно прославится в конце века благодаря языку Java и машине JVM.

Точкой же взлёта Pascal стало появление UCSD Pascal. Кеннет Боулс создал не просто ещё один компилятор, но и операционную систему с утилитами в пи-коде. Система UCSD появилась в 1976 году, а статья в журнале Byte в следующем году принесла ей известность и востребованность на рынке ПК. Популярность была такой большой, что USCD была представлена на презентации очередного IBM PC как альтернативная ОС.

Войны BASIC и Pascal

Неудивительно, что всё это привело к настоящей битве за доминирование между BASIC и Pascal. В каком-то роде это было продолжение противостояния из прошлого десятилетия – Algol против Fortran или Cobol. Однако, если тогда это было просто идеологическое противостояние на уровне комитетов, теперь появилась новая реальная сила – мнение простых людей. И уже тогда было понятно, что именно здесь лежит будущее программирования.

Основная битва за доминирование между Pascal и BASIC развернётся в следующем десятилетии, и приведёт к созданию почти совершенных диалектов этих языков qBasic и Turbo Pascal. Именно им будут обучать в российских школах, именно их многие из нас заложат в фундамент программистского образования.

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

C

Пока BASIC и Pascal боролись за умы начинающих программистов, многие корпорации были озабочены разработкой мощного универсального языка высокого уровня, который бы был производительнее и удобнее тех, над которыми трудились комитеты. Больше всего в этом преуспела компания Bell Labs – именно здесь увидели свет операционная система Unix и язык программирования C.

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

В результате в Великобритании появились сначала системный язык CPL, а потом его урезанный младший брат – BCPL (базовый CPL). Его слава добралась до другой стороны Атлантики, где Кен Томпсон, сотрудник Bell Labs, выпустил еще более упрощённую версию BCPL – B. В то время Unix разрабатывался на ассемблере, поэтому B стал настоящим панацеей для компании.

Позднее Деннис Ритчи переработал некоторые идеи Томпсона, и создал C (просто следующая буква алфавита). Язык сочетал в себе функции низкого уровня со структурой Algol. Таким образом, вначале C получил известность как структурированный язык ассемблера.

Самым ярким доказательством качества языка являлось то, что основная часть Unix, кроме небольшого ядра, была полностью переписана на C. Именно так, рука об руку, язык и ОС Unix существовали первые годы. Но слава распространялась, и в конечном итоге С начал использоваться в других операционных системах, и как итог – получил славу языка общего назначения.

Тем не менее, 70-е годы – это лишь время, когда было посажено семя С. Настоящий успех язык обрёл в следующем десятилетии. Такой, о каком создатели могли только мечтать.

Комитетские языки

Для Fortran и Cobol 70-е годы были временем перезапуска. Первый в 77 версии обзавёлся строковым типом, освоил блочную конструкцию if-else, расширил возможности по работе с файлами. Cobol-74 стал более статичным и ещё больше расширил синтаксис в угоду финансовым структурам.

А вот для Algol десятилетие выдалось плохим. В США к концу 70-х его почти вытеснил Pascal, его спасала лишь востребованность среди европейских и советских разработчиков, которые очень настороженно относились к новым языкам.

В СССР лишь в 1978 году появляется первый стандарт на комитетский язык – им стал Фортран. Разумеется, речь шла о базисном языке, а не его свежем диалекте. ГОСТ на Алгол-68 вышел спустя 10 лет, и, если вы его откроете, то узнаете причину задержки – синтаксис языка был полностью переведён на русский язык. Именно поэтому сложилось впечатление, что Фортран в СССР был больше востребован. На самом деле так было только в образовании. В науке и обороне Алгол был востребован ничуть не меньше.

Итак, в 1970-х в программировании наконец возникла главная движущая сила – мнение простых людей. Они уже не просто пользовались деятельностью «больших» учёных, любой желающий мог создать свой язык, написать компилятор или интерпретатор. Кто-то благодаря этому обрёл вечную славу, а кто-то построил миллиардную империю. Для того, чтобы сделать следующий качественный скачок, необходимо было вновь изменить подход к программированию, увеличив возможности и усложнив структуру. Совсем скоро в моду войдёт объектно-ориентированное программирование. Но об этом в следующей части.

Новые комментарии

Спасибо,
что читаете наш блог!
Posts popup