Помните свою первую программу? Наверняка она была написана на каком-нибудь Pascal или Basic в школьные годы. А потом завертелось: новые языки, алгоритмы, фреймворки… и вот мы здесь.

Прямо сейчас в России очень много талантливых ребят идут по нашим стопам. К счастью, у нынешнего поколения есть и умные IDE, и высокоскоростной интернет, и огромное количество учебных материалов под рукой. В результате, ученики намного раньше начинают заниматься серьезными проектами. Например, школьник 11-го класса сделал систему распределенных вычислений на основе браузеров посетителей сайта:

Система распределенных вычислений на основе браузеров посетителей сайта
(об этом проекте я расскажу чуть подробнее под катом)

Это лишь один из множества школьных исследовательских проектов. Лучшие из них будут представлены в Питере 3-го февраля 2016 в 14:00 на Балтийском научно-инженерном конкурсе.
Приглашаю всех прийти, посмотреть и пообщаться с юными изобретателями. Ведь молодому программисту, который в первый раз в жизни что-то создал с нуля, ОЧЕНЬ важно услышать оценку своего труда от настоящих IT-специалистов.



Я обещал рассказать историю одного школьного проекта


Однажды петербургский школьник по имени Саша задумался о том, что большую часть времени за компом он проводит исключительно в браузере. При этом стоящий внутри компа core i7, по сути, 80% времени простаивает без дела. А ведь таких, как он — сотни миллионов людей… Саша задумался: «А нельзя ли как-то использовать мощь моего компьютера для чего-то полезного?» Вскоре он узнал про «добровольные вычисления» и BOINC.

Как и полагается инженеру, Саша отметил недостатки существующих на рынке систем добровольных распределенных вычислений:
  1. Конечному пользователю нужно устанавливать дополнительное ПО на свой комп, что очень замедляет и ограничивает рост GRID сети.
  2. А условному ученому, которому для решения задачи требуются существенные мощности, нельзя так просто взять и «добавить в свой код распределенные вычисления в облаке». Нужно подстраиваться под жесткие правила и, по сути, писать отдельную программу.


Саша решил сделать систему распределенных вычислений, в которой эти проблемы решены. С одной стороны — сделать удобную java-библиотеку для распределенных вычислений, которую можно было бы легко подключить к коду своего приложения, написав пару строк кода. С другой стороны — сделать скрипт для сайта, который при вставке на страницу превращает «бесполезных» пользователей, просматривающих фото кошечек, в «полезных» пользователей, которые без вреда для скорости работы браузера незаметно помогают своими core i7 диагностировать рак или предсказывать погоду. Для того, чтобы построить такую систему, школьник за год изучил десятки новых технологий: от серверной Java до компиляции C++ кода в javascript и особенностей работы javascript в браузере.

Результатом стала работающая система. Можно посмотреть код сервера на Tomcat, подключаемой Java-библиотеки и тестового приложения, подбирающего пароль по хешу md5 в облаке с помощью библиотеки. Не обошлось и без экспериментов: опыты показали, что уже 13 браузеров с javascript обгоняют одно нативное C++ приложение (а если у пользователей Chrome, то браузерные вычисления по скорости обгоняют C++ уже на пяти браузерах).

Саша успешно успешно представил проект на Балтийском научно-инженерном конкурсе в Питере, занял 1-е место и выиграл поездку в Штаты на Intel ISEF. Там как раз и был представлен стенд из начала статьи:
Система распределенных вычислений на основе браузеров посетителей сайта
(кликните, чтобы увеличить картинку)

После поездки в Штаты Саша поступил в ИТМО и буквально с первого курса присоединился к команде серверной разработки одного из известных питерских стартапов, где в свободное от учёбы время помогает строить «новый Google/Facebook/SpaceX».

Это отнюдь не единственный успешный проект. На Балтийском конкурсе каждый год представляют более 150 проектов на совершенно разные темы, например:
  • Использование Android-телефона в качестве HID-мышки
  • Экономичный 3D сканер стоимостью 3000 рублей
  • Аналог RSA-криптосистемы в квадратичных Евклидовых кольцах
  • Использование билинейных преобразований для реализации алгоритмов «варпинга» и «морфинга» в реальном времени
  • Back-In-Time Debugger: отладчик под Linux с возможностью восстановления предыдущего состояния отлаживаемой программы


Почему поддерживать исследовательские IT-проекты школьников так важно?


Во-первых, участие в исследовательском проекте существенно помогает школьнику еще до поступления в ВУЗ очень хорошо понять «кем я буду когда вырасту?» Минимизируются риски поступить не в тот ВУЗ и потратить кучу времени не на то.

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

В-третьих, любые новые знания усваиваются в молодости с большей эффективностью.

