LINUX.ORG.RU

Smalltalk - изучаем вместе

 , ,


5

3

Взялся изучать Smalltalk. Процесс изучения выкладываю на видео, правда информацию там стараюсь выдавать максимально достоверную, и по возможности без «воды». В этой теме по ходу дела буду оставлять ссылки на появляющиеся видеоролики. Комментарии приветствуются.

Видео 1. Общие сведения

Краткая история, перечисление некоторых реализаций, общая суть некоторых принципов системы Смолток.

………………………………………………………..

Видео 2. Сообщества, книги, проекты.

Показаны русскоязычные сообщества по Smalltalk, в частности, группа в ВК. Сделан обзор архива с книгами, которые я нашёл в Сети и выложил на Гугл-диск. Рассказано о двух крупных проектах, которые использовали Smalltalk (FLProg и OpenCobalt). Расширенный список ссылок находится в описании к видео, непосредственно на Youtube

………………………………………………………..

Видео 3. Виртуальные машины.

В уроке кратко рассмотрены среды программирования Squeak, Pharo, и Dolphin.

………………………………………………………..

В темах, не затронутых в видеороликах, я ещё либо сильно «плаваю», либо пока не знаю их вообще. Поэтому обсуждать могу только уже выложенное на Ютуб.

Ответ на: книжки про смоллток от anonymous

здесь следует отметить следующее:

Squeak – кроссплатформная и кроссистемная реализация смоллтока, потомка Macintosh Smalltalk.

Pharo – его современный форк, актуальная реализация с последними оптимизациями.

качается pharo-launcher под вашу систему + образ VM + запускалка. лончер позволяет удобным образом собрать каталог своих любимых образов VM.

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

есть FFI, пакеты, библиотеки и батарейки.

качаем книжки в pdf из books.pharo.org, проходим обучающие курсы, смотрим скринкасты и обучающее видео на pharo documentation.

качаем лончер, запускалку и образ. пробуем потыкать примеры из Pharo by example *(дабы не набирать вдругорядь, можно скачать сразу уже настроенный образ).

и пробуем со всей этой машинерией хоть как-то взлететь.

ну в смысле, если после прочтения таких практичных примеров всё ещё не понятно, зачем смоллток, и что с этим делать — значит, не хватает осознания какой-то достаточно интересной задачи.

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

например, то же Grafoscopio, literate programming, reproducible research

или seaside или illiad или ещё какой веб-фреймворк.

или дазы банных и персистентные объекты (тот же GemStone, но их несколько разных).

или игрушку на opengl.

и какой-то метапрог из всего этого – куда же без него, ога.

anonymous
()
Ответ на: начать погружение в смоллток от anonymous
  1. проприетарненько. дорого, круто, офигенно.

платные смоллтоки. если оно вам надо – вы знаете где его взять. и доки тоже.

  1. виндовозьненько.

Dolphin SmallTalk, например.

  1. кроссплатформно.

Squeak (старый), Pharo (новый)

  1. консольно.

GNU SmallTalk. отличительная особенность: он не графический, а текстовый.

ну то есть, натурально. это скриптовая реализация, типа guile. из командной строки можно скрипты запускать.

есть Gtk. ORM. вебсервер. FFI. и какие-то батарейки.

по поводу библиотек классов которые тут зело отличаются – нужно читать документацию из поставки GNU SmallTalk.

раньше ещё была по нему книжка.

  1. смоллток «сделай сам».

здесь возможны варианты.

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

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

еще есть в Factor такая вот реализация: бложик, затем эта реализация на одной странице выросла в гитхаб .

здесь написан PEG парсер смоллтока, размером в полэкрана кода на языке factor. factor – это такой функциональный форт. местами форт, местами коммон лисп. местами хаскель. местами, как выяснилось – и смоллток тоже.

если функциональщина с монадами вызывает панические макаки , а душа требует няшной сишечки – и здесь есть отрада.

есть язык Nim. который по синтаксису вроде как питон, по семантике – дельфи, паскаль, или даже с++. или по смыслу вообще лисп – AST макросы и CTFE вычисления есть.

при этом оно компилируется в няшную сишечку. и работает со скоростью, ну тут мерять надо – потому что есть GC. который написан на том же Nim и опционально отстреливается (как и в D).

Nim нам интересен тут тем, что есть AST макросы и вычисления времени компиляции. примеры из презентаций на Nim – printf заменили макросами времени комплияции, с проверкой типизации и оптимизациями – переписыванием термов.

к тому же, на самом Nim можно написать intrinsinc. и писать код на ассемблерных вставках – либо на вставках няшной сишечки.

