Щербаков С.В.
Стремительный рост возможностей современных персональных компьютеров сопровождается рядом противоречивых тенденций в развитии и освоении создаваемого для них программного обеспечения.
РЎ РѕРґРЅРѕР№ стороны, возросшие возможности РџРР’Рњ обеспечивают большие удобства конечному пользователю персонального компьютера. РЎ РґСЂСѓРіРѕР№ стороны, прогрессивно возрастающая сложность систем Рё средств программирования является причиной увеличения стоимости создаваемого программного продукта, росту числа программистов Рё С‚.Рґ.
Например, возникновение объектной парадигмы, призванной облегчить и унифицировать деятельность программиста, привело к появлению обширных и конкурирующих между собой библиотек, как правило, ориентированных на конкретную операционную систему и на конкретный персональный компьютер.
Ответной реакцией РЅР° вышеописанную ситуацию является возрастающая популярность универсального языка программирования 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.
Смолток основан всего на четырех понятиях (объект, класс, сообщение и наследование) и представляет собой систему иерархически организованных объектов и их классов. Управление объектами осуществляется с помощью адресованных к ним сообщений. Приложение в Смолтоке представляет собой класс, в свою очередь, являющийся подклассом какого-либо родового класса [3].
Неотъемлемыми элементами интерфейса системы являются рабочие окна и браусеры. Отдельные директивы или фрагменты программного кода выполняются из любого текстового окна или текстовой рамки браусера. Браусер классов предоставляет возможности выбора классов и сообщений к ним, а также редактирования протоколов классов системы.
Принципиальной особенностью Смолтока является его открытость. За исключением машиннозависимых примитив, Смолток написан на самом себе. В частности, проект 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.
Для подготовки данной работы были использованы материалы с сайта http://www.bashedu.ru