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

09Миха­ил Дон­ской. Извест­ный рос­сий­ский систем­ный про­грам­мист, зав. лабо­ра­то­ри­ей Инсти­ту­та систем­но­го ана­ли­за РАН, член Рос­сий­ской ака­де­мии Интер­не­та, автор шах­мат­ной про­грам­мы «КАИССА» (пер­вый чем­пи­он мира сре­ди шах­мат­ных про­грамм), пре­зи­дент ком­пью­тер­ной фир­мы ДИС­Ко, лау­ре­ат всех про­фес­си­о­наль­ных опро­сов «Top-100 Рос­сий­ско­го ком­пью­тер­но­го биз­не­са».

У каж­дой про­фес­сии есть свой роман­ти­че­ский пери­од и есть пери­од, когда она пре­вра­ща­ет­ся в рутин­ную. Быть шофе­ром в нача­ле про­шло­го века было труд­но и почет­но. Сего­дня авто­мо­биль может водить любой жела­ю­щий, а в боль­шин­стве рай­о­нов США жизнь без авто­мо­би­ля прак­ти­че­ски невоз­мож­на. Так про­фес­сия шофе­ра про­шла пол­ный цикл от интел­лек­ту­аль­ной и роман­ти­че­ской до быто­вой и повсе­днев­ной за какие-то 60 лет. Цикл про­фес­сии авиа­пи­ло­та тоже бли­зит­ся к окон­ча­нию и зай­мет те же 60 лет. Но вре­мя уско­ря­ет­ся, и новые про­фес­сии име­ют гораз­до более корот­кий цикл. Осо­бен­но это вер­но по отно­ше­нию к про­фес­си­ям, свя­зан­ным с инфор­ма­ци­он­ны­ми тех­но­ло­ги­я­ми.

Так полу­чи­лось, что вре­мя моей жиз­ни прак­ти­че­ски сов­па­ло с жиз­нен­ным цик­лом моей про­фес­сии. Я – про­грам­мист. Сами ком­пью­те­ры появи­лись в 40-х годах (и не надо здесь вспо­ми­нать ерун­ду про доч­ку Бай­ро­на), т.е. в то же деся­ти­ле­тие, когда я родил­ся. Огля­ды­вая свою про­фес­си­о­наль­ную жизнь, хочу напом­нить, как меня­лась про­фес­сия про­грам­ми­ста. Когда я школь­ни­ком учил­ся про­грам­ми­ро­вать на М-20, в СССР про­грам­ми­ста­ми были извест­ные мате­ма­ти­ки, на ходу выду­мы­вав­шие то, чему сей­час учат в шко­ле. В груп­пе про­грам­ми­стов ИТЭФ, где для вычис­ли­тель­ных работ ядер­ной физи­ки сто­я­ла эта самая М-20, при­ду­ма­ли мас­си­вы, спис­ки, необ­хо­ди­мость исполь­зо­ва­ния под­про­грамм и мно­гое дру­гое. Один из моих учи­те­лей, ГМ.Адельсон-Вельский, при­ду­мал хэш-память. Подроб­но­сти мож­но най­ти в кни­ге дру­го­го мое­го учи­те­ля А.С.Кронрода – «Бесе­ды о про­грам­ми­ро­ва­нии». Еще до Дийкс­т­ры основ­ные прин­ци­пы струк­тур­но­го про­грам­ми­ро­ва­ния были изло­же­ны

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

В ито­ге тогда шах­мат­ная про­грам­ма ИТЭФ, пред­ше­ствен­ни­ца «Каис­сы», уме­ща­лась в памя­ти М-20, а имен­но в 4096 ячей­ках, каж­дая из кото­рых име­ла 48 раз­ря­дов (теперь это назы­ва­ют бита­ми). Где-то рядом уже суще­ство­вал Алгол-60, но им «насто­я­щие» про­грам­ми­сты не поль­зо­ва­лись, посколь­ку тех­ни­ки отлад­ки прак­ти­че­ски не было. Чуть поз­же боль­шую попу­ляр­ность полу­чи­ла ста­тья «Поче­му насто­я­щие про­грам­ми­сты не пишут на Фор­тране».

