Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет ringill ([info]ringill)
@ 2006-10-24 19:41:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
VisualWorks Smalltalk
Мы с коллегой недавно использовали
Smalltalk для разработки небольшого приложения.
Вкратце, Smalltalk -- это (a) язык программирования и (б) среда разработки с
компилятором и отладчиком, работающая на виртуальной машине. Среда написана на Smalltalk, за исключением небольшого количества
примитивных вызовов.


Есть немало реализаций среды Smalltalk. Наиболее известные из них --
Dolphin,
Cincom
(VisualWorks)
,
MT,
Squeak.
Мы выбрали VisualWorks, по ряду причин:

  • Быстрая виртуальная машина;

  • Полнофункциональная версия бесплатна для некоммерческого использования (при этом коммерческая лицензия довольно «драконовская»);

  • Есть обёртка для Oracle (нет больше ни в одной реализации);

  • Для Windows поддерживаются механизмы внешних вызовов из динамических библиотек (DLL) на C, объектов COM Automation и .NET-сборок (assemblies);


VisualWorks поддерживает

практически все
современные платформы, однако мы вели разработку только под Windows, с использованием COM.



Общие впечатления от процесса разработки такие:

  • [+] Очень простой и выразительный язык. Термин «объектно-ориентированный» к нему подходит в значительно большей степени, чем к «раскрученным» C++, Java, C# и даже Python.

  • [+] Среда, в сравнении с теми же Visual Studio и Eclipse работает очень шустро. Все средства обзора и рефакторинга классов в наличии.

  • [+] Очень удобные отладчик и инспектор объектов. Особенно радует то,
    что адресное пространство у разрабатываемой программы общее со
    средой (при необходимости, саму среду можно модифицировать). С изменением
    кода «на лету» в процессе отладки нет никаких проблем.

  • [-] Все окна среды существуют не внутри «главного» окна,
    а сами по себе. В интерфейсе Windows нет виртуальных рабочих столов, и
    когда количество окон VisualWorks превышает 5, становится неудобно; у окон даже
    иконки одинаковые. Update: В репозитории Cincom есть пакет Windows Icons, который
    снабжает окна разных типов разными иконками.

  • [+] Есть удобное средство для проектировния GUI; сам язык как нельзя лучше подходит для программирования интерфейсов.

  • [-] Элементы интерфейса (widgets) -- собственные, а не «родные» системные. На последние
    планируется переход в будущих версиях.

  • [-] Поддержка COM неполна; например, нет возможности вставить в интерфейс OLE control. Есть библиотека SmallCom немецкой фирмы, но её бесплатная версия имеет
    чисто демонстрационную функциональность, и та у нас не заработала. Помимо отсутствия OLE controls, есть другое неприятное упущение.

  • [-] Поддержка Oracle неполна; авторы недоделали интерфейс для временных больших объектов (temporary LOB-s). Нам пришлось писать его самим.

  • [-] Поддержка .NET вообще «ниже плинтуса» -- ей не удалось воспользоваться, хотя мы пытались.

  • [+] Понравилось то, что вся разрабатываемая программа вместе со средой разработки и её настройками содержится в едином файле образа (image); это очень упрощает передачу проекта со всей инфраструктурой между
    машинами. С исходными текстами у VisualWorks своя кухня, которая, впрочем, не очень нарушает принцип. Для параллельной разработки в VisualWorks есть собственная система контроля версий под названием SToRE; нам она не потребовалась.

  • [-] Виртуальная машина не совсем стабильна; при аварийном закрытии теряется всё, что делалось
    со времени последнего сохранения образа. Сама по себе она «падает» редко, но с использованием
    низкоуровневых библиотек типа COM это становится проблемой, т.к. эти библиотеки работают в адресном пространстве среды.
    Update: исходники всё же можно восстановить через Tools->Change List, импортировав файл «.cha».

  • [+] Готовое приложение можно выпустить в виде монолитного исполняемого файла (single executable).
    Для этого сначала надо с помощью утилиты RuntimePackager сделать образ (runtime image), в котором будет только та часть среды, которая нужна для запуска приложения, а затем с помощью сторонней утилиты Resource Hacker запаковать
    образ и виртуальную машину VisualWorks в исполняемый файл.



(Добавить комментарий)


[info]eugenius_nsk@lj
2006-10-25 02:19 (ссылка)
[-] Все окна среды существуют не внутри «главного» окна, а сами по себе. В интерфейсе Windows нет виртуальных рабочих столов, и когда количество окон VisualWorks превышает 5, становится неудобно; у окон даже иконки одинаковые.

1) Я бы не сказал, что отдельные окна - это явный недостаток. С другой стороны, это и не "явное достоинство". Я бы просто назвал это особенностью реализации. Но хочу сказать, что лично для меня отдельные окна удобнее, чем подокна (как это сделано, например, в Squeak).
2) Существует пакет (кажется, он называется "Window Icons"), который изменяет иконки у разных окон VW.


[-] Виртуальная машина не совсем стабильна; при аварийном закрытии теряется всё, что делалось со времени последнего сохранения образа. Сама по себе она «падает» редко, но с использованием низкоуровневых библиотек типа COM это становится проблемой, т.к. эти библиотеки работают в адресном пространстве среды.

Все изменения постоянно сохраняются в *.cha-файле (changes), причём, кажется, этот файл можно просто импортировать и все сделанные изменения восстановятся.

(Ответить) (Ветвь дискуссии)


[info]ringill@lj
2006-10-25 06:52 (ссылка)
Существует пакет (кажется, он называется "Window Icons"), который изменяет иконки у разных окон VW.

Это в статье на smalltalk.ru (http://www.smalltalk.ru/articles/vw-addons.html) его назвали «Windows Icons». В действительности он называется ToolIcons (http://www.cincomsmalltalk.com/CincomSmalltalkWiki/ToolIcons) (или сменил название, не знаю).
Только вот, загрузить этот пакет из публичного репозитория Cincom мне не удалось. При попытке соединения говорит «Broker: disconnected from DB» два раза, а потом вываливает exception.

Все изменения постоянно сохраняются в *.cha-файле (changes), причём, кажется, этот файл можно просто импортировать и все сделанные изменения восстановятся.

Да, действительно так, спасибо. Tools->Change List мы ещё не использовали, а надо было.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]eugenius_nsk@lj
2006-10-25 07:18 (ссылка)
> Windows Icons / ToolIcons
Как оказалось, существуют пакеты и под таким и под таким названием - причём с одинаковыми иконками :-) Причём ToolIcons имеет более раннюю дату публикации, но больший номер версии (0.0.0.9). У меня и тот и другой пакеты нормально загрузились на свежий image.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]ringill@lj
2006-10-30 11:50 (ссылка)
На свежий у меня тоже загрузились, да.
А в Windows Icons есть иконка для отладчика, которой в ToolIcons нет.

(Ответить) (Уровень выше)