среда, 1 сентября 2010 г.

Windows в Университете

Хочу продолжить тему про "i = i + 1".
После тех событий, путь мальчика был предопределен: участие в Школах юных программистов, регулярные подработки на ВЦ в Академгородке во время каникул, запоминание наизусть кодов игр для программируемых калькуляторов Б3-21 и Б3-34 и тому подобное. А когда школа закончилась, и пришло время поступать в ВУЗ, сомнений в выборе практически не было - профильным для подросшего юноши мог считаться в тот момент только факультет Прикладной математики Университета, кафедра Программирования и информатики. Тем более, что этот же факультет закончила когда-то и его учительница "информатики", да и сам Университет весьма высоко котировался среди ВУЗов страны (и сейчас, как ни странно, тоже котируется).

И вот, срок обучения в Университете подошел к концу. Настал год выпуска. Это был 1992 год.
Преддипломную практику студент (назовем теперь так бывшего "мальчика") проходил в одном из местных НИИ, в научной лаборатории. Диплом писал там же. Лаборатория занималась созданием математических моделей процесса зондирования атмосферы лазером. Ну, то есть, ученые светили лазером в небо, ловили фотоэлементами отраженный свет, и на основании полученного сигнала пытались делать выводы о состоянии и составе атмосферного воздуха на разных высотах. А та лаборатория строила математические модели этого процесса, которые должны были объяснять, почему сигнал получился именно такой именно в таких условиях, и предлагать наиболее оптимальные режимы зондирования.
Впрочем, физикой и математикой процессов зондирования студент занимался крайне мало. Руководство лаборатории поручило ему (как будущему программисту) совершенно новое дело - разработать оболочку-интерфейс, которая бы визуализировала в форме графиков результаты моделирования, и чтобы работала она в новейшей на тот момент операционной системе Windows. В конечном итоге, эта программа и стала дипломной работой. В распоряжение студента выдали компьютер PC AT с 286-м процессором, с 2 Мб памяти и винчестером на целых 40 Мб. На нем была установлена Windows 3.0, а в качестве среды программирования завлаб где-то раздобыл новейший и жутко редкий Turbo Pascal for Windows (непосредственный предшественник знаменитой Borland Delphi).

Интересность и трудность работы заключалась не столько в сложном кодировании, сколько в полном отсутствии информации об особенностях программирования под Windows. Не было Гугла с интернетом, не было ни в продаже, ни в библиотеке абсолютно никаких книг, учебников, справочников и пособий на эту тему, не было ни одного знакомого, кто бы мог хоть что-то подсказать. Единственным источником информации была только встроенная справка Pascal. Ну и еще, конечно, метод проб и ошибок - написал, запустил, не заработало, переписал иначе, снова запустил, опять не заработало, и так в бесконечном цикле.
Несколько недель студент с энтузиазмом пробивался через особенности программирования незнакомого интерфейса, учился вовремя получать и освобождать DeviceContext, создавать формы с необходимыми управляющими элементами в примитивном редакторе ресурсов, быстро находить в справке нужные функции API. Постепенно начали появляться вначале визуальные прототипы программы, а позже все более набирающие реальный функционал приложения, которые уже не стыдно было показать другим сотрудникам лаборатории. По мере доработки программы, отзывы становились все более положительными. Общий вывод был примерно такой, что подобная визуализация с использованием возможностей Windows, позволяет ускорить проверку математических моделей буквально в несколько раз, то, что раньше делали за неделю, теперь можно будет успевать за день-другой.

Вот и пришел студент с этой программой защищать диплом в свой родной Университет на самый профильный, напоминаю, для программиста факультет, самую профильную кафедру. Ну что может быть более подходящим для диплома на кафедре Программирования и информатики, чем программа под новую перспективную операционную систему, реализующая новые возможности графического интерфейса этой операционной системы, написанная с интенсивным задействованием нового API этой операционной системы? Да еще к тому же имеющая реальные одобрительные отзывы от ее реальных пользователей!
Удар был получен с самой неожиданной стороны, когда студент подошел к администратору университетского компьютерного класса договариваться о времени для демонстрации работы дипломного проекта.
- Программа под Windows?! - удивленно переспросил администратор, - в нашем компьютерном классе нет и никогда не будет Windows!
- То есть почему не будет? - опешил студент, - у нас же есть современные машины, большие винчестеры, можно на отдельный раздел хотя бы временно установить, много места не займет.
- Нет, этого бесполезного монстра, я никуда ставить не буду, мне своего времени жалко, да никто мне и не позволит действующий компьютер такой ерундой занимать!
- Но ведь у меня же вся суть диплома - показать программирование современного графического интерфейса, - возмутился студент, - это же надо именно показывать, может где-то в других классах у кого-нибудь Windows есть?
- Насколько я знаю, в НАШЕМ Университете НИКТО этой дурацкой оболочкой не пользуется и не собирается. Так что рисуй свои интерфейсы тушью на плакатах.

