Sunday, July 26, 2009

Жизненный цикл программиста

Рекомендую прочитать статью полностью http://www.polit.ru/science/2008/08/20/programmist.html
Здесь я привожу лишь наиболее яркие моменты. Автор статьи Михаил Донской


У каждой профессии есть свой романтический период и есть период, когда она превращается в рутинную...Так получилось, что время моей жизни практически совпало с жизненным циклом моей профессии. Я – программист. Сами компьютеры появились в 40-х годах..., то есть в то же десятилетие, когда я родился.

В этой статье я хочу, вспоминая свою профессиональную жизнь, напомнить, как менялась профессия программиста.

...Когда я школьником учился программировать на М-20, в СССР программистами были известные математики, на ходу выдумывавшие то, чему сейчас учат в школе...

...А ведь в то время программировали в кодах, память под программы и переменные распределяли своими руками, и известны случаи, когда на одно и то же место грузились разные подпрограммы, и всегда работала только последняя. Всерьез была распространена так называемая «польская игра», когда надо было уложить заданный алгоритм в минимальное число ячеек памяти...

...Где-то рядом уже существовал Алгол-60, но им «настоящие» программисты не пользовались, поскольку техники отладки практически не было. Чуть позже большую популярность получила статья «Почему настоящие программисты не пишут на Фортране»...

...Конец моих студенческих времен совпал с революцией в компьютерах. Появились компьютеры «общего пользования с системами разделения времени. Это IBM 360, ICL 4-70, ЕС ЭВМ. Писать в кодах для таких машин стало принципиально невозможно, и на передний план вышел (как наименьшее зло) язык ассемблера. Были и другие языки программирования (Фортран, Кобол, Алгол, PL-1), но они не позволяли эффективно контролировать оттранслированный код. Мой сосед по кабинету в ИПУ М. Фурман, на мой изумленный вопрос, как ему удается программировать на PL-1, просто заметил, что он в уме транслирует все операторы, прежде чем написать их....

...За 15 лет работы с ассемблером мы общими усилиями овладели этим языком так, что он стал языком более высокого уровня, чем все выше перечисленные. Под термином «овладеть языком» я имею в виду не то, что мы досконально знали его синтаксис и семантику, а то, что были наработаны библиотеки подпрограмм, приемы программирования, идиомы и многие специфические приемы, так что программы писались легко и свободно. И, главное, еще легче отлаживались и адаптировались. Те, кто писал на Фортране, оценят последние свойства...

...Сделанная в ИПУ «Каисса» стала первым чемпионом мира среди шахматных программ. Кроме удовлетворения амбиций, она принесла мне еще много друзей по всему миру, поскольку в те времена создание хорошей шахматной программы было делом сложным, и сформировался своего рода теневой клуб авторов и знатоков шахматных программ.

Среди них были знаменитые в мире информационных технологий люди – К. Шеннон (автор теории информации), К. Томпсон (автор операционной системы Юникс), Д.Леви, М. Ньюборн, А. Марсланд, Б. Миттман, Ф. Фридель (автор ChessBase) и многие другие...



Ниже есть продолжение.


...С К. Шенноном связана одна из самых удивительных историй в моей жизни. Меня с ним познакомили в 1980 году на чемпионате мира среди шахматных программ в Линце. Каждый чемпионат имеет своего почетного гостя, и в том году им был Клод. Услышав его имя, я подумал «Как! Он еще жив?». Ведь работы Шеннона по шахматному программированию относились к году моего рождения, то есть для меня он существовал в очень давней перспективе. Оказалось, что ему в год моего рождения было меньше тридцати, и в 1980м он был еще очень не старым человеком. Когда же пришла моя очередь быть почетным гостем чемпионата мира 1999 года в Падерборне, я прочел в глазах молодых шахматных программистов все тот же немой вопрос «Как! Он еще жив?». И, поняв, что с момента моих публикаций уже прошло больше двадцати лет, я вспомнил Шеннона и успокоился...

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

...Зато остался интерес к базовым понятиям программирования, выходящим за пределы конкретных языков, операционных систем и устройств. Как любят говорить мои сотрудники «В конце концов, в компьютере биты бегают»...

...Создание собственного «языка программирования» и отладочных средств для конкретного проекта оказало решающее влияние в победе «Каиссы» на первом чемпионате мира среди шахматных программ. Большая часть программы была написана в терминах операций над «досками» - 64 битными объектами, которые задавали булево значение одновременно для всех полей доски. Эффективная реализация таких операций и их использование в алгоритмах позволили реализовывать сложные решающие правила за приемлемое время...

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

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

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

