В середине октября в Москву первый раз в жизни прилетит Бьерн Страуструп (Bjarne Stroustrup), создатель языка программирования C++. На конференции "Разработка ПО 2010" он прочитает доклад, а также проведет четырехчасовой мастер-класс. В преддверии визита в Россию Бьерн дал небольшое интервью 3DNews, причем мы вполне осознанно не стали задавать ему зубодробительных вопросов об особенностях нового языка C++0x, о котором наш собеседник будет рассказывать по прибытии. В конце концов, об этом можно почитать во многих других источниках (осторожно, английский). Мы же попробовали выйти за пределы C, чтобы показать вам не только эксперта-изобретателя, но и человека. И все же начали мы именно с C++.
3DNews: Вам, наверное, задавали этот вопрос уже сотни раз, и все же, по внутреннему ощущению, какие особенности C++ позволили этому языку выделиться на фоне собратьев и уже четвертое десятилетие подряд оставаться живой классикой?
Bjarnem Stroustrup: C++ имел и имеет по сей день те преимущества, которые предоставляет C в низкоуровневом программировании при работе с аппаратной частью (проще говоря, «железом»), и в то же время обеспечивает возможность создавать собственные уровни абстракции без потери производительности и без излишней избыточности в плане использования ресурсов. Ведь конструкторы и деструкторы стали в свое время настоящим прорывом. По сравнению с традиционным С (Кернигана и Ритчи), С++ предлагает улучшенную систему безопасности типов. По сравнению с Simula, С++ существенную гибкость и эффективность.
Важно и то, что C++ не переставал развиваться после его первого коммерческого релиза в октябре 1985-го. За прошедшие годы он постепенно стал гораздо более эффективным и гибким инструментом для разработки ПО. Его характерные сильные черты, например, выстраивание программной инфраструктуры и разработка ресурсо-эффективного ПО, основывались на моих изначальных целях для С++. А именно простой и эффективной связке с железом в сочетании с гибкими механизмами абстракции без использования runtime.
3DNews: Верите ли вы в то, что необходимость в языках программирования однажды отпадет, и компьютеры начнут понимать простой человеческий английский?
Bjarnem Stroustrup: Я сомневаюсь в этом. Точнее, сомневаюсь в том, что это вообще нужно. Когда я задаю некое действие, которое должно быть выполнено на компьютере, хочется гораздо большей «экономии» слов и гораздо же более точного определения смысла, чем может предложить разговорный английский. Например, “a = b+c” и лаконичнее, и четче, нежели "Добавить C к В и поместить результат в А". Языки программирования гораздо ближе к сугубо техническим и специализированным сокращениям, используемым профессионалами (к примеру, математиками и врачами), чем к повседневной речи. На самом деле, я не удивлюсь, если программирование станет еще более формализованным и отодвинется от обычной человеческой речи еще дальше.
Естественно, я сейчас говорю о разработке ПО. Наши обычные взаимодействия с компьютерами, вероятно, будут все больше похожи на разговор людей между собой. Например, фраза "дайте мне сосиску в французской булочке с горчицей, без кетчупа и положите немножко лука" может быть совершенно понятной автоматизированному лотку, торгующему хот-догами. Однако сами программы, распознающие голос, равно как и операционные системы, на которых они будут работать, продолжат писать на специализированных языках программирования.
3DNews: Одной из основных проблем, с которой сегодня сталкиваются разработчики программного обеспечения, является обеспечение эффективной поддержки многоядерных процессоров в ПО для конечных пользователей. Многие приложения по-прежнему умеют использовать только одно ядро из двух-четырех-шести. Есть ли способ устранить эту дисгармонию?
Bjarnem Stroustrup: Нам нужна усовершенствованная модель разработки алгоритмов параллельных (многопоточных) вычислений на высоком уровне абстракции. С++0х, о котором я буду рассказывать в Москве, закладывает основу для этого в виде набора потокобезопасных средств для работы с традиционной моделью блокировки и синхронизации потоков. Нельзя сказать, что эта модель (а так же lock-free синхронизация, предлагаемая C++0x) идеально подходит для многопоточных приложений. Она просто лучше, нежели то, что предлагают большинство других языков на сегодняшний день. Но всё же язык C++0x позволяет создавать продвинутые, относительно простые и специализированные модели в виде библиотек, созданных стандартными средствами языка.
Нам надо больше работать над упрощением спецификаций параллельных систем – даже спустя полвека исследований в этом направлении.
3DNews: В России каждый второй студент, готовящийся стать программистом, однажды создает свой собственный язык. Вы верите в успех гениальных одиночек? И вообще, есть ли спрос на совершенно новые языки программирования?
Bjarnem Stroustrup: Придумать новый язык и даже что-то написать нем относительно просто. Гораздо труднее убедить серьезных разработчиков интересных продуктов использовать такое изобретение. Чтобы быть полезным, новый язык должен быть лучшим решением проблемы, нежели существующие (и известные) инструменты и языки. Но лично я бы советовал приступать к разработке чего-то совсем нового только в том случае, если вы хорошо знакомы с проблемной областью, и уверены, что можете обеспечить лучшее решение именно в виде языка. Ведь очень часто инструмент или библиотека для существующего языка оказывается более полезным. Кстати, это одна из причин, по которой многие языки умирают молодыми: «старики» быстро наверстывают упущенное.
Нет, я хотел бы видеть все новые и новые языки, и знаю, что возможно создать гораздо лучшие варианты, нежели те, что мы имеем сегодня. Было бы очень печально, если языки программирования перестали рождаться. Ведь их создание является своего рода окном, отдушиной для новых идей и подходов к пониманию проблем и их решению.
Не думаю, что рынок ждет новые языки с распростертыми объятиями, но как раз изобретение таковых позволяет избежать риска излишнего консерватизма и склонности к использованию только общепринятых языков. Это хорошо и интересно!
И еще одно. Думаю, что разработчики-одиночки крайне важны, поскольку коллектив обычно не может сосредоточиться и выдать согласованный набор целей для языка программирования. Много мнений, много деталей, и в них немудрено заблудиться. В то же время язык не может быть разработан в изоляции, дизайнер должен получать фидбэк и вдохновение, что может предложить только развитое техническое сообщество. Когда рождался C, мне повезло работать в AT & T Bell Labs, а там техническая среда была настолько разнообразна и требовательна, что это поставило передо мной немало сложнейших задач. И их решение, в свою очередь, помогло C++ выжить и стать таким, каким он стал. Я до сих пор чувствую себя в долгу перед коллегами.
3DNews: В России сейчас объявлена программа модернизации, развития собственных высоких технологий. Однако наши соотечественники почему-то чаще добиваются успеха за рубежом, нежели в своей стране. Есть ли у вас мнение об этом феномене?
Bjarnem Stroustrup: Может быть дело в том, что люди, уезжающие за рубеж, изначально более инициативны, любопытны и самими условиями мотивированы сделать что-то новое? Может, они больше других готовы идти на риск и, переехав на новое место, люди особенно сильно стремятся преуспеть?
Подозреваю, что успешность за границей – это общеиммигрантский феномен, не только русский. Я и сам вообще-то иммигрант (напомним, Бьерн родился и закончил университет в Дании, но живет и работает в США – прим. редакции).
3DNews: Какие из цифровых технологий или устройств, изготовленных в последние десять лет, произвели на вас наибольшее впечатление?
Bjarnem Stroustrup:
Я люблю фотографировать, причем мне все это очень интересно и с технической, и с, если так можно выразиться, эстетической точки зрения. Проще говоря, я и физик, и лирик. Так вот, прогресс в области цифровых изображений просто поражает. Очевидно, в этом есть и немалая заслуга программного обеспечения, используемого в камерах.
Также я вряд ли сегодня мог бы заниматься своей работой или общаться с друзьями без поистине удивительной инфраструктуры связи, которая соединяет меня со всем миром через один небольшой ноутбук.
3DNews: Последний вопрос – зачем вы собираетесь в Россию и каковы планы на поездку?
Bjarnem Stroustrup: С одной стороны, я хочу приехать, потому что никогда не был в вашей стране. С другой – потому что на конференции у меня будет возможность поговорить с российскими разработчиками программного обеспечения, это очень интересно. К великому сожалению, я не смог выделить достаточно времени на традиционные туристические развлечения, потому что октябрь – это середина семестра в университете (г-н Страуструп профессор в Texas A&M University – прим. редакции), и я не могу быть далеко от своих студентов слишком долго. Надеюсь, организаторы конференции организуют и мое свободное время, так что получится посмотреть Красную площадь и Большой театр. Есть ощущение, что от созерцания достопримечательностей и выступлений я вернусь обратно в США довольно усталым, но все же с большим нетерпением жду визита в Москву.