Персона. Джон Бекус - творець першої мови програмування високого рівня

17 жовтня 1977 року на щорічній конференції АСМ премія Алана Тьюрінга була вручена людині, яка створила першу високорівневу мову програмування для наукових і технічних цілей.

Премія була присуджена Джону Бэкусу "... за глибокий і важливий внесок у створення практичних систем програмування високого рівня. Особливо - за роботи з Fortran і часті публікації формальних процедур для специфікації мов програмування ".

У 50-х роках ХХ століття праця програміста з написання, введення і налагодження програм була далеко не легкою: спочатку програми писалися машинною мовою.

Для полегшення долі програмістів були придумані підпрограми, а потім перші ассемблери. Але ефективність програмування від цього істотно не підвищилася. Якби хтось міг написати транслятор, який дозволив би вводити команди зі слів і символів, а потім автоматично конвертувати їх у машинний код...

Марний Бекус

Джон Бекус народився 3 грудня 1924 року у Філадельфії. Його батько був головним інженером-хіміком у компанії з виробництва нітрогліцерину. Бекус-старший починав свою кар'єру як простий службовець, але потім просунувся службовими сходами під час Першої світової війни, коли завдяки його технічним винаходам було попереджено серію вибухів на заводах.

Джон закінчив школу у Вашингтоні, потім восени 1942 року вступив до Віргінського університету на хімічний факультет. Юнак не подавав жодних надій у плані подальших успіхів. Педагоги сумнівалися, що він міг принести хоч якусь користь суспільству. Як пізніше згадував він сам, незважаючи на те, що батьки визначили його в престижну школу, процес навчання викликав у нього огиду. Коли Бекус вступив до університету, єдиним заняттям, яке він відвідував раз на тиждень, був урок музики.

До кінця другого семестру, в 1943 році, керівництво університету вирішило, що подальше перебування юнака в стінах навчального закладу зайве: Бекус був відрахований. У цей час була в розпалі Друга світова війна, і США вже півтора року вели бойові дії проти Японської імперії. Молодий Джон Бекус в чині капрала був прийнятий в дружні ряди тихоокеанської ППО. Однак у бойових діях Бекус участі не брав.

Пошук себе

Після демобілізації Джон повернувся в США і оселився в Нью-Йорку. Перед ним знову постало питання вибору професії. Ніщо, крім музики, його не приваблювало. Оскільки йому сильно хотілося мати хорошу апаратуру для прослуховування музики, він вступив до школи радіотехніки: отримавши там необхідні навички, він зміг би самостійно сконструювати музичну апаратуру.

Одного разу один викладач попросив Джона Бекуса допомогти йому з побудовою графіків частотних характеристик підсилювача. Обчислення були нескладними, але їх велика кількість втомлювала. Несподівано ці математичні операції зацікавили Бекуса. Викладач з ремонту теле- і радіоапаратури пробудив у ньому інтерес до математики і переконав його продовжити освіту в Колумбійському університеті.

Навесні 1949 року, за кілька місяців до отримання диплома, 25-річний Джон Бекус, як і раніше, не міг визначитися зі своїм майбутнім. У пошуках перспективної роботи його занесло в Комп'ютерний центр IBM на Медісон Авеню. Як виявилося, це була «доленосна випадковість».

Отримавши ступінь магістра математики в Колумбійському університеті, на запрошення Рекса Сібера - одного з винахідників машини SSEC (Selective Sequence Electronic Calculator) - Бекус вступив на роботу програмістом у фірму IBM. Це сталося 1950 року.

IBM

Бекус мало що знав про комп'ютери, коли прийшов у фірму IBM. Однак, пропрацювавши на SSEC близько року, він очолив невелику групу програмістів, яка розробила інтерпретатор Speedcoding для комп'ютера IBM 701.

Тоді слово «комп'ютер» (computer) позначало зовсім не те, що воно позначає сьогодні. Selective Sequence Electronic Calculator (SSEC) був однією з перших розробок IBM в новій області електронних обчислювальних пристроїв на вакуумних лампах. Цей, так би мовити, комп'ютер не мав пам'яті, а весь ввід і висновок відбувався за допомогою перфолент. Так що, комп'ютерами були в якомусь сенсі і люди, які «допомагали» машинам.

