![Cчетчик со страницы Getting Started на момент публикации статьи](https://habrastorage.org/files/68c/f8d/a8b/68cf8da8b6ec4ef4ad35318498d13db7.png)
Cчетчик со страницы Getting Started на момент публикации статьи
С минуты на минуту случится то, чего ждали очень многие, и я в том числе. А именно: компания ObjectArts полностью открывает исходники и выпускает язык и среду разработки Dolphin Smalltalk под открытой лицензией MIT!
О проекте
![](https://habrastorage.org/files/51f/a3d/8cf/51fa3d8cfb7d4c7abc1a6cdb919524a1.jpg)
Долгое время Dolphin Smalltalk был доступен в двух вариантах: условно-бесплатная ограниченная версия (community edition) и платный пакет для профессиональной разработки. Последний давал доступ ко всем функциям, включая продвинутые редакторы и публикацию приложений в standalone режиме, однако стоил около четырехсот долларов, что, по понятной причине, устраивало далеко не всех.
Похоже, что компания таки одумалась (или терять стало нечего) и решила выпустить ПО на волю. Под катом краткое описание среды разработки и размышления на тему open source будущего Dolphin Smalltalk.
Возможности среды разработки
![](https://habrastorage.org/getpro/habr/post_images/764/8e0/c5d/7648e0c5deab734361933ceada9633f6.png)
IDE предоставляет как обычные возможности, вроде code assist, навигации по коду и встроенного отладчика, так и средства, специфичные для Smalltalk: поддержку тестов SUnit, управление публикацией приложения (упаковка, вырезание лишних классов), WYSIWYG редактор интерфейсов и многое другое. Мне нравится возможность поиска по всему содержимому проекта, включая классы, методы и комментарии, доступная в тулбаре любого окна.
Навигация
![](https://habrastorage.org/files/7ae/a78/bc6/7aea78bc6dd84beb9c30eb95fc51d5df.png)
Разбираясь с незнакомым кодом на традиционных языках мы открываем файлы исходных текстов и читаем их подряд. Smalltalk организован несколько по другому. Вместо простыни исходных текстов мы имеем иерархию классов и списки их методов. Значительное время проводится именно в изучении иерархии классов, которая в Dolphin представлена довольно аккуратным Class Browser-ом.
Отладка
Отладка динамических языков всегда была проще, чем кропотливая работа с креш дампами. В Smalltalk это вынесено на уровень выше. При отладке приложения мы можем не просто наблюдать каждый шаг работы программы, но и взаимодействовать с объектами в диалоговом режиме. Помимо тотальной интроспекции программы Dolphin предоставляет возможность буквально ткнуть в любой элемент окна и мгновенно получить все его свойства и содержимое в окне инспектора.
Часто бывает так, что при написании программы многие методы приходится оформлять заглушками, поскольку времени на все про все не хватает. Если в ходе выполнения традиционной программы управление доходит до заглушки, то нам остается только вывести сообщение в лог или вывалиться по ассерту, если дальнейшее выполнение программы невозможно.
![](https://habrastorage.org/files/d16/f47/254/d16f472544094ed3aa64a80541f63d64.png)
Что это даст нам, простым смертным?
Если все будет действительно так, как заявлено, то сообщество получает отличный инструмент для быстрой разработки и прототипирования софта под Windows. Меня, как пользователя Linux, разработка под Windows не очень интересует. Тем не менее, я считаю, что это событие можно использовать и в своих целях.
В первую очередь я обратил бы внимание на внутреннее устройство виртуальной машины, которая к слову считалась весьма быстрой еще во времена Windows XP, хотя, насколько я знаю, JIT они не используют.
Если существует техническая возможность портирования Dolphin Smalltalk на другие ОС, можно ожидать появления дружественных к неподготовленному пользователю сред разработки на Smalltalk. Большое количество кода было написано в рамках интеграции с ОС. Другим средам, таким как Pharo это может быть на руку.
Наконец, удобная среда разработки с большим количеством встроенной документации и великолепным иллюстрированным туториалом может быть полезна начинающим и способствовать развитию самого языка Smalltalk.
В комментариях прошу делиться своими мыслями и предложениями.
UPD: На гитхабе появились репозитории Dolphin и DolphinVM.
А напоследок, маленький опрос:
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (15)
chaetal
29.12.2015 20:37В общем-то, результат голосования был предсказуем :)
Halt
29.12.2015 21:07+3Да, разумеется. Меня скорее интересовало распределение, а не результат.
Но лежащие рядом исходники это всегда хорошо. Можно почитать, поплеваться, а иногда и украсть идею :)chaetal
29.12.2015 21:57Да вообще интересно: как такой продукт — на минуточку, покруче Delphi будет …точнее был :) — делали и развивали два человека (если не ошибаюсь?).
Halt
29.12.2015 22:04+7Насколько я помню да, двое. Причем последнее время тянул один. Это косвенно намекает на производительность смолтока.
Мне очень жаль, что у них ничего не взлетело и что они решились на открытие исходников лишь спустя двадцать (!) лет — первые объекты DolphinVM начала крутить в феврале 1995 г.
Дабы почтить память проекта, а заодно и продемонстрировать наконец его возможности я хочу выложить обзорную статью, где пройдусь по образу и потыкаю его палочкой. Думаю, сообществу будет интересно, поскольку многие вещи до сих пор не приняты и посторонним кажутся волшебством например возможность загрузить софт ровно в том виде, в котором он был закрыт (включая окна, позиции курсора и содержимое буфера обмена).
sheknitrtch
29.12.2015 21:09Отличная новость! Dolphin Smalltalk одна из немногих реализаций Smalltalk, которые нормально выглядят и ведут себя под Windows. Тот же Pharo выглядит отталкивающе для новичков. Будем надеятся, что взлетит.
sheknitrtch
29.12.2015 21:27+1К стати, у Dolphin Smalltalk есть классная фича — экспорт в EXE файл. Раньше она была доступна только в платной версии. Но теперь её может пощупать любой.
chaetal
29.12.2015 21:46А вы давно на Pharo смотрели? :) Сугубое мое ИМХО: он уже некоторое время как не отталкивающ
Halt
29.12.2015 22:05Я думаю sheknitrtch говорит не столько о визуальном оформлении, сколько о принятых стилях пользовательского интерфейса.
chaetal
29.12.2015 22:11То есть, речь о Morphic-е? Его в Pharo урезали, но время такого интерфейса еще придет… А те, кого отпугивает, сами себе злобные буратины :)
SvyatoslavMC
29.12.2015 22:56+5Отличная новость! Проверю на досуге с помощью PVS-Studio.
Halt
30.12.2015 10:48Посмотрел код виртуальной машины — там та еще лапша. Ну и разумеется написано все на C-- (который вроде как C++, но по факту махровый C с вкроплениями ключевых слов из C++).
Я подозреваю, что вы там утонете :) Впрочем, тем интереснее посмотреть на результат.chaetal
30.12.2015 14:07…Сдается мне, это как раз основная проблема современного Smalltalk-а
Halt
30.12.2015 15:29За все реализации отвечать не могу, достоверно говорить могу только о трех: собственно DolphinSmalltalk, LittleSmalltalk и наш проект, LLST. Есть конечно еще CogVM, но я недостаточно компетентен, чтобы про него говорить (тем более что он вроде как написан на самом Smalltalk который был транслирован в Си).
Оригинальный LittleSmalltalk написан на чистом Си и там правда все печально — много необоснованного трокачества, макрос-ориентированное программирование, ручной рассчет смещений полей и прочие прелести. Все это я писал в вводной статье.
В LLST мы в первую очередь постарались свести к минимуму рутиную работу программиста и максимально облегчить ему жизнь. Например, были реализованы шаблоны безопасного доступа к элементам кучи, структуры базовых объектов и удобные операции преобразования типов с проверками. Ручное управление памятью и небезопасные операции выполняются только в ограниченном количестве мест и подробно описаны в комментариях.
В DolphinSmalltalk что-то похожее есть, но сделано весьма поверхностно. Очень много ручной магии с указателями, практически в каждой функции естьreinterpret_cast
. Ну и самое страшное — указатели смешаны с целочисленными типами данных by design. Справедливости ради стоит сказать, что сравнивать LLST и Dolphin некорректно — это проекты из разных весовых категорий. В то же время, это нисколько не извиняет разработчиков.
… Все это приводит меня к мысли, что о портировании виртуальной машины можно забыть. Да и незачем в общем-то. Основную ценность составляет высокоуровневый код Smalltalk, а не исходники виртуальной машины, которая действительно устарела на 20 лет.
Rogaven
Он [smalltalk] еще жив? :-D
Halt
Будем считать, что я не заметил сарказма и ответил серьезно.
Что значит, что язык жив? Если поскрипеть мозгами, то можно предложить такое определение: язык жив, когда он востребован, имеет стабильное комьюнити и развивается. Такому определению смолток соответствует. Востребованность существует как экономическая, так и академическая. Комьюнити сейчас составляют профессиональные разработчики (которым в общем-то нет дела до холиворов) и энтузиасты-любители, подавляющее большинство которых сосредоточено вокруг проекта Pharo, плюс отдельные извращенцы вроде меня и Humbug, которые занимаются исследованиями компиляторов и считают Smalltalk удобным модельным языком по тем или иным причинам.
Я понимаю, что «полторы вакансии» могут вызывать ехидные смешки со стороны прикладных разработчиков, но тем не менее, мы говорим о фактах а не о числах. В этом смысле Smalltalk не менее жив, чем Haskell, который еще более далек от императивного мейнстрима, но тем не менее считается живым.
В то же время следует отметить, что в отличие от сугубо утилитарных языков вроде COBOL (который, кстати, тоже живет и здравствует и участвует при переводе зарплаты вам на карточку), Smalltalk умудряется оставаться актуальным. Некоторые моменты его архитектуры не устаревают со временем и вполне могут конкурировать с современными технологиями.
Конечно, есть и недостатки. Основной на мой взгляд, это консервативное сообщество и недостаточная его вовлеченность в проблемы современной разработки. Потом, есть и проблемы чисто технического плана, например грамотная поддержка многоядерности и параллелизма, которая тем не менее решается.
Smalltalk был «забыт» в те времена, когда производительность отдельно взятой машины была критически важна для бизнеса. В то время Smalltalk выглядел медлительным а его использование казалось экономически неоправданным. В последнее время производительность электроники выросла настолько, что можно вполне успешно крутить Linux в эмуляторе x86 в броузере, да и вполне активное существование NodeJS не вызывает ни у кого вопросов. В такой среде Smalltalk вполне может получить вторую жизнь.
Надеюсь, что я ответил на ваш вопрос.