Десять вопросов Мартину Одерски о Scala
Евгений Охотников: Воплотили ли вы в Scala все свои идеи или что-то осталось нереализованным из-за недостатка времени или по другим причинам?
Мартин Одерски: Есть несколько вещей, о которых мы не имели достаточного понимания того, как лучше их спроектировать и/или реализовать когда мы впервые выпустили Scala. В будущем нам бы хотелось внедрить в Scala расширяемое сопоставление с образцом, полиморфные конструкторы и развитую поддержку параллелизма. Первые два направления на данный момент уже хорошо изучены и должны найти свое место в Scala в ближайшее время. Улучшенная поддержка параллелизма потенциально важнее, но пока еще недостаточно опыта для того, чтобы успешно реализовать ее. Сейчас мы предлагаем довольно хорошую библиотеку actors (в стиле Erlang), которая работает поверх стандартных Java нитей.
ЕО: Есть ли что-нибудь в Scala, чтобы вы хотели перепроектировать или реализовать иначе?
MO: В начале 2006 года мы сделали серьезную модификацию Scala и устранили многое из того, что по нашему мнению было неудачным в первой версии Scala. Синтаксис стал легче, точки с запятой стали необязательными. Мы устранили некоторые проблемы с функциями высшего порядка, которые были обнаружены в первой версии. Мы упростили модель примесей (mixin).
ЕО: Кто-то (кажется, это был Бьерн Страуструп) сказал, что любой инструмент обязательно будет использоваться так, как это не мог предполагать автор инструмента. Видели ли вы такое применение Scala, которое оказалось для вас неожиданным?
MO:
Это как посмотреть. Всегда есть вещи, которых вы не ожидаете, но оглядываясь
назад оказывается, что они имеют смысл. Например, интенсивное использование
Actor-ов во фреймворке liftweb:
http://liftweb.net
Я еще не видел что-нибудь, что я бы никогда не мог представить, не предполагаю,
что это произойдет в будущем :)
ЕО: Вы рассматриваете Scala как язык общего назначения или же как нишевой язык (вроде Erlang)? Как вы думаете, в каких областях Scala выглядит наиболее привлекательно и конкурентноспособно?
MO: Scala -- это язык общего назначения. Я думаю, что он является альтернативой Java во всех прикладных областях. Большим преимуществом является то, что он делает программистов более продуктивными, особенно хороших программистов. Пока мы наблюдаем широкую адаптацию Scala в области Web-разработки, где его поддержка XML и преобразования древовидных структур в функциональном стиле является большим плюсом.
ЕО: В настоящее время мейнстим составляют языки, в которые были инвестированны серьезные финансовые средства (например, Java, C#, Visual Basic), и OpenSource проекты с более чем десятилетней историей (например, Perl, Python и Ruby). Вы надеетесь, что Scala сможет сыграть заметную роль в таких условиях?
MO: Scala сможет стать успешным только при поддержке динамичного сообщества пользователей. Успех Python и Ruby показал, что такое сообщество можно вырастить, даже если это требует времени. Принимая во внимание юный возраст Scala можно сказать, что мы хорошо движемся по этому пути.
ЕО: Сейчас Microsoft активно работает над C#. На платформе .Net есть многообещающий язык -- Nemerle. Есть наследник C++ -- язык D. Есть постоянно растущий интерес к динамическим (Python, Ruby, Groovy, ...) и функциональным языкам (OCaml, Haskell, Erlang, ...). Какие языки вы рассматриваете как самых опасных конкурентов для Scala? Какие возможности Scala могут помочь Scala выиграть эту борьбу?
MO: Я не хочу говорить в терминах соперничества. Мой интерес в том, чтобы производить языки программирования и стремиться к тому, что бы они были широко распространены. Если в конце-концов это будет какая-нибудь будущая версия Nemerle или F#, то для меня это будет замечательно. Как и Scala, эти языки пытаются построить мостик между объектно-ориентированным и функциональным программированием, между статикой и динамикой. Насколько я могу сказать, они все очень хороши. Сейчас мы наблюдаем очень плодотворный обмен идеями между этими и другими языками.
ЕО: До сих пор функциональные языки программирования не использовались широко. Какое будущее вы предпочитаете для Scala: языка для миллионов программистов или языка для небольшой аудитории?
MO: Scala не является исключительно функциональным языком. Он уже завоевал аудиторию, которую составляют не только фунциональщики. Мы сейчас наблюдаем по 2000 скачиванией в месяц и это число постоянно растет. Так же Scala быстро воспринимается индустрией.
ЕО: Какие у вас планы по поводу будущего Scala?
MO: Мы пытаемся улучшить удобство использования Scala. Ключем к этому является наличие хороших инструментов. Мы предлагаем плагин к Eclipse и мы знаем, что ведутся аналогичные разработки для IntelliJ и Netbeans. Мы так же сконцентированы на предоставлении большего количества библиотек и фреймворков, например для GUI или Web-сервисов. Сейчас мы, в основном, используем Java библиотеки для этого, но здесь есть большой потенциал за счет использования лучших возможностей по абстрагированию в Scala. Еще одним направлением работы является более глубокие исследования в области языка. Здесь требуется экспериментирование. Некоторыми интересными областями являются параллелизм и распределенность, подключаемые типы, стадийность, виртуальные классы и новая система пакетов. Что-то из этого может определить будущее Scala, но пока еще слишком рано что-либо говорить.
ЕО: Существует несколько хороших введений в Scala -- ScalaOverview, ScalaTutorial и ScalaByExample. Но нет достаточно глубоких описаний языка, за исключением ScalaReference. И ScalaReference очень неудобно использовать в качестве учебного пособия по языку. Планируете ли вы написать книгу о Scala? Что-нибудь вроде 'The C++ Programming Language' или 'Programming Ruby'.
MO: Да, я сейчас в процессе написания книге в стиле 'Programming Ruby'. Она будет опубликована издательством Artima. И перед ее выходом, большая часть материалов появится на сайте Artima в свободном доступе.
ЕО: Насколько интенсивно вы работаете над Scala? Является ли разработка Scala частью вашей работы или это сейчас просто ваше хобби?
MO: Scala является основной частью работы почти 10 человек: меня, 2-х кандидатов наук и 7-х аспирантов.
© 2003-2007 Yauheni Akhotnikau
$LastChangedDate: 2007-04-27 19:15:16 +0400 (Пт, 27 апр 2007) $