catpad: (Default)
[personal profile] catpad

Предисловие

Люди, занимавшиеся программированием в 80-х, 90-х годах, без всякого сомнения являются существами уникальными. Им довелось попробовать все. Что может сказать человек, который начал заниматься этим год назад ? Он может сравнить J2EE с J2SE или Java с C#. Он может сказать: раньше у меня был Pentium II, а теперь Pentium IV, или: наконец-то я поставил Windows XP вместо Windows 2000.
Другое дело – мы, богатыри. Равных нам нет, и уже не будет.
Вот мой рассказ…



Первым языком программирования, который я узнал был язык пошагового программирования для калькулятора Б3-34. В память допускалось заносить сто шагов (команд) программы, и имелось, кажется, 14 регистров. Еще там была косвенная адресация, и я сразу проникся к ней теплыми чувствами. К сожалению, больше ничего не помню.
Когда программа падала, калькулятор писал страшное и непонятное слово ЕГГОГ, значение которого я узнал гораздо позже, так как в школе учил немецкий.
Я написал для него программу игры в крестики-нолики, уместившуюся ровно в сто шагов, но так как вводить ее надо было каждый раз заново при включении калькулятора, то дело это было довольно-таки неблагодарным, хотя и доставлявшим массу удовольствия. Еще помню, что в «Науке и Жизни» был постоянный раздел, посвященный этому калькулятору, и бесстрашные исследователи писали там о своих открытиях в памяти за гранью допустимых ячеек.

Потом в школе организовали кружок программирования, и там я первый раз увидел «персональную ЭВМ», которая, по-моему, называлась Роботрон (а, может, и ошибаюсь), но вот что помню точно, так это длинные мотки перфоленты с красивыми дырочками.
В школе мы программировали на Фортране. Не могу сейчас сказать, какие ощущения он тогда вызывал, но помню некое неприятное чувство от того, что переменные I, K, L, M, N признавались integers даже без объявления их таковыми просто потому, что они «похожи» на integers.
Фортран тогда был полновластным властителем, и единственным упоминанием о том, что существуют другие языки, была замеченная мною в магазине совершенно непонятная книжка «Формальное описание Алгола-60».

Как ни печально, Фортран продолжился и в университете, причем уже как обязательный курс, но это были его последние всплески. Уже появились первые Искры (правда, еще без винчестера), а также Ямахи, и на них – о чудо ! – был установлен Паскаль.
Очень отчетливо помню как вся наша группа (человек 20) скидывалась, чтобы купить одну единственную дискету и запоминать на нее домашние задания на Паскале.
Паскаль был прекрасен, он был структурен, и в нем существовали «поинтеры» ! Записывались они, правда, каким-то нелепым образом, но все равно это было чудесно.
Кроме того, мы изучали ассемблер для IBM 360/370 и я даже сделал на нем одно домашнее задание – оно и было одно, потому что заняло весь семестр. Процесс был таков: пишешь на бумаге программу, относишь машинисткам, через несколько дней они набивают перфокарты, относишь перфокарты в машинный зал, через неделю или больше получаешь распечатку своих ошибок. Тогда цикл повторяется снова, и так – до конца семестра. Теперь хотя бы можно гордиться тем, что прошел и это !