в итоге, оптимизировать можно очень сильно.

на Nim например, оптимизировали terf – это один из коммерческих форков OpenCobalt. говорят, получили ускорение на порядки, в 10 и больше раз. OpenGL и VR на нём переписали.

здесь Nim нам интересен в контексте spry : гитхаб и бенчмарки, замеры производительности, nim и oo

идея проста: пишем VM смоллтока как интерпретатор AST. делаем транслятор в это AST посредством PEG парсера, на том же Nim есть готовая библиотека, например. и пользуемся возможностями AST макросов Nim по CTFE и переписыванию термов для оптимизации, заменяя на intrinsic.

получаем ускорение на порядки.

понятное дело, что можно с тем же успехом взять форт, лисп, окамль, COLA by Ian Piumatra и прочее.

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

если производительности будет нех ватать.

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

где всё можно подёргать, посмотреть, отрефакторить и распарсить в любой момент.

и есть уже полноценная компонентная модель и функционально богатая библиотека классов.

компактных, понятных, наглядных и обозримых.

в своём специфическом синтаксисе, ога.

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

3.консольно.

GNU SmallTalk. отличительная особенность: он не графический, а текстовый.

есть ощущение, что достаточно покурив мануалы по Емаксу, Emacs org-mode babel, пакету Гипербола вики можно невозбранно достигнуть желаемого.

ну то есть – получить своё такое Smalltalk IDE с разработкой в образе с емаксом вместо IDE, и смоллтока.

где на этом пакете-расширении реализовано своё такое IDE. но без IDE. и без этой вот кафкианской «вещи в себе», самой на себе, забутстрапленной как «пирожокъ без никто».

пакет Hyperbole – был такой гипертекст на Xemacs в середине 90х.

основной его фичей были «программируемые кнопки», «программируемые гиперссылки».

это как в примере из Dolphin Smalltalk : Help > Learn Smalltalk гиперссылки по сути запускают метод ProfStef next.

здесь же увидев в тексте «кнопку» вида:

<(factorial button)>

либо

<( factorial button )>

либо многострочное из фидопочты:

топикстартер> <(factorial
топикстартер>   button)>

либо в комментариях литературно-грамотных:

;; <(factorial
;;    button)>

либо в няшной сишечке (с комментариями из PL/I):

/* <( factorial     */
/*    button   )>   */

это расширение Hyperbole само раскрасит кнопочку гиперссылкою.

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

причём, эта кнопка запускает код – так же, как и в Help > Learn SmallTalk ProfStef next. в презентации-слайде.

здесь код на elisp в емаксе, но что мешает задать его в мультиязычной среде на другом языке (или метаязыке)? на любом, хоть на смоллтоке?

причём, можно совместно использовать как Emacs org-mode babel ради сильного уличного колдунства: техномагического плетения M-x org-babel-tangle

и программируемые кнопки-гиперссылки на Hyperbole. истории успеха (например, тестирование с прослеживаемостью гиперкнопками) намекают – основная проблема грамотного программирования (сложно отлаживать, проследить какой метакод в конкретно этот чанк раскрывается) – решена же!

ЗЫ. АУ, топикстартер со своей Перспективою.

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

ну или я не совсем понял твою концепцию. всё ещё пересматриваю твои видео, пытаюсь осмыслить.

кстати, подобное бывало в Emacs неоднократно: hyperbole, org-mode, eev-scripts

далее смотри например реализацию qemacs от Фабриса Беллара, автора QEMU и tcc.

нормальный минималистичный модульный емакс с плагинами.

Fabrice Bellard был заодно и ментейнером ffmpeg. логично же, что он реализовал в своём емаксе и поддержку ffmpeg тоже!!

то есть, плагин умеет показывать картинки, аудио, видео.

далее, твой пример с Cinelera и нелинейным видеомонтажём.

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

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

далее какие-то эффекты накладывать, дорожки совмещать, слои и переходы монтировать – вполне себе можно скриптом. кажется у того же ffmpeg есть какие-то ключи команднострочные для этого.

и затем это консольное или плагинное скриптовать программируемыми гиперкнопками.

то есть – гиперссылками, на любом языке.

anonymous
()
Ответ на: начать погружение в смоллток от anonymous

операторы это по сути :=, (), +-*/, ещё вызов метода и всё.

ещё ^ – вызов super – реализации того же метода из суперкласса, предка. ну и все выражения точкой заканчиваются. приоритетов операций нет, строго слева направо. поэтому обносить скобками ради правильных приоритетов в выражениях.

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