Такова натура программиста, что каждый год-два душа требует сменить платформу разработки, а раз в полгода поверхностно изучить новый язык.
Разумеется, есть индивидуумы, не меняющие платформу всю сознательную жизнь – но в основном это люди, до пенсии сидящие на окладах в госорганизациях. Знавал одного такого – файлы в Delphi копировал, запуская bat-файлы, определял, запущена-ли программа по флагу, создаваемому в корне диска С, данные хранил в текстовых файлах, причём построчно, ибо кроме writeln и readln ничего не удосужился изучить. Знавал и программиста-уборщицу – перевели по знакомству из «отдела клининга», потому что в Outlook умела письма отправлять – «значить, программист».
Ещё есть категория кодеров – абсолютно не творческих личностей, разработкой не увлечённых, но хороших специалистов. Их заставить сменить среду может только низкий спрос на текущие знания. Работают только ради денег, о программировании «just for fun» говорить не приходится. Специалисты хорошие, в своих рамках. Сроки соблюдают, пишут качественно, устойчивы к рутине. Впадают в ступор при надобности использовать самостоятельное недокументированное или нестандартное решение, пишут докладные записки о том, что из-за «бага компилятора» работу выполнить в принципе невозможно.
Итак, моё знакомство с компьютерами проходило примерно так:
Logo (англоязычный)
- Год: 1991
- Платформа: Агат
Язык был замечательный и обучал детей весьма наглядно – результатами работы программы были графики, диаграммы, сложные (и красивые) кривые.
О платформе без дрожи вспомнить не могу. Агат был первым ПК, разработанным в СССР и выпускался с 1984 года на Лианозовском электромеханическом заводе. Совместим с Apple II и дико дорог и ненадёжен. Пятидюймовый дисковод был в чугунном литом корпусе с сантиметровыми шипами радиатора и мощной пружиной, не позволявшей головке прижаться к дискете. Поэтому в процессе загрузки системный блок нужно было приподнять с одной стороны и держать под углом в 45 градусов к поверхности стола, пока не загрузится операционная система. Тогда я впервые задумался о становой тяге и пауэрлифтинге вообще.
TurboPascal 5.5
- Год: 1993
- Платформа: MS-DOS i386
К сожалению, в школе преподавали Pascal. Сейчас я об этом очень жалею, гораздо больше толку было бы от C++. Ну про ООП и TurboVision в школе я так и не узнал, а зря, упустил много времени.
BASIC
- Год: 1997
- Платформа: ящик с трубадурами
А чем не испачкана моя репутация, так это Basic, QBasic и Visual Basic. Обычно программисты с таким пятном в биографии в резюме его не отмечают, но мне можно, ибо столкнулся с ним раз в жизни, ну и ещё как-то пришлось просто поменять пару строк в расчётах в одной монстуозной системе, написанной аж на четырёх разных языках. Типа «модульная структура».
Столкнулся с Basic на кафедре Метрологии. Увидев среду разработки, обомлел. Точнее, я увидел стальную клавиатуру, сантиметров пять толщиной, с плёночным покрытием и «сенсорными клавишами», как бы их назвали сейчас, и дисплей. Он был небольшой, мог похвастать разрешением 10 на 10 символов. А теперь, внимание! Состоял из ста ламповых индикаторов! Если кто помнит Советский Союз и очереди, то наверняка вспомнит первые электронные весы. Ламповый индикатор представлял в них длинную колбу, в которой друг за другом располагались элементы накаливания в виде цифр. Вот у этого монстра были такие же, только со всем латинским алфавитом.
Загнав счётную машину в бесконечный цикл, я сбежал с пары и больше никогда на ней не появлялся.
Fortran 66 (FORmula TRANslator)
- Год: 1997
- Платформа: MS-DOS
Кому в 1997 году мог понадобиться Фортран? Преподавателю по «Численным методам вычислений», конечно. Ей было 86 лет, и деканат отправил её вести информатику студентам специальности, верх потребностей которой — CAD-системы. Программы писались на семинарах в тетради, назывались листингами, и отлаживались при помощи калькулятора. И только предоставивший 10-15 листов «ручного счёта» мог удостоиться чести «набить» код в присутствии следящего за техникой безопасности препода на «Электронно-Счётной Машине».
Потом я встретился с Fortran 77 уже переведясь в другой ВУЗ и серьёзно им заболел. Оказалось, что для математических вычислений язык подходил просто замечательно! Всё же первый язык высокого уровня. Считал интегралы по площади и объёму, проверял расчётки по сопромату, находил первообразные. Всё проходило легко и непринуждённо.
В поздних версиях появились функции и процедуры (subroutine), но до ООП на момент моей работы с ним дело не дошло – ведь основа фортрана – goto и метки. ООП появился в 95 году. Синтаксис забавен, интерпретатор понимает только заглавные буквы.
С форматированием ситуация тоже забавна. Изначально язык был рассчитан на ввод с перфокарт, поэтому код писался по строгому разделению на колонки даже в текстовом редакторе. Первая колонка предназначалась для символа комментария «C», шестая – для символа переноса строки, звезды Клини «*». В позициях 2-5 располагались метки, а непосредственно код с 7 по 72 позицию. Далее – колонки для нумерации перфокарт (вдруг колода рассыплется).
Ещё одна забавная особенность – тип переменных определяется по первой букве её имени, то есть SSLOVO – String, ICOUNT, JCOUNT, KCOUNT – integer. Форматирование строк вывода было вообще чумовое – почти регулярные выражения Perl. В совокупности всё это я воспринимал как забавную головоломку.
Assembler для микропроцессоров
- Год: 1998
- Платформа: бесовское устройство
Руководство ВУЗа решило, что технолог-литейщик непременно должен уметь программировать в машинном коде. Дыбой служило некое устройство с диодным двухсимвольным индикатором и клавиатурой с раскладкой “0123456789ABCDEF”. Программировать предлагалось на бумаге, в уме компилировать в машинный код и его уже вводить в устройство. Не срослось у меня с ассемблером, как и у всего потока. Минобразования сделало всё для появления стойкого отвращения к компьютерам у непрофильных специальностей.
TMT Pascal
- Год: 1999
По кругу знакомых гулял дистрибутив замечательного 32-x битного компилятора паскаля. Он позволял использовать звуковую карту и SVGA! Естественно, все засели за разработку игрушек. Мой друг написал клон бомбермена «NUKERMAN», я засел было за клон «Battle City», но дело закончилось на написании редактора карт, редактора текстур и реализации графического движка. То есть карты рисовались, танчик, управляемый с клавиатуры ездил и стрелял, плавно перебирая гусеницами, стены – взрывались. А вот до реализации искусственного интеллекта не дорос.
Должен сказать, что писать было интереснее, чем сейчас. Готовые решения отсутствовали, интернет был баснословно дорог и редок, документации – крохи. FIDO появилось у меня значительно позже, и спросить было не у кого. Доходило до того, что формат некоторых файлов картинок восстанавливался эмпирическим путём, на основе разницы кода в шестнадцатеричном редакторе. Интересно было делать плавную анимацию, отображая одну видеостраницу и параллельно рисуя в памяти видеокарты ещё две со следующими картинками, разрабатывать собственный формат шрифтов, систему окон и перехвата клавиш. С мышкой долго мучался…
Последним, что я написал под MS-DOS было несколько расчётных заданий по «Теории машин и механизмов». Плавно и красиво двигались рычаги, крутились шестерёнки. К сожалению, все исходники лежат на мёртвом винте, да и где лежит не помню уже.
Delphi 4-7, Object Pascal, Delphi Language
- Год: 1999
- Платформа: Windows
MS-DOS умер окончательно, и пришлось перелезать на Windows целиком. Ну и менять среду разработки, а так как кроме паскаля фактически ничто из моих знаний не было применимо (я эксперементировал с FORTRAN 95, хорошо, что не втянулся) то альтернатив Delphi не было.
С Delphi собственно и пошли первые деньги за программирование. Несколько расчётных программ туда, пару утилит сюда… За качество кода уже стыдно, кидал компоненты на форму, не задумываясь, сразу по onclick начинал расчёты, данные хранил в ini файлах, использовал монструозные нестандартные компоненты для отображения элементов интерфейса, о дизайне которого не имел понятия.
Только через год осознал принципы ООП, научился использовать BDE и ADO, хранить настройки в реестре, использовать сторонние dll, прочитал массу литературы и избавился от стереотипов DOS.
MS VC++ 6
- Год: 2000
- Платформа: Windows
Первая работа, первое знакомство с С++. Для этой организации я уже сделал несколько заказов на Delphi типа «расчёта допусков на размеры и припусков на механическую обработку», а теперь устроился туда на пол-ставки, чтобы обеспечивать свои скромные потребности студента – сигареты, пиво, железки, наладонники и развратных дев.
Работа захватила с головой, даже о развратных девах забыл. Платили мало, что компенсировалось мощными компьютерами, гигантскими сроками и финансированием покупки любой литературы – собрал громадную библиотеку и впитывал знания, как губка.
Суть работы была в разработке технологической системы автоматизированного проектирования, как плагина для CAD/CAM/CAE/CAPP/PDM T-Flex. T-Flex штука мощная, использующая ядро геометрического моделирования Parasolid – с убогим ядром AutoCAD не сравнимое.
Обсчитывал на плоскости и объёме литниковые системы, генерировал фрагменты чертежей, всё это красиво вращалось в 3D и производило неизгладимое впечатление на заказчика.
Другим компонентом системы было трёхмерное моделирование процесса заливки. Оно неделю считается на мощнейших компьютерах и баснословно дорого стоит, но окупает себя за неделю. Либо останавливай весь конвейер завода и проводи эксперименты тысяч способов заливки – либо посмотри на экран, где сразу увидишь и отбел, и газовые раковины и пористость, и ядра кристаллизации, и температуру каждой точки будущей отливки.
PHP 4
- Год: 2005
- Платформа: LAMP
Отдохнув годик IT-специалистом в одной немецкой фирме, вернулся к разработке, но в очередной раз сменил платформу. Стало интересно разрабатывать сайты. Ну и понеслось, HTML, CSS, PHP, MySQL. Другая операционка, скриптовый язык, другие правила, после С++ – райские кущи. Да и частных заказов на сайты было море.
C#
- Год: 2006
- Платформа: .NET Framework
Сменил работу, и снова платформу. Окончил курс Microsoft и прочитал пару наших мелких программерских книжек по 1200 страниц, по C# и T-SQL. Да, раз в полгода технологии нужно догонять, а за два года все знания программиста абсолютно устаревают.
До сих пор считаю .NET верхом удобства, чёткости, скорости разработки, хотя снова изменил ему с LAMP (Linux, Apache, MySQL, PHP). Пожалуй, программировать на C# даже слишком удобно, всё за тебя продумано, десятки тысяч готовых классов, визуальное построение интерфейса и структуры, автодополнение кода. Классы рисуешь мышкой, код пишешь по паре символов каждого оператора, остальное сделает автодополнение. Становится скучно, чувствовал, что превратился в кодера, новых открытий не будет, всё есть в MSDN и написано до меня. Компонуй и компилируй.
А сейчас?
А сейчас PHP 5, MySQL, вёрстка под чёртов IE6, AJAX, JSON, CodeIgniter…
Коллеги, передаю эстафету вам. Если принимаете, отметьтесь в комментариях, размещу здесь ссылку.
Ещё вам может понравится старая заметка об интерфейсах Мicrosoft.
В резюме, если не секрет, тоже все языки указываешь? :)
А так — занятно написал, прям понастальжировал
Да нет, только PHP теперь. Маловероятно найти работу с FORTRAN 66. Плюс работодатели считают, что нормально можно знать только один язык.
с 1992 года. Компаньен, спектрум-128к — байсик, знакомство с ассемблером. попытки декомпиляции игр для спектрума :) но так ничего путевого не узнал :( в программировании игр для спектрума.
Далее Pentium-166 Ассемблер, С, С++, Делфи, с самого начала появления .NET перешел на него :) С# шедевр ИМХО. АСП.НЕТ для ВЕБа это просто сказка.
А я декомпилировал игры на Спектруме. Для чего был написан свой собственный ассемблер / дизассемблер. Ковырялся в одной игрухе… Так там вызовов из одной в другую область памяти было штук 100, Бросил.
Прикольно. Пожалуй, тоже напишу такую же заметку про себя.
Со времени написания заметки основными инструментами тоже стали аналоги MS Project и Google Docs. Пришу для себя иногда, чтобы форму не терять.
Спасибо за заметку. Немного резали глаза перлы в стиле «К сожалению, в школе преподавали Pascal» или «ООП появился в 95 году», но читал с большим интересом. На счет «Что будет через год» — советую обратить внимание либо на _настоящие_ скриптовые языки (не PHP), например Perl или Python. Советую немного попробовать каждый из них, посмотреть, какой больше нравится и углубиться. Учить оба особого смысла не вижу (пробовал). Я лично в ходе изучения Perl после знакомства с PHP открыл для себя много нового, сильно обоегчил себе жизнь и обеспечил себя стабильной работой на многие годы. Еще одно интересное направление — логические (Prolog) и функциональные (Haskell, диалекты Lisp) языки программирования. Тут интересны сами задачи, для которых эти языки создавались, и отраженные в них подходы к решению этих задач.
Гм, ну а в каком году Fortran стал объектно-ориентированным? Стандарт FORTRAN 95, на сколько я помню.
По поводу медленно умирающего Perl и не очень быстрого питона — настроен скептично. PHP же развивается бешеными темпами — сейчас это вполне полноценный язык.
Задачи на данный момент у меня однотипны — заработать денег. Исходя из распространённости PHP, наличия сотен качественных фрэймворков, специалистов, распространённости и низкой нагрузки на железо — альтернатив нет.
>Гм, ну а в каком году Fortran стал объектно-ориентированным? Стандарт FORTRAN 95, на сколько я помню.
Smalltalk-80