Self Promo
January 2014 8

На что способен школьник 10-11 класса и о будущем IT-сообщества в нашей стране

Приветствую уважаемое IT-сообщество Хабра!

Потратьте 30 секунд вашего времени и вдумайтесь в названия этих проектов:
  • Технология Contract Shared Memory в ОС Microsoft Singularity
  • Back-In-Time Debugger: отладчик под Linux с возможностью восстановления предыдущего состояния отлаживаемой программы
  • Модификация Dalvik VM для бета-тестирования Android-приложений с возможностью воспроизведения пользовательских действий



Все это — научные проекты российских школьников 10-11 класса.
Сходу в это непросто поверить, но это так.
В этом посте я хочу рассказать:
  • откуда в России появляются школьники с такими проектами и где на все такие проекты можно посмотреть;
  • как от всего этого, на мой взгляд, зависит будущее IT-сообщества в нашей стране;
  • что каждый участник этого сообщества может сделать, чтобы будущее это стало таким, которым мы хотим его видеть.


Об одном хорошем конкурсе научных проектов для школьников


Есть у нас в стране конкурсы, которые помогают талантливым школьникам раскрыть свой потенциал и поддерживают работу над подобными проектами.
Один из таких конкурсов уже упоминался на Хабре — это Балтийский научно-инженерный конкурс.
Мероприятие ежегодно собирает в Питере более 300 школьников со всей России и является отборочным этапом на международный конкурс молодых ученых Intel ISEF в США, на котором очень круто.
В данном посте речь пойдет именно о Балтийском конкурсе. Разумеется, сегодня в 10-11 классах школьник может участвовать в огромном количестве разнообразных олимпиад, конкурсов и соревнований. Чтобы понять, почему Балтийский конкурс достоин отдельного поста на Хабре, достаточно взглянуть на примеры проектов прошлых лет:


Пример проекта №1: Технология Contract Shared Memory в ОС Microsoft Singularity


В этом проекте школьник 10 класса...
  1. Взял Microsoft Singularity, экспериментальную ОС компании Microsoft
  2. Проанилизровал производительность системы для некоторых задач
  3. Предложил более эффективный способ работы с памятью
  4. Реализовал это, провел тесты, подвел итог
  5. Представил работу на Балтийском конкурсе, выиграл поездку в Америку.
  6. Представил Россию в Америке на международном конкурсе Intel ISEF, стал победителем (2 место).

Презентация проекта для конкурса в России:

Стенд проекта на международной выставке Intel ISEF:

(кликните, чтобы увеличить картинку)

Репортаж про школьника в новостях:




Пример проекта №2: Back-In-Time Debugger: отладчик под Linux с возможностью восстановления предыдущего состояния отлаживаемой программы


В этом проекте школьник 11 класса...
  1. Разрабатывая игрушку just4fun на C++, осознал все “прелести” отладки ПО. Особенно те моменты, когда причина возникновения ошибки находится где-то за 10000 строк до того места, где проблема реально появилась. (например, память “побилась” 3 минуты назад, а Segmentation Fault произошел только сейчас, когда попробовали обратится к побитой памяти)
  2. Придумал сделать отладчик с возможностью откатить программу до предыдущего состояния и таким образом научиться легко исправлять трудновоспроизводимые баги.
  3. Взял за основу исходники open source отладчика GDB. Собрал под Cygwin.
  4. В течение 6(!) месяцев безуспешно пытался реализовать затею из-под винды.
  5. Через 6 месяцев решил попробовать сделать это под Linux. В исполняемый код программы в памяти отлаживаемого процесса «на лету» вставлялись инструментации, включающие вызов системной функции клонирования процесса fork(). Клонирование процесса программы позволяло сохранять состояния программы и откатывать её назад.
  6. Сделал кастомизированную версию GDB с дополнительными функциями типа «restore program state», выложил код на SourceForge.
  7. Представил работу на Балтийском конкурсе, выиграл поездку в Америку.
  8. Представил Россию в Америке на международном конкурсе Intel ISEF, стал победителем (4 место).

Стенд проекта для конкурса в России:

(кликните, чтобы увеличить картинку)

Стенд проекта на международной выставке Intel ISEF:

(кликните, чтобы увеличить картинку)



Пример проекта №3: Модификация Dalvik VM для бета-тестирования Android-приложений с возможностью воспроизведения пользовательских действий


