Ремонт принтеров, сканнеров, факсов и остальной офисной техники


назад Оглавление вперед




[0]

Незнакомый Smalltalk

Ю.А. Кирютенко и В.А. Савельев

Введение к разговору о языке Smalltalk

В качестве первого эпиграфа - типичный разговор российских программистов:

1-ый программист: "Что ты знаешь о языке Smalltalk?" 2-ой программист: "Ничего, я с ним не знаком!"

В ходе развития методов создания совершенного программного продукта постепенно возникают новые методологии его построения, которые значительно увеличивают производительность труда программиста, облегчают и дисциплинируют производственные процессы проектирования, модернизации и сопровождения больших прикладных программ. Среди них выделяется такое ныне популярное направление, как объектно-ориентированная методология программирования.

Особую роль в популярности этого подхода сыграла его тесная связь с интерфейсами пользователя (особенно графическими), а также включение элементов этой идеологии в популярные сегодня (на персональных компьютерах фирмы IBM) языки программирования C++ и Pascal with Objects фирмы Borland (эти языки некоторые авторы называют "гибридными"). Распространение мощных и доступных по цене персональных компьютеров дало техническую основу для их широкого распространения и применения в программисткой практике.

За последние пятилетие в США, Японии и Западной Европе значительно вырос интерес к «чистому объектно-ориентированному языку программирования -языку Smalltalk. Вероятно самое первое издание, посвященное этому языку - августовский выпуск журнала "BYTE" в 1981 году, на обложке которого впервые появился воздушный шар с именем Smalltalk на борту, резво летящий от уединенного острова "общих исследований" к высотам популярности! Сегодня, число ежегодно издающихся книг по объектно-ориентированной методологии программирования и языку Smalltalk там переваливает за сотню. Только в России и теоретические исследования и программистская практика, связанные с этим направлением, широким кругам программистов практически не известны. Книги на русском языке, хотя бы едва-едва затрагивающие эти вопросы, можно пересчитать на пальцах одной руки.

В море англоязычных книг, посвященных объектно-ориентированной методологии программирования и языку Smalltalk, выделяется книга, первое издание которой получило "литературный псевдоним" - Голубая Книга (Blue Book). В нашей статье речь пойдет о втором издании этой книги, книги написанной членами группы разработчиков системы Smalltalk-80 Адель Голдберг (Adele Goldberg, Pare Place System) и Дэвидом Робсоном (David Robson, Xerox PARC) "Smalltalk-80: The language, ed.2, Addison-Wesley, 1989", которую можно смело назвать "классикой программистской литературы". Сегодня одна из самых цитируемых книг в данной области, она, несмотря на прошедшие годы, до сих пор все еще остается, на наш взгляд, лучшей книгой об объектно-ориентированной парадигме программирова-

Copyright © Ю.А. Кирютенко, В.А. Савельев, 1997. "Смолток в России" URL: http: www.math.rsu.ru/smalltalk/


ния, о ее чистой и полной реализации в языке программирования Smalltalk-80 и о структуре и возможностях самого языка программирования.

Книга уникальна уже потому, что предлагает исчерпывающее описание объектно-ориентированной идеологии программирования (часть 1), содержит подробное описание реализации этих идей в объектно-ориентированном языке программирования Smalltalk-80 (часть 2), дает примеры его эффективного использования при создании объектов, имитирующих поведение моделей, управляемых событиями (часть 3). По своему содержанию книга интересна и для тех, кто хотел бы познакомиться только с объектно-ориентированной парадигмой программирования, и для тех, кто использует эту идеологию, независимо от того каким языком программирования - "чистым" или "нечистым" - он пользуется, и для тех, кто сегодня читает лекции и ведет практические занятия по современным языкам программирования в вузе, лицее или школе. Книга, при соответствующем уровне математической и программистской культуры, доступна учащимся старших классов средней школы и студентам младших курсов вуза, за исключением, может быть, третьей части, для понимания которой необходимо прослушать хотя бы небольшой курс по основам теории вероятности и математической статистики.