Студент конечно возмутился, пошел разбираться к завкафедрой. Тот добрыми глазами, но очень грустно посмотрел на юношу:
- Ты же очень талантливый мальчик, ты мог бы работать над серьезными проектами, - участливо заговорил он, - зачем ты связываешься с этой никому не нужной графической надстройкой над ДОС? Ты пойми, Windows это конечно красивые цветастые иконки, курсоры там всякие мигающие, да, но ведь это только игрушки, причем очень много ресурсов отнимающие, для реальной работы эту систему никто никогда использовать не будет...
- Вообще-то, - перебил студент, - Windows, это возможность запуска нескольких программ одновременно, это стандартизованный обмен данными между программами, это стандартизованное обращение к внешним устройствам через их драйверы, это, наконец, просто удобный для пользователя интерфейс, адекватно отображающий именно то, что пользователю нужно.
- Да, я знаю, ты старательный мальчик, ты, перед тем как писать диплом под Windows, внимательно читал ее рекламу, но ты пойми, на самом деле это именно бесполезная хоть красочная игрушка. Ты же кажется на третьем курсе пытался курсовую работу на Smalltalk делать? Вот бы и продолжил им заниматься, и полезно бы было, и графический интерфейс там есть, и перспективы на нашей кафедре серьезные.
- А вот почему-то заведующий моей лабораторией утверждает, что эта самая "бесполезная игрушка" за счет удобного интерфейса реально позволяет ему в разы сократить время на разработку и анализ модели, по сравнению с существующими пакетами под ДОС, - возразил студент, - а Smalltalk сейчас - чисто учебная система, которая никем в нашем городе для решения реальных задач не используется и никаких наработок под нее нет.
- Просто романтик твой завлаб, - вздохнул завкафедрой, - он еще тоже вероятно в игрушки не наигрался, картинки красочные ему ум застилают. Наиграется немножко, и поймет, что в реальной работе Windows только мешает, уж поверь мне. Эх! Теперь уж поздно говорить, до защиты считанные дни остались, ладно защищай этот свой чудо-интерфейс под Windows, рисуй на ватмане плакаты. Жаль только, что на бесполезные вещи ты свое время тратишь...

End в каждой порядочной истории должен быть Happy. Таким он будет и здесь.
Студент тогда защитил свой диплом на "отлично". На самом деле, он защитил даже два диплома. Чтобы доказать самому себе и преподавателям, что достоин быть выпускником кафедры программирования, он за оставшиеся дни подготовил к защите дополнительно "альтернативный диплом" - издательскую систему (текстовый редактор с подгружаемыми специальными модулями) для компьютеров БК-0010/БК-0011, написанную полностью на языке ассемблера PDP-11. И настоял на том, что защищать будет обе работы по очереди. Отказать не посмели.
А операционная система Windows даже и не заметила, что в одном очень солидном Университете на кафедре информатики ее посчитали бесполезной игрушкой. Она продолжила успешно развиваться, захватывала все большую долю рынка, и благополучно живет до сих пор.

P.S.
Да, я прекрасно помню известный справочник "Персональные ЭВМ в инженерной практике", авторы которого говорили о Windows ровно то же самое, что и преподаватели того студента: http://www.fdd5-25.net/gallery/detai...?image_id=1393
Ссылка эта за кучу прошедших годов разумеется протухла. Вот так и надейся на надёжность сетевых технологий! Пройдёт всего десяток лет, от того что пытался пояснить останется лишь прах! Обидно, до жути!!! Но у меня остался скан странички той книжки, вот он:

Но этот справочник был издан в 1989 году, а готовился к печати и того ранее. Его авторы видели Windows в лучшем случае версии 2, а скорее всего и вовсе версии 1 (а нет, там упоминается перекрытие окон, это уже минимум вторая версия, тем не менее, даже и Windows 2.0 уже была вполне съедобна для реальных разработчиков). Полностью с ними согласен, Windows 1.0 действительно была концептом, демонстрацией, игрушкой, мало пригодной к реальной работе.
Но повторять те же слова на кафедре Программирования и информатики в 1992 году в адрес Windows 3.0 - это уже на мой взгляд просто маразм.