Беркгаут ([info]behrk) wrote,

Smalltalk: впечатления от четырех месяцев работы

1. Самое главное: у меня оформилось мнение, что думающему программисту изучение Смолтока абсолютно необходимо {Умные люди на это уже намекали}

2. Больше всего мне нравится как раз то, за что СТ любят ругать -- то, что нет понятия "программы", а есть виртуальная машина с живущими в ней объектами, внутри которой сосуществуют среда разработки и части разрабатываемого приложения. Особенно мне нравится возможность сохранять и восстанавливать образ виртуальной машины. Восстановление состояния рабочей среды с точностью до положения курсоров -- это как раз то, чего мне всегда хотелось. {но есть средства, позволяющие "раздеть" образ виртуальной машины до размера в несколько мегабайт и создать самодостаточный выполнимый файл, содержащий образ и виртуальную машину}

3. Изменения (напр., добавление или изменение методов) сказываются на уже существующих объектах, и это прекрасно. Особенно я оценил это на конференции несколько дней назад, когда поведение демонстрируемой модели можно было менять не прерывая демонстрации (на проектор продолжала идти картинка с трехмерной визуализацией, а на основном мониторе я рылся в работающей программе). Эта особенность смолтока всегда производит очень сильное впечатление, достаточно вспомнить историю про Джобса и плавный скроллинг, которую Кей приводит в The Early History Of Smalltalk:

...we found ourselves doing one of our many demos, but this time for a very interested audience: Steve Jobs, Jef Raskin, and other technical people from Apple. They had started a project called Lisa but weren't quite sure what it should be like, until Jef said to Steve, "You should really come over to PARC and see what they are doing." Thus, more than eight years after overlapping windows had been invented and more than six years after the ALTO started running, the people who could really do something about the ideas, finally got to see them. The machine used was the Dorado, a very fast "big brother" of the ALTO, whose Smalltalk microcode had been largely written by Bruce Horn, one of our original "Smalltalk kids" who was still only a teen-ager. Larry Tesler gave the main part of the demo with Dan [Ingalls] sitting in the copilot's chair and Adele and I watched from the rear. One of the best parts of the demo was when Steve Jobs said he didn't like the blt-style scrolling we were using and asked if we cold do it in a smooth continuous style. In less than a minute Dan found the methods involved, made the (relatively major) changes and scrolling was now continuous! This shocked the visitors, especially the programmers among them, as they had never seen a really powerful incremental system before.

4. Другая вещь, которая мне безумно нравится {о ней редко упоминают в первую очередь}: методы одного класса могут быть определены в нескольких packages, т.е. логическая и физическая организация программы разделены. Это исключительно удобно при работе над большим проектом, а кроме того позволяет расширять своими методами системные классы (например, недавно я расширил класс Window, научив VisualWorks открывать определенные окна на определенном мониторе).

5. "Если Smalltalk такой замечательный, то почему он так мало используется?"
Я для себя вижу несколько ответов:

- Лучшие языки не всегда побеждают. Рынок так устроен, что лидерами обычно становятся средние в техническом отношении решения (C++, IP, HTML, SQL, Windows, Un*x, можно продолжать до бесконечности)
- Вендоры Смолтолка действовали крайне неудачно с коммерческой точки зрения. В наше время живы только производители решений (а не реализаций языка), прикупившие по дороге ассеты кого-нибудь из раззорившихся вендоров (как это сделали, например, Cincom и IBM). Разумеется, из этой картины выбиваются open source варианты, прежде всего Squeak.
- Язык практически непригоден для использования слабыми программистами. А неслабые программисты стоят доорого.
- Смолтолку трудно выучиться по книгам, поскольку это не язык, а способ думать и действовать. Обычный путь его распространения -- прямая передача традиции в рамках небольшой рабочей группы.
- Интерес к Смолтолку сейчас снова нарастает, в частности благодаря Squeak и OpenCroquet, а также благодаря позиции Cincom в отношении некоммерческого использования VisualWorks.
- Нельзя сказать, что язык мало используется. Он редко используется для коробочных продуктов, но весьма любим командами, делающими большие системы внутреннего пользования.

6. Меня долгое время бесил синтаксис, стремящийся к подобию естественного языка (Compiler compileMethod: aSource inContext: aCompilationContext). Постепенно, однако, я приучился воспринимать и писать составные селекторы и даже вошел во вкус.

7. Рабочая среда Смолтолка на самом деле ужасна, и если бы ее делал я, я бы все сделал иначе. Тут, однако, никто не мешает взять в руки лопату и начать всё переделывать под себя -- по этому пути можно зайти довольно далеко, существует несколько интересных альтернативных браузеров.

