На чём пишете?

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

Разумеется, есть индивидуумы, не меняющие платформу всю сознательную жизнь – но в основном это люди, до пенсии сидящие на окладах в госорганизациях. Знавал одного такого – файлы в Delphi копировал, запуская bat-файлы, определял, запущена ли программа по флагу, создаваемому в корне диска С, данные хранил в текстовых файлах, причём построчно, ибо кроме writeln и readln ничего не удосужился изучить. Знавал и программиста-уборщицу – перевели по знакомству из “отдела клининга”, потому что в Outlook умела письма отправлять – “значить, программист”.

Ещё есть категория кодеров – абсолютно не творческих личностей, разработкой не увлечённых, но хороших специалистов. Их сменить среду может заставить только низкий спрос на текущие знания. Работают только ради денег, о программировании “just for fun” говорить не приходится. Как правило специалисты хорошие, в своих рамках. Сроки соблюдают, пишут качественно, устойчивы к рутине. Впадают в ступор при надобности использовать самостоятельное недокументированное или нестандартное решение, пишут докладные записки о том, что из за “бага компилятора” работу выполнить в принципе невозможно.

Низкими зарплатами и такими специалистами и определяется “качество” государственного ПО.

Итак, моё знакомство с компьютерами проходило примерно так:

Logo (англоязычный)

  • Год: 1991
  • Платформа: Агат

Язык был замечательный и обучал детей весьма наглядно – результатами работы программы были графики, диаграммы, сложные (и красивые) кривые.

image

О платформе без дрожи вспомнить не могу. Агат был первым ПК, разработанным в СССР и выпускался с 1984 года на Лианозовском электромеханическом заводе. Совместим с Apple II и дико дорог и ненадёжен. Пятидюймовый дисковод был в чугунном литом корпусе с сантиметровыми шипами радиатора и мощной пружиной, не позволявшей головке прижаться к дискете. Поэтому в процессе загрузки системный блок нужно было приподнять с одной стороны и держать под углом в 45 градусов к поверхности стола, пока не загрузится операционная система. Тогда я впервые задумался о становой тяге и пауэрлифтинге вообще.

image image

TurboPascal 5.5

  • Год: 1993
  • Платформа: MS-DOS i386

К сожалению, в школе преподавали Pascal. Сейчас я об этом очень жалею, гораздо больше толку было бы от C++. Ну про ООП и TurboVision в школе я так и не узнал, а зря, упустил много времени.

image

BASIC

  • Год: 1997
  • Платформа: ящик с трубадурами

А чем не испачкана моя репутация, так это Basic, QBasic и Visual Basic. Ну, обычно программисты с таким пятном в биографии в резюме его не отмечают, но мне можно, ибо в плотную с ним столкнулся раз в жизни, ну и ещё как-то пришлось просто поменять пару строк в расчётах в одной монстуозной системе, написанной аж на четырёх разных языках. Типа “модульная структура”.

Столкнулся с ней я на кафедре Метрологии. Увидев среду разработки, я обомлел. Точнее, я увидел стальную клавиатуру, сантиметров пять толщиной, с плёночным покрытием и “сенсорными клавишами”, как бы их назвали сейчас, и дисплей. Он был небольшой, мог похвастать разрешением 10 на 10 символов. А теперь внимание! Состоял из ста ламповых индикаторов! Если кто помнит Советский Союз и очереди, то наверняка вспомнит первые электронные весы. Ламповый индикатор представлял в них длинную колбу, в которой друг за другом располагались элементы накаливания в виде цифр. Вот у этого монстра были такие же, только со всем латинским алфавитом.

Загнав счётную машину в бесконечный цикл, я сбежал с пары и больше никогда на ней не появлялся.

Fortran 66 (FORmula TRANslator)

  • Год: 1997
  • Платформа: MS-DOS

Кому в 1997 году мог понадобиться Фортран? Преподавателю по “Численным методам вычислений”, конечно. Ей было 86 лет, и деканат отправил её вести информатику студентам специальности, верх потребностей которой CAD-системы. Программы писались на семинарах в тетради, и отлаживались при помощи калькулятора, и только предоставивший 10-15 листов “ручного счёта” мог удостоиться чести “набить” код в присутствии следящего за техникой безопасности препода на “Электронно-Счётной Машине”.

Потом я встретился с Fortran 77 уже переведясь в другой ВУЗ и серьёзно им заболел. Оказалось, что для математических вычислений язык подходил просто замечательно! Всё таки первый язык высокого уровня. Считал интегралы по площади и по объёму, проверял расчётки по сопромату, находил первообразные. Всё проходило легко и непринуждённо.

В поздних версиях появились функции и процедуры (subroutine), но до ООП на момент моей работы с ним дело не дошло – ведь основа фортрана – goto и метки. ООП появился в 95 году. Синтаксис забавен, интерпретатор понимает только заглавные буквы.image

С форматированием ситуация тоже забавна. Изначально язык был рассчитан на ввод с перфокарт, поэтому код писался по строгому разделению на колонки даже в текстовом редакторе. Первая колонка предназначалась для символа комментария “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 появилось у меня значительно позже, и спросить было не у кого. Доходило до того, что формат некоторых файлов картинок восстанавливался эмпирическим путём, на основе разницы кода в шестнадцатеричном редакторе. Интересно было делать плавную анимацию, отображая одну видеостраницу и параллельно рисуя в памяти видеокарты ещё две со следующими картинками, разрабатывать собственный формат шрифтов, систему окон и перехвата клавиш. С мышкой долго мучался…

image

Последним, что я написал под MS-DOS было несколько расчётных заданий по Теории машин и механизмов. Плавно и красиво двигались рычаги, крутились шестерёнки. К сожалению, все исходники лежат на мёртвом винте, который я никак не довезу до DataRС, да и где лежит не помню уже.

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 и производило неизгладимое впечатление на заказчика.