Мои сту­ден­че­ские годы при­шлись на целый ряд совет­ских машин -Раз­дан-3 , Минск 1, 2, 22, 32, Урал-14, все они име­ли пульт, за кото­рым сиде­ли про­грам­ми­сты, а про­грам­мы и дан­ные вво­ди­лись с перфокарт/​ пер­фо­лент. АЦПУ – устрой­ство «широ­кой» печа­ти – появи­лось толь­ко в кон­це 1960-х. Для того что­бы быст­рее писать про­грам­мы для этих машин, мы сами раз­ра­ба­ты­ва­ли опе­ра­ци­он­ные систе­мы. Тут уже тре­бо­ва­лась высо­кая тех­ни­ка про­грам­ми­ро­ва­ния, посколь­ку эффек­тив­ность опе­ра­ци­он­ной систе­мы была необ­хо­ди­ма для самой воз­мож­но­сти ее исполь­зо­ва­ния.

Рас­ска­зы­ва­ют, что в опе­ра­ци­он­ной систе­ме «Пульт», напи­сан­ной в Вычис­ли­тель­ном цен­тре АН СССР для БЭСМ-6, был счет­чик оши­бок опе­ра­то­ра, и при дости­же­нии неко­то­ро­го поро­га систе­ма выда­ва­ла «веж­ли­вое» сооб­ще­ние «А если ты – дурак, то не садись за “Пульт”». Когда дирек­тор ВЦ ака­де­мик Дород­ни­цын инспек­ти­ро­вал систе­му, он пона­жи­мал несколь­ко раз слу­чай­ные кноп­ки и был крайне огор­чен полу­чен­ным резуль­та­том.

О серьез­но­сти задач, кото­рые при­хо­ди­лось решать на тогдаш­них ком­пью­те­рах, гово­рит то, что одним из моих про­ек­тов в сту­ден­че­ское вре­мя была систе­ма инверс­но­го поис­ка патен­тов для экс­пер­тов. Кста­ти, ВМК еще не было, было отде­ле­ние вычис­ли­тель­ной мате­ма­ти­ки на мех­ма­те, но я учил­ся на отде­ле­нии мате­ма­ти­ки. Сда­вая зачет по про­грам­ми­ро­ва­нию, я дол­жен был апел­ли­ро­вать к сво­е­му про­фес­со­ру М.Р Шуре-Буре, посколь­ку его аспи­ран­ты, при­ни­мав­шие зачет, про­грам­ми­ро­вать поче­му-то не уме­ли. И вооб­ще на мех­ма­те про­грам­ми­ро­ва­ние счи­та­лось чем-то вро­де пре­да­тель­ства чистой мате­ма­ти­ки, и все­рьез на моем кур­се им зани­ма­лось не боль­ше десят­ка чело­век. Была даже частуш­ка: «Меня милый не целу­ет, не садит­ся близ­ко, гово­рит “я – мате­ма­тик, а ты – про­грам­мист­ка”». А потом 90% выпуск­ни­ков с мое­го кур­са пошло-таки рабо­тать про­грам­ми­ста­ми.

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

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

Имен­но за эти годы мною и мои­ми това­ри­ща­ми под руко­вод­ством B.Арлазарова были напи­са­ны «Ка-исса», «ИНЕС», АСУ МНТС (Меж­ду­на­род­но­го науч­но-тех­ни­че­ско­го сотруд­ни­че­ства для ГКНТ СССР) и мно­го кон­крет­ных при­клад­ных систем. Где-то в это вре­мя нам при­шлось рас­стать­ся с при­выч­ны­ми пер­фо­кар­та­ми и пере­сесть за дис­плеи, меж­ду про­чим – алфа­вит­но-циф­ро­вые. Сде­лан­ная в ИПУ «Каис­са» ста­ла пер­вым чем­пи­о­ном мира сре­ди шах­мат­ных про­грамм. Кро­ме удо­вле­тво­ре­ния амби­ций она при­нес­ла еще мно­го дру­зей по все­му миру, посколь­ку в те вре­ме­на созда­ние хоро­шей шах­мат­ной про­грам­мы было делом слож­ным, и сфор­ми­ро­вал­ся сво­е­го рода тене­вой клуб авто­ров и зна­то­ков шах­мат­ных про­грамм. Сре­ди них были зна­ме­ни­тые в мире инфор­ма­ци­он­ных тех­но­ло­гий люди – К.Шеннон (автор тео­рии инфор­ма­ции), К.Томпсон (автор опе­ра­ци­он­ной систе­мы Юникс), Д.Ле-ви, М.Ньюборн, А.Марсланд, Б.Мит-тман, Ф.Фридель (автор ChessBase) и мно­гие дру­гие.

