Smalltalk по-русски
пятница, Сентябрь 29, 2006
ESUG 2006

Заметки с ежегодной 14й международной конференции по Smalltalk, проводимой European Smalltalk User Group (ESUG) можно найти как в блоге Джеймса Робертсона, так и на домашней странице конференции.

На конференции были оглашены победители Innovation Award (всего претендентов было 8). Победителями стали:

  1. Plopp (Squeak) - рисование 3D для детей;
  2. Mondrian (VW) - движок для визуализации информации;
  3. SqSquare (Squeak);

Георг Хиг рассказал о проекте по реализации ObjectStudio внутри VisualWorks. Напомню, что VW изначально ориентировано на серверную часть приложения, в то время как, OS в первую очередь предназначен для разработки клиентских Windows-приложений. Мне было интересно, как всё устроено, учитывая, что ObjectStudion - win-only приложение использующее "родные" win-виджеты. Оказалось довольно просто - часть ВМ от OS превратилась в DLL, используемую из VW.

Было рассказано о UbiquiTalk (Squeak) - P2P платформе, И являющегося частью большего проекта VerySmallTalk.

Презентована полностью 64-битная версия GemStone.

На конференции так же был Джо Армстронг, который рассказал об Erlang.

Ярлыки:

Seaside for the .Net Developer
Seaside for the .Net Developer. (По английски.)
среда, Сентябрь 27, 2006
[Dolphin] SmallCruise

Настал черед и Dolphin Smalltalk обзавестись общедоступным инструментом непрерывной интеграции - SmallCruise. Правда, реализован он в нестандартной для Smalltalk манере - с использованием SVN и CruiseControl.NET. Пока доступно только онлайновое демо.

суббота, Сентябрь 23, 2006
Sun открыла исходники Strongtalk
Strongtalk -- реализация Смолтока, использующая сложный и мощный механизм оптимизирующей компиляции, а также поддерживающая опциональное использование системы проверки типов. Создатели скромно утверждают, что Strongtalk -- самая быстрая реализация Смолтока в мире. Разработка велась в 1994-1996г.г. фирмой Animorphic Systems, Inc. В 1997г. эту фирму скупила Sun, а разработчики Strongtalk были брошены на создание продвинутой ВМ для Java -- HotSpot. С 10 сентября Sun выпустила под лицензией open-source не только смолтоковский код системы (он доступен желающим уже несколько лет), но и исходный код виртуальной машины. Кроме навернутой технологии ВМ и системы проверки типов, Strongtalk интересен своим интерфейсом
пятница, Сентябрь 15, 2006
[VW] 7.4c engines

Выпущены пофикшенные версии виртуальной машины - 7.4c. ВМ 7.4c совместима с образами 7.х и рекомендуется к использованию.

ВМ доступна для следующих платформ: AIX 4.x; HPUX 11; Linux x86 (64), PPC, SPARC; MacOS (x86); IRIX; Solaris 2.x, 3.x; Solaris 64bit; WinCE ARM, x86; Win32.

Ярлыки:

среда, Сентябрь 13, 2006
[VW] super super

Несколько раз в форумах посвященным разным языкам я видел вопросы о наличии метода "super super", который позволил бы вызвать метод не в родительском классе, а у родителя родителя - "дедушки". Не будем рассказывать о том, что такое желание свидетельствует о необходимости рефакторинга, а остановимся на интересном техническом моменте озвученном Элиотом Мирандой в c.l.s.

Оказывается, что в VW есть 2 способа добится желаемого эфекта. Они, естественно "не документированные" и не должны использоваться в "обычном" коде. Первый способ - использование специализированной версии #perform::

perform: selector withArguments: anArray startingAbove: aBehavior
     "Отправляет получателю сообщение, начинает поиск метода 
      с суперкласса aBehavior. selector - селектор сообщения, 
      anArray - аргументы сообщения. Если такой селектор не найден, 
      то вызывает messageNotUnderstood:.
      aBehavior. Если aBehavior не (супер)класс объекта, или
      размер anArray не соответсвует количеству параметров искомого
      метода, то происходит ошибка примитива"

        <primitive: 515 errorCode: ec>
        ^self primitiveFailed 

Второй способ потребует изменения синтаксиса и, естественно, компилятора. Байткод VW для 'super' принимает в качестве параметра класс, с которого починается поиск метода. Например код

super printOn: aStream
обычно компилируется в
1 |44| push self
2 |10| push local 0
3 |1C| push {TheClassInWhichThisMethodIsDefined}
4 |F2 21| super send printOn:
Таким образом, используя этот байткод можно ввести, например, такой синтаксис:
self.ClassName foo
Обратите внимание, что, в отличии от примитива, байткод не проверяет, что такой класс, является суперклассом для текущего класса. Это обычно не проблема, так как в обычной ситуации в байткод проставляется класс, в котором метод и находится. Однако, если вы сами будете генерировать эти байт-коды и не обеспечите необходимой проверки. то ВМ упадёт. Для изменения компилятора можете воспользоваться подсказками из статьи "Путеводитель хич-хайкера по компилятору в Smalltalk-е".

Ярлыки:

Популярные статьи
:: Smalltalk?!
:: Почему Smalltalk?
:: Great Leap Forward from Java to Smalltalk

Последние сообщения
:: Smalltalk и Все-Все-Все: Белка-Рыба наносит ответн...
:: Smalltalk и Все-Все-Все
:: [Squeak] Новый сайт Squeakland
:: [Squeak] Squeak для iPhone
:: [Squeak] SqueakDBX
:: [Squeak] Monticello 2
:: [GST] GNU Smalltalk 3.0.4 release
:: MagLev - Gemstone for Ruby
:: [Squeak] JSqueak, Potato
:: [Squeak] WxSqueak 0.5

Архив
Предыдущие новости / Декабрь 2004 / Январь 2005 / Февраль 2005 / Март 2005 / Апрель 2005 / Май 2005 / Июнь 2005 / Июль 2005 / Август 2005 / Сентябрь 2005 / Октябрь 2005 / Ноябрь 2005 / Декабрь 2005 / Январь 2006 / Февраль 2006 / Март 2006 / Апрель 2006 / Май 2006 / Июнь 2006 / Июль 2006 / Сентябрь 2006 / Октябрь 2006 / Ноябрь 2006 / Декабрь 2006 / Январь 2007 / Февраль 2007 / Март 2007 / Апрель 2007 / Май 2007 / Июнь 2007 / Август 2007 / Сентябрь 2007 / Ноябрь 2007 / Январь 2008 / Март 2008 / Май 2008 / Июнь 2008 / Июль 2008 / Август 2008 / Сентябрь 2008

Atom Feed
Smalltalk по-русски


Powered by Blogger