Войти в почту

Язык мирового значения

На каком языке разговаривать с будущим? Программисты из Санкт-Петербурга предложили свой вариант. "Огонек" присмотрелся к опыту, который получил мировое признание Елена Кудрявцева Сообщение о том, что язык программирования Kotlin, разработанный российскими программистами из Санкт-Петербурга, стал одним из официальных языков американского Google, зал в Маунтин-Вью (Калифорния), собравший видных разработчиков в мае этого года, встретил овацией. Появление нового языка на столь высоком уровне -- знаковое событие для IT-мира. А тот факт, что на этом поприще отличились именно наши соотечественники, особо приятен: в последний раз нечто подобное имело место в 1966-м. Именно тогда, полвека назад, появился созданный кибернетиком Валентином Турчиным язык РЕкурсивных Функций Алгоритмический, он же -- Рефал (название до сих пор часто пишется по-русски, как и в случае с другими языками, созданными в советское время). Это один из старейших языков программирования, который со временем получил мировую известность. Его до сих пор иногда используют для решения специфических задач в науке, например, различные лаборатории ядерной физики в Обнинске, военные и математические центры, но в основном все же в России. Kotlin (или Котлин -- по имени острова, где расположен Кронштадт), особенно после признания таким гигантом, как Google, известен значительно шире. Если раньше при соответствующем запросе в поисковой строке на слово "Котлин" выпадало "небольшой остров в Финском заливе Балтийского моря" или, в крайней случае, информация об одноименном польском кетчупе "Котлин", то теперь на первом месте -- российский программный продукт. Сейчас им пользуются сотни тысяч человек по всему миру, включая программистов из КНР, США, России, Германии, Индии, Японии, Великобритании и даже экзотического Тринидада и Тобаго. -- Мы изначально ставили перед собой задачу создать универсальный язык программирования, который будет удобен для применения в самых разных сферах,-- говорит "Огоньку" руководитель проекта Kotlin компании JetBrains, один из создателей языка Андрей Бреслав.-- Это могут быть и разработки для мобильных телефонов, сервисные и клиентские приложения. К тому же в нем есть много средств для взаимодействия с другими языками, он полностью совместим с Java -- одним из самых популярных на сегодняшний день языков программирования. Мы изначально хотели сделать не исследовательский проект, а прикладной инструмент для работы, чтобы облегчить жизнь программистам. Умножение сущностей Надо признать, что у программистов по этой части проблем и в самом деле хватает. Сегодня в ходу около 2 тысяч языков программирования, но в мейнстриме из них только пять или шесть. -- Конечно, для разных задач следует выбирать разные языки программирования,-- объясняет директор центра студенческих олимпиад факультета компьютерных наук НИУ ВШЭ Михаил Густокашин.-- Например, для военной промышленности лучше всего писать на старом добром Pascal -- языке, который родился еще в 1970 году. Почему? Да просто потому, что он надежней... Приложения для бизнеса можно писать на Java -- этот язык тоже достаточно надежен, но гораздо более прост в использовании. По словам эксперта, вместе с тем в программировании существует масса задач, которые такого набора дифференцированных инструментов не требуют -- речь о мобильных приложениях и всевозможных интернет-приложениях. Но здесь все тоже непросто. -- Сегодня специалистам во всем мире очевидно, что в программировании "что-то пошло не так",-- рассказал "Огоньку" преподаватель кафедры компьютерных технологий Университета информационных технологий, механики и оптики (ИТМО) Роман Елизаров.-- Лет двадцать назад можно было на одном языке Pascal решить практически любую задачу, не относящуюся к узким направлениям деятельности. Но с тех пор рынок очень сегментировался. Если я хочу создать в современном мире универсальный продукт, который будет доступен и на мобильном телефоне, и в различных приложениях, мне нужно писать одно и то же на разных языках программирования. Это тяжело даже для больших компаний, потому что приходится содержать несколько команд. Сегодня обычная ситуация, когда рядом сидит группа людей, которая пишет приложения под Android и тут же другие люди пишут то же самое под Apple. Налицо чудовищная неэффективность, которую пытаются исправить во всем мире. Каким же чудом именно россияне оказались успешнее других в решении этой задачи? Ученые из Санкт-Петербурга отвечают на этот вопрос с вызовом: они убеждены, что в России можно развивать наукоемкий бизнес мирового уровня, даже несмотря на отсутствие госфинансирования, связей науки с предприятиями и постоянную утечку умов. Все, что нужно,-- мотивированный частный капитал и желание всерьез вложиться в систему образования, как это сделала, к примеру, та же JetBrains, вложившая за последние пять лет 6 млн долларов в систему подготовки IT-кадров в России. Код прибыли Так и тянет сказать, что российские программисты -- самые талантливые в мире. Но это не так: талантливые специалисты в IT-области в разных странах появляются на свет примерно с одинаковой частотой. Другое дело, что чем больше плотность населения, тем, по определению, таких талантов больше. Поэтому, если сегодня пройтись по коридорам компаний и научных центров в американской Кремниевой долине, то там будет больше китайцев или индийцев, приехавших из мекки компьютерного мира -- технопарка в Бангалоре. (Правда, в последние несколько лет Китай все больше делает акцент на качество образования студентов, а индийцы ставят по-прежнему на количество). Впрочем, и русских в Кремниевой долине тоже много, до сих пор считается, что у россиян хорошая научная база. Не секрет, что программирование уже несколько лет в топе самых престижных и высокооплачиваемых профессий. Даже в России, несмотря на кризис, средний ценник высококлассных специалистов в районе отметки 300 тысяч рублей в месяц и выше. -- Вообще, все, что касается денег в программировании, "устроено" сегодня довольно странно,-- рассказал "Огоньку" старший вице-президент по инвестициям, исследованиям и образовательным проектам в компании JetBrains Андрей Иванов.-- Большие суммы крутятся вокруг стартапов. Выглядит это так: программисту приходит в голову гениальная идея, он выходит с нею на рынок, находит инвестора, который дает, предположим, 10 млн долларов и говорит: развивай свою идею. Теоретически это не ваши деньги, но вы их можете потратить именно на развитие бизнеса. Если вы успешный программист, то в какой-то момент ваш стартап вдруг покупают и вы в одночасье становитесь долларовым миллионером. При этом понять, почему выстрелил именно тот, а не другой проект, иногда достаточно сложно. Из таких неожиданных взлетов последнего времени специалисты называют -- Instagram. По сути, это довольно банальный инструмент для хранения и выкладывания фото, который Facebook купил за огромные деньги. Почему? Это загадка, ведь ничего особенно сложного в этой программе нет. Или Uber -- успешнейший бизнес, который вообще не про программирование. Изначально это была программа, которая распознавала, где вы находитесь, и вызывала такси по биолокации. -- Если же говорить о наемных работниках,-- продолжает Андрей Иванов,-- то хорошие деньги получают аналитики, которые занимаются машинным обучением и работой с большими данными. Количество информации в современном мире столь велико, что упорядочить его и извлечь какую-то выгоду можно только с помощью совершенных компьютерных программ. Среди создателей самых известных и популярных бизнесов тоже полно программистов. Вот только некоторые: создатель самого большого IT-проекта XX века -- сети "Интернет" Тим Бернерс-Ли; один из создателей компании Microsoft Билл Гейтс; создатель языка программирования C (Си) и ключевой разработчик операционной системы UNIX Деннис Ритчи; создатель ядра операционной системы GNU/Linux Линус Торвальдс; разработчик и сооснователь поисковой системы Google Сергей Брин... Покажите язык И тем не менее среди всех компьютерных наук создание новых языков программирования остается элитной областью. В том смысле, что никто просто так ею заниматься не будет: это слишком затратно, а уверенности, что на выходе получится хоть что-то стоящее, никакой. Популярные языки создают, как правило, либо очень талантливые энтузиасты, как, например, гениальный швейцарец, специалист по информационным технологиям Никлаус Вирт, написавший в одиночку популярнейший язык Pascal. Либо очень крупные компании, наподобие Microsoft, у которых есть свои платформы для разработок и большое количество денег. В России пошли по другому пути, собрав "поштучно" команду молодых профессионалов, которые восприняли Kotlin как дело своей жизни -- каждый программист на самом деле мечтает создать свой язык. Андрей Бреслав до прихода в компанию в 2010-м стажировался в Microsoft Research и выбирал между карьерой в США и в России. Программист Михаил Глухих вернулся в Питер после работы в Германии, Денис Жарков -- из Томска, кто-то переехал из Екатеринбурга, некоторые специалисты -- из Москвы. В итоге сегодня над языком работает команда примерно из 40 человек, среди которых больше всего профессиональных программистов и математиков, но программируют здесь и физики, и менеджеры по продажам, и даже психолог по основному образованию. -- На самом деле ценность математического образования для программиста в целом сильно преувеличивают,-- говорит Андрей Иванов из JetBrains.-- Высшая математика в вузе оперирует серьезными сложными абстракциями, которые в программировании применимы в 2 процентах случаев. Программирование -- вещь вполне конкретная. И вот этой конкретики в нашем высшем образовании в сфере информационных технологий еще совсем недавно не было. В России преподавали то, что в жизни никак не могло пригодиться. Мы попробовали переломить эту ситуацию, сложившуюся еще в советское время. По советскому счету В СССР с преподаванием информатики все складывалось очень причудливо. Как известно, советские компьютерные технологии развивались за тяжелым железным занавесом, поэтому многое приходилось создавать в отрыве от мировой научной мысли -- практически заново. Сильно затормозила и борьба с кибернетикой, которую в 1950-е годы признали реакционной буржуазной теорией. В итоге в СССР продолжала семимильными шагами развиваться вычислительная техника, необходимая в первую очередь для оборонки, а все, что связано с внедрением компьютерной обработки информации в разные сферы жизни, застыло на уровне все тех же 1950-х. Компьютеров в Союзе всегда было катастрофически мало. В книге "Понедельник начинается в субботу" главный герой на просьбу выполнить некую задачу отвечает: "Это стоит два часа машинного времени". Машинное время, то есть доступ к компьютеру, было валютой, которой на всех не хватало. В крупном институте на 500 человек мог стоять всего один компьютер. Уже в 1970-е знаменитый основатель сибирской школы информатики академик Андрей Ершов сравнил уровень преподавания компьютерных наук в советских и американских школах и сделал удручающий вывод: мы отстали, увы, безнадежно. -- Тем не менее вплоть до 1980-х бытовала чья-то фраза, что "отсутствие компьютеров не снижает ценности занятий информатикой в школе",-- рассказывает Андрей Иванов.-- Поэтому учителя информатики проверяли домашнее задание у учеников, как учитель литературы проверял сочинения -- по бумажке. Именно в таком варианте дети знакомились с языками программирования -- Fortran и Algol. Обязательным предметом в советских школах информатика стала лишь с 1 сентября 1985 года. Тогда в школы пришли преподавать инженеры и программисты профильных НИИ. В это время из-за рубежа уже стала просачиваться информация, и наши программисты смогли развивать не только свои идеи, но и сверяться с тем, что происходило на Западе. А потом пришли 1990-е. По оценке директора Института системного программирования РАН Арутюна Аветисяна, с 1994 по 2000 год в США, Западную Европу, Израиль и даже в Новую Зеландию уехало около 80 процентов (!) и без того немногочисленных отечественных IT-специалистов. "Когда мы были не так давно в израильской "кремниевой долине", ее руководители не скрывали, что одним из пяти факторов, определивших бурное развитие программирования в Израиле, была именно эмиграция классных программистов из СССР и России в 1990-е годы",-- говорит Арутюн Аветисян. -- В это время образовалась своеобразная яма в высшем образовании программистов,-- говорит Андрей Иванов.-- Весь мощный программистский преподавательский состав, который двигал какие-то фундаментальные аспекты науки вперед, уехал. А остались в основном те, кого никуда не позвали. Они, кстати, так и преподают во многих вузах по сей день. Выпуски рубежа нулевых представляли собой печальное зрелище, и тогда стало понятно, что нормальному программированию в России практически нигде не учат. Чтобы как-то изменить ситуацию, в 2005-м году мы создали на частные деньги первый образовательный проект -- "Академию современного программирования". Это были вечерние курсы, где студентов (отбирали самых талантливых) учили базовым вещам, которые должен давать любой бакалавриат. На двухгодичных курсах мы помогали умным ребятам с желанием учиться систематизировать имеющиеся знания, получить недостающие и применить все это на практике в реальных проектах. Наших выпускников охотно брали на работу в ведущие российские и мировые компании. Ведь на самом деле, чтобы изучить программирование на уровне, необходимом для того, чтобы работать в хорошей компании, хватает двух лет. В итоге что-то сдвинулось ближе к концу двухтысячных, когда в образование программистов начали вкладывать солидные средства частные компании и государство. Во многих вузах возникли небольшие магистратуры, где талантливая молодежь может учиться бесплатно практически по тем же программам, что в ведущих мировых IT-вузах. Курсы здесь составляют компании-меценаты исходя из того, что актуально на рынке именно сейчас и что интересно им самим. Например, сегодня один из самых больших конкурсов среди программистов на факультете компьютерных наук в Высшей школе экономики в Москве (по сути, это факультет "Яндекса"), на факультете инноваций и высоких технологий в МФТИ (проект базовых кафедр различных компаний) и на кафедре математических и информационных технологий Академического университета РАН -- здесь при активном участии JetBrains создана программа полного шестигодичного обучения. Поступить в подобные места чрезвычайно трудно, потому что молодежь съезжается сюда со всей России -- это вполне реальный шанс попасть из провинциального города в число лучших программистов мира -- Я поступил в Академический университет после Томского государственного университета,-- рассказывает один из разработчиков Kotlin Денис Жарков.-- Вначале учиться было довольно сложно из-за интенсивности программы и необычного подхода. У студентов было много вариантов для курсов по выбору. Что и в каком семестре слушать, нужно было выбирать индивидуально вместе с куратором. Именно он рекомендовал какие-то курсы в зависимости от того, что интересного происходило в мире на рынке программирования. В итоге мы получали актуальные знания, которые можно было сразу применять на деле, практика -- обязательный элемент обучения. Именно тогда я услышал про создание новых языков, это показалось мне интересной и очень красивой областью, в которой я занят по сей день. -- Программа обучения в том же Академическом университете составлена на основе международных стандартов в области программной инженерии,-- рассказывает старший вице-президент по инвестициям, исследованиям и образовательным проектам в компании JetBrains Андрей Иванов.-- Опыт в целом пока очень удачный. Программирование оказалось той сферой, где пересеклись образовательные инициативы государства и бизнеса. Мы ищем такие вузы, где готовы не только брать деньги и давать стипендии талантливым студентам, но и пускать нас в образовательный процесс. Мне кажется, что за таким подходом, в принципе, будущее. На самом деле большая часть команды Kotlin сформирована как раз из таких вчерашних студентов, которые обучались по индивидуальной траектории. Известно, что большую часть знаний, приобретенных в университете, мы со временем забываем. Тем не менее что-то в головах у студентов остается надолго. Мы задались вопросом, что объединяет знания, которые не улетучились, а закрепились, и в результате выделили два основных критерия. Во-первых, предмет должен быть студенту интересен. Во-вторых, теоретические знания должны быть подкреплены практикой. Эти два наблюдения и положены в основу образовательной системы в наших проектах. Число обязательных курсов минимально. Обучение подкрепляется обязательной практической работой, которая в той или иной форме представлена в программе с самого начала, от "игрушечных" проектов, выполняемых под постоянным контролем старших товарищей на младших курсах, до участия в реальной промышленной разработке или научных исследованиях в рамках подготовки диссертаций. Интересно, что если в России такое индивидуально-штучное образование родилось во многом не от хорошей жизни, то на Западе к такой системе пришли параллельно с нами как раз от хорошей. Иванов видит в этом принципиальную закономерность. -- Главный вызов современного мира,-- говорит Андрей Иванов,-- в том, что знания стали какими-то слишком сложными и приобрели колоссальные масштабы. Например, накопленные человечеством знания передовому инженеру физически невозможно передать за всю жизнь. Вывод: нужно выстраивать достаточно строгую систему отбора знаний. Недавно мы слушали мастер-класс в Массачусетском технологическом институте (MIT), где говорилось о том, что нужно глобально перенастраивать все мировое инженерное образование. И в его основу должно лечь индивидуальное образование студентов. Надо признать, что, несмотря на то что у нас объявлен курс на цифровую экономику, которая должна расцвести к 2024 году, пока в России ситуация такова, что сильных студентов оказывается больше, чем мест, где им могли бы дать образование на том уровне, который сегодня является высшим. Праздник N 256 Осенью в США пройдет большая конференция по языку Kotlin, которая соберет поклонников нового продукта со всего мира. Можно не сомневаться, что собравшиеся там специалисты заодно поздравят друг друга и с профессиональным праздником, его программисты отмечают в 256-й день каждого года (обычно приходится на 12 или 13 сентября). Почему выбран именно 256-й день? Это вопрос для непосвященных: для всех собравшихся ответ очевиден: ну как же, два в 8-й степени -- то количество чисел, которые можно выразить с помощью восьмиразрядного байта и максимальная степень числа 2, которая меньше 365 (дней в году). -- Программирование со времен падения железного занавеса в 1990-е стало тем языком, который объединяет людей по всему миру,-- говорят разработчики Kotlin.-- А программисты -- той движущей силой, которая меняет мир на наших глазах. Очевидно, пришло время, когда понимать тех, кто пишет новые языки мирового общения, должны уже не только профессионалы.

Язык мирового значения
© Журнал "Огонек"