Введение
VisualWorks (ранее ObjectWorks, впоследствии Cincom Smalltalk) — кроссплатформенная реализация языка Smalltalk. Она реализована как система разработки, основанная на образах, представляющих собой динамические коллекции программных объектов, каждый из которых содержится в системном образе. История VisualWorks восходит к первой реализации Smalltalk 80, созданной в Xerox PARC. В конце 1980-х годов группа разработчиков Smalltalk 80 выделилась из ParcPlace Systems для дальнейшей разработки Smalltalk 80 как коммерческого продукта. Этот коммерческий продукт первоначально назывался ObjectWorks, а затем VisualWorks. 31 августа 1999 года продукт VisualWorks был продан компании Cincom Systems. VisualWorks работает под управлением многих операционных систем, включая Windows, macOS, Linux и различные версии Unix. VisualWorks поддерживает кроссплатформенные проекты разработки благодаря встроенным многоплатформенным возможностям. Например, приложение с графическим пользовательским интерфейсом (GUI) необходимо разработать только один раз, после чего его можно переключить на различные стили виджетов. Приложения VisualWorks могут работать на всех поддерживаемых платформах без каких-либо изменений. Зависимость от платформы имеет только виртуальная машина.
Преимущества и недостатки
VisualWorks обеспечивает очень быструю разработку приложений, поскольку отдельные методы могут компилироваться даже во время работы разрабатываемой программы. Компиляция метода Smalltalk обычно занимает менее секунды, в то время как компиляция проекта на C++ часто занимает минуту или больше и не может быть выполнена легко без перезапуска процесса. Различные средства просмотра кода в VisualWorks помогают разработчику быстро находить интересующий класс или метод. Производительность и пропускная способность программ на Smalltalk могут приближаться к производительности статических языков, таких как C++, Fortran, Pascal или Ada, благодаря JIT-компилятору, генерирующему машинный код, оптимизированный для часто используемых типов данных, однако числовые вычисления и программы, требующие точного размещения памяти, могут по-прежнему выполняться медленнее. Поколенческий сборщик мусора минимизирует большинство пауз при сборке, но может быть непригоден для жестких требований к реальному времени и детерминированности, поскольку возможны полные циклы сборки мусора, которые могут приостанавливать работу системы на десятки или сотни миллисекунд, пропорционально размеру кучи. Тем не менее, сбор мусора предпочтительнее ручного управления памятью в объектно-ориентированном языке, и программист может предпринимать различные действия для управления временем и продолжительностью сборки мусора; поэтому в большинстве случаев сбор мусора не вызывает опасений.
Установка
Все компоненты системы VisualWorks устанавливаются в Windows 7 или более поздней версии в каталог Program Files\Cincom, имя которого соответствует номеру версии установленной системы, например, vw7.5nc. Этот каталог содержит несколько подкаталогов, включая bin, doc, examples и множество других.
Кнопки мыши и меню
VisualWorks предполагает использование трехкнопочной мыши, где кнопки имеют логические имена <Select>, <Operate> и <Window>. Однако, можно использовать мышь с одной или двумя кнопками в сочетании с клавишами Ctrl, Option или Command. <Select> выделяет любой объект интерфейса. <Operate> вызывает меню операций для текущего представления или выделенного объекта. <Window> выполняет действия (перемещение, закрытие) с окнами VisualWorks.
Формат файла
File in format – оригинальный формат Smalltalk для представления классов в виде текстовых файлов. Эти файлы можно "подключить" к среде разработки VisualWorks для создания классов, отсутствующих в образе Smalltalk. Каждый файл в документе содержит простое текстовое представление класса или классов Smalltalk в текстовом файле с расширением st. Этот формат всё ещё поддерживается в VisualWorks, но уступил место механизму Parcels. Примеры файлов в этом формате находятся в подкаталоге examples.
Управляющий посылкой
Управляющий посылками используется для загрузки и выгрузки всех посылок по пути посылок. В представлении "Предложения" перечислены категории, содержащие ключевые дополнительные посылки. Выбрав категорию, вы получаете список рекомендуемых посылок. Например, UI Painter находится в категории Essentials. Также имеется представление в виде дерева каталогов пути посылок для поиска посылок вне представления "Предложения". Представление "Загруженные" содержит список всех посылок, уже находящихся в образе. Просматривать можно только загруженные посылки. Поддерживаемая посылка продукта VisualWorks представлена значком в виде посылки. Посылки от других поставщиков выглядят как хозяйственная сумка. Это может быть очень полезно из-за сложной истории разработки классов Smalltalk. Например, значок посылки указывает, что гипертекстовая система Arbor теперь поддерживается VisualWorks. Загружать и выгружать посылки можно также программно из приложения.
Пакеты
Когда посылка загружается, она организуется как пакет или набор пакетов. При поиске кода, загруженного из посылки, можно найти соответствующий набор или пакет с тем же именем в Системном браузере. Пакеты – это категории, которые организуют классы в связанные группы в соответствии с компонентами. Пакеты могут быть сгруппированы в наборы. Пакеты и наборы могут быть сохранены (опубликованы) как посылки или сохранены в репозитории исходного кода.
Загрузка библиотек кода
Первоначальный образ im image содержит минимальные средства разработки, используя базовые библиотеки классов. Дополнительные библиотеки классов предоставляются VisualWorks или сторонними разработчиками, как правило, в виде файлов пакетов. В большинстве сред разработки, отличных от Smalltalk, библиотеки кода импортируются во время компиляции с помощью команды include. В Smalltalk библиотеки кода загружаются в работающую систему и становятся её частью. Например, UI Painter загружается как пакет.
Запуск VisualWorks
Запускник VisualWorks, обычно называемый просто "Запуск", является центром управления системой VisualWorks. Он служит отправной точкой для всех основных инструментов.
Основы мелкой болтовни
Smalltalk — это чистый объектно-ориентированный язык программирования, что означает, что единственный способ заставить что-либо произойти в Smalltalk — отправлять сообщения объектам. VisualWorks использует язык Smalltalk 80 в качестве стандарта, но поставляется со своим собственным набором классов и методов. Поэтому даже базовые классы, такие как Object, отличаются от классов в других средах разработки Smalltalk 80, таких как Squeak и Dolphin Smalltalk. Приведенные здесь примеры работают в VisualWorks Smalltalk, но могут не работать в других реализациях Smalltalk, поскольку классы и/или методы могут различаться.
Просмотр и редактирование кода Smalltalk
В традиционных объектно-ориентированных средах программирования разработчик напрямую редактирует текстовый файл исходного кода, содержащий определения классов и методов. В VisualWorks, как и во всех системах Smalltalk, всё является исполняемым объектом, включая классы. При изучении классов Smalltalk разработчик получает определения из исполняемых объектов. Основным браузером/редактором в VisualWorks является Системный браузер. Он позволяет разработчику просматривать классы либо в общей иерархии классов, либо по их пакетам. Запуск осуществляется из VisualWorks Launcher. Панели списков в Системном браузере позволяют разработчикам переходить к определениям классов и методов, которые затем можно просматривать или редактировать в представлении кода, либо изменять, добавляя новые определения.
Недекларированные переменные
Когда переменная удаляется, пока на нее все еще существуют ссылки, или загружается через Parcel, но не была объявлена, её имя попадает в пространство имен "Необъявленные имена". Необъявленные переменные могут приводить к определенным ошибкам в программе.
Учебные пособия
Часто выпускаются руководства для Cincom Smalltalk, и существует руководство по Seaside.