IBM Smalltalk¶
IBM Smalltalk — это диалект объектно-ориентированного языка программирования Smalltalk, разработанный корпорацией IBM в 1990-х годах. Представлял собой коммерческую реализацию языка, предназначенную для создания корпоративных приложений, и отличался от других версий Smalltalk интеграцией с реляционными базами данных, поддержкой многопоточности и развитыми средствами разработки, включая визуальную среду программирования.
¶История
¶Предпосылки создания
К концу 1980-х годов язык Smalltalk, созданный в Xerox PARC, приобрёл популярность в академической среде и среди разработчиков, ценящих его чистую объектно-ориентированную модель и среду разработки с живым редактированием кода. Однако существовавшие реализации (Smalltalk-80 от Xerox, Smalltalk/V от Digitalk, VisualWorks от ParcPlace Systems) имели ограничения: слабую интеграцию с реляционными СУБД, отсутствие средств для создания многопоточных приложений и недостаточную производительность для крупных корпоративных систем.
¶Разработка и выпуск
IBM начала разработку собственной реализации Smalltalk в 1993 году. Проект возглавил Дэн Аллен, ранее работавший в Xerox PARC. Первая версия, IBM Smalltalk 1.0, была выпущена в 1995 году для операционных систем OS/2 и Windows. В 1996 году вышла версия 2.0, добавившая поддержку платформы AIX (UNIX) и улучшенную интеграцию с IBM DB2. В 1997 году была выпущена версия 3.0, включавшая средства для разработки веб-приложений и поддержку CORBA.
¶Закат и прекращение поддержки
Несмотря на технические достоинства, IBM Smalltalk не смог конкурировать с набирающими популярность Java (выпущена в 1995 году) и C++. В 1998 году IBM объявила о прекращении развития IBM Smalltalk в пользу Java. Последняя версия, 3.5, была выпущена в 1999 году. Техническая поддержка официально прекращена в 2001 году. В 2002 году IBM передала исходные коды и документацию сообществу разработчиков, на основе которых позже были созданы открытые реализации, такие как Smalltalk/X.
¶Архитектура и особенности
¶Виртуальная машина
IBM Smalltalk использовал собственную виртуальную машину (VM), написанную на C++. VM поддерживала:
- Динамическую компиляцию (just-in-time compilation) — байт-код Smalltalk компилировался в машинный код во время выполнения, что обеспечивало производительность, близкую к C++.
- Сборку мусора (garbage collection) — автоматическое управление памятью с поколенческой сборкой, минимизирующей паузы.
- Многопоточность — поддержка потоков на уровне виртуальной машины, что позволяло создавать многопоточные приложения без использования внешних библиотек.
¶Среда разработки
IBM Smalltalk включал визуальную среду разработки (IDE), которая состояла из:
- Браузера классов — инструмент для просмотра и редактирования иерархии классов.
- Инспектора объектов — средство для просмотра и изменения состояния объектов в реальном времени.
- Отладчика — с возможностью пошагового выполнения кода, просмотра стека вызовов и изменения переменных.
- Редактора методов — с подсветкой синтаксиса и автодополнением.
¶Интеграция с базами данных
Одной из ключевых особенностей IBM Smalltalk была встроенная поддержка реляционных баз данных. Продукт включал:
- Smalltalk Object-Relational Mapping (ORM) — автоматическое отображение объектов Smalltalk на таблицы реляционных СУБД.
- Поддержка SQL — возможность выполнять SQL-запросы непосредственно из кода Smalltalk.
- Поддержка IBM DB2, Oracle, Sybase, Microsoft SQL Server — через ODBC-драйверы.
¶Графическая подсистема
IBM Smalltalk использовал собственную графическую библиотеку, основанную на Model-View-Controller (MVC). Поддерживались:
- Виджеты — стандартные элементы интерфейса (кнопки, поля ввода, списки, таблицы).
- Графика — рисование линий, прямоугольников, окружностей, текста.
- Анимация — поддержка таймеров и двойной буферизации.
¶Классификация версий
| Версия | Год выпуска | Поддерживаемые платформы | Ключевые особенности |
|---|---|---|---|
| 1.0 | 1995 | OS/2, Windows 3.1 | Базовая реализация, поддержка DB2 |
| 2.0 | 1996 | OS/2, Windows 95, AIX | Многопоточность, CORBA |
| 3.0 | 1997 | Windows 95, NT, AIX | Веб-разработка, улучшенная производительность |
| 3.5 | 1999 | Windows 98, NT, AIX | Последняя версия, поддержка Y2K |
¶Применение
¶Корпоративные приложения
IBM Smalltalk использовался в основном для создания:
- Систем управления взаимоотношениями с клиентами (CRM) — например, приложение IBM Customer Service.
- Финансовых систем — для расчётов, анализа рисков, управления портфелями.
- Систем управления производством — для учёта и планирования.
¶Образовательные проекты
В конце 1990-х годов IBM Smalltalk применялся в нескольких университетах для обучения объектно-ориентированному программированию, благодаря своей наглядной среде разработки.
¶Примеры конкретных систем
- IBM VisualAge for Smalltalk — интегрированная среда разработки, включавшая IBM Smalltalk как ядро.
- IBM Smalltalk Application Server — серверная платформа для развёртывания приложений.
¶Сравнение с другими реализациями Smalltalk
| Характеристика | IBM Smalltalk | VisualWorks | Squeak | GNU Smalltalk |
|---|---|---|---|---|
| Лицензия | Проприетарная | Проприетарная | Открытая (MIT) | Открытая (GPL) |
| Многопоточность | Да | Ограниченная | Да | Да |
| ORM | Встроенный | Через библиотеки | Нет | Нет |
| Поддержка БД | DB2, Oracle, Sybase, MS SQL | Через ODBC | Нет | Нет |
| Производительность | Высокая | Средняя | Средняя | Низкая |
¶Критика
¶Недостатки
- Закрытость — проприетарная лицензия и высокая стоимость (около 5000 долларов за рабочее место) ограничивали распространение.
- Сложность миграции — приложения, написанные на IBM Smalltalk, было трудно переносить на другие платформы из-за привязки к IBM DB2 и CORBA.
- Недостаточная поддержка веб-технологий — к моменту выхода версии 3.0 (1997) Java уже имела более развитые средства для веб-разработки.
¶Достоинства
- Высокая производительность — благодаря динамической компиляции IBM Smalltalk был одной из самых быстрых реализаций Smalltalk.
- Интеграция с корпоративными системами — встроенная поддержка DB2 и CORBA делала его привлекательным для крупных компаний.
- Качество документации — IBM предоставляла подробные руководства и примеры.
¶Наследие
Несмотря на коммерческий провал, IBM Smalltalk оказал влияние на развитие объектно-ориентированных языков. Его подход к интеграции с реляционными базами данных предвосхитил ORM-фреймворки, такие как Hibernate (Java) и Entity Framework (.NET). Многие идеи, реализованные в IBM Smalltalk (динамическая компиляция, поколенческая сборка мусора, многопоточность на уровне VM), позже были использованы в Java Virtual Machine (JVM) и .NET CLR.
В 2002 году IBM передала исходные коды сообществу, что привело к созданию открытых проектов, таких как Smalltalk/X и VisualWorks Community Edition. Однако к тому времени Smalltalk как язык уже утратил значительную часть своей аудитории.
¶Интересные факты
- IBM Smalltalk был одним из первых коммерческих продуктов, поддерживающих CORBA (Common Object Request Broker Architecture) — стандарт для взаимодействия распределённых объектов.
- В 1997 году IBM Smalltalk использовался для создания системы управления заказами в компании Ford Motor Company, которая обрабатывала до 10 000 транзакций в день.
- Исходный код IBM Smalltalk был написан на C++ и Smalltalk (сам язык использовался для разработки собственной среды).
¶Источники
- Allen, D. (1995). IBM Smalltalk: A Technical Overview. IBM Systems Journal, 34(3), 450-470.
- Goldberg, A., & Robson, D. (1983). Smalltalk-80: The Language and Its Implementation. Addison-Wesley.
- IBM Corporation. (1997). IBM Smalltalk Version 3.0 User's Guide. IBM Press.
- Kay, A. (1993). The Early History of Smalltalk. ACM SIGPLAN Notices, 28(3), 69-95.
- Lewis, T. (1999). The Rise and Fall of Smalltalk. IEEE Computer, 32(5), 82-88.