В этом проекте школьник 11 класса...
  1. Ради интереса начал разрабатывать мобильные приложения под Android
  2. В процессе разработки столкнулся с проблемой, что если у кого-то из друзей, играющихся с приложением, приложение внезапно падает, ситуацию иногда довольно трудно воспроизвести и никак при этом нельзя использовать отладчик.
  3. Вдохновился проектом соотечественника про Back-In-Time отладчик. Решил сделать нечто подобное для Android-приложений.
  4. Сделал модификацию Dalvik VM (виртуальная машина java, используемая в Android), в которой в байт-код тестируемого приложения автоматически вставляется код, записывающий системные события и действия пользователя.
  5. Разработал «плеер», который позволяет по созданному таким образом специальному лог-файлу «проиграть» заново жизнь приложения, которая получилась у бета-тестера. При этом, разумеется, есть возможность использовать отладчик.
  6. Представил работу на Балтийском конкурсе, выиграл поездку в Америку.
  7. Представил Россию в Америке на международном конкурсе Intel ISEF. Главную премию не выиграл, но получил хорошие призы.

Стенд проекта на международной выставке Intel ISEF:

(кликните, чтобы увеличить картинку)



Другие проекты


Приведенные выше 3 проекта выбраны лишь потому, что я знаком со школьниками, которые эти проекты делали. (кстати, «школьники», конечно, уже давно не школьники. Один «школьник» к моменту написания этого поста уже создал с нуля IT-компанию, разрабатывающую в Питере программный продукт, который превосходит все имеющиеся европейские аналоги и уже продается в СНГ и трех странах Европы). Ну и, понятно, были выбраны именно довольно серьезные Computer Science проекты, которые могли бы быть интересны Хабра-сообществу.
На Балтийском конкурсе представляются проекты не только в секции Computer Science и не только подобного уровня сложности. На конкурсе можно встретить как «приложение-тренажер английского языка для детей на flash» от 9-классника из села Барановичи, так и «универсальный распределенный взломщик паролей» от школьника 11 класса из Питера (Кстати, этот «школьник» уже тоже давно не школьник: по моему скромному мнению, является одним из самых крутых специалистов Питера по компьютерной безопасности и пишет вот такие полезнейшие статьи на Хабре).
Помимо Computer Science, в других секциях можно встретить массу сильных работ — вот, для примера, несколько названий с прошлого года:
Примеры других проектов:
  • Алгебра Йонеды одной из специальных бирядных алгебр
  • Новый тип слоистого двойного никель гидроксида для использования в гибридных суперконденсаторах
  • Когомологии p-групп ручного типа представлений
  • Изучение способов селекции Mytilus Edulis и Mytilus Trossulus мидий куликом-сорокой (Haemotopys Ostralegus) мидиями видов на территории Кандалакшского заповедника острова Ряжков
  • Синтез аналога стероидных гормонов, содержащего фтор в положении 2

Список работ победителей конкурса 2013 года можно посмотреть здесь.
Здесь можно посмотреть отличный отчет с конкурса 2010 года с примерами проектов и фотками.



Небольшая ложечка Пара бочек дегтя про финансирование конкурса, о которых просто не могу не сказать


Балтийский конкурс — всероссийский. Для школьников из провинции возможность выступить перед научным жюри и пообщаться с единомышленниками особенно актуальна, так как дома у этих ребят таких возможностей практически нет. Оплата проезда до Питера и проживания при этом для многих семей представляет существенную проблему.
По этой причине, подобные расходы организаторы конкурса решили взять на себя. (организатор конкурса — одна из математических школ Петербурга)
В любой нормальной стране, конечно же, подобные мероприятия должны спонсироваться государством.
Увы, в 2014 году Балтийский конкурс не получил финансовой поддержки от российских чиновников.
Вкратце, «алгоритм» примерно такой:
  1. Комитет по науке не занимается школьниками
  2. Комитет по образованию не занимается наукой
  3. Комитет по молодежной политике не занимается ни наукой, ни школьниками, их стезя — развлекательные мероприятия
  4. Губернатор перенаправляет письма снова в Комитет по науке
  5. goto 1

Вот есть условный Иван Иванов, ученик 10го класса из города Челябинска.
Пока все друзья Ивана играют в World Of Tanks или пьют пиво в подъезде, Иван увлекся программированием и хочет разработать модификацию Dalvik VM, чтобы отлаживать Android-приложения стало удобнее.
Иван хочет попасть в Питер на конкурс, чтобы результат его бессонных ночей оценили профессионалы IT-индустрии, но у его семьи нет лишних 10 000 рублей, чтобы обеспечить поездку.
На сегодняшний день, увы, наши чиновники не готовы помочь Ивану.



