Недавно я имел удовольствие покопаться в своем очень старом проекте — текстовом процессоре Interword, который я портировал на Commodore 64 еще в начале 1990-х. Удивительно, но исходный код прожил 25 лет на дискете размером 5,25 дюйма, хранившейся на чердаке моих родителей.

Он был запрограммирован на языке ассемблера 6510. Это был способ разработки по умолчанию для C64, если только вы не использовали встроенный BASIC. Но BASIC был очень медленным, поэтому вам не хотелось бы этого делать.

Выложил на гитхаб как исторический артефакт: https://github.com/mvindahl/interword-c64

Также мне удалось скомпилировать исходники в VICE и запустить: https://github.com/mvindahl/interword-c64/wiki/Building-from-sources-in-VICE

Особенно последняя часть была путешествием по переулку памяти. Это также породило несколько размышлений о том, как тогда разрабатывалось программное обеспечение C64, по сравнению с экосистемой Java и Javascript, в которой я разрабатываю сегодня.

Программа взломала оборудование

Когда вы выполняли машинный код C64, вы владели вещью. Не было виртуальных машин или песочниц, в которых выполнялся бы код, и вам не нужно было делить ЦП с какими-либо другими выполняющимися приложениями. Графические чипы иногда останавливали выполнение вашей программы, чтобы прочитать данные из ОЗУ, но потоков не было. И не было управления памятью.

Таким образом, мы, как правило, просто загружали наш код в какой-то абсолютный адрес, который нам нравился, и нам это сходило с рук. Это был простой мир.

Информацию было трудно найти

Я выучил язык ассемблера 6510 по книге, которую взял в муниципальной библиотеке. Я научился другим дополнительным приемам из журналов или из статей, размещенных на дискетах, или разговаривая с теми, кто находился поблизости, или заглядывая в существующий код с помощью монитора машинного кода моего Final Cartridge 3.

Но этой информации было мало, и ее было трудно найти. Всемирной паутины еще не было. Развитие было довольно замкнутым.

Распространение было обычной почтой

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

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

Наличие связей такого рода было ключом к получению программного обеспечения. И к распространению собственных хобби-проектов.

Было очень мало стороннего программного обеспечения

Стороннее программное обеспечение, которое мы использовали, было ограничено и в основном ограничивалось инструментами сборки. Там был ассемблер. Было программное обеспечение для упаковки и сжатия собранного продукта. Появились графические редакторы и программы для сочинения музыки. Но вы бы никогда не использовали стороннюю библиотеку.

Для справки, я только что проверил папки node_modules стороннего проекта, над которым сейчас работаю. 400 мегабайт.

Это был мир с открытым исходным кодом!

Помимо различий, есть одна вещь, которая кажется общей для 1992 и 2018 годов. Мы читали код других людей, чтобы чему-то научиться.

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

Тогда это было больше похоже на то, как все работало. Ассемблерный код на самом деле представляет собой тонкий слой синтаксического сахара поверх машинного кода, и было довольно легко взломать ассемблерный код любой части программного обеспечения. Кроме того, если вы разработали свой собственный материал на ассемблере, вам не составит труда его прочитать. Это было гораздо проще, чем мысленно преобразовать файл .class в его эквивалент .java, а также проще, чем разобраться в уменьшенном файле Javascript.

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