8. Поражает уровень рефлективности системы, т.е. то, что практически весь язык описан на нем самом. В Смолтолке можно смело и безоговорочно говорить, что все является объектом. То, что на самом нижнем уровне за, например, классами SmallInteger и Context  стоят слова и фреймы стека реального процессора, является внутренним делом виртуальной машины, с которым она неплохо справляется. Парсер, компилятор, механика наследования -- всё это написано непосредственно на Смолтолке.

technosophy framework softeng

  • Post a new comment

    Error

    Your IP address will be recorded 

  • 74 comments

[info]potan

May 11 2005, 10:17:06 UTC 7 years ago

Есть похожая разработка российского производства "Флора" (компании Компас-Плюс). Разработчики утверждают, что про SmallTalk и не слышали, но очень многие решения подозрительно совпадают :-).

А про требуемый уровень программиста можно посполить - пробовали ему учить детей и даже не плохо получалось. Квалификация может быть требуется, что бы учить его после C++ и Prolog, но как первый язык он может легко усваиваться и использоваться.

[info]behrk

May 11 2005, 10:21:02 UTC 7 years ago

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

по поводу обучения детей и связанных с этим иллюзий хорошо написано как раз в цитируемом эссе Кея

[info]behrk

May 11 2005, 10:27:36 UTC 7 years ago

если они про Смолтолки и не слышали, то совсем плохо -- все-таки слово "смоллтолк" фигурирует практически во всех введениях в ООП.

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

[info]kombinieren

May 11 2005, 10:58:24 UTC 7 years ago

guide me please

Рынок так устроен, что лидерами обычно становятся средние в техническом отношении решения (C++, IP, HTML, SQL, Windows, Un*x, можно продолжать до бесконечности)

А как называютяс альтернативы un*x и html, которые "не пошли"? Дайте ключевые слова, гугль мне поможет.

[info]blacklion

May 11 2005, 11:14:57 UTC 7 years ago

Re: guide me please

un*x -- VAX/VMS как минимум. Технически на порядок грамотнее и цельнее UN*X.

А вот про SQL сам не согласен -- это формальный язык построенный на формальной теории (реляционной алгебре)... Я как-то слышал мнение одного неглупого человека, что ООП нужен там, где нет мат.модели. А как только есть мат.модель -- так ООП идет лесом. И именно реляционная модель -- отличный пример этого. Как, собственно, и GUI -- нет модели вовсе, вот и цветет ООП в нём пышным цветом.

[info]behrk

May 11 2005, 11:28:19 UTC 7 years ago

1. На базе реляционной алгебры можно построить и более изящные конструкции, чем SQL. Ключевое слово -- The Third Manifesto (хотя у меня эта книга вызвала определенное разочарование).

2. Математика версус ООП? Не готов обсуждать. Это все равно, что пытаться спорить о достоинствах ямба перед хореем (или четных чисел перед нечетными, если хотите). К тому же оба термина используются в очень различных значениях.

[info]blacklion

7 years ago

[info]eugenius_nsk

May 11 2005, 12:52:26 UTC 7 years ago

Re: guide me please

А как же OODB, которые появились после реляционных БД ?

[info]blacklion

7 years ago

[info]behrk

7 years ago

[info]blacklion

7 years ago

[info]behrk

7 years ago

[info]blacklion

7 years ago

[info]behrk

7 years ago

[info]blacklion

7 years ago

[info]sobaker

7 years ago

[info]firtree

6 years ago

[info]behrk

7 years ago

[info]blacklion

7 years ago

[info]firtree

6 years ago

[info]muchandr

6 years ago

[info]syarzhuk

July 15 2005, 13:55:55 UTC 6 years ago

Re: guide me please

Почитайте, если сможете, http://www.dbdebunk.com/ Там товарищ C.J. Date (известный как второй человек в реляционной теории после покойного Кодда) очень и очень прохаживается насчёт SQL'я как НЕ соответствующего реляционной модели

[info]behrk

6 years ago

[info]dixi

May 11 2005, 11:23:52 UTC 7 years ago

Re: guide me please

hurd

[info]behrk

May 11 2005, 11:29:47 UTC 7 years ago

о!

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

[info]cmm

7 years ago

[info]behrk

7 years ago

[info]cmm

7 years ago

[info]behrk

7 years ago

[info]cmm

7 years ago

[info]behrk

7 years ago

[info]cmm

7 years ago

[info]muchandr

6 years ago

[info]behrk

6 years ago

[info]muchandr

6 years ago

[info]poige

6 years ago

[info]cmm

6 years ago

[info]poige

6 years ago

[info]cmm

6 years ago

[info]poige

6 years ago

[info]cmm

6 years ago

[info]poige

6 years ago

[info]cmm

6 years ago

[info]behrk

6 years ago

[info]poige

6 years ago

[info]muchandr

6 years ago

[info]behrk