У проекті SSEC Джона Бекуса підключили до вирішення завдання обчислення положення Місяця в 12-годинному інтервалі на 200-річному відрізку часу. Для обчислення кожної позиції Місяця потрібно було зробити 11 тисяч складень і віднімань, 9 тисяч множень і виконати 2 тисячі переглядів спеціальних таблиць. Це завдання вимагало напруженої роботи 13 тисяч величезних вакуумних ламп SSEC. Різні вузли SSEC розташовувалися вздовж трьох стін кімнати розміром 18 на 6 метрів, а програмісти знаходилися ніби всередині комп'ютера.

Обчислення, виконані, в тому числі і Бекусом, на SSEC, до речі, використовувалися в космічній навігації НАСА в період з 1952 по 1971 роки. Пізніше йому доводилося виконувати і більш екзотичні завдання - наприклад, обчислення точних орбіт п'яти зовнішніх планет Сонячної системи на часовому інтервалі з 1653 по 2060 роки.

SSEC морально застарів вже в 1952 році і був демонтований.

Fortran

У 1954 році компанія IBM запустила новий проект - IBM 704. На відміну від лампової ЕВМ 701, новий проект був електронно-магнітним. IBM 704 надала програмістам універсальний набір команд для роботи, в тому числі з числами з плаваючою комою.

Реалізовувати мовою асемблера алгоритми обробки чисел з плаваючою комою нелегко. А програмувати в ту пору доводилося в основному тільки математичні формули, і ніяких математичних співпроцесорів не було. Зрештою «ледар» Джон Бекус (як він згодом жартівливо, а може, і не зовсім жартівливо згадував) став все більше замислюватися над тим, як створити мову, незалежну від архітектури машини і дозволяє легко програмувати математичні формули.

Джон Бекус звернувся до свого шефа Кутберта Херда з пропозицією розробити практичну мову програмування високого рівня і компілятор для машини IBM 704. Пропозицію Бекуса було схвалено.

Fortran народився в штаб-квартирі фірми IBM на Медісон-авеню в Нью-Йорку - в офісі на 19 поверсі, де розташувалася група Бекуса. Спочатку з Бекусом працював тільки Ірвінг Циллер, потім приєднався Харлан Херрік з командою математиків і техніків.

