СТАТЬЯ
05.01.01

Не “Делфи” единым…

© Александр Лесневский
зав. кафедрой информатики и прикладной математики
Московского городского педагогического университета

Программист: …Smalltalk давно покинул лодку….
Алан Кэй:…а мы и не хотим чтобы он оставался в лодке,
мы хотим чтобы он взлетел с нее…
(Из электронной переписки)

Все хорошо знают, что любой житель нашей необъятной Родины может купить последнюю версию “Делфи” почти на каждом углу за 60-70 рублей. Почти все при этом знают, что, покупая такую продукцию, они совершают противоправное действие. Но предмет нашего обсуждения вовсе не правомерность тех или иных поступков. Конечно, огромная популярность “Делфи” обусловлена не только его доступностью. Поэтому автор, продолжая начатую некоторыми журналами сагу о шароварном софте, вовсе не призывает затереть нелегально приобретенный “Делфи” и переключиться на нечто лучшее, легальное и бесплатное. Просто, если слова “think different” находят отклик в вашей душе, то стоит попробовать.

Итак, герой нашего повествования – Squeak (http://www.squeak.org) – некоммерческий Smalltalk, портированный на многие платформы: Mac, PC, Acorn, многие варианты Unix. Весьма либеральная лицензия позволяет делать с ним все, что угодно: даже продавать поделки, изготовленные с его помощью, и не делиться прибылью.

За более чем 25-летнюю историю Smalltalk, начавшуюся в исследовательском центре фирмы “Ксерокс” в Пало-Альто, шт. Калифорния, появилось множество его коммерческих реализаций. Из них наиболее известными на сегодня являются Visual Age –Smalltalk от IBM и Visual Works от Object Share. Smalltalk оказался незаменимым инструментом как средство быстрого макетирования, а это – необходимый этап при проектировании любых сложных программных систем. Одним из впечатляющих успехов использования Smalltalk явилось создание американским военным ведомством системы стратегического моделирования – JWARS. Прототип был создан в среде VisualWorks за 9 месяцев и содержал порядка 2000 классов, работа над проектом продолжается в средах VisualAge Smalltalk и WindowBuilder Pro.

Сегодня убеждать кого-нибудь в том, что ООП – это хорошо, значит ломиться в открытую дверь. Ни для кого не секрет, что Smalltalk не единственный представитель объектно-ориентированной фауны и далеко не самый популярный.

Основная проблема для сообщества С++ сегодня –
использовать стандартный С++ так, как он был задуман,
нежели как приукрашенный С или суррогат Смолтока…
Бьерн Страуструп

Отчего же Пентагон выбирает Smalltalk, а в России – стране лучших программистов – о нем почти никто не слышал? Не станем биться над разгадкой, только вспомним, что производительность труда в России в сфере производства программного обеспечения составляет примерно половину аналогичной американской.

Опять повторю: я не агитирую всех переходить на Smalltalk, просто это те кубики, которые мне нравятся больше других и приглашаю желающих поиграть в них в компании других смолтокеров. Однако, личные предпочтения - это еще не все. Хорошо известно, что современному программисту (и не только ему), кроме умения придумывать алгоритмы, требуется еще и умение понимать заказчика, и переводить его неясные пожелания на язык программы, умение препарировать предметную область, выделяя ключевые абстракции, умение описать эти абстракции на языке классов и обязанностей – все эти умения и составляют образ того самого объектно-ориентированного стиля, который вырабатывается при использовании соответствующих инструментов. Вот почему Smalltalk – первый язык программирования, который студенты начинают изучать во многих университетах мира. В истекшем семестре к ним присоединился МГПУ.

Однако вернемся к нашему герою. Его прадедушка появился на свет в начале 70-х в недрах проекта “Динабук” исследовательского центра фирмы Ксерокс в Пало Альто. Это был амбициозный по тем временам проект, нацеленный на создание чего-то похожего на современные ноутбуки. Один из вдохновителей проекта – Алан Кэй – уделял много внимания созданию языка программирования, который могли бы использовать дети, ничего не знающие о компьютере. В конце концов, появился Smalltalk (“короткий разговор”) – язык основанный только на понятиях объектов и сообщений.

Самая первая Smalltalk-система представляла собой тысячу строк на Бейсике. Она успешно сосчитала 3+4 в октябре 1972 года. Спустя 2 месяца появилась аналогичная система на ассемблере. Главную роль в реализации этих систем сыграл Дан Ингаллс. Последующие итерации привели к появлению Smalltalk-80, который и опубликовала фирма Ксерокс в 1979 и 1980 годах.

Проект “Динабук” так и не был завершен, а основную выгоду из него извлекла фирма Apple computer, которая использовала многие идеи среды Smalltalk (не в последнюю очередь благодаря тому, что к компании присоединился Дан Ингаллс) в компьютерах Lisa и MacIntosh. И вообще, справедливости ради стоит сказать, что появлению современного графического интерфейса мы обязаны проекту “Динабук”.

Начиная с 1996 года появились свободные Smalltalk-системы: Smalltalk X, Dorado Smalltalk и Squeak, из которых последний заслуживает особого интереса, так как находится под патронажем “отцов” - Алана Кэя и Дана Ингаллса.

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

Метафора рабочего стола предполагает способ доступа к программному коду.

На рисунке выше представлен вид экрана для типичного проекта, в котором использовано три основных вида окон: окно системной информации (Transcript), которое обычно используется для вывода информации о статусе системы, рабочее окно (Workspace) для выполнения Smalltalk-выражений, и броузер (System browser) для работы с кодом.

Для работы с системой нужна мышь или другое подобное устройство. В первоначальных проектах использовалась мышь с тремя кнопками: желтой, красной и синей, и до сих пор, в целях сохранения единства терминологии, предполагается такая мышь. Если ее нет (как на Макинтоше), используются различные комбинации клавиатура-мышь. “Красная” кнопка используется для выделения информации, “желтая” – для манипулирования информацией (посредством меню), “синяя” - для манипуляции окнами.

Код программы компилируется в байт-коды и интерпретируется виртуальной машиной, которая существует в двух видах: в кодах конкретной платформы и в виде кода на подмножестве Smalltalk. Для того, чтобы портировать систему на другую платформу необходимо виртуальную машину в кодах Смолтока транслировать в код на С (для чего в системе существует соответствующий набор классов), который в свою очередь компилируется в коды требуемой платформы.

Сила Smalltalk в библиотеке классов. Squeak-Smalltalk содержит все традиционные классы Smalltalk-80, но кроме этого весь джентльменский набор современных IDE. Судите сами:

И многое другое. Единственным недостатком Squeak является его полная не документированность. Чтобы в чем-то разобраться нужно самостоятельно анализировать текст программ.

Наконец, взгляните на этот экран:

Из “брошенного” проекта языка Self компании Sun в Squeak перекочевала весьма занятная концепция пользовательского интерфейса – “Морфик”, но об этом в другой раз.

Сообщество “сквикеров” весьма велико: подпишитесь на лист рассылки и будете получать до 50 посланий ежедневно. Сейчас практически вся работа по развитию этого проекта происходит на некоммерческой основе силами сообщества. Подключайтесь, это – точно бесплатно !

Дополнительную информацию Вы можете получить в компании Interface Ltd.

Обсудить на форуме Inprise/Borland
Отправить ссылку на страницу по e-mail


Interface Ltd.

Ваши замечания и предложения отправляйте автору
По техническим вопросам обращайтесь к вебмастеру
Документ опубликован: 05.01.01