Можно спросить: а при чем тут исследовательские проекты? Есть же десятки других соревнований как для школьников, так и для студентов. Олимпиады по программированию мы выигрываем уже который год.

Важно понять ключевое отличие исследовательского проекта от олимпиады. В олимпиаде задача — как можно быстрее решить уже решенную до этого задачу. Исследовательский проект делается год и довольно часто решает задачу, которую до тебя никто еще не решал. Даже на таком базовом сравнении уже становится понятно, что исследовательский проект — это активность, которая гораздо более похожа на построение условного «next Google».

ОК, как я могу помочь?


1. Приходить лично на конкурсы для школьников и давать фидбек по IT-проектам


Повторю ровно то, с чего начал. Молодому программисту, который в первый раз в жизни с нуля что-то создал, ОЧЕНЬ важно услышать оценку своего труда от настоящих IT-специалистов. Ближайшая такая возможность предоставится в Питере 3-го февраля 2016 в 14:00 (регистрация).

2. Привлекать свои компании к участию в конкурсах для школьников


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

3. Раз в год инвестировать в поддержку конкурсов IT-проектов школьников


В Штатах крупнейший подобный конкурс Intel ISEF активнейшим образом спонсируется (сюрприз!) крупнейшими IT-компаниями.

У нас, к сожалению, пока не все так гладко. В 2014-м году, например, активность бизнес-спонсоров была довольно низкой, и конкурсу пришлось собирать средства через краудфандинг, чтобы мероприятие могло оставаться бесплатным для школьников. В этом году картина не сильно улучшилась: в связи с известным закрытием фонда «Династия», который поддерживал ранее Балтийский конкурс, конкурсу вновь требуется поддержка рядовых участников IT-сообщества, осознавших, в том числе, и свою ответственность за общее будущее. Правила хабра не позволяют мне оставить прямую ссылку на краудфандинговую кампанию, кто действительно хочет помочь финансово, тот найдёт.

P.S.
Когда рассказываю знакомым про всю эту тему, очень часто слышу печальнейший комментарий: “Все равно потом эти школьники уедут из страны. Все бесполезно...”.

Здесь нет никаких иллюзий: в современном мире талантливые специалисты нередко уезжают в те страны, в которых они могут максимально реализовать свой потенциал без лишних неоправданных рисков.

Однако я уверен, что лет через 10-15 в нашей стране многое изменится. Будет создана комфортная среда для создания и развития сотен «новых Google/Facebook/SpaceX». Когда это произойдет, я уверен, что даже те участники конкурса, которые решат уехать из России, в итоге вернутся сюда, чтобы строить такие глобальные лидирующие IT-компании.

Они обязательно вернутся, если будут помнить, как в свое время мы с вами поддержали их начинания на конкурсе. Поддержим?

