catpad (catpad) wrote,
catpad
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 стоял совершенно бесполезный и никому не нужный.

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

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

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

Subscribe

  • (no subject)

    Читаю интереснейшую книгу «Beyond: The Astonishing Story of the First Human to Leave Our Planet and Journey into Space» by Stephen Walker. Там все…

  • Community

    Кинопоиск сделал отличный обзор «Community» и этим напомнил мне о великом сериале. Тут дело такое. Дэн Хармон, прежде чем сделать «Rick &…

  • (no subject)

    Так называемый министр иностранных дел Лавров разразился мракобесной статьей, над которой все смеются из-за того, что там упоминаются некие…

  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 14 comments

  • (no subject)

    Читаю интереснейшую книгу «Beyond: The Astonishing Story of the First Human to Leave Our Planet and Journey into Space» by Stephen Walker. Там все…

  • Community

    Кинопоиск сделал отличный обзор «Community» и этим напомнил мне о великом сериале. Тут дело такое. Дэн Хармон, прежде чем сделать «Rick &…

  • (no subject)

    Так называемый министр иностранных дел Лавров разразился мракобесной статьей, над которой все смеются из-за того, что там упоминаются некие…