СУБД «ИНЕС», в кото­рой я зани­мал­ся систем­ны­ми вопро­са­ми – гене­ра­ци­ей и дис­три­бу­ци­ей систе­мы, систе­мой под­держ­ки вер­сий, для чего была напи­са­на Архив­ная Систе­ма, – и АСУ МНТС, уста­нав­ли­вать кото­рую мне при­шлось по всем мини­стер­ствам и рес­пуб­ли­кам СССР, при­нес­ли мне мно­го хоро­ших зна­ко­мых по всей стране. В любой город СССР мож­но было поехать, и вез­де встре­ча­ли очень теп­ло, даже когда уста­нав­ли­ва­е­мые мною систе­мы были при­ни­ма­ю­щим, мяг­ко гово­ря, не слиш­ком нуж­ны (как сей­час ска­за­ли бы, АСУ МНТС сни­жа­ло кор­руп­ци­он­ную емкость пла­ни­ро­ва­ния науч­ных коман­ди­ро­вок за гра­ни­цу).

И мое тогдаш­нее хоб­би – спор­тив­ный бридж – тоже было источ­ни­ком мно­гих дружб и зна­комств. Не слу­чай­но, когда мои аме­ри­кан­ские дру­зья при­ез­жа­ли в СССР, они после оче­ред­ной слу­чай­ной встре­чи с кем-нибудь на ули­це спра­ши­ва­ли меня: «Тебя все здесь зна­ют?».

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

В нача­ле 1970-х появи­лись маши­ны серии «Ряд». Так полу­чи­лось, что во вре­мя мое­го рас­пре­де­ле­ния после МГУ мне при­шлось быть сви­де­те­лем, как А.С.Кронрод борол­ся за про­дол­же­ние про­ек­ти­ро­ва­ния и про­из­вод­ства ори­ги­наль­ных совет­ских машин (он даже пред­ла­гал назвать серию «АС» – авто­ма­ти­че­ская совет­ская – по сво­им ини­ци­а­лам) про­тив В.М.Глушкова и Л.Т.Кузина, кото­рые рато­ва­ли за копи­ро­ва­ние IBM. Одним из аргу­мен­тов у послед­них было то, что мож­но будет вос­поль­зо­вать­ся всем мате­ма­ти­че­ским обес­пе­че­ни­ем, создан­ным для IBM, и лик­ви­ди­ро­вать неболь­шое отста­ва­ние в вычис­ли­тель­ной тех­ни­ке, кото­рое име­лось в кон­це 1960-х. 

Глуш­ков и Кузин побе­ди­ли (а судьей был пред­се­да­тель ГКНТ Кирил­лин), но все ока­за­лось не так-то про­сто. Пер­вый ком­пью­тер серии был запу­щен тита­ни­че­ским тру­дом инже­не­ров-элек­трон­щи­ков в жар­кое лето 1972 года на ВДНХ (после чего они иску­па­лись в фон­тане Друж­бы наро­дов), а мас­со­вая рабо­та на нем нача­лась толь­ко в 1979 году. Все это вре­мя я непло­хо зара­ба­ты­вал лек­ци­я­ми по ОС ЕС ЭВМ. Доку­мен­та­ция по систе­ме пере­во­ди­лась мои­ми одно­курс­ни­ца­ми и дру­ги­ми людь­ми, не пред­став­ляв­ши­ми себе, что такое ком­пью­тер вооб­ще, и опе­ра­ци­он­ная систе­ма в част­но­сти, и разо­брать­ся по такой доку­мен­та­ции было невоз­мож­но.

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

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

Одним из важ­ней­ших прин­ци­пов про­грам­ми­ро­ва­ния для меня явля­ет­ся необ­хо­ди­мость созда­ния соб­ствен­но­го инстру­мен­та­рия для любо­го про­ек­та, начи­ная с про­ек­тов сред­ней вели­чи­ны. Это мы кра­си­во назы­ва­ли созда­ни­ем спе­ци­а­ли­зи­ро­ван­но­го (для про­ек­та) язы­ка про­грам­ми­ро­ва­ния, вклю­чав­ше­го спе­ци­фич­ные струк­ту­ры и клас­сы дан­ных и базо­вые про­це­ду­ры. Круп­ные про­ек­ты тре­бу­ют парал­лель­ной раз­ра­бот­ки спе­ци­фи­че­ских (для про­ек­та) отла­доч­ных средств. Все это не исклю­ча­ет, а даже пред­по­ла­га­ет созда­ние абстракт­ных биб­лио­тек, а так­же инстру­мен­таль­ных и отла­доч­ных средств, исполь­зу­е­мых во всех про­ек­тах. В сущ­но­сти, толь­ко послед­нее и дела­ет ремес­ло про­грам­ми­ста или биз­нес-фир­мы по раз­ра­бот­ке про­грамм при­быль­ным делом.

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

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

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

