November 14, 2006

Правильное программирование

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

Давным давно, когда деревья были большими, а из языков был известен только Basic и тот плохо, я с благоговением писал свои первые "программы". Это было подобие Turtle графики в стиле: LINE 10, 20, 50, 60 и так далее. Помню мы тогда с товарищем рисовали какую-то картинку, и когда на экране стала появляться именно эта картинка, а не просто набор линий, я был необыкновенно горд собой. А как же! Столько сил было положено :-) Приятно вспомнить.

Затем был Pascal. Оказалось, что есть подпрограммы и структуры. Потом они объединились и стали классами. Программирование было увлекательным занятием. А потом я увидел Delphi. Наверное, в тот самый момент у меня в голове и возник вопрос "чем же это всё закончится?". Со временем средства разработки становились всё более интеллектуальными и для совершения каких-либо действий приходилось всё меньше работать головой и всё больше руками. Однажды столкнулся с задачей просмотра DBF файла. Начал искать описание формата, что-то придумывать. В конце концов запустил Delphi и наваял приложение при помощи одной только мыши за 5 минут.

Не так давно я смотрел screencast, в котором автор сравнивает платформы разработки веб приложений (JSP, Ruby On Rails, Plone, Turbo Gears, Django). Сравнивает очень просто: реализовывает одно и то же приложение на всех платформах и собирает статистику. В качестве метрик выступают: количество строк кода, файлов кода, файлов конфигурации, время на разработку, количество ошибок компиляции за время разработки и количество "непростых ошибок", когда приходилось прибегать к помощи документации или сообщества. Так вот, при помощи Plone удалось сделать всё не написав ни единой строки кода за 7 (кажется) минут.

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

А что будет, когда IDE смогут сами генерировать правильный код? Страшно подумать... Неужели программисты станут ненужными и выродятся? Думаю, вряд ли, скорее всего само понятие "программирование" получит новый смысл. И этот смысл будут искать и формулировать такие же как я.

Ну а напоследок ещё одна ссылка по теме. Мой любимый рассказ Азимова.


Comments:
Не могу согласиться с Азимовым, как прошедший школу физ-мат интернатов, хорошо представляю, как "элитное" обучение выглядит на практике и чем заканчивается.

Timka21213.livejournal.com

 


Меня недавно посещала мысль на схожую тему. Только не о конкретно программировании, а о процессе разработки ПО вообще. И вывод, в общем, тоже сходный - искусством в разработке IT систем является не сам процесс разработки, а умение правильного выбора метода разработки, наиболее подходящего языка (или, скорее, среды) и т.д. В общем главное правильно выбрать что использовать и как.

 


to Timka21213:
Элитное обучение в каком смысле? Которое только для избранных или которое очень хорошее?

 


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

 


Elena, во всех смыслах:

http://www.kolmogorovschool.ru/show.html?id=135

я учился в этой:

http://journal.spbu.ru/2003/22/9.shtml

 


Ничего не могу сказать про очень хорошее обучение. А вот про элитарность: мне просто жутко становится, когда я представлю, что программистом будет каждый. Чем же мне тогда заниматься? И чем я буду отличаться?
В общем, с точки зрения моего эгоизма, пускай программирование остаётся "элитарным" занятием. :-)

 


Это была скрытая реклама Plone ? :-)

Дак оно CMS, а остальное в лучшем случае CMF... Некорректненько.

 


to Max: И ничего не скрытая. Совсем даже открытая реклама. Более того, на тот cкринкаст я наткнулся на plone.org в разделе туториалов или типа того.
А что до отличия. Рискну предположить, что все указанные продукты есть ни что иное как фреймворки для создания веб приложений. Все они для этого и придумывались. С этой точки зрения они вовсе не отличаются.
В конце концов всегда можно смело заменить слово Plone на слово Zope(с небольшой оговорочкой, конечно :-)) и тогда терминологически все будут в равных условиях.

 


To dW: "И чем я буду отличаться?"
Именно умением "идеально смешать этот коктейль". Технологий очень много и самое сложное правильно выбрать из них то, что подходит в текущей ситуации. А т.к. технология нужна, обычно, не одна… и все должно идеально друг с дружкой сочетаться… простор для творчества открывается широкий. И выбор подходящей методологии, по моему, сейчас пока еще является искусством. Правда это уже не программирование.
С другой стороны есть вычислительные задачи, графика, оптимизация. Высококлассные специалисты тут всегда, думаю, будут штучными.
А еще есть UI. Юзабилити – главное в успехе большинства проектов.

 


Elena: "выбор подходящей методологии, по моему, сейчас пока еще является искусством. Правда это уже не программирование"
Вот тут есть над чем задуматься. Сейчас занятием программиста является почти всегда выбор методики и библиотек. Но! Разработчики этих библиотек занимались тем же самым, то есть тоже выбирали методики и библиотеки, только уровнем ниже. И так далее. По большому счёту, сейчас "чистым программированием" (ковырянием дырочек в перфокартах) не занимается никто. Все работают на определённом уровне абстракции, необходимом и достаточном для решения конкретной задачию.
А то, что спецы в узких отраслях будут всегда нужны это факт. И немного про Юзабилити. Не могу не признать его необходимости, но разработать хороший UI, даже при всех современных технологиях, довольно трудно. Тут уж точно надо быть художником от программирования.
Посему, предлагаю немного изменить свой определение из поста: "программирование - это искусство поиска алгоритма и технологии для решения конкретной задачи и красивая реализация этого алгоритма в рамках выбранной технологии и языка программирования"

 


у абстракций всегда найдутся дырки )
так что без работы не останемся

 


Post a Comment



<< Home

This page is powered by Blogger. Isn't yours?