— Йе не сомрранд рас,- жалобно сказал он.- Я не понимаю. У
нее нет вид? Или я не понимаю по-русску?
— Нет, все правильно, Шарль,- сказал Юрковский.- Вид у нее,
конечно, есть. Только разный, понимаете? Когда она на потолке,
она как потолок. Когда на диване — как диван…
— А когда на Грегуар, она как Грегуар,- сказал Моллар.- Ви
все шутите.
А. и Б. Стругацкие "Путь на Амальтею"
Я начал свою программистскую деятельность лет в десять. Возможно раньше, точно уже не помню. Помню только как «помогал» отцу программировать древние Искры, на бумажке высчитывая адреса условных и безусловных переходов в машинном коде и воодушевлённо загоняя латунные кольца в текстолитовые планшеты. Каждое кольцо несло в себе информацию ровно на один бит.
Потом, как-то сразу, появились восьмибитные компьютеры. Все журналы, которые я с упоением читал, в то время, от Радио до приложения ЮТ-а «Для умелых рук» (возможно, за исключением «Юного натуралиста») печатали всё новые и новые схемы персональных компьютеров! К сожалению, с паяльником я всегда обращался гораздо хуже, чем мой отец. Руки у меня были совсем не умелые.
С деталями проблем не было, ящики стола были ими забиты. Однажды, когда я просто заикнулся о том, что хочу сделать осциллограф, в качестве курсового проекта для УПК, отец молча сходил в кладовку и принёс оттуда электронно-лучевую трубку. До сих пор не понимаю, откуда он её взял и для чего она была нужна ему самому. Дело в том, что при всём этом домашнем изобилии, радиодетали были страшным дефицитом (как многое в то время). Иногда, по ночам, приходилось делать вылазки на известную всему городу радиосвалку, чтобы раскопать (буквально) что-то интересное.
В общем, свой компьютер я так и не собрал. Разумеется, это не означает, что у меня не было доступа к компьютерам! У моего друга (кстати, в отличии от меня, он штамповал Спектрумы и АОН-ы на Z80 как пирожки) был шикарный, по тем временам, Вектор 06Ц (Ц — означало цветной!), а мне самому, на выходные и под честное слово давали легендарную БК-шку! Причём, вместе с монитором. Я пёр всю эту тяжесть на своём горбу через весь район (да, времена были не спокойные), а к понедельнику возвращал обратно.
Я начал с Бейсика и Фокала. Впрочем, вопреки знаменитому высказыванию Дейкстры, я не считаю, что меня это сильно испортило. Возможно, потому, что перед ними, всё таки, были машинные коды Искр? Не знаю. Я читал Вирта и Липски и переводил алгоритмы на Бейсик. На Бейсике тех лет было чудовищно сложно выразить рекурсию (в основном потому, что вместо локальных аргументов функций приходилось использовать вполне себе глобальные массивы), но я этого добился.
Когда (на том самом Векторе) я написал на Бейсике свою версию "кривой Гильберта", мой друг не поверил, что это будет работать. По его словам, входов в подпрограммы там было гораздо больше чем выходов! Разумеется, он был не прав. Дело ведь не в количестве. Восемь ферзей заставили поволноваться уже меня. Вектор слишком долго не подавал признаков жизни! Впрочем, через пару минут он выдал первую позицию. Впоследствии, меня это часто поражало. Тот ужасный и абсолютно непонятный (мне непонятный!) код, который я писал, вопреки всем ожиданиям, всегда работал именно так, как я и планировал (ну, возможно, после пары исправлений глупейших опечаток).
Мы ещё долго мучали тот Вектор. Когда надоедали игры, писали на Бейсике (вид на тессеракт изнутри, пожалуй, навсегда изменил моё мировоззрение). Или пытались разобраться в Форте (да, он там тоже был!). Однажды, мы его даже «сломали». Мы просто не могли пройти мимо возможности установки основания системы счисления в ноль! На «дописках» к кассетам порой находились удивительные вещи. Именно тогда я впервые увидел «Китайские шахматы»! Разумеется, правила пришлось вычислять «на ощупь», поскольку все пояснения к игре были также на китайском.
Мои игры с компьютерами никак не влияли на выбор будущей профессии. Я собирался стать химиком! Всё изменилось после знаменательной поездки в Москву, в ходе которой, родители поддались моим уговорам и приобрели МК-61, подшивку старых номеров «Кванта» и головоломку «Кристалл». Пожалуй, это была моя самая результативная поездка в Москву! В первый же день, сделав все эти приобретения, я заперся на квартире у родственников, со своими сокровищами. На внешние раздражители я больше не реагировал.
У меня появился свой персональный компьютер! Со всеми его ЕГГОГ-ами, причудами 160-шагового цикла и «машинными» кодами. Я старался по максимуму использовать все возможности. Уменьшение программы на один байт приводило меня в экстаз. ПМК изменил всё. Он стал причиной, по которой я подал документы в Авиационный институт (на факультет ВМК), а не на химфак Казанского государственного университета, как собирался. ПМК и тот факт, что в КАИ я проходил вне конкурса и без вступительных экзаменов (я был медалистом, да).
КАИ встретил меня 8000-ым Паскалем и IV-ым Фортраном. Ещё нам преподавали Лисп и Пролог. И очень много самой разной математики! Впрочем, наверное, недостаточно много (до сих пор не знаю, что такое тензор). Весь второй этаж седьмого дома занимал ВЦ. Одна машина! ЕС-1046 (цельнодраный IBM 370). И она была в моём полном распоряжении! Моём и еще двух десятков человек, работавших одновременно в "Системе Виртуальных Машин". PDP-11 (с третьего этажа) я запомнил гораздо хуже.
В КАИ я связался с «плохой компанией» и быстро стал грозой вычислительного центра. В отличии от админов, мы с удовольствием читали системную документацию (на русском языке!) и с не меньшим удовольствием применяли полученные знания на практике. Я умел делать удивительные вещи. Создавал приватные дисковые разделы, менял пароли виртуальных машин и писал канальные программы для анимации псевдографики на алфавитно-цифровом дисплее.
Всего парой команд с консоли я мог убрать свою виртуальную машину из списков контролируемых монитором виртуальных машин (машинное время ей продолжало выделяться). После этого, я становился полностью неуязвим. Такую виртуалку нельзя было даже увидеть, не то что остановить! Кроме того, я мог скрывать файлы со своими художествами, причём скрывать так, что их нельзя было восстановить, не зная имени. Разумеется, администраторы что-то подозревали. После некоторых наших шалостей приходилось перегружать реальную машину, и это их не радовало! Иногда нас пытались ловить, но как-то лениво и совсем не изобретательно. Я ни разу не попался.
Средства, обеспечивающие безопасность СВМ, по нынешним меркам, могут показаться смешными. Пароли шифровались двухбайтовым xor-ом, а системные привилегии задавались битовой маской. Да, эта маска находилась в реальной, а не виртуальной памяти, но две (из восьми, насколько я помню) привилегий обеспечивали к ней доступ (различными способами). И обе они были предоставлены всем пользователям ВЦ «по умолчанию»! Это было весёлое время.
Потом, в городе появились первые клоны IBM PC. XT-шки, а вслед за ними и AT с 286-ыми процессорами оказались и на нашей кафедре. К 3-ему курсу я был уже замечен преподавателями и привлечён к их индивидуальной трудовой деятельности. Я писал софт на Turbo Pascal-е и 2-ом FoxBase для Компрессорного завода. Так началась моя профессиональная деятельность.
Работа «на кафедре» приносила совсем немного денег. Её главным достоинством было то, что поработав таким образом примерно полгода я «примелькался» и мне стали доступны более интересные предложения. У одного из преподавателей кафедры ЭВМ (сам я был с кафедры Прикладной математики) была собственная фирма и мне предложили на ней поработать.
Компания производила и затем продавала самые разные вещи. В основном, ориентированные на безопасность. Видеоглазки, домофоны, кодовые замки с ИК-картами (поскольку камеры домофонов работали частично в ИК-диапазоне, с ними произошёл забавный казус на одной из выставок) и прочее. В числе прочего было несколько «криптоустройств», подключаемых к ISA-шине компьютера. Презентацию на одно из таких устройств мне и предложили сделать, в качестве вступительного задания. Я сделал её за одну ночь на кафедре. Поскольку с PowerPoint-ом, в те времена, я знаком не был, пришлось использовать всё тот же (уже Borland) Pascal. В графическом режиме и с EGA-видеоэффектами. Разумеется, работу я получил.
Это было время, когда я вплотную познакомился с Borland C++ и x86 ассемблером. Впоследствии, мне сильно повезло, поскольку всю нашу команду забрало под своё крыло РЦИ Национального банка. К набору моих игрушек добавились HP-UX сервер и 6-ой Oracle (правда, тогда поработать с ним не удалось). Поскольку я был очарован Turbo Vision, первым делом я засел за разработку аналогичной библиотеки под curses. Впрочем, нет. Действительно первым делом я написал вот это:
int main(int argc,char ** argv) {
for (;!fork(););
return 0;
}
К тому времени подоспел диплом. В университете (теперь уже университете!) я почти не показывался, пробив себе, через научрука индивидуальный график. Асимметричная криптография, транспьютеры и робастные методы в статистике. RSA и Диффи-Хелман — вот всё, что из этого осталось в памяти (да и то, не пригодилось).
Окончание ВУЗ-а и мой последующий уход в армию ознаменовались скандалом. РЦИ не хотело меня отпускать и, специально для меня, ввело должность (пробив её через руководство Центробанка), предусматривавшую бронь от армии (мимо аспирантуры я благополучно пролетел, в силу своей врождённой безалаберности). К сожалению, я узнал о брони уже в тот момент, когда вёл сепаратные переговоры с военкоматом, на предмет того, чтобы меня не высылали из Казани (профессия программиста имеет свои преимущества). Руководство Нацбанка пообещало, что в банках я больше работать не буду. Пока, так оно и есть.
Прослужив год, я вернулся в другую страну. Это было ужасное время. К счастью, один из моих сокурсников работал начальником отдела АСУ в Детской республиканской клинической больнице. Он меня и приютил. Зарплата была не бог весть какая, но и работа не шибко пыльная. Мы писали софт на FoxPro (знания FoxBase пригодились) для нужд больницы. Я отточил свою технику работы с FoxPro до совершенства! Например, научился открывать неограниченное число модальных окон, не взирая на дурацкие ограничения по количеству одновременно выполняемых read-ов (так вроде назывался тот вызов?).
Другим для меня ударом стало повсеместное воцарение Windows. Я много писал на C++ и ассемблере, в том числе, резидентные программы и драйвера, но делал это под MS DOS, в реальном режиме! К защищённому режиму и Windows я не знал как подступиться. Однажды, я пожаловался на этот факт своему знакомому (одному из той самой «плохой компании») и услышал от него замечательный ответ: «В чём дело? Просто берёшь Delphi и пишешь!». Так я и сделал.
Работа в одной из гос. организаций позволила мне освоить Delphi и, что самое главное Oracle. Седьмая версия, затем 8.0 и божественная 8.1.7. Я до сих пор считаю, что это лучшее, из того, что делал Oracle. Что там говорить, она включала в себя реализацию сервера БД в виде NLM-модуля для Novell Netware! Освоив Oracle, Delphi и его BDE (чтобы связать одно с другим) я был готов выйти на «вольные хлеба».
Подходящее предложение не заставило себя долго ждать. В городе собиралась появиться первая компания кабельного телевидения! Благодаря новому генеральному директору (снова обойдусь без имён), дело было «на мази». Не хватало самой малости — биллинговой системы. У меня спросили, смогу ли я написать биллинг и я честно ответил «Да», поскольку понятия не имел, что это такое. Биллинг кабельного телевидения я написал (и им долгое время пользовались). Первого абонента (в соседнем доме) поехали подключать зимой, «на саночках».
На этой работе, было много всего разного. Поддержка Internet-биллинга (на этот раз фирменного, а не самописного), внедрение карт оплаты, система голосового оповещения, цифровое телевидение… Не было главного, работа «придворным программистом» (в моих глазах) не шла ни в какое сравнение с местом захудалого юниора в компании, занимающейся разработкой ПО целенаправленно. Мне вновь пообещали, что я не смогу вернуться (на этот раз, в подразделения ТАИФ-а), но не сдержали обещания. В ТВТ я возвращался позже, на полставки, перед самым приобретением её МТС-ом.
На новой работе меня встретили Delphi (куда же без него), C++ (в этот раз, под Windows) и конечно же Oracle. Для начала, нашу команду (меня и ещё одного бывшего сотрудника ТВТ) заняли разработкой RADIUS сервера. Потом были Netflow, SNMP и маленькая (но очень гордая и специализированная) InMemory база данных. Всё это даже внедрялось (где-то в Чехии). Я был фанатом Рихтера и Александреску и писал разные Compile Time ужасы вроде вот этого.
Затем (другая жизнь, другой проект) был .Net и XSLT для системы массовой и полностью автоматической генерации разнообразных платёжек в форматах Word, Excel и PDF. В этот раз, я был уже тимлидом. В следующем проекте, пришлось программировать циски при помощи JavaScript, но это было уже не важно. В моей группе насчитывалось около 10 человек из трёх городов и 90% времени занимала организационная работа.
После этого годичного кошмара, я вновь вернулся к самостоятельной разработке, найдя свою нишу в компании (почему-то, никто кроме меня не согласился разбираться с АТС-ками). Между делом освоив Perl, пишу я, в основном, на Java. Фронтенд пишется на ней же, при помощи GWT. Потихоньку осваиваем Postgres. JavaScript я изучаю уже «для души», для одного своего маленького pet-проекта. Недавно поступило предложение попробовать свои силы в Golang, но я пока отказываюсь. Наверное, дело в недостаточной мотивации.
Мы то, чем мы пишем. Сегодня это Java и JavaScript. Я стараюсь по максимуму использовать их возможности, но не собираюсь на них останавливаться. Я не знаю на чём буду писать завтра. Мне (почти) 45 лет и я открыт для всего нового.
Автор: GlukKazan