Объявлено (http://lists.squeakfoundation.org/pipermail/squeak-dev/2010-...) о выходе Squeak (http://www.squeak.org/) 4.1 - кросплатформенной реализации языка Smalltalk. Основные изменения следующие:- Улучшение внешнего вида;- Добавлены шрифты DejaVu, шрифты True type теперь не загружаются в память (манипуляции происходят на диске);- Полная поддержка замыканий позволяет писать классические рекурсивные выражения вида: "fac := [:n| n > 1 ifTrue:[n * (fac value: n-1)] ifFalse:[1]].";- Поддержка литеральных байтовых массивов, которые могут быть записаны следующим образом: #[1 2 3] (вместо #(1 2 3) asByteArray), что позволяет избежать преобразований- Улучшение подстветки синтаксиса- Снятие ограничения в 32мегабайта для файлов с исходными кодами- Добавлен браузер зависимостей, позволяющий определить зависимости между пакетами- Множества могут содержать пустое значение nil (аналог NULL)
Кроме того, стоит отметить, что недавно вышел первый стабильный рели...URL: http://lists.squeakfoundation.org/pipermail/squeak-dev/2010-...
Новость: http://www.opennet.me/opennews/art.shtml?num=26278
Как можно использовать этот язык в боевых условиях, а не в академических интересах?
http://www.cincomsmalltalk.com/main/Обязательно найдётся human, который в бесконечный раз задаст этот вопрос
Почитайте книжки:
"Pharo by example" (http://pharobyexample.org/)
"Squeak By example" (http://www.squeakbyexample.org/)
Посмторите скринкасты Джеймса Робертсона "Smalltalk Daily":
http://www.cincomsmalltalk.com/blog/blogView?searchCategory=...
Вот поглядел на сайтах их, ну в общем интересно стало. Но есть один вопрос: оно компилируется в натив? То есть как там работает - только байткод или он потом по месту ещё джитится? В этом смысле интересно сравнение этих реализаций с gcl и sbcl для CommonLisp. Прямой ответ от тех кто знает было бы неплохо услышать. А может ответ есть в книгах?
Хотя конечно можно поглядеть исходники самих сред, позже может и погляжу. Давно уже советуют глянуть смолтолк, но вот вопрос производительности пожалуй самый важный.
>Но есть один вопрос: оно компилируется в натив?Нет.
>или он потом по месту ещё джитится?Если не ошибаюсь, то именно так и происходит. Сам пока не разбирался, времени особого нет. На ЛОРе есть вроде интересующийся смолтолком:
http://www.linux.org.ru/people/yoghurt/profileЕсть еще смолтокеры:
http://www.avalon.ru/OpenLessons/Seminars/2009-10-22/ (открытый семинар сообщества российских smalltalker-ов), в презентациях есть их e-mail адреса.
Пасибо, профили гляну.
Ну а про натив я недостаточно чётко выразился. Понятно что он не может компилироваться как С и работать, он же динамический слишком для этого. Но как CommonLisp может. Ведь хорошие CL реализации как раз компилируют код в натив, но по месту, по мере необходимости, без ущерба динамизму языка. Например sbcl. Вот и касательно сабжа интересно, умеют ли они делать также.?
VisualWorks умеет
Существует русское смолтолк сообщество rsug http://rsug.ru/. Присоединяйтесь :))По поводу виртуальных машин для смолтолка, это обычно джитеры с развитой динамической оптимизацией. То есть виртуальная машина на лету переводит байткод в машинный код, делает оптимизацию и инлайн методов.
Самая быстрая виртуалка у VisualWorks'а. Сейчас разрабатывается при коммерческой поддержки аналог для squeak/pharo.
Есть еще интересные проекты на squeak/pharo в направлении оптимизации. Это Exupery - джиттер, работающий и написанный в самом смолтолке. Это некая программа, оптимизирующая выполнение кода в фоновом режиме. Другой проект NativeBoost позволяет писать примитивные методы на некоем подобии ассемблера (но выраженном в терминах самого смолтолка).
Специфика этих проектов в том, что все реализуется на самом смолтолке с сохранением динамических свойств смолтолк-программ. (вы можете на лету изменять код, дебагить и т.д.)
Что еще интересно, виртуальная машина для squeak/pharo написана на смолтолке (с некоторыми ограничениями, Slang), который может интерпретировать внутри системы для отладки и транслироваться в с-код для компиляции.