Толь­ко прось­ба не путать систем­ных архи­тек­то­ров и систем­ных адми­ни­стра­то­ров. Эти две почет­ные про­фес­сии не име­ют прак­ти­че­ски ниче­го обще­го. Более того, мой корот­кий опыт рабо­ты, близ­кой к систем­но­му адми­ни­стри­ро­ва­нию, пока­зал мою пол­ную проф­не­при­год­ность в этой обла­сти. С дру­гой сто­ро­ны, мне неод­но­крат­но уда­ва­лось про­ек­ти­ро­вать и внед­рять боль­шие систе­мы. Кста­ти, про­бле­ма выбо­ра инстру­мен­та­рия для созда­ния боль­шой систе­мы явля­ет­ся одной из клю­че­вых. В преж­ние вре­ме­на стан­дар­ты на ком­по­нен­ты и их опи­са­ния были столь сла­бы­ми, что про­ще было напи­сать свое, чем поль­зо­вать­ся чужим. Сей­час уси­ли­я­ми круп­ных фирм по созда­нию про­грамм­но­го обес­пе­че­ния, в первую оче­редь уси­ли­я­ми Май­к­ро­соф­та, этот про­цесс стан­дар­ти­зо­вал­ся, и поль­зо­вать­ся чужи­ми ком­по­нен­та­ми ста­ло лег­че. Дру­гой вопрос, что боль­шин­ство доступ­ных ком­по­нент дале­ки от иде­а­ла, но пло­хой стан­дарт все рав­но луч­ше, чем его отсут­ствие.

Вер­нем­ся к 1980-м. Еще до пере­строй­ки мы – отдел ВНИИСИ под руко­вод­ством В.Арлазарова – локаль­но побе­ди­ли инсти­тут­скую и ака­де­ми­че­скую бюро­кра­тию за счет того, что на иголь­ча­том прин­те­ре «Элек­тро­ни­ки» смог­ли изоб­ра­зить шрифт печат­ной машин­ки. В то вре­мя, напри­мер, было запре­ще­но пода­вать к защи­те дис­сер­та­ции, напе­ча­тан­ные на ком­пью­те­ре, но с нашим шриф­том понять, что это – печать ком­пью­те­ра, а не машин­ки, без спе­ци­аль­ной экс­пер­ти­зы было нель­зя. Ана­ло­гич­ным обра­зом дело обсто­я­ло со мно­ги­ми дру­ги­ми доку­мен­та­ми – пла­на­ми, отче­та­ми, выезд­ны­ми харак­те­ри­сти­ка­ми и т.д.

До созда­ния это­го шриф­та любой бюро­крат нахо­дил повод при­драть­ся к доку­мен­ту из несколь­ких стра­ниц и тре­бо­вал его пере­пе­чат­ки, полу­чая пере­дыш­ку на пару часов, а то и дней. Но после созда­ния шриф­та исправ­лен­ный доку­мент ложил­ся ему на стол через пять минут, и он пони­мал, что ищет рабо­ту не мне, а себе. Тут-то в доку­мен­те все вол­шеб­ным обра­зом ста­но­ви­лось нор­маль­ным. Что он при этом думал о моей ква­ли­фи­ка­ции как маши­нист­ки, оста­ет­ся тай­ной. Как извест­но, пер­со­наль­ные ком­пью­те­ры побе­ди­ли Совет­ский Союз (не толь­ко выше­опи­сан­ным спо­со­бом, а, глав­ным обра­зом, отме­ной моно­по­лии на инфор­ма­цию и раз­ру­ше­ни­ем барье­ра меж­ду без­на­лич­ны­ми и налич­ны­ми день­га­ми).

