Щербаков С.В.
Стремительный рост возможностей современных персональных компьютеров сопровождается рядом противоречивых тенденций в развитии и освоении создаваемого для них программного обеспечения.
С одной стороны, возросшие возможности ПЭВМ обеспечивают большие удобства конечному пользователю персонального компьютера. С другой стороны, прогрессивно возрастающая сложность систем и средств программирования является причиной увеличения стоимости создаваемого программного продукта, росту числа программистов и т.д.
Например, возникновение объектной парадигмы, призванной облегчить и унифицировать деятельность программиста, привело к появлению обширных и конкурирующих между собой библиотек, как правило, ориентированных на конкретную операционную систему и на конкретный персональный компьютер.
Ответной реакцией на вышеописанную ситуацию является возрастающая популярность универсального языка программирования JAVA, ориентированного на создание Интернет-приложений.
В этой ситуации возникает проблема поиска такой системы программирования, которая удовлетворяла бы следующим условиям:
- концептуальная простота и ясность;
- переносимость;
- наличие богатой библиотеки объектов и развитые возможности наследования;
- приемлемая стоимость (для нашей страны проблема стоимости программного обеспечения весьма специфична).
Одним из кандидатов на такую роль является система программирования Smalltalk.
Как известно, язык программирования Smalltalk - одна из первых объектно-ориентированных систем программирования в мире [1, 2]. Созданный в рамках проекта PARC и основанный на новаторских для того времени идеях (многооконный интерфейс, широкое использование растровой графики, браусер классов и т.д.), он не получил широкого распространения, так как требовал значительных по меркам прошлого машинных ресурсов.
Принципы, заложенные в основу первой коммерческой реализации Смолтока – Smalltalk Object-Works, – стали общепринятыми. Так, интерфейс системы Смолток был положен в основу операционной системы персонального компьютера Macintosch и затем Windows, а концепция ООП стала ведущей при разработке современных средств программирования. Так, любопытно отметить, что одним из аргументов в судебном процессе фирмы Apple против корпорации Microsoft по вопросу о плагиате в процессе разработки интерфейса системы Windows являлось указание на исторический приоритет интерфейса системы Смолток.
Хотя Смолток, по замыслу его первого идеолога и разработчика А.Кэя, должен был быть доступным даже детям, он оказался достаточно сложным. Дело в том, что Смолток, будучи чистой объектно-ориентированной системой, представляет собой обширную библиотеку объектов и их классов в отличие от самых популярных систем типа С++ и Delphi, являющихся объектно-ориентированными расширениями классических алгоритмических языков – Си и Паскаль.
Для программиста переход, скажем, с обычного Паскаля на Delphi происходит относительно легко, так как первое время возможно использование традиционных сугубо алгоритмических средств. Смолток для создания даже скромного приложения требует знания десятка классов. Другая немаловажная причина малой распространенности этого языка в нашей стране – высокая стоимость. Ведущие разработчики Смолтока – корпорации ObjectShare и IBM - поделили между собой рынок коммерческих реализаций, цена которых порою превышает тысячу долларов.
Последнее десятилетие XX века – период неуклонного распространения Смолтока по всему миру. Появляется ANSI-стандарт языка Смолток, к концу этого тысячелетия насчитывается около десятка версий Смолтока.
В 1997 г. в трудах OOPSLA было опубликовано описание новой системы программирования – Squeak Smalltalk. По замыслу авторов проекта, а в их число входят создатели Смолтока Д.Инголлс и А.Кей, система Squeak Smalltalk распространяется свободно по сети Интернет и предназначена для пропаганды Смолтока и конкуренции с языком Java.
Создатели проекта Squeak ушли назад в том смысле, что при разработке системы основывались на неписаном стандарте – Смолток-80, впервые описанном в классической монографии, так называемой “Голубой книге” [2]. Так как Squeak Smalltalk распространяется без официальной документации, то “Голубая книга” оказалась стандартом де-факто для ее многочисленных пользователей.
В то же время разработчики системы указывают на ряд отличительных свойств разрабатываемой ими системы, а именно: независимость от платформы, мультимедийная поддержка, возможность разработки Интернет-приложений, автоматическая генерация программного Си-кода, эффективная сборка мусора и ряд других.
Как и другие реализации Смолтока, Squeak Smalltalk состоит из машиннонезависимого виртуального образа (VI) и виртуальной машины (VM), представляющей собой интерпретатор с набором машинно-зависимых примитив. Все изменения, вносимые в систему, хранятся в виртуальном образе – файле текстового формата. Squeak быстро развивается, так как является продуктом коллективной разработки международного сообщества “Squeak community”. Организационный центр сообщества Squeak находится по адресу: http://www. squeak. org.
Смолток основан всего на четырех понятиях (объект, класс, сообщение и наследование) и представляет собой систему иерархически организованных объектов и их классов. Управление объектами осуществляется с помощью адресованных к ним сообщений. Приложение в Смолтоке представляет собой класс, в свою очередь, являющийся подклассо
Неотъемлемыми элементами интерфейса системы являются рабочие окна и браусеры. Отдельные директивы или фрагменты программного кода выполняются из любого текстового окна или текстовой рамки браусера. Браусер классов предоставляет возможности выбора классов и сообщений к ним, а также редактирования протоколов классов системы.
Принципиальной особенностью Смолтока является его открытость. За исключением машиннозависимых примитив, Смолток написан на самом себе. В частности, проект Squeak открыт для коллективной разработки и к участию в нем приглашаются все желающие.
Следует отметить, что основой построения программного интерфейса в классическом Смолтоке-80 является так называемая MVC-парадигма. Суть этой парадигмы состоит в разделении программируемого приложения на три основных компонента: модель, или прикладная задача, в которой реализованы алгоритмы обработки информации; вид, или интерактивная многооконная система, представляющая собой интерфейс приложения; контроллер, выполняющий функции посредника между пользователем и моделью [4, 5].
Помимо MVC-парадигмы в системе Squeak используется иерархия классов Morphic, заимствованная из языка Self и предложенная одним из основных разработчиков системы Джоном Малони. Экземпляры класса Morph являются визуальными рамками прямоугольной формы, на которых размещаются элементы интерфейса. Они способны к выводу графической и текстовой информации и к анимации.
Браусер классов – не единственный способ разработки приложений в системе Squeak Smalltalk. В настоящее время идет активная разработка среды визуального программирования. Так, если щелкнуть левой кнопкой мыши при нажатой клавише Alt на окно приложения, то вызывается так называемое гало - меню среды визуального программирования системы Squeak Smalltalk.
Одним из достоинств системы Squeak Smalltalk являются возможности перенастройки системы и поддержка языка Си. При использовании компьютера со скромными ресурсами для повышения быстродействия приложения существует возможность перевода программного кода на язык Си с последующей компиляцией с помощью транслятора Си.
Объем памяти, необходимый для функционирования системы, существенно уменьшается (вплоть до 2 мегабайт), правда, за счет уменьшения возможностей системы.
Воплощая в жизнь идеи А.Кэя и устраняя недостатки системы Смолток-80, разработчики Squeak Smalltalk реализовали процедуры обработки звуковой и образной информации. Так, классы BitBlt и WarpBlt обеспечивают операции по вращению и изменению размеров графических объектов. Обработка звука в реальном времени основана на быстрых преобразованиях Фурье (классы FFT и Abstract Sound). Кроме того, в процессе конкуренции с системой Java авторы Squeak предусмотрели поддержку HTTP/FTP протоколов сети Интернет и TCP/IP протоколов локальных сетей.
Система программирования Смолток обладает большими возможностями и является одной из самых распространенных в США. Ряд экспертов считают, что время, затрачиваемое на разработку относительно объемного приложения при использовании Смолтока в несколько раз меньше, чем при использовании других языков программирования. При этом разрабатываемый программный код оказывается существенно короче [2].
Анализ программного обеспечения, созданного на Смолтоке, показывает преимущества последнего при создании больших систем, к которым предъявляются особые требования в плане их надежности и устойчивости. Например, на Смолтоке написана система управления государственной почтовой службы США, а Пентагон анонсировал компьютерную поддержку управления боевыми действиями вооруженных сил США (JWARS) с помощью системы IBM Smalltalk [6].
Зарубежный опыт обучения Смолтока показывает, что темп усвоения этой системы начинающими программистами несколько уступает другим популярным системам программирования. Насколько известно автору, в России опыт преподавания Смолтока есть только в двух вузах - в Московском и Донском университетах. Студенты Донского университета (Ростов-на-Дону) поддерживают WEB-страницу, посвященную Смолтоку.
Можно наметить следующие перспективы применения системы Squeak Smalltalk в нашей стране: при обучении объектно-ориентированному программированию, для создания обучающих и контролирующих программ, для разработки мультимедийных приложений.
Конечно, далеко не ясно, какие системы программирования займут лидирующее положение в следующем столетии, но несомненно, что Смолток вообще, а Squeak Smalltalk, в частности, представляют немалый интерес.
Немаловажным обстоятельством, благоприятствующим использованию системы Squeak Smalltalk и подобных ей, являются проблемы этического характера, стоящие перед государственными образовательными учреждениями и связанные с использованием лицензированного программного обеспечения.
Список литературы
Буч Г. Объектно-ориентированное проектирование с примерами применения. М., 1992.
Иванов Г.А., Кремер Ю.Е. Язык Smalltalk: концепция объектно-ориентированного программирования // КомпьютерПресс. 1992. № 4. С. 21-31.
Goldberg A., Robson D. Smalltalk-80: The Language and Its Implementation. MA., 1983.
Mй vel A., Guй guen T. Smalltalk-80. Hamshire-L., 1987.
Goldberg A. Smalltalk-80: The Interactive Programming Environment. MA., 1984.
Иванов Г.А. Разработка приложений IBM Visual Age for Smalltalk для разработки корпоративного ПО // PCWEEK (Russian Edition). 1999. № 10. С. 17-18.