Специфика научных проектов, отличие от олимпиад по программированию


Крайне важно понимать принципиальное отличие Балтийского конкурса и ему подобных от всевозможных олимпиад по программированию.
На олимпиадах по программированию:
  • Дается задача, которая уже 100% решена до тебя «умными дядями»;
  • Задачу нужно решить за 10 минут, школьник должен соображать очень быстро, быстро «тушить пожары»;
  • Качество кода не имеет значения. Главное — отправить на проверку файл с задачей (ну, тот, который «task3NewNewNewFinallyWorks.cpp») и получить заветное «Accepted»;
  • Используются только базовые элементы языка: массивы, строки, пара стандартных алгоритмов.

На Балтийском конкурсе:
  • Дается задача с «открытым концом». Никто толком не знает, что получится в итоге и получится ли вообще;
  • Задачу невозможно решить за 10 минут. Задача сложная и, как правило, делается год;
  • Результат работы школьника — полнофункциональный программный продукт. Школьник вынужден учиться писать код проекта правильно, грамотно продумывать архитектуру;
  • Школьник «курит» 1000 манов, чтобы разобраться в сложных технологиях, причем в 90% случаев все это на английском.

Нет нет! Олимпиады — это тоже хорошо. Научный проект — это просто другое.
Почему это «другое» важно для нас? Об этом далее.



О будущем IT-сообщества в нашей стране


Я думаю у многих участников сообщества есть мечта о «светлом будущем», в котором страна, где мы родились и написали свой первый Hello World, — не «сырьевой придаток», а мировой лидер в инновационных разработках. Когда более 50% постов теккранча — не про конторы из Кремниевой Долины, а про наши стартапы.
Нет никаких сомнений в том, что главный компонент успеха для такого «светлого будущего» — это компании, в которых разрабатывается что-то новое и что-то сложное. В свою очередь, чтобы такие компании были, нужны люди, способные разрабатывать что-то новое и что-то сложное.
Конкурсы, такие как Балтийский — как раз про это!
Вот представьте себе двух студентов 1 курса. Один в 11м классе тренировался на сотнях олимпиадных задачек, а другой в это время делал один крупный проект на Балтийский конкурс.
Какого из двух студентов вы бы взяли на стажировку в экспериментальный инновационный проект в свою компанию?
Какой из двух студентов с большей вероятностью станет CTO в том самом «следующем Google» появления которого мы все так ждем?
Думаю, ответ очевиден.
Реальные софтверные проекты, меняющие окружающий мир — это, как правило, не олимпиадные задачки, где нужно за 10 минут в авральном режиме что-то закодить. В реальных проектах мы часами изучаем спецификации, продумываем сложную архитектуру, разбираемся в чужом коде и т.д.
Важно ли нашему IT-сообществу обратить внимание на конкурсы, в которых рождаются специалисты, умеющие хорошо создавать что-то новое и сложное?
По-моему, просто необходимо. Иначе в один прекрасный день мы проснемся и обнаружим, что все 50 кандидатов на вакансию для нашего супер-проекта-который-должен-изменить-мир способны лишь на что-то примитивное и одноходовое. А потом все дружно побежим сушить сухари писать вот такие посты на Хабре про «кадровый голод».
Если уважаемый участник IT-сообщества Хабра, читающий данный пост, согласится с этим утверждением — для него я просто оставлю здесь ссылку на краудфандинговую страницу проекта, на которой до 16 января можно поддержать один из таких конкурсов. (кстати, этот пост в хабе «Краудфандинг», что, по идее, позволяет такую ссылку поместить)



Все будет хорошо!


Закончить хочу на позитивной ноте.
1. Кто из Питера — 5 февраля 2014 в 16-00 приходите на Биржевую линию дом 6 посмотреть проекты школьников на Балтийском конкурсе. Поверьте, школьникам ОЧЕНЬ важно, чтобы ВЫ оценили их работу и дали фидбек.
2. Очень надеюсь, что написанное в моем посте найдет отклик у уважаемого Хабра-сообщества и вместе мы построим страну, в которой условный Иван из Челябинска станет основой того самого «светлого будущего», в котором нашу страну уважают как мирового лидера инновационных IT-разработок.
Это будет не так легко, но «дорогу осилит идущий».
Ну и вот еще напоследок мотивирующая фотка автора одного из проектов, о которых речь шла в начале поста:
(фотка сделана в США во время финала конкурса Intel ISEF)
+90
41.3k 93
Comments 52
Top of the day