Главная страница «Первого сентября»Главная страница журнала «Информатика»Содержание №8/2009


Мнения

Почему мы стали заниматься автоматным программированием

Аналитический подход к выбору научных руководителей и тематике проектных работ. Краткое руководство по секретной технологии для начинающих :)

Пусть некие талантливые и целеустремленные личности А, В и С решили стать крутыми специалистами в программировании и всю жизнь потом заниматься интересными и высокооплачиваемыми (что немаловажно) вещами.

Пусть также все они были талантливы и целеустремленны, и никто не мешал им работать, и они сами себе не мешали (что также немаловажно).

А, прочтя книжку M, увлекся некоей очень крутой темой Т и с головой погрузился в нее, отмахиваясь от советчиков и других книжек, не равных М.

В решил написать Великую программу Р, скажем Игру, и просидел кучу времени в форумах, задавая нубские вопросы*, получая обидные ответы и собирая крохи информации, а также другую кучу — перед компилятором, пытаясь осмыслить очередное сообщение об ошибке.

С нашел среди знакомых академика Ak и уговорил его заниматься с ним, и, поскольку С был умен и работоспособен, тот согласился. Однако времени у Ak было немного, да и образования у С не хватало пока, чтобы вникнуть всерьез в тему. Поэтому Ak посоветовал ему пока ознакомиться с литературой, а там видно будет.

Через некоторое время А стал специалистом по Т. Писал много, но в основном из того, что уже и так написано, и это мало кого интересовало. Это было слегка обидно для А.

B что-то (обозначим это o (Р)) как-то написал, но стоило это o (Р) запустить другому человеку, оно постоянно глючило и падало — что неудивительно, так как В был почти единственным пользователем своей o (Р).

C же не сделал ничего, не одолев и половины стопки нужных книг и забив на это дело.

Почему же у этих талантливых и целеустремленных личностей вышло так не здорово? И почему эти случаи так типичны? Ответ прост — они работали одни. В вакууме.

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

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

А она проста: они выбирали не то, с чем работать, а тех, с кем работать.

Помню, будучи студентом, сам был удивлен одному из неформальных советов собирающимся заниматься научной работой: “выбирай не тему, выбирай руководителя”. Ну, как же, а научный интерес? Это же круче! И лишь через некоторое время понял — для пользы этой же самой темы и этого же самого интереса гораздо важнее, когда тобой занимаются и учат, как минимум уделяют тебе время и вникают в твою работу, терпеливо редактируют и вовремя советуют. Конечно, можно научиться всему самому. Собственно, так чаще всего и приходится делать J. Но есть разница — самому и одному. Беда в том, что на это уйдут месяцы, а иногда и годы, технология же неизбежно шагнет за это время вперед. Сейчас в течение двух–пяти лет все вообще радикально меняется. Да и смешно писать софт, который не будут использовать и обсуждать другие, — ну, разве что в учебных целях и для себя. Работать над тем, что лишь поверхностно смотрит руководитель и что не тестируют пользователи, потому что их нет. Такое получается самоедство.

Так что ценен тот руководитель и тот консультант, который студентами (и школьниками) действительно занимается. Теперь — в каких темах таких людей искать. В большинстве случаев предметная область старинна и обширна, и в ней уже многое сделано. Вряд ли кого заинтересует разработка еще одного графического движка для IBM PC под Windows на устаревшем DirectX 9 (да еще силами не опытных специалистов, а школьников) или написание еще одного компилятора, или операционной системы. Все это хорошо в виде моделей, но в реальной жизни, как говорят, “не катит”. Поэтому часто происходит игра в разработку (или игра в науку), результат которой в лучшем случае — расширение опыта участников. Причем неполного, так как нет серьезной стадии эксплуатации (или научной проверки) таких вот полученных “сферических коней в вакууме”.

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

Поэтому когда я узнал о том, что в Санкт-Петербургском вузе (СПбГУ ИТМО) есть факультет, кафедры и люди, занимающиеся некоей современной тематикой (автоматным программированием), доступной для понимания сильными школьниками, и не гнушающиеся с этими школьниками всерьез и напрямую работать, — то, как говорят, “сделал стойку”. Почему я сказал “некоей” — потому что не тема красит научный коллектив, а коллектив — тему, и да простит меня Анатолий Абрамович Шалыто за такие слова, если бы он и его коллектив занимались чем-то другим, я все равно бы сделал эту “стойку”, выбирая не тему — выбирая людей.

Потому что насмотрелся на игры в науку и игры в разработку.

Потому что далеко не везде относятся серьезно к серьезным работам школьников.

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

Конечно, каких-то студентов и школьников именно это и устроит. Но мы же не о них.

Что же в автоматной тематике для тех, кто хочет работать? По-моему — поле непаханое, что прекрасно. Вот, есть ниша для транслятора автоматных описаний, фактически главного инструментального средства. Где еще есть такое? В промышленных языках все основные средства уже написаны. Есть тематика по верификации моделей. Есть тематика по автоматической их генерации с модными словами “генетическое программирование” (модность слов для школьников немаловажна J). Есть тематика по внедрению автоматных моделей. Есть поле деятельности по модным нынче многоагентным системам. Может быть, запас тем когда-либо и исчерпается, но пока мне так не кажется.

И это здорово.


* Нубские вопросы — вопросы начинающих к опытным игрокам.

И.. А.. Дединский

TopList