LINUX.ORG.RU

Почему не стал мейнстримом Smalltalk?

 , , , ,


1

6

Добрый день ЛОР.

Скоро праздники. Скоро пятница. Поэтому решил создать тред вот с каким вопросом - почему Smalltalk стал так не популярен? Ведь у языка было (и есть) все, чтобы стать мейнстримом, он мог занять ту нишу, в которую потом засели ObjectPaskal/Delphi/VB/C#! Что ему мешает выбиться «в люди»? Почему на том же Pharo нет ни одной серьезной программы с GUI и ориентированной на пользователя?

★★

Последнее исправление: CYB3R (всего исправлений: 1)

Ответ на: комментарий от yoghurt

Посылка сообщений нужна, но она же не подразумевает асинхронность.

в Newspeak есть акторы

Nikolay Botev. Actor-based Concurrency in Newspeak 4. Masters' thesis, San Jose State University, April 2012. An Actor system for Newspeak, closely related to E vats.

anonymous
()
Ответ на: комментарий от anonymous

ещё он теоретически функциональный, если не использовать 1 операцию (то есть, рантайм можно выделить на функциональный и с эффектами, в мирах (worlds) кто сказал монады и хаскель??)

anonymous
()
Ответ на: комментарий от phill

В смолтоковском стиле она реализована только в javascript, из мейнстримных яп.

в JavaScript реализованы прототипы из селфа (типизированный смоллток). с точностью до синтаксического сахара, языки — почти одно и то же.

а в SmallTalk-80 — то же, что и в Objective-C, то есть, «чистая» динамика в рантайме (в ObjC в связи с LLVM и со смоллтоком от проекта Etoile постепенно переходит всё больше в компайлтайм, и «более эффективный рантайм»).

anonymous
()
Ответ на: комментарий от anonymous

мне мозги прочистило на эту тему, диспетчеризации методов и разных классов, метаклассов, и т.п. описание рантайма из COS, CLOS на няшной сишечке.

читать до полного просветления: DLS'09 OOPSLA'09 , COS

Получаем уже аналогичную функциональным языкам запись и проясняем для себя почему она такая странная для функционального программирования. Но что же мы получили в итоге? Smalltalk это Prolog с отсечениями?

смоллток это динамический полиморфизм методов. пролог это динамический полиморфизм методов.

Laurent Deniau в бумажках на тему COS говорит, что

Its inductive design is tuned to provide efficient and portable implementation of two key concepts essential to support these principles: message multi-dispatch and message multi-forwarding

,

то есть, если у нас всё — это объект, то есть, first class objects, то диспетчеризация и форвардинг (делегирование) из всего во всё тоже должны быть объектами первого порядка.

Такое объектное программирование это иерархическое множество функций? Похоже на то.

зачем «иерархическое»? by implementation. а by design, например, ad-hoc полиморфизм интерфейсов в GoLang — это произвольные «анархические» (вместо иерархических) объектов.

то есть, мультидиспетчеризация между first class objects.

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

ну разбор DGC грамматик пишется на прологе элементарно. то есть, нужен некоторый движок правил и метаправил, (или методов объектов или метаклассов), который меняет порядок исполнения «более элементарных» методов (мультидиспетчеризация как в CLOS по equ-предикатам, например. то есть, predicate dispatch, где предикаты — это факты на основе правил.

Грубо говоря пролог на лиспе точно мощнее смаллталка.

равномощны, т.к. в смоллтоке через метаклассы и обработку doesNotUnderstand (прокси-объекты в ObjectiveC, протоколы, категории) тоже можно много чего сделать (возможно, более витиеватым образом)

Посмотрел еще на многопоточность смаллталка, она в общем - «никакая», все практически в ручную.

поэтому интересен «акторный смоллток», «функциональный смоллток» — Newspeak и иже с ним.

в обычном-то прологе (каком-нибудь «нечистом» Visual Prolog), а не каком-нибудь Erlang тоже всё с многопоточностью не ахти из-за рантайма.

anonymous
()
Ответ на: комментарий от anonymous

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

ещё вставляет на тему происхождения терминов лекция Алана Кея «Революция, о которой так много и невнятно говорили ИТшники ещё толком и не начиналась, как следует»

там он говорит о биоинформатике и аналогии объектов с живой клеткой.

живая клетка «посылает сообщения» во внешнюю среду, получает отклики, как-то самостоятельно развивается.

отсюда — посылка сообщений именно вот в этом смысле.

назови это «транскрипция РНК», «параллельный перенос генов», полиморфизм мультиспетчеризации, как хочешь.

anonymous
()
Ответ на: комментарий от menangen

ну я как бы понимаю, что при сильной упоротости упёртости можно С++ и из форта дёргать , например (лучше, отсюда)

достаточно опистать совместимые по calling convention naked обёртки (например, [http://mgw.narod.ru/algoritms.htm#fromDLLCPP]так)

то же самое из D или из «няшной сишечки»: описать совместимые calling convention для implementation-specific C++ ABI.

можно заюзать c++filt и манглинг/деманглинг, нагородить CTFE костылей в D (чтобы вызывать из D C++ методы).

но, это будет 2 рантайма в 1 приложении, и непонятный жизненный цикл этих запутанных рантаймов (хотя в managed С++ например, как-то справляются С++/.NET).

костыль однако.

и в сухом остатке, чего: +10 МБ Dll-ек от Qt ради чего --- чтобы только НАРИСОВАТЬ ОКОШКО С КНОПКОЙ ???

тот же пурбасик с компиляцией через fasm как-то поаккуратнее будет, понативней — чистое API с 0 внешних зависимостей (кроме нативных), минималистичный рантайм.

вообще, рантайм COS покомпактнее будет, и погибче, чем С++-совский. подобная McCLIM или FRP гуйня будет — попроще и покомпактнее, чем даже GTK.

так что, ++ не нужен, родной.

anonymous
()
Ответ на: комментарий от silver-bullet-bfg

Кому нужен ObjC без вменяемых кроссплатформенных библиотек?

просто рантайм от Etoile и батарейки от GNUStep вызывают сильное сострадание. в Cocotron чуть получше, но в целом — тоже весьма сыро.

дело времени, ящитаю.

Скажи когда появится хотя бы одна программа уровня AutoCAD написанном на нем

хипсторы на флеше напишут же, с облаками и лошадками. трешъ — он и у хипсторов трешъ.

anonymous
()
Ответ на: комментарий от anonymous

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

Ответить на сообщение в ооп терминах пока что не смогу, к сожалению.

Возможно в скором времени напишу статью на хабрахабр об этом.

anonymous
()
Ответ на: комментарий от menangen

А давай не будем путать Си, С++ и ЯблоС. Это разные языки. А на сертефецированность юникса...Если честно всем класть. Далее - библиотек для крестов и pure c - до задницы, а вот для ЯблоЦэ - почти нет кроссплатформенных. Иными словами - ты упорот.

silver-bullet-bfg ★★
() автор топика
Ответ на: комментарий от silver-bullet-bfg

Это кто тебе сказал, что из Objective-C нельзя юзать кроссплатформенные библиотеки на Си и плюсах? Всё можно. Objective-C по рантайму полностью совместим с Си. Можно вызывать функции и писать .so в двух направлениях без проблем. Не надо детских писков.

menangen ★★★★★
()
Ответ на: комментарий от anonymous

Ваш пост «Немного об ООП, ФП и логическом программировании» так понравился одному из пользователей нашего сайта, что он решил подарить вам инвайт. Ваш аккаунт переведён из ReadOnly в режим полного доступа к сайту.

Разместил пост на хабре.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.