Бекус зібрав групу з дев'яти дипломованих фахівців з математики, і вони з ентузіазмом взялися за роботу зі створення нової мови. Ці дев'ять осіб пізніше увійшли в історію програмування - Роберт Нельсон (Robert Nelson), Харлан Херрік (Harlan Herrick), Льюїс Хейт (Lois Haibt), Рой Нат (Roy Nutt), Ірвінг Циллер (Irving Ziller), Шayдон), Shdест (Bdест, Shdест, ShDdест, ShBD.

У своїх спогадах Бекус пише, що через властиву йому лінь він створив таку систему управління групою, що йому, власне, і робити нічого не доводилося. Найбільшу складність представляла для нього тільки завдання, як змусити членів групи не витрачати стільки часу на ігри. Програмісти з групи Бекуса під час ланчу любили битися в шахи (правда, в той час ще не віртуальні, а справжні). І ніякі загрози не допомагали в боротьбі з цим: раніше 14:00 вони зазвичай гру не закінчували.

З тих пір деякі думають, що «справжні» програмісти повинні витрачати не менше двох годин на день на (вже комп'ютерні) ігри.

Розробники не сподівалися, що їх мова програмування буде коли-небудь використовуватися на машинах, відмінних від IBM 704, але вони були впевнені, що в разі успіху їх робота істотно вплине на ІТ-індустрію.

Вони виділили основні поняття нової мови, зокрема оператор присвоювання (наприклад, N = 100), який задавав змінним певні значення, ввели індексовані змінні, які повідомляли комп'ютеру, який елемент зі списку змінних потрібен (наприклад, X (3) означає третій елемент списку, названого X), запропонували дуже важливий оператор DO, який дозволяв повторювати потрібну послідовність операторів задане число разів.

Текст програми став більш простим, з'явилися конструкції IF для організації гілок і цикли. Неймовірно спростилося програмування формул. Наприклад, формула D = B ^ 2-4AC, програмування якої навіть сучасною мовою асемблера потребує десяток рядків коду, новою мовою записувалася наступним чином: D=B**2-4*A*C.

Як заявляв Бекус, люди помилково вважали, що основний внесок Fortran - це можливість писати програми у вигляді алгебраїчних формул, а не машинною мовою. На його думку, Fortran насамперед автоматизував організацію циклів. Важливість цього завдання при розробці наукових додатків складно переоцінити.

Робота над мовою йшла швидко, чого не можна було сказати про розробку компілятора. Бекус розумів, що розвіяти сумніви в можливостях «автоматичного» програмування, тобто написання програм мовами високого рівня, нелегко. Програми на Fortran повинні бути такими ж швидкодіючими і надійними, як і написані в машинних кодах або мовою асемблера.

З трьох років, витрачених на розробку проекту в цілому, більше двох років зайняла робота над компілятором. Якщо перше повідомлення про створення мови група зробила 1954 року, то про розробку компілятора - тільки в квітні 1957 року.

Перша сторінка підручника Fortran з автографом Бекуса

Розробники довго не могли визначитися з назвою нової мови. Бекус придумав кілька банальних назв, але щоразу вони не влаштовували колег. Але одного разу він запропонував FORTRAN (FORmceTRANSlation). Реакція була аналогічною, але цю назву було прийнято через відсутність кращого.

Джон Бекус, звичайно, жартує, коли каже, що нічого не робив. Лаври творця першої мови високого рівня належать йому по праву.

Algol

Іншим важливим досягненням Бекуса стало застосування способу формального запису - БНФ (Бекуса - Наура форма) для опису мови Algol.

У 1958 році Джон Бекус вирішив взяти активну участь в обговоренні нової мови (він згодом і отримав назву Algol) в Цюріху. Однак виникла проблема - англійська мова, якою вияснювався Бекус, була мало зрозумілою швейцарським програмістам. У зв'язку з цим для опису конструкцій мови були застосовані спеціальні діаграми, які Бекус розробив спільно з данським астрономом і програмістом Пітером Науром. Відтоді форма Бекуса-Наура (Backus-Naur Form - BNF) стала таким собі «есперанто» світового програмування. Програмісту, який володіє BNF, для знайомства з новою мовою не потрібно вивчати об'ємні праці з його словесним описом: достатньо вивчити BNF цієї мови.

Синтаксичні діаграми BNF і дерево розбору

У лютому 1959 року Бекус переконав впливову організацію SHARE (куди входили користувачі комп'ютерів фірми IBM) зробити ставку на нову мову програмування. Після цього організація настійно порекомендувала IBM реалізувати Algol.

На словах компанія пішла назустріч своїм клієнтам, а на ділі робота в цьому напрямку майже не велася. У той час IBM була світовим лідером на ринку комп'ютерів і активно впроваджувала Fortran, що цілком очікувано. У членів SHARE, насправді, теж не було ясної позиції. Коли їх ентузіазм згас, вони як ні в чому не бувало продовжували підтримувати Fortran.

А Бекус, незважаючи на невдачу, продовжував активно просувати Algol.

FP

У 70-ті роки Джон Бекус спільно з Джоном Вільямсом і Едвардом Вімерсом він розробив нову мову програмування FP.

FP - це так звана чиста функціональна мова програмування, в якій програміст зосереджується не на змінних і їх значеннях, а на «чорних скриньках» - функціях, що мають вхід і вихід.

Бекус представив світу нову мову в 1977 році в статті під назвою "Can Programming Be Liberated from the von Neumann style? A Functional Style and its Algebra of Programs ("Чи можливо звільнити програмування від стилю фон Неймана? Алгебра програм у функціональному стилі ").

FP був задуманий швидше як математична модель, ніж як засіб розробки ПЗ. Він є канонічним прикладом мови, що використовує функціональну парадигму.

У FP особливу увагу приділено точному семантичному опису та обробці абстрактних типів даних. Також разом зі своїми співробітниками Бекус розробив оптимізуючий компілятор, що використовує алгебраїчні перетворення.

Ідеї, використані в FP, були використані при створенні мови LISP.

Пам'ять

Джон Бекус пішов з життя 17 березня 2007 року. Йому було 82. Незважаючи на те, що на початку шляху він не знав, що робити зі своїм життям, доля прийняла це рішення за нього.

Крім премії Алана Тьюрінга, про яку було сказано вище, Джон Бекус у 1976 році був нагороджений Національною медаллю за внесок у науку.

"Іноді стимулом до винаходу стає не політ творчої думки і не необхідність, а бажання відпочити від нудної і важкої роботи. Джон Бекус переконаний, що саме це змусило його розробити мову, значною мірою автоматизує роботу програміста ", - пише Леслі Гофф.

COM_SPPAGEBUILDER_NO_ITEMS_FOUND