Но книга практически недоступна! Англоязычное издание, или перевод на ряд европейских языков, в России не купить и в библиотеках не найти. Ее перевод на русский язык, сделанный авторами этой статьи, которые по ходу перевода, разработали и читают курсы лекций по данной тематике на механико-математическом факультете Ростовского государственного университета, более года не находит в России издателя. Цель данной публикации - рассказать о том, что у нас пока мало известно, найти единомышленников, и, очень хочется надеяться, найти спонсоров и издателя Голубой Книги (пока почти что сказки) программирования!

Попытаемся, перелистывая страницы Голубой Книги, рассказать что же такое Smalltalk, и, одновременно, рассказать немного о содержании самой книги.

Smalltalk: Идеология системы

Книга - это зеркало. Если в него смотрится обезьяна, то из него не может выглянуть лик апостола.

К. Лихтенберг

Система Smalltalk-80, начало создания которой формой Xerox из городка Пало Альто, Калифорния, США, восходит к 1970 году, основывается на идеях алгоритмического языка Simula (Симула), и на идеях Элана Кея (Alan Kay), который предложил создать однородную объектно-ориентированную систему программирования, основанную на малом числе взаимосвязанных понятий. Новые и основные понятия - это прежде всего пять слов, составляющие словарь объектно-ориентированного языка программирования: объект, сообщение, класс, экземпляр, метод.

Созданный на этой идеологии в начале восьмидесятых Smalltalk-80 характеризуется следующими чертами:

•Smalltalk-80 - это язык программирования, чисто реализующий новую парадигму программирования и служащий основой для создания мощной информационной системы, в которой пользователь может хранить, получать и обрабатывать информацию так, что система развивается и расширяется вместе с развитием представлений и требований пользователя к системе.

•Smalltalk-80 - это язык, основанный на небольшом числе понятий, которые мож-


но быстро объяснить и продемонстрировать различные способы их применения, но каждое из которых определяется в терминах остальных, и получается, что читатель должен знать "все", прежде чем узнает что-либо.

•Smalltalk-80 - это графическая, интерактивная среда программирования, в которой каждый доступный пользователю компонент системы может быть представлен осмысленным образом для изучения и обработки, а встроенный в систему интерфейс пользователя поддерживает создание визуального языка для представления каждого объекта.

•Smalltalk-80 - это очень большая, но просто сконструированная система, объекты которой, обеспечивают функции, обычно присущие операционной системе: автоматическое управление памятью, файловую систему, управление дисплеем, редактирование текстов и графических образов, ввод с клавиатуры и с мыши, отладчик, планирование процессов, компиляцию и декомпиляцию, и много других видов объектов, которые необходимо изучить.

•Smalltalk-80 - это система, созданная в соответствии с моделью взаимодействующих объектов. Объекты системы поддерживают принцип модульности: функционирование любого объекта не зависит от внутренних деталей других объектов. Минимизация взаимной зависимости компонентов системы снижает ее сложность, для дальнейшего снижения которой используется объединение одинаковых объектов в классы. Классы являются основным механизмом расширения системы Smalltalk-80. Определяемые пользователем классы становятся частью системы на тех же основаниях, что и классы ядра системы. Понятие подкласса позволяет разделить систему на составляющие и для того, чтобы избежать повторений одних и тех же понятий в разных местах, и для того, чтобы сами классы объединить в единую структуру, называемую иерархией классов.

Именно управление сложностью - один из основных вкладов языка Smalltalk-80 в современное программирование!

Smalltalk: Структура системы

"Кто долго размышляет, тот всегда находит лучшее решение."

И.В. Гете

Объекты и сообщения

Объект - компонент системы. Объектами, например, являются: числа, строки символов, очереди, словари, прямоугольники, каталоги файлов, редакторы текстов, программы, компиляторы, вычислительные процессы, финансовые отчеты, визуальные представления информации ...

Каждый объект состоит из некоторой принадлежащей ему памяти и множества операций, таким образом объединяя в себе (инкапсулируя) и данные и операции по их обработке. Природа операций над объектом зависит от того, что представляет объект. Объекты, представляющие числа, используют арифметические функции. Объекты, представляющие структуры данных, хранят и обрабатывают информацию. Сообщение - запрос к объекту выполнить одну из операций. Сообщение определяет, какая требуется операция, но не определяет как эта операция должна выполняться. Только получатель - объект, которому послано сообщение, опреде-



[стр.Начало] [стр.1] [стр.2] [стр.3] [стр.4] [стр.5]