LINUX.ORG.RU

[smalltalk] Помогите выборать

 


0

1

Здравствуйте, решил изучить smalltalk, поковырял сквик немного. Появилась пара вопросов:

1) Какие коренные отличия Pharo от Squeak?

2) Можно ли на них писать декстопные приложения? Реально скрыть «окно» виртуальной машины и оставить на экране лишь программу?

3) Какие есть еще хорошие реализации smalltalk (естественно бесплатные =) )?

4) На сабже что-нибудь более или мене сложное пишется? Или smalltalk остался языком с Ъ идеей и слабой применимостью?

5) Есть серьезные проекты на Squeak/Pharo или лишь Etoy и Seaside их удел?

6) Что можете посоветовать почитать по смаллтолку кроме «классических монументальных трудов»? Желательно более практического характера, без философии (а то большинство книг, которые находил больше склоняются к описанию самого языка, а не то как работать на нем).

Заранее благодарю.


Cast yoghurt.

Хорошие реализации: Pharo, Squeak, Cuis, GNU Smalltalk. Для серьезных проектов посмотрите Pier, Moose, Squeak CD и DVD, а также OpenCobalt.

Почитать: Pharo by Example, Squeak by Example, Computer Programming using GNU Smalltalk.

На смоллтоке до сих пор серьезно пишут. А языком с Ъ идеей остался Self.

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

Реально скрыть «окно» виртуальной машины и оставить на экране лишь программу?

В GNU Smalltalk вм вообще консольная. По поводу Squeak — ждите yoghurt'а.

buddhist ★★★★★
()

1) Какие коренные отличия Pharo от Squeak?

Когда-то в фаре делали упор на лицензию, с выходом четвертого сквика стало не актуально. Исполняются они одной виртуальной машиной. Основные отличия можно углядеть в лук-энд-филе. По крайней мере, на ранних этапах :) По моим личным ощущениям всякие новые модные библиотеки первым делом обкатывают на фаре.

2) Можно ли на них писать декстопные приложения? Реально скрыть «окно» виртуальной машины и оставить на экране лишь программу?

Когда-то были биндинги к GTK2 и VxWidgets, но, насколько я помню, они все сдохли. Были ещё благородные потуги приделать нативные окна к морфику, но на это в прошлом году тоже все положили.

3) Какие есть еще хорошие реализации smalltalk (естественно бесплатные =) )?

Если придраться к слову «бесплатные», то Visual Works Non-Commercial тут вполне подходит. Когда-то ссылку загрузки с официального сайта, правда, выпилили, не знаю, что у них там сейчас.

Ещё есть интересная реализация Smalltalk/X, но я её особо не ковырял.

4) На сабже что-нибудь более или мене сложное пишется?

http://www.teleplace.com/

5) Есть серьезные проекты на Squeak/Pharo или лишь Etoy и Seaside их удел?

См. выше. Помимо Seaside, говорят, что есть. На оффсайте фары были ссылки.

6) Что можете посоветовать почитать по смаллтолку

смаллтолку

Для начала - учебник английского.

Желательно более практического характера, без философии

Squeak/Pharo by example, Dynamic web development with Seaside, Smalltalk Best Practice Patterns

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

А Self разве еще жив? Я где-то читал, что он умер из-за того, что Sun отказалась от него в пользу Java.

Alda
() автор топика
Ответ на: комментарий от yoghurt

Учебник английского я читал, правильного «произношения» от меня не требуется. Главное понимать. Или правильное произношение мне даст лучшее понимание книги?

А чем реализация Smalltalk/X интересна? Она развивается? Или как Dolphin Smalltalk прекратила свое развитие? (если на счет последнего я не прав - поправьте)

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

Прототипная объектная система, а не классовая.

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

А чем реализация Smalltalk/X интересна?

Она, на мой взгляд, более десктоп-ориентирована по сравнению с другими свободными, при этом ънтпрайзнее гнутого смолтока. Впрочем, многих распространенных пакетов для /X может и не быть.

Она развивается?

По данным с последней конференции ESUG, да.

Или как Dolphin Smalltalk прекратила свое развитие? (если на счет последнего я не прав - поправьте)

Dolphin Smalltalk уходил, но обещал вернуться, при этом даже кроссплатформенным. Когда-то всплывали всякие анонсы и наброски нового UI, но я за ним не слежу.

yoghurt ★★★★★
()

Ты немного отстал от времени, чувак. В 1994 вышел новый Smalltalk, называется Common Lisp - синтаксис немного нестандартный, но концепции в целом такие же; еще фич прибавилось, мультиметоды там всякие и прочее.

