LINUX.ORG.RU

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

 , ,


5

3

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

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

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

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

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

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

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

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

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

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

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

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

«Кто-ж его изучит? Он же памятник!»

Технология есть? Есть. Развивается? Развивается. То, что она не так популярна, как остальные, и редко используется - ни о чём не говорит. ………………………………

Squeak хватит всем.

Мне не хватит, значит уже не всем.

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

Цель изучения какая, просто расширение кругозора или для работы нужно?

Ни то, и ни другое. Есть у меня один исследовательский «проект» (ради собственного интереса), который хотелось бы хоть как-то реализовать. По прикидкам, Смолток для этого подходит лучше всего. Возможно ошибаюсь, так как я не программист. Тем не менее выбор сделан, изучаю технологию. Но всё это никоим образом к данной теме не относится - здесь лишь выкладываю те знания по Smalltalk, которые сам усвоил. Так и изучать легче, да и вдруг кому-то ещё это пригодится.

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

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

Ещё как говорит, опытные «МалоГоворуны» предостерегают ©:
«Smalltalk is dangerous. It is a drug. My advice to you would be don’t try it; it could ruin your life. Once you take the time to learn it (to REALLY learn it) you will see that there is still nothing out there that can quite touch it.»

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

Не программист

Обучающие видео по программированию

Smalltalk

И что? Я же в самом начале написал: «Взялся изучать Smalltalk. Процесс изучения выкладываю на видео». Или вы вместо меня возьмётесь делать видеоролики по Смолтоку с показом манипуляций в актуальных на данный момент средах разработки и с «разжёвыванием» всего с нуля? Я буду только за. Буду «за», даже если просто русскоязычный учебник напишете. Нет? Тогда к чему ёрничать?

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

«Всё уже написано до нас»

Да есть у меня все эти учебники (Лисневский, Кирютенко, недопереведённый Pharo by Examle, и прочие), оттуда и черпаю знания. Я говорил вообще-то про осовеременнный и полный текстовый или видео учебник.

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

А нынешнее состояние лучше сравнивать с форком Pharo

Окей, пусть будет Pharo. Можешь тезисно перечислить преимущества (или особенности, кроме синтаксиса) перед лиспами?

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

«правильная» объектно-ориентированность, месседж пассинг, все объект это мы +- знаем. А по факту есть там реально что-то интересное? Может среда разработки (IDE) обладает какими-то киллер-фичами? Сообщество, уникальные либы, практики, проекты etc.

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

Можешь тезисно перечислить преимущества (или особенности, кроме синтаксиса) перед лиспами?

«Я-ж не настоящий сварщик»/лиспер/говорун :)

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

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

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

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

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

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

«Smalltalk is dangerous. It is a drug. My advice to you would be don’t try it; it could ruin your life. Once you take the time to learn it (to REALLY learn it) you will see that there is still nothing out there that can quite touch it.»

То есть, он тоже не видит прикладной ценности Smalltalk, а исключительно рекреационную. Что и требовалось доказать.

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

Это невозможно слушать. Я понимаю, что текст читает робот. Но такое слушать возможно только, если за это слушающему будут деньги платить.

+1

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

Нет. Только программист, более-менее хорошо знакомый с практическим программированием на языке и сравниваемом языке, может дать оценку, хорошо или не хорошо подходит язык. Википедия, рассказы разработчиков и восторженных макак ровным счетом никак не отражают плюсы и минусы языка, поскольку все эти источники обычно не знают альтернатив, а посему жрут кактус и не кривятся. Мне Smalltalk был бы интересен исключительно из соображений изучаения истории, но не более того - в современном IT это практически бесполезный язык.

Противоречите сами себе. Заявляете о бесполезности языка, и в то же время говорите, что только хорошо знакомый с технологией программист может эту технологию оценивать. При этом Смолток явно не знаете. В чём тогда цель вашего комментария?

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

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

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

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

Смолтолк (на моем уровне понимания) это лисп который не переусложнен фичами типа макросов, мутной системы типов (а-ла CL), объектностью и прочими штуками. В этом смысле он супер прост есть только классы объекты и сообщения, при этом все возможности лиспа имеются, просто вместо «ручной» модификации АСТ у тебя есть апишка.

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

В графических смолтолках (а это примерно все) возможности интроспекции системы соеденены к удобным интерфейсом, в котором разработка/отладка/тестирование происходит быстрее чем даже в лиспе. На практике это выглядит так - поменял код метода, сохранил, нажал кнопочку «запустить тест» - словил баг и тут же в дебаггере можешь его пофиксить, продолжить пока не пройдет.

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

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