Примерно в то же время на сцене незаметно появился Лисп, а вместе с ним и рекурсия. Рекурсия была, пожалуй, самой загадочной из известных мне вещей, да, в общем-то, она остается таковой и сейчас. Соответственно, Лисп стал самым прекрасным из живых языков, но за давностью лет, я его уже почти забыл. Лисп был доступен на какой-то ЕЭС – помню зеленые экраны и множество лишних слов, вроде «job», которые надо было писать, прежде чем запускать программу.
Тогда же в магазинах появилась книжка «Мир Лиспа» с потрясающими финскими именами авторов. Она и сейчас у меня есть.
Другая замечательная книжка, которая тоже у меня по сей день – это «Этюды для программистов» Уэзерелла, из которой я узнал о существовании Трака – мало кому известного языка, основанного на рекурсии и макроподстановках. Книжка утверждала, что его интерпретатор можно написать за неделю, и этим-то я с тех пор и занимаюсь.
Я писал интерпретатор Трака на Паскале, на Бейсике и на С++. Только последнее (много позже) увенчалось успехом, так как первые две попытки за неимением ничего другого были сделаны на бумаге, а переводить их в компьютер потом уже не было ни времени ни желания.
Тогда же, кстати, я узнал, что я nerd. Дело было на квартире у друзей, после встречи Нового Года. Когда люди начали просыпаться с похмелья, они имели возможность созерцать меня за столом, пишущего на бумаге интерпретатор Трака. Правда, я не имел тогда большого успеха, ибо, как говорит Линус Торвальдс, в те времена быть nerd’ом еще не было sexy.

Потом кто-то в университете раздобыл Турбо-Пролог. С первого раза как-то у меня с ним не заладилось, потому что запускал я его на Искре с черно-белым экраном, а Турбо, как известно, был одной из первых графических интегрированных сред, и установить в нем нужные цвета почему-то совсем не получалось. Таким образом, увидеть текст программы было невозможно. Но я все равно приобрел знаменитую книгу Ивана Братко а также Стерлинга и Шапиро и стал читать про Пролог. Оттуда мне больше всего запомнилось, что Авраам, Исаак и Иаков состояли между собой в какой-то родственной связи, о которой я узнал уже совсем в другом месте.
Потом удалось запустить Пролог на XT, к которой я чудом получил доступ в университетской лаборатории, устроившись там на работу переводить с Фортрана на Паскаль какую-то дребедень. Собственно, доступ-то был два часа в неделю, да и винчестер всего 10 Мб, но для того времени это была фантастика.
Как и почему работает Пролог я и сейчас не понимаю, и просто верю в него как в чудо. Пролог умеет устанавливать родственные связи, расставлять ферзей по доске и разбирать предложения на человеческом языке. Все это он делает сам, без какого-либо постороннего вмешательства. Пролог начисто отвергает понятие алгоритма, поэтому программировать на нем невозможно, да и не нужно.
Позже появился Турбо-Паскаль, и слово Борланд стало священным. Слово Майкрософт я тогда еще ни разу не слышал.
Последней из реинкарнаций Паскаля стал Объектный Паскаль, где я впервые столкнулся с понятием «конструктор», но не понял, что же именно он конструирует. Проблема в том, что в имевшейся книжке Объектному Паскалю были посвящены две страницы в самом конце, где это называлось дополнительными возможностями Турбо-Паскаля 5.0.

Следующим самым счастливым днем моей жизни после покупки калькулятора стал день покупки первого советского персонального компьютера БК (так что ли он назывался ? – вот это, действительно, позор). Компьютер помещался в своей собственной клавиатуре и подключался к телевизору и магнитофону. Было у него 16 Кб памяти и встроенный Бейсик еще на 16 Кб. Пришлось переквалифицироваться на Бейсик, но ничто не могло омрачить радости неограниченного доступа ! Даже старый телевизор, на котором все плыло и качалось как на волнах.
Я написал на Бейсике игру Core Wars, словарь английского языка, а также игру Management, взятую из тех же «Этюдов для программистов».
Вскоре для моего компьютера нашелся Форт, который мне не слишком-то нравился, а потому и программировать на нем не хотелось. А еще через какое-то время появился на кассете странный зверь – С. Но тут пришла пора уезжать в Израиль, и С остался мною незамеченным.

