Главная arrow Развитие ПО arrow Томас Курц и Джон Кемени
Как начинался компьютер
Компьютерная революция
Двоичный код
Разработки военных лет
Интегральные микросхемы
Микрокомпьютер
Персоны
Сеть
Язык компьютера
Развитие ПО
Гибкие системы
Средства разработки
Информатика
Вычислительная наука
Операционные системы
Искусственный интеллект
Предыстория
Поиск
Знания и рассуждения
Логика
Робототехника
 

 
Томас Курц и Джон Кемени Печать
Двумя яркими представителями, в разработке языков программирования, были сотрудники математического факультета Дартмутского колледжа Томас Курц (Thomas Kurtz) и Джон Кемени (John Kemeny). Томас Курц поступил на работу в Дартмутский колледж в 1956 г., получив степень доктора по математической статистике в Принстонском университете. Впервые он познакомился с компьютерами в 1951 г. в Калифорнийском университете, в Лос-Анджелесе, на летних курсах по численному анализу. Джон Кемени был на два года младше Курца и так же, как он, получил степень доктора в Принстоне. С компьютерами Джон Кемени был, что называется, «на ты». Еще во время учебы в Принстоне он ездил в 1945 г. в Лос-Аламос, шт. Нью-Мексико, где принимал участие в работе над особо секретным «Манхэттенским проектом» по созданию атомной бомбы. Наставником Джона Кемени был не кто иной, как сам Джон фон Нейман, чьи идеи в области компьютерных вычислений оказали непреходящее влияние на все дальнейшее развитие этого научного направления.

Как и фон Нейман, Джон Кемени был венгерским эмигрантом и талантливым математиком. К тому же он владел навыками применения математической логики для анализа сложных систем. В 1945 г. Джон Кемени, застенчивый юноша 16 лет, с весьма посредственным знанием английского языка, держал устный экзамен в одной из нью-йоркских школ в районе Манхэттена. Впоследствии он вспоминал об этом: «Мой словарный запас был ужасно скуден, и поэтому в каждом вопросе я улавливал всего несколько слов. Но поскольку это был тест, в котором для каждого вопроса предлагался набор вариантов в качестве ответа, то и того, что я понимал, было вполне достаточно для построения модели и нахождения правильного решения. Я сумел вскрыть этот код и получил одну из высших оценок во всем Нью-Йорке».

После войны Джон Кемени работал ассистентом у Альберта Эйнштейна в Принстонском институте перспективных исследований, одновременно заканчивая докторантуру. Так как получить место преподавателя математики (а эта наука была его истинной любовью) не удалось, он некоторое время преподавал логику. В 1953 г. ему предложили возглавить математический факультет в Дартмутском колледже. В то время ему было всего 27 лет.
 

Manual Basic
Слево направо: Томас Курц (Thomas Kurtz) и Джон Кемени (John Kemeny). 1966 г. Документация по языку программирования высокого уровня BASIC.

Когда Джон Кемени и Томас Курц только начинали свое сотрудничество, Дартмутский колледж (г. Хановер, шт. Нью-Гэмпшир) представлял собой лишь небольшое учебное заведение гуманитарного профиля, которое даже не имело своего компьютера. Однако благодаря усилиям двух молодых ученых всего за десять лет колледж не только стал счастливым обладателем прекрасного вычислительного центра, но и заслужил честь называться родиной языка Бейсик - одного из самых популярных языков, оказавшего значительное влияние на программирование.

В первое время Джон Кемени и Томас Курц были вынуждены работать со своими математическими программами где придется. Ближайший доступный им компьютер находился в 215 км в региональном вычислительном центре Новой Англии, который располагался в Массачусетском технологическом институте (МТИ), Кембридж. Это был новейший компьютер марки IBM-704, который имел феноменальный по тем временам объем памяти - 8192 слова, каждое длиной в 36 разрядов.

Но, даже добравшись до Кембриджа, Джон Кемени и Томас Курц все равно не могли самостоятельно работать на машине. Виной тому была нескладная система под названием система пакетной обработки batch processing. Поскольку компьютеры были тогда немногочисленны и страшно дороги, непосредственный доступ к ним предельно ограничивался. Программисту требовалось подготовить задание на перфокартах и передать его в вычислительный центр специальному оператору. Этот посредник вводил карты в машину в большом пакете, который часто содержал сотни е отдельных программ, принадлежавших многим пользователям.

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

Для Томаса Курца - а обычно именно он отвозил программы в МТИ - все это оборачивалось бесконечными поездками на поезде из Дартмута в Бостон и обратно.

Однако проблемы не ограничивались лишь неудобствами, связанными с пакетной обработкой. Помимо этого самые первые программы для машины IBM-704 приходилось писать на языке ассемблера. Программирование на этом языке по существу мало чем отличалось от программирования в двоичном коде. Если программа начинала вести себя «странно», то единственным способом поиска ошибки было изучение так называемого дампа памяти - длинной бумажной ленты, содержащей таинственные числовые коды.

Свое программистское мастерство Джон Кемени и Томас Курц оттачивали, изучая язык ассемблера и читая бесконечные дампы памяти для машины IBM-704. И хотя Джон Кемени лелеял мечту об установке компьютера в Дартмуте, он не представлял, как можно научить пользоваться им коллег и студентов, если процесс программирования не перестанет быть столь устрашающим.

К началу 60-х годов Джон Кемени и Томас Курц добились некоторых успехов. Так, в июне 1954 г. Дартмутский колледж заполучил собственный маленький компьютер - машину LGP-30 с объемом памяти вдвое меньше, чем у IBM-704. Томас Курц возглавил новоиспеченный вычислительный центр, и на протяжении нескольких лет два молодых профессора занимались разработкой простых языков, предназначенных для работы на машине LGP-30. Один студент младшего курса, не имевший до этого никакого опыта работы с компьютером, разработал язык и компилятор под названием «Дарт» DART.

