пятница, 1 февраля 2013 г.

Как я стал программистом

Не знаю как Вам, но мне всегда интересно читать или слушать о том, как человек рассказывает о своём прошлом, акцентируя внимание на моменты, повлиявшие на его профессию. Поэтому я позволил себе отвлечься от программирования и умных мыслей, и немножко погрузиться в воспоминания…

Как я стал программистом. Воспоминания. Немножко с юмором :)

Когда мне было два или три года (я, правда, этого не помню, мне рассказывали), у меня был плюшевый Чебурашка. В один прекрасный день, мой старший брат (на три года разница) с вопросом “хочешь посмотреть, что у него внутри?” дал мне нож. Я не помню, что я делал дальше. Я не помню реакции моей мамы, когда, делая уборку и отодвинув диван, она обнаружила там потроха Чебурашки. Но мне думается, что это был один из моментов в моей жизни, повлиявший на мой характер и стремление узнать “что там внутри и как оно работает”. К слову сказать, у меня не было ни одной игрушки, которую я бы не разобрал (а потом собрал).

Следующее событие произошло в четыре года. Папа купил ZX Spectrum 48K. Выглядел он как-то так:

ZX Spectrum

Это был наш первый семейный компьютер.

Потом папа что-то паял в нашем чёрно-белом телевизоре Рекорд В-312, чтобы спектрум можно было к нему подключить… потом принёс кассеты для нашего бабинного магнитофона, это дело подключалось к спектруму, спектрум к телелизору и… было много игрушек.

  Chuckie Egg PacMan Bomberman

Chuckie Egg, PacMan, Bomberman и много-много всяких, сейчас уже и не вспомнишь. Помню счётчик оборотов на магнитофоне и отвёртку, которой можно было регулировать скорость вращения бабины, компенсируя факт растягивания магнитной ленты.

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

В мои пять лет мой брат уже ходил во второй класс и у них там были какие-то внеклассные занятия по английскому языку. Я помню, как они с мамой занимались, а я рядом ползал и запоминал. Так я выучил буквы и какой-то минимальный набор слов, ещё до школы научился читать текст на английском (пусть и не понимая и с неправильным произношением).

И вот в шесть (почти 7) лет, на 8е марта я написал свою первую программу на Basice’е. Это было поздравление для мамы, оно состояло из одного оператора вывода PRINT и символов псевдографики, с помощью которых формировалась картинка (что именно там было нарисовано, я уже плохо помню). На самом деле программы с руководства перепечатывать я стал раньше, и потом учился что-то делать своё (помню всякие вычисления, рисование и псевдографику). Но именно этот день, 8е марта 1990 года, я считаю днём своей первой программы – мы её тогда записали на магнитофонную ленту и воспроизводили через год.

Потом была школа, наш телевизор постоянно ломался, потом появился второй, уже цветной и не наш, который тоже ломался…  Поэтому я мучал папин программируемый калькулятор МК-64, вычитывая статьи из журнала “Наука и жизнь”. На калькуляторе тоже можно было писать игры! Запомнились “Посадка на луну” и “Охота на лис”.

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

К концу седьмого класса, весной 1997 года, у нас дома появляется настоящий ПК: Intel Pentium 166 Mhz, 32 Mb RAM, 2Gb HDD, SoundBlaster AWE 32, S3 Virge 2Mb. Это была чуть ли не топовая конфигурация на тот момент! Знакомство с Windows 95, изучение всех стандартных приложений, чтение справки и запоминание сочетаний клавиш, т.к. пользоваться мышью ещё не привычно…

Помню, как в 8м классе ставил Visual Basic, думая что это чуть-ли не единственный продвинутый язык программирования. Даже на нём делал программу: часы с круглым циферблатом и стрелками (с помощью встроенных файлов помощи, т.к. книг у меня не было). Но через какое-то время начал понимать, что всё-таки Visual Basic это… на примере тех же компонентов – это Active X, а как их написать самому?.. Да и вообще, без основ программирования что-то делать на интуитивном уровне – это тупик.

В это время у меня брат в школе как раз начал изучать Pascal, и он купил книги Валерия Фаронова: “TurboPascal 7.0 Начальный курс” и “TurboPascal 7.0 Практика программирования”:

 TurboPascal 7.0 Начальный курс TurboPascal 7.0 Практика программирования

И для меня это был прорыв… пусть даже и под DOS, но зато я стал понимать, что я делаю и как это работает. Шаг-за-шагом я изучал: синтаксис, простые типы, структурные типы, массивы, функции, указатели, динамическое выделение памяти, работа со страницами памяти, работа с видеорежимами через прерывания, ассемблерные вставки, работа с мышью, работа со шрифтами (даже был отдельный редактор растровых шрифтов). Где-то в середине этого пути я пробую Java Builder (от Borland), и пишу аналог приложения часов со стрелками. Но мне не удаётся получить нативный exe-шник (тогда я не понимал, для чего Java Builder нужен), а запуск в браузере меня не устроил, поэтому я установил Delphi 3. Но там всё было не знакомо, и я вернулся в Pascal for Windows – Windows редактор pas-исходников, умевший компилировать приложения под DOS.