...По дороге пришлось пережить очередной крутой поворот – появилась Windows 3.1, и пришлось от традиционного процедурного программирования переходить к системам, управляемым потоком событий. Сегодня они привычны и понятны, а тогда ушло много усилий на понимание, «куда лошадь запрягать», а именно как устроен порядок исполнения кода в таких системах . Поток управления в них весьма неочевиден, и проблемы многопоточности и синхронизации вышли на первый план....

...У меня в «Параграфе» был отдел шахматного программирования, в котором «Каисса» получила вторую жизнь в качестве программы для IBM PC. Хотя мы и сделали в отделе шахматную программу – реинкарнацию «Каиссы» для IBM PC, которая достойно сыграла на компьютерной олимпиаде 1990 года, заняв третье место, интерес быстро сдвинулся в сторону пользовательского интерфейса, поскольку графические оболочки Мака и Windows очень манили в эту сторону...

...В это же время пришлось осваивать C++. Мое знакомство с этим языком началось с экскурсии в офис Bell Laboratories в Murray Hill, которую мне устроил в 1989 году автор Юникс Кен Томпсон. Мы с сыном жили у Кена в гостях, и в воскресный вечер он предложил прокатиться в офис. Офис был безлюден, и я с интересом смотрел на технические чудеса, которых там хватало. В какой-то момент Кен показал на дверь кабинета со словами «А здесь сидит чудак, который думает, что на его языке будет программировать весь мир». Табличка на кабинете гласила, естественно, «Б. Страутсруп».

Потом пришлось-таки учиться программировать на C++. Язык очень коварен. На нем должны программировать либо начинающие программисты, которым важно быстро получить результат любыми средствами, либо очень опытные. Создание больших систем на C++ программистами среднего класса может приводить к самым печальным последствиям.

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

...В начале этого тысячелетия пришлось сделать еще один крутой поворот. На этот раз - в сторону мобильных устройств и всего, что с ними связано, в первую очередь, беспроводными технологиями связи. Поскольку первые заказы были американскими, приходилось убеждать авторов технологий в их «незрелости» для практического использования. Слышать это от маленькой российской фирмы им было странно. К счастью, это потом подтверждалось и другими, более авторитетными источниками....

...В области мобильных устройств ярко проявилось преимущество Майкрософт в подходе к созданию операционных систем над всеми остальными. Десять лет назад самым распространенным мобильным компьютером был Палм. И хотя мобильная версия Windows уже существовала, казалось, что она никогда не сможет быть использована из-за непомерных требований к ресурсам мобильных компьютеров. А Палм был на коне, поскольку для него была специально разработана минималистская операционная система, в которой даже не нашлось места нормальной файловой системе.

Одна беда. Программировать для такой системы было непривычно и крайне непросто. В итоге серьезных программ для Палм так и не было создано, он так и остался еженедельником, а не компьютером. А к 2003 году мощность карманных устройств доросла до мобильного Windows, и, откуда ни возьмись, масса программистов стала делать большие программы для этой системы. Идеология мобильного Windows была понятна и привычна для программистов Windows для ПК. В итоге операционная система Палм сошла со сцены, и скоро за ней уйдет и само устройство.

Похожая история должна произойти с Symbian, операционной системой, установленной на телефонах Nokia и Sony Eriicsson. Подход ее авторов тоже был минималистским. Она, конечно, лучше, чем Палм, но все равно, крайне трудна для программистов. А именно программисты решают все. Самой лучшей операционной системой последние 30 лет является Юникс, но плохой пользовательский интерфейс привел к тому, что более популярно изделие Майкрософта.

...Сила Майкрософта не только в больших деньгах, вкладываемых в раскрутку продуктов, иногда не совсем работающих, а и в армии программистов, умеющих работать в этой системе, и в куче полуфабрикатов, которыми могут пользоваться эти программисты. Для меня, например, разработка программы для Windows по себестоимости вдвое дешевле, чем разработка аналогичной программы для Symbian. Нетрудно догадаться, какую систему я рекомендую своим заказчикам.

Пока последний поворот в моей программистской биографии – видео в Интернет. Интернет, точнее, мировая паутина – это особая тема для разговора. Она обладает врожденным пороком. Это - система, придуманная для обмена гипертекстовой информацией в распределенных сетях. Однако за свои 13 лет, начиная с появления «Мозаики», паутина эволюционировал в сторону системы доступа к гигантскому хранилищу информации.

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

В итоге получился суп из топора. Сегодня принятый как стандарт формат представления информации в Интернет (HTML) является сдерживающим фактором для построения интерактивного контента. Но, как и в случае с левосторонним автомобильным движением, сменить его крайне трудно. Ведь можно потерять накопленную за десятилетие информацию, да и пользователей так быстро на новые браузеры не переведешь.

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

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

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

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

http://www.polit.ru/science/2008/08/20/programmist.html

No comments:

Post a Comment