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

image

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

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

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

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

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

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

image

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

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

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

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

image

Отримавши ступінь магістра математики в Колумбійському університеті, на запрошення Рекса Сибера — одного з винахідників машини 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 метрів, а програмісти перебували всередині комп'ютера.

image

Обчислення виконані, в тому числі і Бэкусом, на 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), Шелдон Бест (Sheldon Best), Девід Сэйр (David Sayre), Річард Голдберг (Richard Goldberg) і Пітер Шерідан (Peter Sheridan).
У своїх спогадах Бэкус пише, що за властивою йому ліні він створив таку систему управління групою, що йому, власне, і робити нічого не доводилося. Найбільшу складність представляла для нього тільки завдання, як змусити членів групи не витрачати стільки часу на ігри. Програмісти з групи Бекуса під час ланчу любили грати в шахи (правда, в той час ще не віртуальні, а справжні). І ніякі погрози не допомагали у боротьбі з цим: раніше 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 року.

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

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

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

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

image
Синтаксичні діаграми 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.

Пам'ять

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

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

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

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.