Школьный курс информатики стал отставать от моих знаний и там мне было скучно. Правда иногда бывали задания, типа “написать алгоритм сортировки массива целых чисел”, с этим справлялись не многие, а потом мы узнавали, что это называется пузырьковая сортировка, есть ещё и другие методы, но это не для школьного курса.

У меня не было интернета. Но мне очень нравилось использовать графический режим, и желание загружать картинки на фон было настолько велико, что я методом проб и ошибок изучил формат BMP. Делал я так: создавал в Paint’е картинку размером 1х1 точку. 1 бита, 4 бита, 8 бит. Потом размером 1х2. И т.д. И смотрел, что меняется. Так я научился разбирать формат BMP. Потом была работа с палитрой. Я научился формировать 256 цветную палитру Windows. А заодно и другие палитры. Я научился отображать 16ти и 24х битные картинки в 8бит и меньше. Примерно так, как это делал ACDSee под DOS (даже по скорости оно у меня работало примерно так же).

Учебный год заканчивался, и я уезжал на лето в деревню, где не было никаких компьютеров… Речка, воздух, солнце, сенокос, коровье молоко… Где-то между 10м и 11м классом, желая увеличить производительность отрисовки графики, я на тетрадном листочке написал алгоритм для рисования линий попиксельно. Позже я узнал, что этот алгоритм называется “алгоритм Брезенхема”…

На первом курсе института я у одногруппника увидел здоровенную книгу, название уже не помню, что-то типа “Архитектура вычислительной техники IBM PC/XT/AT”. С этой книгой я не расставался пару месяцев и написал свой клавиатурный драйвер на паскале с ассемблерными вставками. У меня даже сохранились исходники и программа-тест (всё вместе порядка 4000 строк) – в нижней части экрана рисуется клавиатура, в верхней – текст. Нажимая и отпуская клавиши на физической клавиатуре – клавиши нажимались/отпускались на экране. Ну и можно было нажимать клавиши виртуальной клавиатуры мышкой, тогда происходила эмуляция нажатий. Эта программа уже использует объекты (ключевое слово object). И где-то в середине 1го курса я окончательно осознал, что DOS - это прошлый век (в буквальном смысле, т.к. был 2001й год), да и объектная модель Турбопаскаля устарела и надо двигаться дальше. В этот момент другой мой одногруппник советует попробовать Delphi 5, он даёт мне книгу и диск.

Delphi 5

Я бросаю свои DOS велосипеды и начинаю терзать формочки, компоненты и WinAPI. Интернет был роскошью, поэтому родные хэлпы и исходники остаются лучшей документацией.

Конечно в институте никакого Паскаля не было. Си, Фортран, потом снова Си. И мне даже очень нравятся некоторые вещи в Си, но простота и красота синтаксиса Паскаля не отпускают. К началу 2го курса сомнений в выборе будущей профессии у меня больше не было.

5 коммент.:

Алексей Тимохин комментирует...

Занятно.

А я начал программировать во второй половине 90х. Тоже с Basic-а, но на Commodore 64. Потом появился PC, сначала 086, потом 286, потом 386. Там игрался с QBasic-ом. Потом появился 486. Тогда в универе нас учили программировать на Borland C, С++ 3.1. На нём же писал все лабораторки и какие-то свои программки.

Потом, для работы стал делать программки в MS Access + VBA.
Потом, подружка попросила помочь сделать лабораторки её подружкам, на Delphi 7. Потом появился первый заказ на программку - решил писать тоже на Delphi. Но это всё в рамках хобби.
И вот через несколько лет решил окончательно перейти в программисты - и стал искать работу, связанную с... правильно, с Delphi.

Unknown комментирует...

> Запомнились “Посадка на луну” и “Охота на лис”.
Епрст, мои любимые :)

Vlad комментирует...

>>Intel Pentium 166 Mhz, 32 Mb RAM, 2Gb HDD, SounBlaster AWE 32, S3 Virge 2Mb

Да это же мой первый комп после ZX Spectrum'а! :) Вот с этого самого железа и началось мое знакомство с Pascal, а уж потом на нем же и Delphi 5 "крутилась"...во времена были..

Юрий комментирует...

Почти моя история +-2 года по вехам )).
Bomberman не от ZX, скрин выделеляется. У ZX 16 цветов и 8x8 можно использовать 2.

Alex W. Lulin комментирует...

А я программировать начал в 88-м году :-)

Отправить комментарий

.

.