В нача­ле рос­сий­ской эпо­хи пер­со­наль­ных ком­пью­те­ров, слу­чай­но или не слу­чай­но сов­пав­шей с коопе­ра­тив­ным дви­же­ни­ем, ко мне обра­тил­ся пре­крас­ный мене­джер Е.Соколинский, воз­глав­ляв­ший коопе­ра­тив «Пер­спек­ти­ва», с пред­ло­же­ни­ем реани­ми­ро­вать «Каис­су» для ПК. Для это­го мне нуж­но было из рабо­тав­ше­го в свое удо­воль­ствие уче­но­го стать началь­ни­ком груп­пы про­грам­ми­стов, да еще и создать эту груп­пу с нуля. Уго­во­рив меня, Со-колин­ский нашел изу­ми­тель­ный спо­соб фор­ми­ро­ва­ния груп­пы. Мы дали объ­яв­ле­ние в газе­ты о плат­ных кур­сах шах­мат­но­го про­грам­ми­ро­ва­ния. Сто­и­мость месяч­но­го обу­че­ния для наших слу­ша­те­лей состав­ля­ла 200 руб­лей, что по тем вре­ме­нам было суще­ствен­ной сум­мой. Заня­тия шли шесть дней в неде­лю, и коопе­ра­тив допла­чи­вал за арен­ду ауди­то­рий и ком­пью­те­ров нема­лую сум­му. Из деся­ти слу­ша­те­лей, кото­рых мы тща­тель­но ото­бра­ли, толь­ко один чело­век про­пу­стил одно заня­тие, пото­му что у него в этот день был выпуск­ной из Физ­те­ха. Потом мы всей груп­пой пере­шли в СП «Пара­граф».

В кон­це 1980-х, когда я ока­зал­ся в СП «Пара­граф», он пред­став­лял собой свое­об­раз­ную сбор­ную луч­ших мос­ков­ских про­грам­ми­стов. В «Пара­гра­фе» того вре­ме­ни рабо­та­ли Е.Веселов (автор «Масте­ра» и «Лек­си­ко­на»), А.Чижов (автор мно­гих руси­фи­ка­то­ров, в част­но­сти зна­ме­ни­той «Беты», он же автор аль­тер­на­тив­ной таб­ли­цы коди­ров­ки кирил­ли­цы) и др. В каче­стве помощ­ни­цы у Весе­ло­ва в «Пара­гра­фе» рабо­та­ла О.Дергунова, полу­чив­шая извест­ность уже в Май­к­ро­соф­те. Игры про­да­вал В.Савюк, потом рас­кру­тив­ший мар­ку «Ден­ди». В общем ком­па­ния подо­бра­лась непло­хая.

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

У меня в «Пара­гра­фе» был отдел шах­мат­но­го про­грам­ми­ро­ва­ния, в кото­ром «Каис­са» полу­чи­ла вто­рую жизнь в каче­стве про­грам­мы для IBM PC. Хотя мы и сде­ла­ли в отде­ле шах­мат­ную про­грам­му – реин­кар­на­цию «Каис­сы» для IBM PC, кото­рая достой­но сыг­ра­ла на ком­пью­тер­ной олим­пиа­де 1990 года, заняв тре­тье место, инте­рес быст­ро сдви­нул­ся в сто­ро­ну поль­зо­ва­тель­ско­го интер­фей­са, посколь­ку гра­фи­че­ские обо­лоч­ки Мака и Windows очень мани­ли в эту сто­ро­ну. Наш отдел, в кото­ром рабо­та­ли А.Дубец, М.Караев, В.Кокин, И.Шабалин и дру­гие, открыл целое направ­ле­ние гра­фи­че­ских редак­то­ров. Мы сде­ла­ли редак­тор фор­мул, а уже уйдя из «Пара­гра­фа», и редак­тор фак­сов, а потом и новую вер­сию «Лек­си­ко­на». Ока­за­лось, что общее всех этих редак­то­ров – раз­би­е­ние на три состав­ля­ю­щих: дан­ные, их отоб­ра­же­ние и соб­ствен­но редак­тор, пре­об­ра­зу­ю­щий дан­ные соглас­но дей­стви­ям поль­зо­ва­те­ля, – явля­ет­ся фун­да­мен­таль­ным для систем поль­зо­ва­тель­ско­го интер­фей­са. Неда­ром опе­ра­ци­он­ная систе­ма Symbian бази­ру­ет­ся на таком раз­би­е­нии.

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

