Найти тему

История IT — 1970 год: запуск UNIX-времени, создание Pascal и патент на компьютерную мышь

Оглавление

Разработчик, тимлид и ведущий IT Way Podcast Павел Калашников начинает на Хекслете цикл статей про историю IT. Первая — про 1970 год, создание мини-компьютера, патент на компьютерную мышь, разработка Pascal и старт UNIX-времени.

Сегодня рассказываем про 1970 год:

  • Зарегистрировали патент на компьютерную мышь. Хотя она уже существовала какое-то время
  • Появился первый мини-компьютер. PDP 11/20
  • Самый сложный язык программирования — первый. Разработан Pascal
  • Начало UNIX-времени. В прямом смысле этого слова
  • На каком языке работали Шаттлы, спускаемые аппараты, искавшие Титаник, и первых автоматизированных системах анализа крови. Появление Forth.

Начало времен

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

-2

Первый год нашей эры привязан к рождению Иисуса Христа. Но по мнению большинства ученых, игумен Дионисий Малый, определяя этот год в VI веке нашей эры, ошибся на несколько лет. То есть мы с вами живем спустя 2022 года после года, который определил игумен из Рима. Тут даже хочется уже спросить не «Какой сейчас год?», а «Когда мы?». Невольно наталкиваешься на экзистенциальные размышления.

Спокойно! Если вы потерялись во времени, у меня есть для вас утешение — я точно могу сказать, где мы находимся. На момент написания этого текста прошло 1665554042 секунды с 1 января 1970 года 00:00:00.

Это и есть Unix-время. Оно названо в честь семейства операционных систем Unix, которые появились в конце 60-х- годов.

Сегодня такое численное представление времени используют практически во всех операционных системах и компьютерах. И я бы мог сказать: «Смотрите — это число, которое точно может определить ваше место во времени», — но это не так. Ведь Unix-время не учитывает, что что вращение Земли вокруг Солнца постепенно замедляется.

Поэтому иногда нужно исправлять мировое цифровое время и добавлять ко времени одну секунду. Такое периодически делают 30 июня или 31 декабря. С 1972 года добавлено примерно 30 дополнительных секунд, последний раз так сделали в 2016 году.

Операционные системы и критическое программное обеспечение учитывают эти дополнительные секунды, в том числе и Unix. Но именно UNIX-время их не учитывает, потому что ее методология была придумана раньше.

У UNIX-времени есть другое интересное свойство. 19 января 2038 года в 03:14:08 время закончится. Изначально для определения UNIX-времени использовали 4-байтные числа, а их диапазон — от -231 до 231 - 1.

В случае с UNIX-временем 01.01.1970 — это ровно 0. Минимальное возможное время — 13 декабря 1901 года, 20:45:52 (соответственно −2 147 483 648 секунд от 1 января 1970 года), а максимальное возможное время 19 января 2038 года в 03:14:08. Что произойдет в эту секунду с операционными системами? С современными — ничего, они давно используют не 32-разрядные числа, а 64-разрядные числа для управления UNIX-временем. Этого количества секунд хватит на 200+ млрд лет. Так что, если вы не планируете переживать нашу Галактику, вам времени хватит.

А вот у систем с 32-разрядным временем могут быть проблемы, которые зависят от конкретной реализации времени в этих системах: в некоторых время начнется с минимального отрицательного числа — с 13 декабря 1901 года, в других будет 1970 год. А некоторые вообще перестанут работать. За такими процессами будет интересно наблюдать.

Появление компьютерной мыши

Вы знаете, кто такой Дуглас Энгельбарт? А этот человек повлиял на вашу жизнь больше, чем Егор Крид или Нурлан Сабуров. Вот лишь краткий список изобретений, который приписывают Дугласу Энгельбарту:

  • компьютерная мышь
  • графический интерфейс
  • гипертекст
  • групповые онлайн-конференции

Вы спросите, а как можно было изобрести групповые онлайн-конференции. Он сделал Zoom? Нет. Дуглас Энгельбарт описывал принципы работы всех вышеперечисленных решений и регистрировал эти наработки как патенты. В 1970 году Дуглас получил патент US3541541A на “X-Y position indicator for a display system” (Система отображения координатного указателя на экране).

Интересный факт, что первая версия мыши была собрана еще в 1963 году, а представлена публике в декабре 1968 года на Осенней Объединенной компьютерной конференции в Сан-Франциско. Но отдельной презентации у нее не было — ее показали как вспомогательное устройство для групповой онлайн-конференции. Тогда этим термином назвали онлайн-переписку между компьютерами в одной сети и совместную работу над документом. Мышь использовалась как манипулятор, с помощью которого пользователи переключались между режимами.

Дуглас Энгельбарт не разбогател за счет патента на мышь. Как признавались его коллеги, единственный чек, который он получил — это несколько тысяч долларов от компании Xerox, когда она готовилась создавать компьютер с графическим интерфейсом.

В 1972 году Xerox разработали свою собственную мышь, это была первая мышь с шариком внутри. Если вам больше 25 лет, вы помните, что до появления оптических мышек существовали мышки с шариком. Их еще нужно было иногда вытаскивать и чистить, чтобы отклик был лучше.