Еще могу назвать такую штуку как GemStone. Это платная хайлоад-среда киллер-фича которой это транзакционные объекты. То есть в такой системе нет внешней базы данных а все хранится тут же в смолтолке. Когда ты делаешь например status := "active" это сохраняется перманентно. И это массово скейлится, ты подключаешь новый клиент этого GemStone к системе и в нем прозрачно доступны все классы и объекты кластера. Аналога этой штуки я пока еще не видел нигде. На прошлогоднем ESUG выступали челики которые использует это в конторе которая делает 20% мирового контейнер-шипинга и говорили что у них аптайм чуть ли не 100%.

loz ★★★★★ ()
Последнее исправление: loz (всего исправлений: 2)

В целом забей кто тут что говорит, 99% негативных комменаторов не запускали смолтолк ниразу. Pharo это очень мощная среда которая в то же время подана в максимально простом для освоения виде. Работать в ней одно удовольствие, тем более если твой мозг не загружен хламом других языков. Базовые знания структур данных и алгоритмов конечно желательны. Русскоязычного сообщества насколько я знаю нет, если умеешь в английский - заходи на официальный дискорд https://discord.gg/QewZMZa

loz ★★★★★ ()
Последнее исправление: loz (всего исправлений: 3)
Ответ на: комментарий от Oleg_Kon

Заявляете о бесполезности языка, и в то же время говорите, что только хорошо знакомый с технологией программист может эту технологию оценивать. При этом Смолток явно не знаете. В чём тогда цель вашего комментария?

Есть третий вариант: я опираюсь в своих суждениях на людей, которые знают этот язык. И да, мою оценку смолтолка можно не воспринимать серьезно - я вам дал сомнение, пользуйтесь им.

У смолтолка есть проблемы как у языка, вроде небесплатной чрезмерной развязанности объектов языка, затрудняющей понимание алгоритма, но я не квалифицирован, чтобы беседовать об этом.
Зато я бы побеседовал о том, что смолтолк скорее претендует на роль операционной системы, нежели просто языка. Я имею в виду образы как аналоги файлов в виртуальной машине, и взаимодействие акторов-объектов как аналогов процессов. Именно потому, что это операционная система и он пытается заменить собой функции операционной системы, он будет невостребованным - в IT мода на ОС крайне инертна, новых никто не разрабатывает - в лучшем случае переписывают старые. Возьмите тот же линукс - у него корни тянутся с однозадачной ОС 60-х годов. Это я сейчас имею в виду в том числе фундаментально однопоточный fork, который устарел лет так 30 назад и теперь сильно затрудняет любую системную разработку необходимостью постоянно оглядываться на поддержку fork-а. Да, как ОС Smalltalk смотрится заметно продвинутее никсов - и чо?

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

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

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

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

Нет такой вещи как «современный лисп».

— Почему, мистер Андерсон, почему? Во имя чего? Что вы делаете? Зачем, зачем встаете? Зачем продолжаете драться? Неужели вы верите в какую-то миссию, или вам просто страшно погибать? Так в чем же миссия, может быть, вы откроете? Иллюзии, мистер Андерсон, причуды восприятия. Хрупкие логические теории слабого человека, который отчаянно пытается оправдать свое существование — бесцельное и бессмысленное! Вам пора это увидеть, мистер Андерсон, увидеть и понять! Вы не можете победить, продолжать борьбу бессмысленно. Ну почему, мистер Андерсон, почему вы упорствуете?

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

Только вы оба забыли сказать что оценка пригодности субъективна а в отсутствие контекста вобще не имеет никакого смысла.

Ну хорошо, что там за контекст ?

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

Еще кстати, в тему о «современном лиспе» добавлю что сообществу смолтолка удалось не расколоться на десяток несовместимых стандартов/имплементаций как сообществу лиспа. Есть основая VM (https://github.com/OpenSmalltalk/opensmalltalk-vm) - ядро в которое добавляют патчи, оптимизации и фичи со всего сообщества, а Pharo, Squeak и другие делают так скажем «юзер-спейс» классы и библиотеки, которые уже могут быть несовместимыми. А для third-party библиотек довольно просто добавлять специфичный код, проверять наличие классов/методов в рантайме.

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

Это всего лишь лисп, сделанный более-менее недавно. «Современным» это его не делает

Поясни свое понимание современости. В моих глазах C, C++, Python, PHP - безнадежно устаревшие, а Clojure - вполне себе современный, как отвечающий современным требованиям по соотношению затрат на разработку, производительности, и надежности в контексте современных сред исполнения.

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

Может среда разработки (IDE) обладает какими-то киллер-фичами? Сообщество, уникальные либы, практики, проекты etc.

Скажу за VisualWorks: самая удобная IDE из всех с которыми приходилось работать, библиотека OpenTalk позволяет дёргать объекты между образами по сети написав всего десяток строк кода, объектная БД GemStone/S 64 в основном привязана как раз к VW, удобная система контроля версий Store отлично интегрированная в среду (точнее она на ней и написана) - на ней же и живёт VW Public Repository - репозиторий общедоступных проектов.

Darkman ★★★ ()