На что способен школьник 10-11 класса и о будущем IT-сообщества в нашей стране
Об одном хорошем конкурсе научных проектов для школьников
Есть у нас в стране конкурсы, которые помогают талантливым школьникам раскрыть свой потенциал и поддерживают работу над подобными проектами. Один из таких конкурсов уже упоминался на Хабре — это Балтийский научно-инженерный конкурс. Мероприятие ежегодно собирает в Питере более 300 школьников со всей России и является отборочным этапом на международный конкурс молодых ученых Intel ISEF в США, на котором очень круто. В данном посте речь пойдет именно о Балтийском конкурсе. Разумеется, сегодня в 10-11 классах школьник может участвовать в огромном количестве разнообразных олимпиад, конкурсов и соревнований. Чтобы понять, почему Балтийский конкурс достоин отдельного поста на Хабре, достаточно взглянуть на примеры проектов прошлых лет:
Пример проекта №1: Технология Contract Shared Memory в ОС Microsoft Singularity
- Взял Microsoft Singularity, экспериментальную ОС компании Microsoft
- Проанилизровал производительность системы для некоторых задач
- Предложил более эффективный способ работы с памятью
- Реализовал это, провел тесты, подвел итог
- Представил работу на Балтийском конкурсе, выиграл поездку в Америку.
- Представил Россию в Америке на международном конкурсе Intel ISEF, стал победителем (2 место).
Стенд проекта на международной выставке Intel ISEF: (кликните, чтобы увеличить картинку)
Репортаж про школьника в новостях:
Пример проекта №2: Back-In-Time Debugger: отладчик под Linux с возможностью восстановления предыдущего состояния отлаживаемой программы
- Разрабатывая игрушку just4fun на C++, осознал все “прелести” отладки ПО. Особенно те моменты, когда причина возникновения ошибки находится где-то за 10000 строк до того места, где проблема реально появилась. (например, память “побилась” 3 минуты назад, а Segmentation Fault произошел только сейчас, когда попробовали обратится к побитой памяти)
- Придумал сделать отладчик с возможностью откатить программу до предыдущего состояния и таким образом научиться легко исправлять трудновоспроизводимые баги.
- Взял за основу исходники open source отладчика GDB. Собрал под Cygwin.
- В течение 6(!) месяцев безуспешно пытался реализовать затею из-под винды.
- Через 6 месяцев решил попробовать сделать это под Linux. В исполняемый код программы в памяти отлаживаемого процесса «на лету» вставлялись инструментации, включающие вызов системной функции клонирования процесса fork(). Клонирование процесса программы позволяло сохранять состояния программы и откатывать её назад.
- Сделал кастомизированную версию GDB с дополнительными функциями типа «restore program state», выложил код на SourceForge.
- Представил работу на Балтийском конкурсе, выиграл поездку в Америку.
- Представил Россию в Америке на международном конкурсе Intel ISEF, стал победителем (4 место).
Стенд проекта на международной выставке Intel ISEF: (кликните, чтобы увеличить картинку)
Пример проекта №3: Модификация Dalvik VM для бета-тестирования Android-приложений с возможностью воспроизведения пользовательских действий
- Ради интереса начал разрабатывать мобильные приложения под Android
- В процессе разработки столкнулся с проблемой, что если у кого-то из друзей, играющихся с приложением, приложение внезапно падает, ситуацию иногда довольно трудно воспроизвести и никак при этом нельзя использовать отладчик.
- Вдохновился проектом соотечественника про Back-In-Time отладчик. Решил сделать нечто подобное для Android-приложений.
- Сделал модификацию Dalvik VM (виртуальная машина java, используемая в Android), в которой в байт-код тестируемого приложения автоматически вставляется код, записывающий системные события и действия пользователя.
- Разработал «плеер», который позволяет по созданному таким образом специальному лог-файлу «проиграть» заново жизнь приложения, которая получилась у бета-тестера. При этом, разумеется, есть возможность использовать отладчик.
- Представил работу на Балтийском конкурсе, выиграл поездку в Америку.
- Представил Россию в Америке на международном конкурсе Intel ISEF. Главную премию не выиграл, но получил хорошие призы.
Другие проекты
- Алгебра Йонеды одной из специальных бирядных алгебр
- Новый тип слоистого двойного никель гидроксида для использования в гибридных суперконденсаторах
- Когомологии p-групп ручного типа представлений
- Изучение способов селекции Mytilus Edulis и Mytilus Trossulus мидий куликом-сорокой (Haemotopys Ostralegus) мидиями видов на территории Кандалакшского заповедника острова Ряжков
- Синтез аналога стероидных гормонов, содержащего фтор в положении 2
Небольшая ложечка Пара бочек дегтя про финансирование конкурса, о которых просто не могу не сказать
- Комитет по науке не занимается школьниками
- Комитет по образованию не занимается наукой
- Комитет по молодежной политике не занимается ни наукой, ни школьниками, их стезя — развлекательные мероприятия
- Губернатор перенаправляет письма снова в Комитет по науке
- goto 1
Специфика научных проектов, отличие от олимпиад по программированию
- Дается задача, которая уже 100% решена до тебя «умными дядями»;
- Задачу нужно решить за 10 минут, школьник должен соображать очень быстро, быстро «тушить пожары»;
- Качество кода не имеет значения. Главное — отправить на проверку файл с задачей (ну, тот, который «task3NewNewNewFinallyWorks.cpp») и получить заветное «Accepted»;
- Используются только базовые элементы языка: массивы, строки, пара стандартных алгоритмов.
- Дается задача с «открытым концом». Никто толком не знает, что получится в итоге и получится ли вообще;
- Задачу невозможно решить за 10 минут. Задача сложная и, как правило, делается год;
- Результат работы школьника — полнофункциональный программный продукт. Школьник вынужден учиться писать код проекта правильно, грамотно продумывать архитектуру;
- Школьник «курит» 1000 манов, чтобы разобраться в сложных технологиях, причем в 90% случаев все это на английском.
О будущем IT-сообщества в нашей стране
Я думаю у многих участников сообщества есть мечта о «светлом будущем», в котором страна, где мы родились и написали свой первый Hello World, — не «сырьевой придаток», а мировой лидер в инновационных разработках. Когда более 50% постов теккранча — не про конторы из Кремниевой Долины, а про наши стартапы. Нет никаких сомнений в том, что главный компонент успеха для такого «светлого будущего» — это компании, в которых разрабатывается что-то новое и что-то сложное. В свою очередь, чтобы такие компании были, нужны люди, способные разрабатывать что-то новое и что-то сложное. Конкурсы, такие как Балтийский — как раз про это! Вот представьте себе двух студентов 1 курса. Один в 11м классе тренировался на сотнях олимпиадных задачек, а другой в это время делал один крупный проект на Балтийский конкурс. Какого из двух студентов вы бы взяли на стажировку в экспериментальный инновационный проект в свою компанию? Какой из двух студентов с большей вероятностью станет CTO в том самом «следующем Google» появления которого мы все так ждем? Думаю, ответ очевиден. Реальные софтверные проекты, меняющие окружающий мир — это, как правило, не олимпиадные задачки, где нужно за 10 минут в авральном режиме что-то закодить. В реальных проектах мы часами изучаем спецификации, продумываем сложную архитектуру, разбираемся в чужом коде и т.д. Важно ли нашему IT-сообществу обратить внимание на конкурсы, в которых рождаются специалисты, умеющие хорошо создавать что-то новое и сложное? По-моему, просто необходимо. Иначе в один прекрасный день мы проснемся и обнаружим, что все 50 кандидатов на вакансию для нашего супер-проекта-который-должен-изменить-мир способны лишь на что-то примитивное и одноходовое. А потом все дружно побежим сушить сухари писать вот такие посты на Хабре про «кадровый голод». Если уважаемый участник IT-сообщества Хабра, читающий данный пост, согласится с этим утверждением — для него я просто оставлю здесь ссылку на краудфандинговую страницу проекта, на которой до 16 января можно поддержать один из таких конкурсов. (кстати, этот пост в хабе «Краудфандинг», что, по идее, позволяет такую ссылку поместить)