lovesan

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

я совершенно серьезно, причем.
Ранние ОО-системы для лиспов были копией смоллтолка, но потом они эволюционировали в CLOS.

lovesan

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

* fixed

Lisp != лучшый язык мира. Есть языки лучше, чем он (реализующие парадигмы более полно)

Lisp != лучшый язык мира. Есть языки более удобные чем он.

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

Есть языки более удобные чем он.

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

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

Если Лисп - лучше и удобнее всех других языков, то почему на нём не пишут операционные системы, системы управления базами данных, сервера приложений, почтовые сервера, веб-сервера, сервера обмена мгновенными сообщениями, игры, браузеры, почтовые клиенты, клиенты обмена мгновенными сообщениями, CAD'ы, CASE'ы, CAM'ы, компиляторы, среды разработки, системы обработки аудио, системы обработки графики, системы обработки видео, системы 3D-моделирования и так далее?

anonymous
()

Здравствуйте, решил изучить smalltalk

Но зачем? Ведь Smalltalk уже не моден.
Если хочется труЪ-нонконформизма - изучай Coq, Agda2, Epigram, Omega.

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

Как не пишут, если пишут?

Talk is cheap. Show me the code.

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

Пишут. В CAD'ах его много

Ну хорошо. Так и запишем: лисп годится только для автокадовских скриптов, лол.

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

Ну хорошо, CAD и CAM вычёркиваем. Так почему на Лиспе не пишут операционные системы, системы управления базами данных, сервера приложений, почтовые сервера, веб-сервера, сервера обмена мгновенными сообщениями, игры, браузеры, почтовые клиенты, клиенты обмена мгновенными сообщениями, CASE'ы, компиляторы, среды разработки, системы обработки аудио, системы обработки графики, системы обработки видео, системы 3D-моделирования и так далее?

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

игры, браузеры, почтовые клиенты, клиенты обмена мгновенными сообщениями, CASE'ы, компиляторы, среды разработки, системы обработки аудио, системы обработки графики, системы обработки видео, системы 3D-моделирования и так далее

Ты про EMACS слышал?

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

Язык - инструмент, он решает конкретный круг задач. Если тот же РНР изначально создавался для web'a, то в этой области и показывает себя с лучшей стороны.

Lisp не имеет ничего, чего бы не было в том же Tcl. Функциональность в нем, насколько я знаю, не полная и позволяет просто писать в функциональном стиле. ООП в нем (сам не работал с CLOS, но есть коллега, который на нем вкалывает) есть не больше чем костыль. Если уже говорить о функциональности и гибкости языка, то на мой взгляд тот же Factor дает фору лиспу.

Про парадигму реализацию парадигмы в smalltalk'е - я думаю большое количество специалистов не могут ошибаться и называть его эталонной реализацией Ъ-ООП на ряду с Eiffel.

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

то в этой области и показывает себя с лучшей стороны.

Дерьмово он там себя показывает.

Lisp не имеет ничего, чего бы не было в том же Tcl.

Большего бреда в жизни не слышал. Ну хотя нет, слышал - когда аналогично сравнивают с Python.

Макросы четырех видов(причем оперирующие не тупыми строками, а AST), Condition System, CLOS с метаобъектным протоколом, высокопроизводительные реализации и оптимизирующие компиляторы - этого в тикле нет и не намечается. Да там даже пакетного менеджера уровня quicklisp то нету.

Функциональность в нем, насколько я знаю, не полная и позволяет просто писать в функциональном стиле.

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

ООП в нем (сам не работал с CLOS, но есть коллега, который на нем вкалывает) есть не больше чем костыль.

Назвать CLOS костылем это просто верх невежества.
Короче, «одна бабка сказала», да и то не факт что сказала. И что он там вкалывает?

тот же Factor дает фору лиспу.

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

думаю большое количество специалистов не могут ошибаться и называть его эталонной реализацией Ъ-ООП

Ъ ООП это когда у нас каждая сущность языка - объект(сущность, имеющая состояние, поведение и идентичность, а не просто синтаксис. Ну и принадлежащая к некоторому классу, если говорить о class-based OOP.). В CL именно так. Более того, в CL синтаксис и семантика языка также являются объектами языка, так что здесь он перекрывает даже smalltalk.
Плюс, если говорить о выразительной силе и гибкости объектной системы, то в CL они выше чем в смоллтолке. Но, чтобы это понять, нужно, естественно, как минимум познакомиться с CLOS, а не делать выводы на основе каких-то левых слухов.

lovesan

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

CL синтаксис и семантика языка также являются объектами языка, так что здесь он перекрывает даже smalltalk