image

Другим компонентом системы было трёхмерное моделирование процесса заливки. Оно неделю считается на мощнейших компьютерах и баснословно дорого стоит, но окупает себя за неделю. Либо останавливай весь конвейер завода и проводи эксперименты тысяч способов заливки – либо посмотри на экран, где сразу увидишь и отбел, и газовые раковины и пористость, и ядра кристаллизации, и температуру каждой точки будущей отливки.

PHP 4

  • Год: 2005
  • Платформа: LAMP

Отдохнув годик IT-специалистом в одной немецкой фирме, вернулся к разработке, но в очередной раз сменил платформу. Стало интересно разрабатывать сайты. Ну и понеслось, HTML, CSS, PHP, MySQL. Другая операционка, скриптовый язык, другие правила, после С++ – райские кущи. Да и частных заказов на сайты было море.

C#

  • Год: 2006
  • Платформа: .NET Framework

Это уже новейшая история. Сменил работу, и снова платформу. Окончил курс Microsoft и прочитал пару наших мелких программерских книжек по 1200 страниц, по C# и T-SQL. Да, раз в полгода технологии нужно догонять, а за два года все знания программиста абсолютно устаревают.

image

До сих пор считаю .NET верхом удобства, чёткости, скорости разработки, хотя снова изменил ему с LAMP (Linux, Apache, MySQL, PHP). Пожалуй, программировать на C# даже слишком удобно, всё за тебя продумано, десятки тысяч готовых классов, визуальное построение интерфейса и структуры, автодополнение кода. Классы рисуешь мышкой, код пишешь по паре символов каждого оператора, остальное сделает автодополнение. Становится скучно, чувствовал, что превратился в кодера, новых открытий не будет, всё есть в MSDN и написано до меня. Компонуй и компилируй.

А сейчас?

А сейчас PHP 5, MySQL, jQuery, вёрстка под чёртов IE6, AJAX, JSON, CodeIgniter, собственная CMS…

Что будет через год – сказать затрудняюсь, но тянет сменить платформу или род деятельности вообще.

Коллеги, передаю эстафету вам. Если принимаете, отметьтесь в комментариях, размещу здесь ссылку.

Ещё вам может понравится старая заметка об интерфейсах Мicrosoft.

  • Александр

    В резюме, если не секрет, тоже все языки указываешь? :)
    А так — занятно написал, прям понастальжировал

    • http://filonov.org DVF

      Да нет, только PHP теперь. Маловероятно найти работу с FORTRAN 66. Плюс работодатели считают, что нормально можно знать только один язык.

  • http://www.rudinandrey.ru MadGhost

    с 1992 года. Компаньен, спектрум-128к — байсик, знакомство с ассемблером. попытки декомпиляции игр для спектрума :) но так ничего путевого не узнал :( в программировании игр для спектрума.
    Далее Pentium-166 Ассемблер, С, С++, Делфи, с самого начала появления .NET перешел на него :) С# шедевр ИМХО. АСП.НЕТ для ВЕБа это просто сказка.

    • ValeronII

      А я декомпилировал игры на Спектруме. Для чего был написан свой собственный ассемблер / дизассемблер. Ковырялся в одной игрухе… Так там вызовов из одной в другую область памяти было штук 100, Бросил.

  • https://www.google.com/accounts/o8/id?id=AItOawnjFa6rQ594CjgsvO_XMHMhfHxTLTNQGV4 Dark Magus

    Прикольно. Пожалуй, тоже напишу такую же заметку про себя.

    • http://filonov.org DVF

      Со времени написания заметки основными инструментами тоже стали аналоги MS Project и Google Docs. Пришу для себя иногда, чтобы форму не терять.

  • http://eax.me/ afiskon

    Спасибо за заметку. Немного резали глаза перлы в стиле «К сожалению, в школе преподавали Pascal» или «ООП появился в 95 году», но читал с большим интересом. На счет «Что будет через год» — советую обратить внимание либо на _настоящие_ скриптовые языки (не PHP), например Perl или Python. Советую немного попробовать каждый из них, посмотреть, какой больше нравится и углубиться. Учить оба особого смысла не вижу (пробовал). Я лично в ходе изучения Perl после знакомства с PHP открыл для себя много нового, сильно обоегчил себе жизнь и обеспечил себя стабильной работой на многие годы. Еще одно интересное направление — логические (Prolog) и функциональные (Haskell, диалекты Lisp) языки программирования. Тут интересны сами задачи, для которых эти языки создавались, и отраженные в них подходы к решению этих задач.

    • http://filonov.org DVF

      Гм, ну а в каком году Fortran стал объектно-ориентированным? Стандарт FORTRAN 95, на сколько я помню.
      По поводу медленно умирающего Perl и не очень быстрого питона — настроен скептично. PHP же развивается бешеными темпами — сейчас это вполне полноценный язык.
      Задачи на данный момент у меня однотипны — заработать денег. Исходя из распространённости PHP, наличия сотен качественных фрэймворков, специалистов, распространённости и низкой нагрузки на железо — альтернатив нет.

      • http://blogcoding.ru minimus

        >Гм, ну а в каком году Fortran стал объектно-ориентированным? Стандарт FORTRAN 95, на сколько я помню.
        Smalltalk-80

  • http://eax.me/lang-evolution/ Эволюция используемых языков программирования | Записки программиста

    […] написание этой статьи меня вдохновили заметки На чём пишете? Дениса Филонова и Эволюция используемых языков […]

  • http://filonov.org/2013/12/25/itogi-i-plany/ Итоги и планы – Денис Филонов

    […] лучше, несмотря на уродский синтаксис. Ну ничего, писал на фортране, смогу и на […]