6 years ago

[info]dixi

May 11 2005, 11:35:23 UTC 7 years ago

Re: guide me please

банальнейший пример - OS/2, которая проиграла в своё время Win исключительно по маркетинговым причинам.

[info]behrk

May 11 2005, 11:37:42 UTC 7 years ago

точно, забыл про старушку полуось. Мелкомяхкие должны мне 25 рублей за книгу по ней, которая не приигодилаась

[info]behrk

May 11 2005, 11:36:31 UTC 7 years ago

Re: guide me please

по ОСам, помимо упомянутого VMS -- операционная система Lisp-машин (то есть соственно лисповая среда).
И, кстати, Смоллтолк в качестве ОС.


по языкам разметки -- прежде всего, "большой" SGML

по гипертекстовым системам -- масса систем середины восмидесятых, это кладбище ещё предстоит раскапывать



[info]blacklion

May 11 2005, 11:41:14 UTC 7 years ago

Re: guide me please

Большой SGML -- это тот еще монстр. Вот как раз XML явный прогресс по сравнению с ним... Все эти <tag/А тут его content/ и прочее... Брррр... Слишком перенавороченно.

[info]behrk

May 11 2005, 11:41:16 UTC 7 years ago

дополнение

это если не упоминать ОСы КПК, где сначала победила PalmOS (весьма бледно выглядевшая на фоне EPOC aka Symbian), а потом WinCE aka PocketPC (неплохая внутри, но несущая с собой крайне низкую культуру разработки ПО, особенно в части интерфейсов, что на КПК критично)

[info]sobaker

May 11 2005, 13:05:20 UTC 7 years ago

Re: дополнение

О да. Клавиатурники на EPOC32 жалко до слез.

[info]zamsky

May 11 2005, 12:04:30 UTC 7 years ago

> Рабочая среда Смолтолка на самом деле ужасна, и если бы ее делал я, я бы все сделал иначе.

Dolphin Smalltalk не видели?

[info]zamsky

May 11 2005, 12:06:47 UTC 7 years ago

Intro на тему:
http://www.object-arts.com/downloads/6.0/intros/ideaspaceintro.htm (2.5 Mb)

[info]behrk

May 11 2005, 12:30:56 UTC 7 years ago

Dolphin не смотрел (из-за нелестных о нем отзывов [info]perikov).
Интро сейчас погляжу

[info]zamsky

7 years ago

[info]behrk

7 years ago

[info]firtree

6 years ago

[info]firtree

6 years ago

[info]zamsky

7 years ago

[info]behrk

May 16 2005, 08:12:52 UTC 7 years ago

я придумал, как объяснить, что меня принципиально раздражает в традиционной смолтолковской среде -- она ориентирована людей, предпочитающих классификацию ('vertical organizers'), а я отношусь к тем, кто предпочитает поиск ('horizontal organizers'). То есть достижение метода SomeThing class>>someMethod требует, в общем случае
- выйти на класс
- перейти на сторону класса
- выйти на протокол (или переключится на all)
- выйти на метод

У меня есть пока не проверенная гипотеза, что лично для меня было бы удобней делать навигацию через глобальный incremental search.

[info]ilya666

7 years ago

[info]ilya666

7 years ago

Anonymous

7 years ago

[info]lvovin

May 17 2005, 08:22:50 UTC 7 years ago

7. Среда в VW действительно не очень, как в целом и весь UI. А что ты можешь сказать о Dolphin-e? Или тебе в целом не нравится нагромождение множества плавающих окон?

[info]behrk

May 17 2005, 08:41:47 UTC 7 years ago

я с ним не работал.
заочно он мне не нравится -- слишком пёстрый. IdeaSpace из версии 6 -- косметическое, в сущности, улучшение.

[info]dottedmag

July 22 2005, 02:46:55 UTC 6 years ago

Кстати, с чего стоит начать знакомиться со smalltalk? что читать, какую среду попробовать?

[info]behrk

July 22 2005, 10:31:29 UTC 6 years ago

Лучше всего -- отыскать смолтолкера и попросить устроить введение.

Еще стоит всяко прочитать The Early History of Smalltalk, by Alan C.Key

Я пробовал только squeak и VisualWorks. Думаю, для первоначального освоения лучше Squeak, тем более -- дистрибутив у него маленький. И там интересная графическая система -- Morphic, с тьюториала по ней можно начать изучение системы.

Хвалили Dolphin -- мне он заочно не нравится уже по скриншотам.

[info]poige

January 31 2006, 03:13:44 UTC 6 years ago

Хм, забавно, наверное, что FORTH-программист ...

... мог бы, похоже, привести очень много совпадающих доводов.
Create an Account
Forgot your login or password?
Facebook Twitter More login options
English • Español • Deutsch • Русский…