Успехи студента подтвердили убеждение Джона Кемени и Томаса Курца - работа с компьютером вполне по силам студентам младших курсов.

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

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

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

Первым и одним из наиболее распространенных был Фортран (FORTRAN, от FORmula TRANslator - переводчик формул). Этот язык разработала в конце 50-х годов группа программистов фирмы IBM. FORTRAN специально предназначался для работы с формулами, используемыми в математике и других научно-технических дисциплинах.

Однако овладение им представляло трудность даже для инженеров. Например, оператор DO 150 I = 1,10 определяет начало цикла, предписывая компьютеру циклически выполнять операторы, записанные непосредственно вслед за ним вплоть до оператора с меткой 150 (включая и этот оператор). Причем первый раз цикл должен выполняться со значением переменной I, равным 1, а при каждом следующем выполнении значение переменной I должно увеличиваться на 1 - до тех пор, пока не станет равным 10. Если программист нечаянно запишет между 1 и 10 вместо запятой точку, то такой оператор уже будет интерпретироваться как присваивание величины I 10 переменной с именем DO150I.

Этот оператор вполне допустим (на жаргоне программистов - «правильный»), однако программа будет работать неверно.

И все же подобными препятствиями «дартмутский дуэт» испугать было трудно. Для начала они стали искать, чем заменить пакетный режим, и решили использовать систему разделения времени time sharing, впервые предложенную в МТИ в 1959 г.

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

Специальные программы позволяли процессору по очереди подключаться к каждому терминалу, выполняя при этом небольшую часть каждого задания в течение определенного периода (или кванта) времени, измеряемого обычно миллисекундами. Так как процессор обрабатывал информацию с очень большой скоростью, у каждого программиста создавалось впечатление, что машина работает только с ним одним. На самом же деле программисты просто разделяли между собой время работы компьютера. По мнению Джона Кемени и Томас Курца, именно такая система и была нужна в Дартмуте.

Следующая их идея заключалась в создании языка программирования, который легко бы осваивали студенты. Воображение рисовало язык, состоящий из простых слов английского языка, где использовались бы такие операторы, как SAVE (сохранить), RUN (выполнить) или LIST (вывести программу).

По синтаксису эти операторы должны быть сходны с операторами языка FORTRAN, но в то же время отличаться большей простотой. Например, чтобы получить от компьютера определенную фразу, программисту достаточно было бы просто набрать оператор PRINT (печатать), а вслед за ним заключенный в кавычки текст. По словам Джона Кемени, они хотели сделать язык настолько простым, «чтобы студенты могли использовать его уже после трех часов занятий».

Некоторые идеи Джона Кемени и Томас Курца отличались абсолютной новизной. Примером может служить оператор INPUT (ввести). Поскольку предполагалось, что студенты будут сами набирать программы непосредственно на терминале (а не передавать их в виде колоды перфокарт оператору вычислительного центра), то и язык был сконструирован с расчетом на интерактивное взаимодействие. Такое взаимодействие позволяет программисту изменять программу в процессе ее работы, для чего требуется прервать исполнение программы и ввести в нее новые данные или операторы.

Кроме того, разработанный Кемени и Курцом язык предусматривал единое представление чисел, что отличало его от FORTRAN, где используются два типа чисел - целые и так называемые числа с плавающей точкой (эти числа задают дроби, и компьютер действительно интерпретирует их как числа, у которых десятичная точка может перемещаться). Поэтому студенту, программирующему на Бейсике, не нужно помнить о том, что в результате деления целого числа 2 на целое число 3 получится число, тип которого отличается от типа чисел 2 и 3. Как позднее отмечал сам Томас Курц, «практически любое употребление чисел оказывалось правильным».

Для нового языка было выбрано очень удачное название - универсальный символический код для начинающих (Beginner's All-purpose Symbolic Instruction Code, или, сокращенно, BASIC).

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

Летом 1963 г. Джон Кемени начал разрабатывать первую версию компилятора для языка BASIC. Осенью того же года два студента приступили к проектированию и кодированию операционной системы для машин, на которых Джон Кемени и Томас Курц намеревались реализовать свои идеи. Это были машины «Дженерал электрик-225» (General Electric-225) и «Дейтанет30» (Datanet-30), приобретенные благодаря субсидиям Национального научного фонда и скидке, предоставленной фирмой General Electric. В феврале 1964 г. оборудование было доставлено в колледж, и темпы работ сразу возросли.

Наконец, 1 мая 1964 г. все усилия слились воедино. В 4 ч утра в полуподвале здания колледжа Джон Кемени и его коллеги заняли места у трех телетайпов, использовавшихся в качестве терминалов, и начали набирать программы. Позднее Кемени так вспоминал это событие: «Мы и раньше неоднократно проделывали подобную операцию, но именно в этот раз все наконец заработало. Одновременно родились язык BASIC и система разделения времени». К июню число терминалов выросло до 11, а к осени их стало уже 20.

Вскоре работа в режиме разделения времени преобладала в большинстве крупных организаций - в университетах, правительственных агентствах и корпорациях. Правда, там обычно использовался не BASIC, а другие языки программирования. Сам же BASIC стал поистине массовым языком программирования. В значительной степени этому способствовало то, что BASIC практически повсеместно начали использовать как встроенный язык для микрокомпьютеров, получивших широкое распространение в конце 70-х годов. К середине 80-х годов с BASIC познакомились миллионы американских школьников, а вообще в мире этим языком владеет больше людей, чем всеми скандинавскими (норвежским, шведским и датским) вместе взятыми.
 
IBM-704
IBM-704

LGP-30
Клавиатура компьютера LGP-30