После ухо­да из «Пара­гра­фа» я не смог най­ти дру­гую рабо­ту, в основ­ном по прин­ци­пу «двух мед­ве­дей в одной бер­ло­ге», когда началь­ник не хотел иметь в коман­де еще одно­го лиде­ра. Поэто­му в 1994 г. мне при­шлось занять­ся биз­не­сом, орга­ни­зо­вав свою фир­му «ДИС­Ко» (Donskoy Interactive Software Company), суще­ству­ю­щую по сей день. Фир­ма зани­ма­ет­ся раз­ра­бот­кой про­грамм на заказ. Основ­ны­ми кли­ен­та­ми явля­ют­ся круп­ные фир­мы, рабо­та­ю­щие в обла­сти инфор­ма­ци­он­ных тех­но­ло­гий. Свя­за­но это в первую оче­редь с тем, что дока­зы­вать разум­ность нашей цено­вой поли­ти­ки кли­ен­там из дру­гих отрас­лей крайне слож­но. Они искренне пола­га­ют, что любую про­грамм­ную систе­му мож­но сде­лать одно­му чело­ве­ку за месяц. Ситу­а­ция усу­губ­ля­ет­ся тем, что рынок полон деше­вых пред­ло­же­ний, свя­зан­ных либо с само­на­де­ян­но­стью вче­раш­них сту­ден­тов, либо, что еще хуже, с созна­тель­ным затя­ги­ва­ни­ем кли­ен­та с целью даль­ней­шей рас­крут­ки его уж на совсем боль­шие день­ги. Это напо­ми­на­ет «бес­плат­ные» лек­ции по народ­ной меди­цине, где вход фор­маль­но сво­бо­ден, а выход фак­ти­че­ски с пустым кошель­ком.

Фир­мы в отрас­ли инфор­ма­ци­он­ных тех­но­ло­гий гораз­до более адек­ват­но оце­ни­ва­ют и сто­и­мость работ, и их испол­ни­те­лей. Рынок наш неболь­шой, все фир­мы на виду, репу­та­ции извест­ны. Извест­ны, к сожа­ле­нию, толь­ко внут­ри отрас­ли. тем не менее, зака­зов хва­та­ет. До кри­зи­са дотко­мов «ДИС­Ко» рабо­та­ло в основ­ном на рын­ке США, но после него при­шлось пере­ори­ен­ти­ро­вать­ся на рос­сий­ский рынок. Одну вещь после это­го пере­хо­да при­шлось про­чув­ство­вать сра­зу. В Аме­ри­ке ни один мене­джер не ведет пере­го­во­ры вне рамок сво­ей ком­пе­тен­ции и, осо­бен­но, вне рамок сво­е­го бюд­же­та. В Рос­сии, осо­бен­но на пер­вых порах, мно­го раз при­хо­ди­лось, уже при­дя к согла­ше­нию по всем пара­мет­рам про­ек­та – тех­ни­че­ским тре­бо­ва­ни­ям, цене, сро­кам, – слы­шать заме­ча­тель­ную фра­зу: «А теперь я пой­ду согла­со­вы­вать это с началь­ством». Эффек­тив­ность пере­го­во­ров с тако­го рода мене­дже­ра­ми, мяг­ко гово­ря, неве­ли­ка. Отсю­да – наце­лен­ность «ДИС­Ко» рабо­тать с круп­ны­ми кам­па­ни­я­ми, про кото­рые ясно, кто есть кто.

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

Одна­ко с 2004 г. с BlueTooth ста­ло все в поряд­ке, а мобиль­ные устрой­ства ста­но­вят­ся все попу­ляр­нее и попу­ляр­нее. Хотя кар­ман­ные ком­пью­те­ры и схо­дят на нет, их с успе­хом заме­ня­ют (а может, и вытес­ня­ют) смарт­фо­ны, име­ю­щие все пре­ле­сти и кар­ман­ных ком­пью­те­ров, и мобиль­ных теле­фо­нов. Для лэп­то­пов и ноут­бу­ков сей­час тоже очень хоро­ший сезон. А впе­ре­ди мая­чат план­шет­ные ком­пью­те­ры и сете­вые и мно­гое дру­гое.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Они не пони­ма­ют, что, если заказ­чик меня­ет тре­бо­ва­ния к уже почти гото­вой систе­ме, это озна­ча­ет, что систе­ма ему нра­вит­ся. Если систе­ма ему не нра­вит­ся, он вздох­нет, запла­тит за нее и про нее забу­дет. Все моло­дые ребя­та, при­хо­дя­щие ко мне, обла­да­ют одним и тем же недо­стат­ком. Они устрем­ле­ны к тому, что­бы их часть про­грам­мы зара­бо­та­ла как мож­но быст­рее, думая, что это – успеш­ный конец рабо­ты. Никто до меня их не научил, что рабо­та­ю­щая про­грам­ма – это толь­ко нача­ло. Даль­ше в ходе ее исполь­зо­ва­ния будут воз­ни­кать все новые тре­бо­ва­ния, и про­грам­му при­дет­ся непре­рыв­но менять. Поэто­му изна­чаль­но в нее долж­на быть зало­же­на эла­стич­ность, без кото­рой вно­сить изме­не­ния в про­грам­му будет крайне слож­но.

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

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

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

