Раздел 1.4. Лампы и Жуки: Грейс Хоппер и Язык людей
Мы прошли путь от картона до электронов, от чистой теории до архитектуры. Но оставалась одна последняя проблема: между человеком и машиной стояла стена непонимания. Компьютеры говорили на языке тока, люди — на языке слов.
Нужен был переводчик. И им стала маленькая женщина в военно-морской форме.
Раздел 1.4. Лампы и Жуки: Грейс Хоппер и Язык людей
К концу 1940-х годов компьютеры уже работали, но программирование оставалось занятием для избранных. Это было не творчество, а пытка. Чтобы заставить машину сложить два числа, нужно было знать наизусть коды операций в восьмеричной или двоичной системе. Ошибка в одном бите рушила недельный труд.
Программисты того времени были «жрецами»: они говорили с машиной на её языке, презирая тех, кто не понимал математику.
И тут появилась Грейс Хоппер.
А. Первый Баг: Смерть мотылька
Лето 1947 года. Гарвардский университет. Грейс Хоппер и её команда работают с компьютером Mark II. Это не бесшумный ноутбук. Это электромеханический монстр весом в несколько тонн. Внутри него нет транзисторов (они только-только изобретаются в Bell Labs), зато есть тысячи реле — механических переключателей, которые физически щелкают, размыкая и замыкая контакты. Гул в машинном зале стоит такой, будто вы находитесь внутри гигантских часов.
9 сентября машина внезапно останавливается. Тесты проваливаются. Инженеры начинают искать причину. Это изнурительная работа: нужно проверить тысячи контактов.
Наконец, в Реле №70 на Панели F они находят причину сбоя. Между контактами реле залетел ночной мотылек. Когда реле замкнулось, несчастное насекомое было раздавлено и поджарено высоким напряжением. Тельце мотылька стало изолятором — ток перестал проходить.
«First actual case of bug being found»
Что сделала Грейс? Обычный инженер просто выкинул бы насекомое и продолжил работу. Но Грейс Хоппер обладала чисто военным педантизмом и чувством истории. Она взяла пинцет, аккуратно извлекла мотылька и... вклеила его скотчем в технический журнал.
Рядом она написала фразу, ставшую легендарной:
«First actual case of bug being found» (Первый реальный случай обнаружения жука).
След в будущем
Слово «Bug» (жук) использовалось инженерами еще со времен Эдисона для обозначения мелких неполадок. Но именно Грейс Хоппер сделала его официальным термином в IT.
- Debugging (Отладка): До этого момента считалось, что если программа не работает, значит, математик ошибся в формуле. Хоппер показала, что ошибка может быть физической. Программное обеспечение живет в реальном мире, где контакты окисляются, а мотыльки залетают в форточки.
- Сегодня, когда вы говорите «Я дебажу код», вы отдаете дань уважения тому самому мотыльку из 1947 года.
Б. «Научите его говорить по-английски»
Если история с жуком — это забавный анекдот, то вторая история про Грейс Хоппер — это фундамент всей современной софт-индустрии.
Проблема: Проклятие восьмеричного кода
К началу 50-х Грейс работала в компании UNIVAC. Она была блестящим математиком, но она была ленивой (в хорошем смысле). Ей надоело писать в тетрадке столбики цифр вроде 0010110, чтобы заставить компьютер сделать сложение.
Она подумала: «Почему мы должны учить язык машины? Пусть машина учит наш язык!».
Безумная идея
Хоппер предложила концепцию: человек пишет программу английскими словами — ADD, SUBTRACT, MOVE, IF. А специальная программа-посредник переводит эти слова в нули и единицы.
Коллеги-мужчины подняли её на смех.
«Грейс, компьютеры не знают английского. Они знают только арифметику. Нельзя превратить литературу в электричество».
Ей говорили, что это пустая трата вычислительных ресурсов. Компьютер должен считать формулы, а не заниматься лингвистикой.
Изобретение Компилятора (A-0)
Грейс их не послушала. В 1952 году она написала систему A-0 (Arithmetic Language version 0). Это был первый в истории Компилятор (хотя тогда это называли «линкером»).
Как это работало:
- Она написала библиотеку кусочков машинного кода (подпрограммы) и присвоила им понятные номера/имена.
- Теперь, вместо того чтобы писать код с нуля, она писала: «Вызови функцию СЛОЖЕНИЯ».
- Компьютер сам собирал готовую программу из кусочков.
COBOL: Язык для бизнеса, а не для физиков
В 1959 году на основе идей Хоппер был создан язык COBOL (COmmon Business-Oriented Language).
Взгляните на строчку кода COBOL. Она выглядит как крик души бухгалтера: SUBTRACT TAX FROM GROSS-PAY GIVING NET-INCOME.
Никаких интегралов. Никаких битовых сдвигов. Чистый английский язык.
Бизнес-контекст (Демократизация): Это изобретение взорвало рынок.
- До COBOL компьютеры покупали только военные и научные институты, где были штаты математиков.
- После COBOL компьютеры стали покупать Банки и Страховые компании. Им не нужно было нанимать Эйнштейнов. Им достаточно было обучить своих клерков писать инструкции на псевдо-английском.
Наследие: Грейс Хоппер, «Бабушка COBOL», дослужилась до звания контр-адмирала. Она демократизировала IT. Если бы не она, программирование осталось бы узкой сектой жрецов-математиков. Она открыла дверь для бизнеса, превратив написание кода из научной работы в офисную рутину.
Финал Модуля 1: Замыкая Арку
Мы закончили первый модуль. Оглянитесь назад, чтобы увидеть полную картину.
- Чарльз Бэббидж (1837) спроектировал Тело компьютера (разделение на Память и Процессор), но не смог вдохнуть в него жизнь.
- Алан Тьюринг и Клод Шеннон (1930-40-е) дали компьютеру Разум (логику алгоритмов) и Голос (биты информации).
- Джон фон Нейман (1945) создал Скелет (архитектуру), который позволил сделать компьютеры дешевыми и перепрограммируемыми.
- Грейс Хоппер (1950-е) дала компьютеру Язык. Она стала переводчиком, который позволил человеку объяснить машине свои желания.
Теперь у нас есть всё: железо, теория, архитектура и язык. Но компьютеры все еще огромные, дорогие и стоят в изолированных залах. В следующем модуле мы увидим, как хаос 60-х заставит нас придумать правила и дисциплину, чтобы этот «цифровой голем» не вышел из-под контроля.