19 сент. 2009 г.

Как программирование из искусства становится ремеслом

Мы были молоды и не страшились преград,
Где не спасет перезапуск, поможет format,
А если не было копий, мы тактику брали иную -
По дискетам мы ползали, и по частям
Собирали останки погибших программ,
И шестнадцатеричные dump'ы вводили вручную.
"Песня о программистской молодости" (слова Ю.Нестеренко)

Для тех кто в теме откровением будет прочитать программную статью "Жизненный цикл программиста" Михаила Донского (1948-2009) - всемирно известного российского IT-специалиста с мировым именем, автора шахматной программы "КАИССА" (1974г, первого чемпиона мира среди шахматных программ), разработчика системы управления базами данных ИНЕС.

Это гурманское чтиво для гиков о "золотой эре" ЭВМ, о том, как менялась профессия программиста за последние десятилетия. Математически выверенные фразы, логика в изложении и любовь к любимому делу. Настоятельно рекомендуется к прочтению.

У каждой профессии есть свой романтический период и есть период, когда она превращается в рутинную. Быть шофером в начале прошлого века было трудно и почетно. Сегодня автомобиль может водить любой желающий, а в большинстве районов США жизнь без автомобиля практически невозможна. Так профессия шофера прошла полный цикл от интеллектуальной и романтической до бытовой и повседневной за какие-то 60 лет.
....
В группе программистов Института Теоретической и Экспериментальной Физики, где для вычислительных работ ядерной физики стояла эта самая М-20, придумали массивы, списки, необходимость использования подпрограмм и многое другое. Один из моих учителей, Г.М. Адельсон-Вельский придумал хэш память. Подробности можно найти в книге другого моего учителя – А.С. Кронрода "Беседы о программировании". Еще до Дийкстры основные принципы структурного программирования были изложены А.Л. Брудно в книге "Программирование в содержательных обозначениях". Там же была создана первая шахматная программа.

А ведь в то время программировали в кодах, память под программы и переменные распределяли своими руками, и известны случаи, когда на одно и то же место грузились разные подпрограммы, и всегда работала только последняя. Всерьез была распространена так называемая "польская игра", когда надо было уложить заданный алгоритм в минимальное число ячеек памяти.
...
Рассказывают, что в операционной системе "Пульт", написанной в Вычислительном Центре АН СССР для БЭСМ-6, был счетчик ошибок оператора, и при достижении некоторого порога система выдавал "вежливое" сообщение "А если ты – дурак, то не садись за “Пульт”". Когда директор ВЦ академик А. Дородницын инспектировал систему, он понажимал несколько раз случайные кнопки и был крайне огорчен полученным результатом.
...
Мне посчастливилось заниматься в семинаре по эффективным алгоритмам, на котором моими сокурсниками было придумано несколько классических алгоритмов. М. Кронрод построил оптимальный алгоритм упорядочения, Е. Диниц и А. Карзанов создали целую серию алгоритмов по потокам в сетях. А. Карзанов потом стал автором классических работ по линейному программированию. Мой диплом представлял оптимальный алгоритм решения задачи о назначении и состоял из полутора страниц.
...
За 15 лет работы с ассемблером мы общими усилиями овладели этим языком так, что он стал языком более высокого уровня, чем все выше перечисленные. Под термином "овладеть языком" я имею в виду не то, что мы досконально знали его синтаксис и семантику, а то, что были наработаны библиотеки подпрограмм, приемы программирования, идиомы и многие специфические приемы, так что программы писались легко и свободно. И, главное, еще легче отлаживались и адаптировались.
...
Теперь я понимаю, что ... надо было и копировать IBM и делать свои машины именно для сохранения культуры. А в итоге к 80-м мы потеряли культуру проектирования элементов, потом и культуру проектирования устройств, а сейчас от нас уходит (вместе с носителями - людьми, которые умеют это делать) культура создания операционных систем.

В итоге, вместо того, чтобы догнать кого-то, мы отстали в этих компонентах навсегда. И, повторюсь, не потому, что нет нужных производств или знаний, а потому, что почти не осталось людей, которые это умеют делать.

А в 80-х началась эра языка Си на машинах, скопированных с PDP и IBM PC. Мы потеряли весь свой ассемблерный "языковый запас" и так и не достигли аналогичного уровня инструментария на Си. Это была своего рода эмиграция. Привыкнув к детальному пониманию, как происходят реальные вычисления в памяти, пришлось отвыкать и работать в гораздо более абстрактных сущностях.
...
С течением времени программирование из тонкого ремесла, иногда восходящего к искусству, становилось ремеслом все более и более рутинным.

Если до середины 80-х еще реальны были программы, созданные если не одним человеком, то хотя бы в рамках одного коллектива, то в дальнейшем в производство шли программы, построенные по принципу "Лего", а именно, собранные из различных полуфабрикатов (библиотек и компонент), разработанных в разных уголках мира.

Как ни странно, это сделало ценность программистов с хорошим математическим (не скажу образованием, а подходом) гораздо выше. Их стали называть по-разному – системными аналитиками, руководителями проектов, системными архитекторами. И наряду с программистами, умевшими "выполнить проект" - реализовать конкретное техническое задание, - потребовались именно такие "абстрактные" специалисты, умевшие совсем другое. А именно, разбить процесс создания большой системы на проекты, выбрать для них инструментарий, подобрать исполнителей, суметь их проконтролировать и, в конечном счете, обеспечить работоспособность созданной системы. И сегодня таких специалистов приблизительно столько же, сколько было программистов в начале моего трудового пути.

Только просьба не путать системных архитекторов и системных администраторов. Эти две почетные профессии не имеют практически ничего общего.
...
Самой лучшей операционной системой последние 30 лет является Юникс, но плохой пользовательский интерфейс привел к тому, что более популярно изделие Майкрософта.
...
понять внутреннюю организацию сложных систем можно только одним способом – самому сделать что-то подобное, пусть и гораздо более простое. Но я не слышал, чтобы студентам задавали в качестве курсовой работы создание простой операционной системы или системы управления базами данных.

В итоге профессия программиста меняет свой характер. Если раньше программисты знали свою программу досконально, то теперь в лучшем случае они умеют эффективно использовать то или иное инструментальное средство. Появились вообще странные на мой вкус термины как программисты на PHP и HTML.

Программирование из искусства становится ремеслом, и я счастлив, что всю жизнь занимался программированием, пока это было так же интересно и почетно, как пилотировать самолеты во времена А. Экзюпери.
полный текст статьи

В тему: Прослезился...программистам 90-х посвящается

3 комментов:

Count Raven Amiant комментирует...

Эхххх! Ностальгия...

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

;) какая ностальгия в 26 лет??

Count Raven Amiant комментирует...

Да не, конечно не такая как у некоторых. Просто я все же зацепил те времена и мне близки эти суждения. У меня отец программист и я уже в 6 лет за XT сидел и за Yamaha на базе Z-80. Как бы времена DOSа 3-го, ассемблера, лиспа, си, фортрана, паскаля, ады. Конечно это не 70-е, но ностальгия есть. Тогда это все было как-то иначе, добрые воспоминания.

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

Related Posts with Thumbnails