Миха­ил Дон­ской

Если вы нашли ошиб­ку, пожа­луй­ста, выде­ли­те фраг­мент тек­ста и нажми­те Ctrl+Enter.

Связанные статьи

Оценить: 
Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (Пока оценок нет)
Загрузка...
 
 

Метки: , , , , , , , , , , , , , , , , , , , , , , , , , , ,

 

6 комментариев

  • Леонид:

    Вся­кая тех­но­ло­гия, не толь­ко ИТ, стре­мит­ся к три­ви­а­ли­за­ции: созда­нию таких спо­со­бов реше­ния наи­бо­лее типич­ных, задач, кото­рые поз­во­ли­ли бы пору­чать их менее ква­ли­фи­ци­ро­ван­но­му пер­со­на­лу, а луч­ше – авто­ма­ту.
    Это так­же поз­во­ля­ет истин­ным твор­цам тех­но­ло­гий перей­ти на более высо­кий кон­цеп­ту­аль­ный уро­вень. Мне не понят­ны огор­че­ния авто­ра по пово­ду того, что нынеш­ние HTML-про­грам­ми­сты (коих нуж­ны сот­ни тысяч) в мас­се сво­ей не зна­ют, что такое бит, машин­ный цикл, управ­ле­ние памя­тью. Думаю, и сам автор когда начи­нал свою рабо­ту с про­грам­ми­ро­ва­ния в машин­ных кодах вряд ли имел глу­бо­кие пред­став­ле­ния о физи­че­ских про­цес­сах в полу­про­вод­ни­ке, что не меша­ло ему писать отлич­ные (я уве­рен) про­грам­мы.
    Мне 67 лет, я про­грам­мист с 14-лет­не­го воз­рас­та, со вре­мён, когда тер­ми­нов «ком­пью­тер» и «ЭВМ» ещё не суще­ство­ва­ло и они назы­ва­лись «счёт­но-реша­ю­щи­ми маши­на­ми». Про­грам­ми­ро­вал с помо­щью штиф­тов на спе­ци­аль­ной дос­ке элек­тро-меха­ни­че­ские фак­тур­ные маши­ны, про­грам­ми­ро­вал табу­ля­то­ры с помо­щью элек­три­че­ских про­во­дов, потом лам­по­вый Урал-14, потом трёх-адрес­ная М-220 («доч­ка» М-20) с пуль­том, огром­ны­ми маг­нит­ны­ми бара­ба­на­ми и 3-кило­грам­мо­вы­ми метал­ли­че­ски­ми боби­на­ми с широ­кой тол­стой маг­нит­ной лен­той, потом потеш­ная Наи­ри-К, исполь­зо­вав­шая ноль вме­сто «о», «4» вме­сто «ч», и т.п., потом Минск-32 – тупи­ко­вая ветвь эво­лю­ции, потом М-4030 – пер­вая глуш­ков­ск­вая поро­дия на IBM-360, потом бес­ко­неч­ные ЕСки, пер­вые 8-бит­ные PCш­ки с ОС CP/​M, ну а потом пошло-поеха­ло: DOS, Windows, Unix, Linux. Язы­ки пере­чис­лять не ста­ну.
    Лео­нид Тан­ке­ле­вич, Изра­иль.

    • Израиль:

      Да глу­бо­ко­ува­жа­е­мый Лео­нид во мно­гом согла­сен с Вами. Дав­няя ста­тья без­вре­мен­но ушед­ше­го из жиз­ни гос­по­ди­на Дон­ско­го – один из луч­ших при­ме­ров поче­му Рос­сия была и с таким мыш­ле­ни­ем дол­го будет в хво­сте. C одной сто­ро­ны «Кибер­не­ти­ка про­даж­ная дев­ка импе­ри­а­лиз­ма» и «Рос­сия роди­на сло­нов» – ну с эти­ми гос­по­да­ми все понят­но. А с дру­гой сто­ро­ны дон­ские с их пол­ным пре­не­бре­же­ни­ем миро­вым опы­том и совре­мен­ны­ми мето­до­ло­ги­я­ми про­грам­ми­ро­ва­ния. Мож­но поду­мать «отста­лым» cтра­нам Сво­бод­но­го Мира нуж­но дого­нять «вели­кую» Русь с ее менее 1% миро­вой эко­но­ми­ки lol

  • Григорий:

    Одно непо­нят­но – вот Дийкс­т­ра, вот Бруд­но (Вот Пин­ки, вот и Брейн, блин)). Один изве­стен – дру­гой нет, Это вина нашей сто­ро­ны в том, что о Бруд­но зна­ет толь­ко круг посвя­щен­ных. Вот и про­бле­ма – наших дости­же­ний, счи­тай, нет. Язы­ки про­грам­ми­ро­ва­ния – на англ, архи­тек­ту­ра – тоже не наша. Ну и нафиг нам тогда быть про­грам­ми­ста­ми, толь­ко в каче­стве того эе сырье­во­го при­дат­ка для каких-нибудь Кну­тов, рабо­чих для бИЛ­ЛА гЕЙТ­СА И гЕЙ­БУШ­КИ. Не уме­ем отста­и­вать свои инте­ре­сы – а потом гор­до бьем себя в грудь – ну как же, мы же гово­ри­ли. Вот и линукс наши при­ду­ма­ли, и видео­кар­ту – а на деле – нет ниче­го, Импе­ра­тив­ное про­грам­ми­ро­ва­ние, дель­фи 7, блин. Не понят­но тогда, к чему это все юрод­ство. Уже дав­но пора при­знать, и осо­знать свое место.

    • Израиль:

      Да мно­го, мно­го врут зад­ним чис­лом про какой-то там «при­о­ри­тет» быв­ше­го ссср или там Рос­сии. Конеч­но имя Linus Torvalds ниче­го не гово­рит рас­про­стра­ни­те­лям спле­тен о том что Linux ваши при­ду­ма­ли lol

  • Andrew:

    Обыд­ле­ние про­фес­сии про­ис­хо­дит целе­на­прав­лен­но. Попыт­ки сде­лать про­грам­ми­стов из иди­о­тов при­ве­ли к тому что сре­ди «про­грам­ми­стов» про­сто обос­но­ва­лось пол­чи­ще иди­о­тов. А начал это зло­дей­ство сна­ча­ла Borland со сво­ей кон­цеп­ци­ей RAD или «про­грам­ми­ро­ва­ние мыш­кой», а затем в мас­сы пошли php, java, .net-ы… Никто не удив­ля­ет­ся поче­му-то, что совре­мен­ные мобиль­ни­ки живут день-дру­гой, а 90% соф­та под них – игры. Т.е. и плат­фор­му сде­ла­ли в уго­ду иди­о­там (что­бы не надо было учить «слож­ный» Си), и инфра­струк­ту­ру под­го­то­ви­ли под них же. Стыд, срам, печаль.

    • Израиль:

      А вы в сво­ем резю­ме так и пиши­те Java и .Net знать не знаю и знать не хочу. То-то мгно­вен­но на рабо­ту в любой стране сво­бод­но­го мира устро­и­тесь lol Не знаю уме­е­те ли вы счи­тать про­цен­ты (или у вас с ними так­же как с Java и .Net) но ска­жем на вскид­ку WeatherBug, What’s Up, Skype, Flipboard, мно­го­чис­лен­ные Сalendars, File Managers, e-mails, maps, GPS applications, galleries ведь совсем не игры. Как вы 90% то насчи­та­ли lol Если гово­рить о С то ни язык ни его авто­ры Brian Kernighan and Dennis Ritchie не разу ни рус­ские и не има­ют ника­ко­го отно­ше­ния ни к быв­ше­му ссср ни к вашей стране. Кста­те быв­ший ссср ни одно­го мобиль­ни­ка (!) не выпу­стил от сло­ва вооб­ще не гоы­о­ря уже о соф­те к нему.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Недопустимы спам, оскорбления. Желательно подписываться реальным именем. Аватары - через gravatar.com