If a C programmer asks "do you want to see something cool?", run away.
--John Van Enk

Thursday, September 6, 2007

Волшебство на кончиках пальцев...

Интересно так складывается жизнь иногда. Я всю жизнь (ну а если точнее лет эдак до 16) мечтал стать археологом, да и сейчас иногда подрывает все бросить и умчаться куда нить в Среднюю Азию или Южную Америку на какие нибудь раскопки, книжки интересные читал по данной тематике. Знает например кто-нибудь, что древнеиндские письмена с печатей в Мохенджо - Даро (город мертвых кажись в переводе) до сих пор никто так и не расшифровал? а население Канарских Островов на каком языке говорило, пока его конкистадоры не перебили? он ведь не был родственным (насколько я знаю) ни одному языку в мире. а что письмена иберов, к примеру, в 80-х годах расшифровывали используя древнегрузинские тексты?

А после школы я поступил в Харьковский Авиационный Институт (ныне Национальный аэрокосмический университет им. Н.Е. Жуковского) - там летать не учат, а учат строить самолеты, вертолеты, ракеты, в общем все, что летает и каким либо образом с этим связано. Специальность моя называется "Компьютерные технологии проектирования" и относится к разряду Computer Sciense. Как только я туда поступил, куратор собрал нашу группу, и радостно нам сообщил, что мы не программисты, а инженеры будущие.

Вот так нам и сказали что мы не программисты, и года три учили программировать - сначала год на Pascal под DOS, потом пол года на С++ (хотя так как нам его преподносили то это скорее всего был С), потом был ассемблер (тоже под DOS). Чего мы только на асме не переписали - и резиденты, и драйвера, и защищенный режим, и с BIOS работали напрямую и с нереентерабельностью DOS боролись, вообщем много чего писали.

Самая большая ошибка на мой взгляд во всем этом - это был Pascal. Он привил всем без исключения плохой стиль. Затем мы начали изучать FoxPro и Delphi. Про фокс у меня вообще слов нету, - одни ругательства. А относительно Delphi - да система действительно хорошая для своего времени, если бы не несколько но. Первое - это Pascal - программы в большинстве своем так и оставались процедурными, хоть и были написаны на Delphi (иногда доходило до абсурда - у одной девушки в выпускной работе бакалавра встретил листинг класса в распечатанном виде и около 10 листов там занимали компоненты TextEdit, являвшиеся членами класса, хотя задача решалась проще банальным StringGrid, кажись так), второе - это то, о чем писал Джоэль в статье The Law of Leaky Abstractions - никто из нас совершенно не представлял как работает Windows приложение.

А потом мы начали изучать СAD/CAM/CAE пакеты - AutoCAD (для которого писали программы на AutoLISP, но которые все равно оставались программами на Паскале), Unigraphics (еще его старый вариант, который работал под ОС VAX VMS, на VAX машинах), Solid Works (для него мы писали на Visual Basic и Delphi вcе том же), NASTRAN & ANSYS тоже были, CATIA это вообще отдельная песня, КОМПАС тоже затронули. В общем мы прошли этот курс (который конечно же дополняли классические предметы CS - высшая, дискретная математика, численные методы, моделирование систем, теория вероятности, и специфичные для аэрокосмической области - например вероятностное проектирование), выжили не все...

Да чуть не забыл - мы еще семестр угрохали на Пролог, от этого курса у меня остались довольно противоречивие впечатления - с одной стороны это совсем не мейнстримный язык, а с другой - было и правда интересно.

Вот, и после всей этой CAD/CAM/CAE солянки, нам радостно сообщили, что мы все таки программисты. В итоге сейчас (5-6 курс) программистами работают считанные единицы - кто-то в вебдеве, кто-то в геймдеве, кто-то 1С, кто-то пишет бух-приложения на Delphi. Мне повезло - вовремя прочитал Страуструпа и потом все что только мог писал на С++.

Единственное полезное чему нас научили так это учиться и еще курс системного анализа мне пригождается чуть ли не каждый день.

Сейчас я работаю программистом эмбедед систем на С++ под Linux. Разрабатываем систему ЧПУ нового поколения для станков (в основном, есть еще проект по разработке системы доступа по отпечаткам пальцев, но я не в нем). Уже разработанные системы выглядят вот так (вариантов компоновки на самом деле несколько больше)



Я непосредственно разрабатываю новый интерпретатор языка, различные парсеры, анализаторы текста.

Задумался тут на днях о настоящих программистах. Это люди которые заставляют машину делать то, что хотят они, вне зависимости от того хочет этого машина или нет, это люди у которых на кончиках пальцев рождается волшебство...
Я не настоящий программист... Пока что...

А однажды я набрел в сети на блог Алёна С++, который и вдохновил меня на создание собственного. По началу читателей было мало, но их количество постепенно растет и география посетителей сайта тоже, как можно увидеть в Google Analytics.


Значит буду писать еще =).