Денис Филонов

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

Разработка

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

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

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

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

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

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

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

image

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

![](./image9.png)

![](./image10.png)

TurboPascal 5.5

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

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

image

BASIC

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

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

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

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

Fortran 66 (FORmula TRANslator)

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

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

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

image

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

image

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

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, вёрстка под чёртов IE6, AJAX, JSON, CodeIgniter…

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

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

Комментарии 9

Архив из прежней версии блога.

  1. Александр

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

    1. DVFавтор

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

  2. MadGhost

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

    1. ValeronII

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

  3. Dark Magus

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

    1. DVFавтор

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

  4. afiskon

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

    1. DVFавтор

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

      1. minimus

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