Именно у Xerox через 12 лет команда Стива Джобса взяла идею мышки и графического интерфейса, которую применила в своем компьютере Macintosh. Эта история в красках рассказана в художественном фильме «Пираты Силиконовой долины» про первые десятилетия существования Apple и Microsoft.

-3

За Дугласа Энгельбарта можно не переживать — помимо патента на мышь у него было еще около 20 патентов, в том числе связанных с оборонной промышленностью. Кроме этого, он регулярно получал премии в размере сотен тысяч долларов.

Первый мини-компьютер

Есть ли у вас предрасположенности к гигантизму? Не знаю про вас, но могу точно сказать, что у специалистов и руководителей компании DEC они скорее всего были. В 1970-х годах они активно выпускали мини-компьютер серии PDP-11 (белая коробка, на фото справа).

-4

Компьютеры серии PDP-11 были как большими шкафами, так и маленькими, как изображено на фото выше. Маленькие версии компьютеров мог перемещать один человек.

Чем эта серия компьютеров примечательна? Во-первых, это был один из первых по-настоящему серийных компьютеров. Конструкция устройств серии PDP-11 была реализована таким образом, чтобы собирать их на конвейере с помощью неквалифицированной рабочей силы. Переход на конвейер позволил сильно уменьшить себестоимость машины.

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

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

А вот все компьютеры серии PDP-11 имели обратную совместимость. Грубо говоря, программа, написанная для большой модели компьютера, работала и на его мини-версии. Это не было прорывом, но впервые работало настолько стабильно.

Самый сложный язык программирования — Pascal

Спросите у программиста, какой самый сложный язык программирования? В ответ услышите несколько вариантов: Haskell, Brainfuck, Malbolge, C++, R и так далее. И все эти ответы будут неверными.

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

Несколько десятилетий Pascal использовался как обучающий язык программирования. Никлаус Вирт создавал Pascal именно как учебное пособие для начинающих программистов. Поэтому для большинства современных программистов Pascal — первый язык программирования в жизни.

В современном мире Pascal практически перестал использоваться как обучающий первый язык программирования: его заменили Python и Javascript. Это логично: на Pascal сложно писать реальные программные продукты, а Python и JavaScript — лидеры индустрии. Поэтому студенту не нужно после окончания курса обучения переходить на другой язык, чтобы начать реальную разработку.

Первый релиз Pascal произошел в 1970 году, хотя мог случиться и раньше — Никлаус Вирт потратил несколько лет, чтобы подготовить первую версию языка. Синтаксис и базовые конструкции Pascal приучали начинающих программистов к дисциплине и не давали тех свобод, которыми уже обладали другие «коллеги по цеху». Первая версия Pascal была строго-типизированным процедурным языком.

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

Другим важным преимуществом Pascal перед конкурентами была цена. Компьютеры стоили в те времена баснословных денег, сложные программные продукты едва ли уступали в стоимости. Разработчики ПО продавали свои программы очень дорого, тогда как гибкий диск со средой Pascal стоил всего $50. Это сразу массово привело Pascal в школы и небольшие университеты. Программисты учили Pascal, а потом создавали компании и программные продукты с его помощью, распространяя сам язык дальше.

Ну и в конце этой главы картинка, чтобы олдскулы свело :) program primer — просто песня, которая поет откуда-то издалека.

-5

«Астрономический» язык программирования — Forth

В 2016 году на Github был опубликован репозиторий с исходными кодами аппарата Аполлон-11 на Ассемблере. Время запуска Аполлонов было очень важной вехой в развитии разработки — люди программировали космические корабли, которые летали на другую планету (я знаю, что Луна не планета, просто так звучит лучше). Все больше людей узнавали о возможностях программирования, и хотели стать не только астронавтами, но и программистами, которые этих астронавтов отправляют в космос.

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

-6

«Это временное решение», — написал разработчик почти 60 лет назад.

В целом программы Аполлонов были очень сложными, как и другие программные продукты, разработанные для сложных аппаратов.

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

Решением этой проблемы занялся Чарльз Мур. Он начал программировать язык Forth, который к 1976 году стал стандартом в американском астрономическом сообществе. Название означает «четвертый», которое авторам языка нужно было уместить в пять букв — и уже никто не помнит, почему так. Поэтому из слова Fourth убрали одну букву.

Одна из главных особенностей, которую автор языка заложил в Forth — возможность запрограммировать язык на этом же языке. Это сейчас стало модным и нормальным, что языки программирования написаны на этих же языках. Но тогда языки высокого уровня не обладали достаточной «мощностью», чтобы на них возможно было запрограммировать сам язык.

Параллельно с этим перед Муром стояла задача сделать достаточно гибкий язык программирования, чтобы можно было создавать и использовать абстракции для конкретной предметной области. Forth стал одним из флагманов зарождения и развития абстрактных типов данных в программировании.

На Forth кроме радиотелескопов программировали некоторые инструменты для шаттлов, системы управления аэропортами и многое другое. Сегодня Forth переродился в язык Fift, который используется в TVM, или Telegram Open Network Virtual Machine. То есть на языке Fift пишутся смарт-контракты для блокчейна TON.

В официальном описании языка Fift написано, что он основан на стековом языке и очень похож на Forth. Так что у него все еще есть будущее.

Еще больше полезных материалов для тех, кто погружается в IT

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

➡️ ЧИТАТЬ БЛОГ