Мартин Одерски: Cоздание Scala

Мартин Одерски

Мартин Одерски (Martin Odersky) — разработчик языка программирования Scala. Этот язык высоко оценил Джеймс Гослинг, создатель Java. Он сказал: “Если бы нужно было выбрать язык для использования сегодня, кроме Java, я бы выбрал Scala”.

Мартин Одерски рассказывает о истории создании Scala блогу artima.com:

Мне всегда нравились компиляторы и языки программирования. Впервые я открыл для себя компилятор будучи старшекурсником в 1980 году. Мне сразу же захотелось написать свой. Единственным компьютером, который я мог себе позволить был Sinclair ZX 80 с одним килобайтом оперативной памяти.

Я был очень близок к реализации, но, к счастью, получил доступ к более мощной машине — Osborne-1. Это был первый в мире «портативный» компьютер, который отдаленно напоминал швейную машинку с наклоном на 90 градусов. На 5-дюймовом экране отображались 52 крошечных символа в строке. Также у него была впечатляющая оперативная память — 56 килобайт и два гибких привода по 90 килобайт каждый.

В те дни я общался со студентом из моего колледжа Питером Солличем Sollich (Peter Sollich). Мы прочитали о новом языке Modula-2 и нашли его очень элегантным и хорошо продуманным. Так зародился план написать компилятор Modula-2 для 8-битных компьютеров Z80.

Но возникла небольшая проблема, которая заключалась в том, что единственным языком для, ПК Osborne был Microsoft Basic. Basic был совершенно непригоден к реализации нашего плана. Он не поддерживал процедуры с параметрами. Единственное, что мы имели — глобальные переменные.

В то время другие компиляторы были слишком дорогими для нас. Поэтому мы решили применить классическую технику бутстрепинга. Питер написал первый компилятор для небольшой группы компонентов Pascal на языке ассемблера Z80. Затем мы использовали этот компилятор для компиляции другого языка и так далее. Пока не скомпилировали весь Modula-2.

Он мог генерировать интерпретированный байт-код, а также бинарные файлы Z80. Байт-код был компактнее любой системы того времени, а бинарная версия была самой быстрой на 8-ми разрядных компьютерах. Это была довольно функциональная система для своего времени.

Незадолго до завершения работы над нашим компилятором, Borland выпустила Turbo Pascal и собиралась выйти на рынок Modula-2. Borland решила купить наш компилятор Modula-2 и продавать его под названием Turbo Modula-2 для CP / M наряду с IBM PC версией, которую они хотели разработать.

Мы предложили написать IBM PC версию для них, но они отказали, ответив, что уже занимаются разработкой. К сожалению, создание этой версии заняло у них гораздо больше времени, чем планировалось. К моменту выхода версии, три или четыре года спустя, их команда реализаторов отделилась от компании и стала известна как TopSpeed Modula-2. В отсутствие версии IBM-PC, Borland неудалось наростить «мускулы» маркетинга в случае с Turbo-Modula-2.

Когда мы завершили работу над компилятором Modula-2 мне и Питеру предложили работу в Borland. Питр согласился. Я был очень близок к решению сделать то же самое. Но впереди у меня был год занятий и магистерский проект. У меня возник большой соблазн бросить колледж.

В конце концов, я решил остаться в университете. Во время работы над магистерским проектом на тему о инкрементальном синтаксическом анализе я осознал, что мне нравится заниматься исследованиями. Поэтому в итоге, я отказался от работы по написанию компиляторов в Borland и приступил к работе над докторской диссертацией с Никлаусом Виртом (Niklaus Wirth), изобретателем Pascal и Modula-2 в Швейцарской высшей технической школе Цюриха (ETH Zurich).

Ближе к концу моего прибывания в Цюрихе (1988/89) я очень полюбил функциональное программирование, поэтому занялся научными исследованиями и в конечном итоге стал профессором университета в Карлсруэ, Германия. Изначально работал над теоретической частью программирования, с такими вещами, как вызов с передачей значений параметров по требованию лямбда исчислений.

Работу проводил совместно с Филом Вадлером (Phil Wadler). В то время он работал в университете Глазго. Однажды, Фил рассказал мне, что один из ассистентов его группы услышал о выходе нового языка, который находился в стадии альфа, под названием Java. Ассистент сказал Филу: «Посмотри на Java.Он портативный, имеет байт-код, работает в Интернете, есть «сборка» мусора. Эта штука похоронит тебя. Что собираешься делать?».

Ответ заключался в том, что Фил Вадлер и я решили заимствовать некоторые идей из функционального программирования и переместить их в область Java. Попытка вылилась в язык Pizza, который включал в себя три функции из функционального программирования: дженерики, функции высшего порядка и сопоставление с образцом.

Pizza вышел в 1996 году, через год после выхода Java. Pizza был довольно успешным в реализации функций функционального языка на платформе JVM.

Тогда мы связались с Гиладом Брача (Gilad Bracha) и Дэвидом Стадемайр (David Stoutamire) из ядра команды разработчиков Sun. Они сказали: «Мы очень заинтересованы в дженериках, которые вы создаете, давайте работать над новым проектом на их базе.» Так появился GJ (Generic Java).

Мы разработали GJ в 1997/98. А спустя шесть лет он стал дженериками в Java 5, с дополнениями, которые мы не сделали в то время. В частности, метасимволы в Java-дженериках были разработаны позже, независимо от Гилада Брача и людей из Орхусского университета.

Хотя наши расширения с дженериками были приостановлены на шесть лет, Sun заинтересовалась компилятором, который я написал для GJ. Он оказалась более стабильным и удобным в сопровождении, чем их первый компилятор Java. Таким образом, они решили сделать компилятор GJ стандартым javac компилятором с релиза 1.3, который вышел в 2000 году.

Разрабатывая Pizza и GJ я порой чувствовал разочарование, потому что Java — язык с очень жесткими ограничениями. В результате, я не мог сделать много вещей.

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

Я хотел создать язык отличный от Java, который всегда будет связан с Java-инфраструктурой, JVM и его библиотеками. Это была идея. В то время, когда я стал профессором EPFL, у меня появилась прекрасная возможность — отличные условия для независимого исследования. Я смог сформировать небольшую группу исследователей, которые могли работать, не гоняясь за внешними грантами.

Сначала мы были довольно радикально настроены. Мы хотели создать нечто, что строилось на очень красивой модели параллелизма под названием join calculus. Мы создали объектно-ориентированный вариант join calculus, называемый Functional Nets и язык Funnel. Однако спустя время мы выяснили, что Funnel, будучи очень чистым языком, не был практичным в использовании. Funnel был создан на очень малом ядре.

Мы хотели создать язык — одновременно практичный и полезный и более продвинутый, чем Java. Мы начали работать над языком, который назвали Scala, примерно в 2002 году. Первый публичный релиз состоялся в 2003 году. Относительно большой редизайн произошел в начале 2006 года. С тех пор Scala растет и стабилизируется.


Перевод выполнен abv24.com




Опубликовано 30.10.2015 в 3:05 пп · Автор abv24 · Ссылка
Рубрики: Технологии · Теги: , ,

Написать комментарий


@Mail.ru