Комментарии (24)


  1. Delphinum
    15.01.2016 15:46
    +5

    Во-первых, участие в исследовательском проекте существенно помогает школьнику еще до поступления в ВУЗ очень хорошо понять «кем я буду когда вырасту?» Минимизируются риск поступить не в тот ВУЗ и потратить кучу времени не на то

    Школьник ведь не внезапно решает взять, и написать систему «добровольных вычислений». Если он задумался об этом, то явно уже для себя решил в какую степь ему ступать. Другими словами, не представляю себе школьника, который стоя на перепутье между программированием и юриспруденцией решает — а давайте ка я выиграю в конкурсе и там уже решу )


    1. iPavel
      15.01.2016 17:13

      Разумеется выбор IT сферы происходит не внезапно :)
      Скорее молодой человек может стоять на перепутье между прорывными научными исследованиями и набиванием руки на типовых задачках Например, почему бы школьнику не податься во фриланс делать простенькие сайтики. Согласитесь, это совсем иное.

      По ссылке есть показательная картинка: www.taday.ru/text/2066036.html. Задача подобных конкурсов — дать толчок к таким прорывам.


  1. andrewnester
    15.01.2016 15:54
    +1

    Отличная инициатива!
    Единственное, что школьник Саша выбрал не совсем «положительную» задачу для вычислений — подбор паролей ;)


    1. iPavel
      15.01.2016 16:01

      Конкретно эта задача была нужна всего лишь для проведения опыта и сравнения эффективности, так что ничего предосудительного.


    1. icoz
      15.01.2016 23:29
      +2

      А вы чего ожидали? Чтобы он ещё и в биохимии разобрался, и написал софт по сворачиванию белков?
      ИМХО, чувак — крут.


      1. halyavin
        16.01.2016 11:12

        Сворачиватели белков это уже реализовали: folding.stanford.edu/nacl.


  1. Pozitronov
    15.01.2016 16:05
    +1

    Дошло бы это в итоге до школьников то все


    1. qrazydraqon
      15.01.2016 16:12
      +1

      Если вы про деньги — дойдет, до последней копейки. Люди, которые это все организуют, очень увлеченные.
      Если же вы про то, что до школьников «дойдет», что в науку и инженерное дело идти круто и интересно — то тем более дойдет, школьники умные.


  1. catnikita255
    15.01.2016 16:07
    -6

    Ого. Я тоже так-то школьник. Статья — супер.


  1. frol
    15.01.2016 17:08
    +2

    В Украине неплохо развиваются инициативы поддержки IT-бизнеса школьникам, студентам и даже преподавателям. Мне известно про три локальных IT-кластера:


    В частности, я косвенно помогаю в проекте Kids2IT в Харькове и Харьковской области.

    Чем больше умных людей — тем больше перспективы! (… и тем меньше шанс, что наш голубой шарик взорвут балбесы)


  1. Insty
    15.01.2016 18:29
    +2

    Хочу дать фидбэк по проекту. Идея мне понравилась. Действительно, должно быть удобно, особенно, если добавить сохранение состояния вычислений при закрытии. Но на практике чуда не будет. CPU «80% времени простаивает без дела» потребляя минимум энергии. И в счете за электрику сразу будет видно, если он перестанет простаивать.

    Энтузиастов желающих доплачивать за чьи-то рассчеты на самом деле не так уж много. А в индустрии и образовании (в частности, на западе) дешевле купить конкретное железо под конкретную задачу, чем заморачиваться с браузерами. Мне как-то довелось обсуждать собственные идеи распределенных вычислений со «взрослыми дядями», так вот они мне сказали, что это ерунда и если мне надо что-то посчитать — вот есть готовые сервера. Если серверов не хватает, можно собрать простую GPU-ферму за пару тысяч. А если и этого мало, тогда задача поставлена неправильно.


    1. icoz
      15.01.2016 23:31

      Есть задачи, где априори такой фермы маловато будет.


  1. Daffodil
    15.01.2016 19:21

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

    В какой школе учился Саша? Думаю тут важнее школьная среда или правильные родители, чем наличие какого-то конкурса. А заинтересовать участием в практической деятельности должен хороший преподаватель ( мы на уроках информатики играли в starcraft).


    1. iPavel
      15.01.2016 19:58
      +1

      Меня лично пробудило заняться программированием желание самому делать игрушки, когда я играл в тот же starcraft и warcraft. Взял и пошёл в дворец творчества юных, а там понеслось…

      Безусловно, правильная школа и родители играют свою роль. Однако представим ученика и вот он загорелся какой-то идеей, дальше возможно два варианта:
      1. Есть такой конкурс, куда можно представить работу, над которой надо потрудиться и круто разобраться во всём. В качестве бонуса ещё призы, грамоты, связи и поездки на более глобальные этапы.
      2. Нет такого конкурса, можно полениться, решить «айданунафиг» и пойти играть в доту.
      Саша, кстати, учился здесь: lnmo.ru


    1. Delphinum
      15.01.2016 20:39
      +1

      А заинтересовать участием в практической деятельности должен хороший преподаватель

      У каждого свои мотиваторы (в лучшем случае) и потрености (в худшем).


    1. catnikita255
      16.01.2016 11:13

      Я хотел делать программы. Хоть я и не Саша


    1. Lorian_Grace
      16.01.2016 19:22

      Мотивация бывает разная. Кому-то семья, кому-то школа, кто-то сам доходит. Но затем хочется применить куда-то то, что ты можешь сделать. И тут разные варианты могут помочь найти точку приложения, которая нравится. ИМХО, естественно.


    1. Supme
      17.01.2016 17:08

      Я начал писать, когда тех игр, которые шли в комплекте с Микрошей стало не хватать. А новые надо заказывать отправив чистые кассеты «по объявлению», которые обратно не вернулись.
      Ну а потом интересные статьи в журналах, типа ZX Review


  1. BalinTomsk
    15.01.2016 22:30

    — А если и этого мало, тогда задача поставлена неправильно.

    Моделировал я в одной компании утечки вредных вешеств для нефтянников Катара. Расчет куба 400х400х10 км с шагом 10 см идет несколько месяцев для одного газа.


    1. dShell
      16.01.2016 01:52

      > куба
      Параллелепипед.


      1. Meklon
        16.01.2016 11:58
        +1

        У него просто короткий куб.


  1. icoz
    16.01.2016 00:12

    А в Москве чего такое есть? Я бы сходил посмотреть…


  1. Geograph
    16.01.2016 08:00
    +1

    Идея парня не нова, некоторые нехорошие личности уже использовали браузеры пользователей для генерации биткоинов на javascript


  1. dcc0
    16.01.2016 22:44
    +1

    Нельзя ли данную технологию приспособить для отвода — «рассеивания» dos-атаки?