Интервью с Джо Армстронгом |
Аннотация: Джо Армстронг — один из создателей языка Erlang. Работая в лаборатории Ericsson в 1986 году, он входил в состав команды, которая разработала и реализовала первую версию языка. С тех пор, помимо работы над самим языком, он написал несколько книг об Erlang, провел первый учебный курс по Erlang и обучил языку сотни программистов. Невзирая на свой напряженный график (Джо регулярно читает лекции и выступает на конференциях), он любезно согласился дать интервью нашему журналу.
Joe Armstrong is one of the inventors of Erlang. While at the Ericsson computer science lab in 1986, he was part of the team that designed and implemented the first version of Erlang. He wrote several Erlang books including “Programming Erlang: Software for a Concurrent World”. Joe held the first ever Erlang course and has taught Erlang to hundreds of programmers and held many lectures and keynotes describing the technology.
—
Есть ли конкуренция между Erlang и MPI? Имеет ли смысл людям, которые занимаются
высокопроизводительными вычислениями, искать способы задействовать Erlang,
несмотря на его низкую производительность в вычислительных задачах?
Джо: Они не конкурируют — это довольно разные вещи. Erlang — язык программирования. MPI — коммуникационный протокол. На Erlang можно реализовывать полноценные приложения (например, СУБД, веб-серверы и т. п.). На MPI этого сделать нельзя, поскольку это не язык программирования. СУБД и т. п. придется писать на хост-языке, использующем библиотеки MPI.
Однако Erlang прекрасно подошел бы в качестве языка координирования высокопроизводительных вычислений. Можно реализовать «числодробилку» на Си или в FPGA, а координировать вычисления с помощью Erlang. Именно так мы и делаем телекоммуникационные системы. Мы реализуем низкоуровневые вещи на Си или в железе, а высокоуровневые — на Erlang.
—
Существуют ли планы сделать Erlang более подходящим для EDSL, например,
разрешив пользовательские операторы?
Джо: Нет — но на Erlang нетрудно писать парсеры для DSL. Уже существует несколько таких парсеров, и можно ожидать, что появятся и еще. Надо двигаться в направлении PEG-грамматик и некоторых идей из OMeta.
—
Есть ли у каких-нибудь из современных молодых языков существенные шансы
догнать или даже перегнать Erlang в его нише?
Джо: Возможно, Scala, но Scala и Erlang создавались для разных задач, так что в Scala будут трудности со многим, в чем хорош Erlang. Поведение сборщика мусора Erlang и его взаимодействие с динамической подменой кода невозможно реализовать поверх JVM, так как её семантика кардинально отличается от семантики Erlang VM.
—
Планируется ли разделить спецификацию и реализацию языка Erlang,
чтобы можно было реализовать свой собственный Erlang?
Джо: Это уже было сделано много лет назад. Спецификация существует. Проблема в том, что она не обновляется. Однако отсутствие актуальной спецификации — не помеха тому, чтобы реализовать новую виртуальную машину для Erlang.
Трудности реализации движка Erlang в основном обусловлены размером встроенных библиотек. Например, реализация неблокирующего ввода-вывода требует большого количества работы.
—
Планируется ли расширять механизм статической типизации Erlang?
Джо: Нет.
—
Сейчас в мире ПО наблюдается «сдвиг парадигмы» в сторону массивного
параллелизма и распределенности, и Erlang прекрасно с ним справляется.
Как Вы думаете, каким будет следующий сдвиг парадигмы? Переживет ли
Erlang и его?
Джо: Полная виртуализация всех ресурсов. Мы до сих пор размышляем в терминах «мой компьютер», «мой жесткий диск». Сегодня «мои данные» — это что-то живущее на «моем диске». Ситуация меняется. Скоро все данные и вычислительные ресурсы переместятся в облако. Erlang хорошо подходит, чтобы всем этим управлять.
—
Первый прототип Erlang был написан на Prolog. Сильно ли это повлияло
на Erlang, если не считать синтаксиса? Как Вы считаете, стоит ли
изучать Prolog?
Джо: Думаю, Erlang родился из смеси Prolog и Smalltalk. Идеи сопоставления с образцом пришли из Prolog. Идеи обмена сообщениями — из Smalltalk. Стоит ли изучать Prolog? Безусловно: Prolog — очень красивый язык программирования. Возможно, самый красивый из существующих языков.
—
Многие современные языки (например, Scala и F#) обзаводятся библиотеками
для эмуляции многозадачности в стиле Erlang. Есть ли у них шансы стать
столь же мощными инструментами распределенного программирования лишь
за счет использования основных идей, или все-таки для этого необходима
и среда выполнения, сравнимая по мощности с Erlang?
Джо: Эти библиотеки реализуют лишь малую часть многозадачности в стиле Erlang. Они реализуют самые простые части, и опускают сложные (и полезные), например, динамическую замену кода и особую семантику распространения ошибок.
—
В 2008 году Вы упоминали CouchDB и Scalaris как первые «killer applications»
на Erlang. Появились ли с тех пор другие примеры?
Джо: RabbitMQ, MochiWeb, ejabberd, …
—
Как, на Ваш взгляд, соотносятся предложение и спрос на программистов на Erlang?
Джо: Спрос на опытных программистов на Erlang намного превышает предложение.
—
Вы бы рекомендовали кому-то, желающему стать ученым в области информатики,
поехать в Швецию?
Джо: Да — но есть и множество других отличных стран. Важно не само место, а люди, обитающие в этом месте.
—
Насколько важную роль сыграла Ваша докторская1 диссертация в развитии Erlang?
Вы бы рекомендовали людям писать докторские диссертации?
Джо: Диссертация была совершенно не важна — я написал её в 2003 г., а самая творческая часть работы над Erlang проходила в 1986–87 гг.
Цель диссертации по информатике — получить работу в университете; если вы не собираетесь преподавать в университете, я бы на вашем месте оставил эту идею. Множество отличных исследований в области информатики ведутся людьми без докторской степени, которые работают в индустрии. Думаю, в классических науках, таких как физика или химия, ситуация иная — однако в информатике, судя по всему, нет большой разницы между качеством академических и промышленных исследований.
—
Чем отличается сообщество Erlang от сообществ других языков?
Джо: Оно меньше…
—
Что бы Вы изменили в индустрии разработки ПО, если бы у Вас была такая возможность?
Джо: Windows.
—
Как Вы распределяете время между оплачиваемой работой, хобби-проектами
и отдыхом?
Джо: Мои хобби-проекты и есть мой отдых; кроме того, они довольно сильно пересекаются и с оплачиваемой работой. Особенность программирования (или любой другой работы, где платят за то, что вы работаете мозгами) состоит в том, что нельзя отключить мозги, когда заканчивается оплачиваемое время.
Мой мозг все время занимается решением программистских задач, нравится мне это или нет. Так уж получается. Когда я сплю, мой мозг решает программистские задачи. Отдых — это время, когда я работаю, но мне за это не платят.
Работа программиста — странная штука. Я постоянно напоминаю своему начальнику, что мне платят за то, чтобы я думал, а не за то, чтобы я сидел в определенном месте в определенное время и нажимал пластиковые клавиши на ящике.
—
Вы устали от интервью про Erlang? О чём бы Вы предпочли рассказать?
Джо: Устал от интервью про Erlang? Нет. Программирование — просто одна из тем обсуждения. Есть множество других тем — зачем эта чертова война, почему у нас такая безумная власть, как замечательна эта книга или этот фильм…
(Вопрос: В прошлую субботу я смотрел «Солярис» Тарковского — прекрасный фильм —
жаль, что я не понимаю русский: субтитры были некачественными. У меня
вопрос по поводу концовки: я смотрел этот фильм около 35 лет назад и
мне кажется, что концовка изменилась — та, что я помню, и та, что я видел
в прошлую субботу, отличались.
В версии, которую я, кажется, видел много лет назад, когда в финальной сцене камера взлетает вверх, Кельвин выходит из дома (где в комнате течет вода), садится в машину и уезжает. Пока он едет, из океана на Солярисе появляется дорога и исчезает, когда он проезжает мимо — я точно помню этот момент — однако на DVD, который я смотрел в прошлую субботу, камера взлетела вверх, показала дом посреди океана Соляриса, и сцена закончилась; поездки на машине не было. Я ничего не путаю? Кто-нибудь смотрел оригинал фильма до того, как он попал на DVD? Напишите мне на erlang@gmail.com.)
—
Планируете ли Вы посетить Россию?
Джо: Я не планирую не посещать Россию.
- 1
- Имеется в виду Ph. D., аналог кандидатской степени в российской системе образования. — Ред.
Этот документ был получен из LATEX при помощи HEVEA