Уже через год в Израиле я купил 386-ой, и это было здорово, но уже не так радостно, как БК. У него был диск с 80-ю Мб и память 4 Мб, и я написал всем друзьям в России какой я необыкновенно крутой. А еще у меня стоял на нем Windows 2.0, хотя вряд ли кто помнит, что это такое.
В Технионе мы тоже сначала программировали на Паскале, а потом начался курс по С++, и тут мне пришлось, наконец-то его изучить (правда, чистый С так и остался только в книжке Кернигана и Ричи). И так он мне понравился, что я стал программировать на нем долго и нудно. Постепенно С++ обрастал новыми заумными понятиями и загадочными ключевыми словами, но окончательно я в нем разочаровался, когда понял, что компилятор С++ по совместительству работает интерпретатором Лиспа, сортирует списки, перемножает матрицы и выполняет много другой бесполезной работы. Видимо, создатели С++ решили превратить программирование на нем в чистую науку, незамутненную какими-либо практическими применениями.
Еще запомнился язык параллельного программирования Occam, а особенно способ редактирования его программ. Окно редактора состояло из многочисленных вложенных фолдеров, которые нужно было поочередно открывать. Кажется, больше этот язык ничем не интересен. (Кстати, эту идею позаимствовали в Visual Studio.NET для редактора C#).

Тогда же я изучил APL, мою главную привязанность в жизни и не только из-за «all the funny symbols», но и потому, что этот язык близок мне по духу – круто и совершенно бесполезно. Когда программа на APL начинает работать – это Щастье. И даже вдвойне, потому что никто никогда (включая тебя самого) не сможет понять как она работает, и что она вообще делает. Но какие же там многомерные пространства ! Какие операторы с греческими именами: «йота», «ро»… Знать APL – это все равно, что знать древнегреческий или латынь. В Технионе был специальный курс, полностью посвященный APL, скромно названный «Введением в интерактивные системы», чтобы никому не мозолить глаза. Вел его замечательный лектор, и это правильно, потому что только замечательный человек может вести такой предмет. В Технионе даже специально держали несколько компьютеров с установленным APL, только для этого курса. Но беспощадное время, как и было понятно, расправилось с введением в интерактивные системы. Я был последним ассистентом на этом курсе.
Другой курс был посвящен функциональному языку ML – тот же Лисп, только без скобок, с автоматическим определением типов переменных и бесконечными последовательностями. Программировать на нем легко, программа пишется сама почти без прикладывания усилий.
Кроме того, я изучал чистый объектно-ориентированный язык Eiffel, в котором определены совершенно жуткие правила наследования и перегрузки функций. Язык этот тоже претендует на многое, а потому, как водится, совершенно нежизнеспособен.

На Java я начал программировать в 96-м году, и до сих пор считаю, что это самый удобный язык программирования. Поэтому, когда я пишу программы для души, я делаю это только на Джаве. Мне нравится, что мусор за меня чистит кто-то другой; собственно, в жизни мне это тоже нравится. А еще я люблю исследовать типы по ходу дела, и это увлекло меня настолько, что я даже решил сделать на этом вторую степень, о чем нисколько не жалею. Тут кстати один рассказ: в IBM меня не брали работать очень много раз в жизни. Я, видимо, метафизически несовместим с этой организацией, хотя, по складу характера, мне очень импонирует бесполезность всей их необъятной деятельности. Последний раз меня не взяли туда после того, как я прочитал для них публичную лекцию о своей магистерской работе. В зале было человек тридцать и все хлопали. Потом не взяли. Но я не в обиде. А вот недавно случайно нашел сайт проекта IBM под названием Eclipse, который в точности повторяет все идеи моей работы. Я, конечно, не утверждаю, что они у меня ее украли, я даже уверен, что этот проект делали совсем другие люди. Просто это лишний раз подтверждает насколько я духовно близок к этой организации. Здесь действует закон о единстве и борьбе противоположностей.

Шло время, диск в компьютере вместо 80 Мб стал 200 Мб, а 4 Мб памяти были заменены на 8 Мб. Правда, Windows 95, заменивший Windows 3.1 немедленно подмял их под себя, и тут же пришлось докупать еще 8 Мб, хотя и стоили они немалых денег. 5-ти дюймовый дисковод совсем вышел из употребления, но я до сих пор храню его, как реликвию. В какой-то момент (не помню точно) 386-й превратился в Pentium100, а модем 3600 bps стал 14000. Правда, единственным его предназначением тогда было делать telnet в Технион.
Году в 94-м я впервые увидел в магазине CD-ROM drive, и решил, что это приставка для прослушивания музыки.

С интернетом я познакомился в журнале Fortune, случайно мною найденным. В нем была статья «Битва больших Биллов за Интернет», упоминалась Java, и вообще много интересных и непонятных слов. Я тогда спросил одного знакомого: а ты знаешь, что такое Интернет ? На что тот ответил: слышал, есть какой-то Ethernet, а интернета никакого не знаю. Думаете, читаете хронику древнего мира ? А было это в 95-м году.
Хотя, конечно, mail’ом я уже давно пользовался, но о связи между ним и интернетом не подозревал.
Да, а в 94-м году, помню как сейчас, спрашивал другого знакомого : а кто такой Билл Гейтс ? – Ну, есть такой, богатый очень…
Потом в Технионе поставили программу под названием Mosaic, но было не очень понятно, чего с ней делать. Примерно в то же время, когда я подрабатывал в Майкрософте, и уже разобрался, кто такой Билл Гейтс, на все компьютеры там поставили программу Netscape, но законнектиться никуда было нельзя – что-то там у них не работало, да и никого особенно не волновало, поэтому Netscape стоял совершенно бесполезный и никому не нужный.

Примерно через пять лет, когда интернетовский мыльный пузырь надулся до ужасающих размеров, и я уже твердо выучил слово «веб-сервер», мы с [livejournal.com profile] gianthare решили открыть фирму по рисованию котов. Интервью для принятия на работу в нашу фирму, естественно, состояло в просьбе нарисовать кота. За нас даже боролись между собой два инвестора, но пузырь уже начал сдуваться, и фирма ко всеобщему удовольствию так и не открылась.

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

Мне кажется, что больше уже никогда ничего интересного в компьютерной области не произойдет, Золотой Век позади, революции кончились, пузыри полопались, Microsoft is the ruler of the known Universe…
Поэтому я смирился и стал изучать С#. Может, пригодится.

Date: 2002-07-05 03:21 am (UTC)
From: [identity profile] gianthare.livejournal.com
Скучаешь?

Date: 2002-07-05 03:28 am (UTC)
From: [identity profile] catpad.livejournal.com
День пролетел незаметно...
(А что - неинтересно ?)

Date: 2002-07-05 03:44 am (UTC)
From: [identity profile] gianthare.livejournal.com
> День пролетел незаметно...
Это ты к чему?
> (А что - неинтересно ?)
Интересно, я если помнишь сам писал что-то такое пару месяцев назад. Но я-то это уже всё слышал по частям.
Просто сложилось впечатление, что скучаешь, может потому что у тебя редко длинны посты, а может птотому что сам скучаю.
Чего ты не в ICQ?

Date: 2002-07-05 06:08 am (UTC)
From: [identity profile] catpad.livejournal.com
Это я к тому, что писал я это сочинение почти весь рабочий день, вот и не заметил.

Date: 2002-07-05 03:57 am (UTC)
From: [identity profile] mopexod.livejournal.com
Полное имя упомянутого "БК" - БК-0010 (БК два нуля десять). Программы на магнитофонных кассетах.
Да-да, и Роботрон тоже был, это плод не воображения, а болгарской индустрии.

До Б3-34 был Б3-27 с 60 шагами программы. Его наличие в истории позволяет мне утверждать, что мой стаж программирования - 20 (двадцать) лет. Я на нём считал какие-то интегралы для больших дядей.

Ещё я пытаюсь раздобыть арифмометр "Феликс" - я на нём в детстве ловко считал хитрые штуки. На нём я понял про сдвиги налево-направо - то, что это есть умножение/деление на основание системы счисления. Могучая была хардверная платформа! А мне было 12 лет.

Date: 2002-07-05 04:29 am (UTC)
stas: (Default)
From: [personal profile] stas
Роботрон вроде как раз немецкой (т.е. ГДРской), это Правец - болгарской, и дискеты Изот - тоже.

Re:

Date: 2002-07-05 04:49 am (UTC)
From: [identity profile] mopexod.livejournal.com
Да, правда... Склероз. Старость - не радость :((

Date: 2002-07-05 06:07 am (UTC)
From: [identity profile] catpad.livejournal.com
Стало быть, мой стаж - 18 лет.
Точно - БК-0010. Ну почему, почему я оставил его там !!!
И, кстати, совсем забыл, а жаль: в самом начале в Израиле один друг подарил мне Sinclair.
На нем тоже стоял Бейсик, а вместо магнитофонных кассет были такие специальные картриджи - вообще уникальная вещь. Я его потом тоже подарил. Ну и дурак.

Re:

Date: 2002-07-05 06:24 am (UTC)

Date: 2002-07-06 05:35 am (UTC)
From: [identity profile] zanuda.livejournal.com
На той БК-0010, на которой я метод граничных элементов для уравнения Лапласа написал вместе с графическим редактором граничных условий вроде как Фокал стоял (бэйсикоподобный язык, но не бэйсик). С родным бэйсиком, это по-моему БК-0011 была, нет?

Электороника-28 - Искра 1030 (Алгол) - Мир-1 (алмир)-Д3-28 (машинный код)-ЕСки много (PL/1
+ Примус и PL/1 + REXX) - БК-0010 - IBM XT + AT original (QBasic/VB/Turbo Pascal/Borland Pascal)- HP-UX - SGI - Wintel (VC++)

Date: 2002-07-06 05:44 am (UTC)
From: [identity profile] catpad.livejournal.com
Помню что-то про Фокал, наверное, это он и был. Во всяком, случае, название звучит знакомо. С другой стороны, совершенно точно помню, что писал на Бейсике... Эх, давно это было.

Date: 2002-07-05 04:56 am (UTC)
From: (Anonymous)
Другое дело – мы, богатыри. Равных нам нет, и уже не будет.

Забавно ... Если _так_ выражаются люди, начинавшие программировать в 80'е, что ж тогда говорить о real programmers ?

О тех, кто в юности они программировали переставляя металлические стержни и втыкая штырьки. А потом ретушировал баги на перфоленте карандашным грифелем, лезвием бритвы вырезал дырочки в перфокартах, (а лишние дырочки забивали крошкой, остававшейся после перфоратора и собранной в стеклянные банки, она, крошка тогда называлась "мозгами"), а отлаживался, ползая по дампу ЕС-овской памяти, огромному бумажному листингу.

А когда оказалось, что накопитель на магнитной ленте сбоит и исходники не доступны, эти люди попросту дампили бинарь (загружаемый модуль) на экран, дизассемблируя в уме (впрочем, это было на СМ'ках, там система команд простая была. И прикола ради потом портили игрушки с Коммодора тем же способом: дамп бинаря игрушки на экран и портинг на ассемблере). А ведь при всей "недружественности" системы были очень сложные: СВМ, "виртуальные машины", на ЕС ЭВМ, диалоговые системы Примус/Фокус со своими наворотами и проч.

Я уж при настоящих БЭСМ'овских хакеров и не говорю.

Date: 2002-07-05 06:00 am (UTC)
From: [identity profile] catpad.livejournal.com
Я, конечно же, имел в виду не только период с 80-х по 2000; просто писал о себе, вот и получилось. А real programmers я очень даже уважаю, и писал (http://www.livejournal.com/talkread.bml?journal=catpad&itemid=79418) о них совсем недавно.

Да, хороший постинг

Date: 2002-07-05 12:24 pm (UTC)
From: [identity profile] kmisha.livejournal.com
про "настоящих программистов".
И извиняюсь за предыдущий анонимный постинг.
Page generated Feb. 6th, 2026 08:47 pm
Powered by Dreamwidth Studios