Ах, программирование в доисторические времена — это вам не щелкать пальцами и получать готовый код!
Представьте себе: сидит программист, перед ним огромная машина с мигающими лампочками, а перед ним лист бумаги с кучей загадочных чисел и букв. И вот этот бедняга должен вручную перевести алгоритм решения задачи в машинные коды! Да-да, никакого гугла, никакого Stack Overflow — просто ты и твоя память.
Распределять переменные по ячейкам памяти вручную? Это как пытаться упаковать чемодан для путешествия на Марс, не забыв про каждую пару носков.
В те времена компиляторы были редкостью, а языки программирования — сказкой из будущего. Программисты делились на два типа: тех, кто понимал эту машину чуть ли не лучше своей жены, и тех, кто уже отчаялся жить.
Именно тогда родилось то самое разделение труда, которое сегодня воспринимается как анахронизм. Знаете, это примерно как если бы повар на кухне сам выращивал овощи и убивал курицу — неудобно?
Да! Но что делать — возможностей мало.
Чтобы хоть как-то облегчить страдания программистов, придумали мнемоники — сокращения словесных названий команд. Это было как шифр для посвящённых: вместо «01010101» писали «ADD» или «SUB».
Человеку стало чуть проще понять написанное кем-то другим и найти ошибку (а ошибок было много — ведь каждая ошибка могла стоить целого дня работы). Вот представьте: вы пишете программу для ЭВМ Урал (нет, не тот самый уральский трактор), где каждая команда состоит из кода операции плюс куча дополнительных полей — признак переадресации там, признак длины ячейки сям… Это был настоящий головоломный пазл!
Если вы думаете, что за границей всё было по-другому — спешу вас разочаровать. Вот фрагмент документации для UNIVAC-I: кодирование символов 6-битное!
Подумаешь байт? Это была эпоха «маленьких битов»! Если бы программисты того времени знали о сегодняшних 8-битах и байтах по 256 значений — они бы просто упали в обморок от счастья.
А теперь представьте себе руководства по программированию тех лет!
«Basic» там вовсе не название языка программирования (как многие думают), а всего лишь «базовый». То есть «Введение в программирование для UNIVAC-I».
В те времена даже слово «программирование» звучало как заклинание волшебника.
Результат труда программиста поступал к кодировщику – человеку с холодным сердцем и горячими мозгами – который вручную формировал машинные команды. Вот фрагмент готовой программы – выглядит так же весело и понятно, как меню китайского ресторана на незнакомом языке.
Неудивительно, что программирование тогда было сродни искусству жонглирования цепями ДНК.
Из-за таких сложностей массовое распространение ЭВМ казалось фантастикой: каждая машина была уникальна словно снежинка (только без очарования), а программы нельзя было просто так взять и перенести на другую машину. Каждый программист чувствовал себя археологом в мире технологий.
Но затем случился прорыв!
Машина сама стала преобразовывать мнемонические записи в машинные коды при помощи чудо-программы под названием «ассемблер». Теперь кодировщику можно было вздохнуть свободнее – двоичные коды формировала сама машина. Ассемблер стал настоящим спасением для человечества!