Если я захочу расширить синтаксис или семантику в смолтоке, я просто расширю/изменю классы из категорий AST-* и Compiler-*, если брать в пример тот же Pharo. Да да, это тоже можно делать прямо в рантайме, ибо парсер, компилятор суть объекты и живут в том же образе, что и моя программа.

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

Я его не тыкал. По сути GemStone/S предоставляет распределенный персистенс и, соответственно, прозрачное обращение к объектам, которые живут на разных гемах.

На базе этого чуваки сделали свой руби, http://maglev.github.com/ если интересно, вроде как активно пилят.

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

Но это уже хак, и никто так не делает, согласись?

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

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

Lisp не имеет ничего, чего бы не было в том же Tcl. Функциональность в нем, насколько я знаю, не полная и позволяет просто писать в функциональном стиле. ООП в нем (сам не работал с CLOS, но есть коллега, который на нем вкалывает) есть не больше чем костыль. Если уже говорить о функциональности и гибкости языка, то на мой взгляд тот же Factor дает фору лиспу.

Это неправда. Видимо, всё со слов того «коллеги». А с лиспом ты совсем не знаком, очевидно.

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

Ну допустим делают. Я имел ввиду редко, и это хак.

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

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

В 1994 вышел новый Smalltalk, называется Common Lisp

гы-гы-гы.

А почему не «в 1985 вышел новый смоллток, называется Objective C» software circiuits by Bread Cox, или «в 1993 вышел новый смоллток, называется NewtonScript» http://en.wikipedia.org/wiki/NewtonScript#External_links или не «JavaScript наш новый Self» или не «автор Java Gilad Bracha раскаялся и выпустил новый смоллток, NewSpeak» http://bracha.org/Site/Newspeak.html http://newspeaklanguage.org/ ?

Смоллток в Common Lisp закончился в Genera http://en.wikipedia.org/wiki/Genera_(operating_system)#Genera_operating_system , вместе с FLAVORS http://en.wikipedia.org/wiki/Flavors_(programming_language)

всё-таки чем-то FLAVORS напоминали ООП по прототипам

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

потом, сравни какую-нибудь реализацию CL поминимальнее, и любой из компиляторов Яна Пийуматры http://piumarta.com/cv/ , например, из последнего, связаного с COLA, Ometa, FONC http://piumarta.com/software/id-objmodel/ http://piumarta.com/software/cola/ — хотя у него вообще много интересного http://piumarta.com/software/ , например http://piumarta.com/software/maru/

потом, те же соображения от авторов newspeak.

Вывод: компилятор смоллтока на смоллтоке получается поминималистичнее, чем CL на CL...

.. потому что ОБЩЕлисп — это слишком толсто..

ну да **Common** Lisp вообще не удачный получился, эдакий С++ мира лиспов.. другое дело вот ISOLisp, или Klambda из Shen/Qi_II

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

методы кеширования и диспетчеризации (google://PIC aka Polymorphic Inline Cache) в смоллтоке тоже эволюционировали. да и в других язычках для мультиметодов появляются всякие там dispatch trees, и т.п.

а CLOS что, так и осталась диспетчеризация на уровне ранних 90х?

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

ООП в CL более полное, чем в смоллтолке

полное — значит «толсто» в реализации рантайма?

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

тот же Factor дает фору лиспу.

Я лично знаком с Factor, и могу сказать, что во многих местах до лиспа он не дотягивает

да Factor совсем не про это, а про то как из стек-ориентированного языка можно сделать функциональный (конкатенативный). хотя в Cat и в Joy как-то чище получилось

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

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

Более того, в CL синтаксис и семантика языка также являются объектами языка, так что здесь он перекрывает даже smalltalk.

а в смоллтоке парсер, компилятор и кодогенератор являются стандартым объектов. тьфу, классом. тьфу, объектом.

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

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

сравни какую-нибудь реализацию CL поминимальнее, и любой из компиляторов Яна Пийуматры

сравнивать количество строк кода? однозначно CL проиграет. И что?

например http://piumarta.com/software/maru/

и что с ней (ним?) можно делать, кроме высасывания из пальца очередного дисера?

Вывод: компилятор смоллтока на смоллтоке получается поминималистичнее, чем CL на CL...

а берёзки в средней полосе много тоньше баобабов в Африке. И?

.. потому что ОБЩЕлисп — это слишком толсто..

ну да, именно поэтому на нём можно что-то писать, в отличие от «компиляторов Яна Пийуматры»

другое дело вот ISOLisp, или Klambda из Shen/Qi_II

и кому они нужны кроме «ценителей красоты»?

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