LINUX.ORG.RU

Smalltalk в массах


0

0

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

Совсем забыл добавить - информация собираться в целях использования в книге по Smalltalk

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

Да не за что :), а про смалтолк - так он не развит, хотя язык очень гибкий и удобный ИМХО (сейчас его ковыряю ради Seaside), но у нас не развился из-за популярности быдло-дульфи в основном

lemoor88
() автор топика

>Прошу людей работающих со Smalltalk описать личные ощущения

Изящный и выразительнейший язык, один только протокол работы с коллекциями чего стоит. Выражать свои мысли на этом языке - одно удовольствие (для меня). Более того, в последнее время я всё чаще стал замечать, что Smalltalk даже на уровне синтаксиса склоняет программиста к большей декомпозиции. Это стало особенно заметно после прочтения SBPP.

решаемые задачи

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

Just for fun - пилю свою простецкую CMS на Seaside, чтобы лишний раз набить скилл. На ней планируется поднять сайт для нашей универской группы.

реализацию и среду которые используете

Для web-ориентированных задач - Pharo. Некоторые рассчеты по лабам тоже в Pharo проводил. Для обработки текстов - GNU Smalltalk.

В чем вы видите преимущества Smalltalk в работе с Web?

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

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

> ЩИТО?

Я имел ввиду в РФ его почти не используют. Сорри) Троллю в соседнем топике, не правильно выразился). Спасибо за описание.

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

Спасибо за идею. А на ЛОРе все таки стоило

lemoor88
() автор топика

>Прошу людей работающих со Smalltalk описать личные ощущения, решаемые задачи, а так же указать реализацию и среду которые используете. В чем вы видите преимущества Smalltalk в работе с Web?

На смолтоке не пишу, но поднимал сайт на нем, с использованием сисайда и еще каких-то либ, посмотрел на дебагер в браузере - порадовал функционал :). Но в остальном, как я понял, единственная живая реализация - squeak, вещь в себе, причем вся, что на мой взгляд неправильно, система должна быть модульной, исходников как таковых тоже нет, система контроля версий своя и тп, в общем на мой взгляд ruby, как реинкарнация смолтока - лучшее решение. Если бы все это было на смолток-машине - было бы круто, имело бы смысл написать лисп и емакс на смолтоке:), а так чувства смешанные.

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

Живых реализаций больше - VisualWorks, Smalltalk/X, GemStone.

К слову, реализация Руби на Smalltalk/X по тестам работает куда быстрее, чем официальная :)

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

Если вам это нужно, то есть паттерн-синглтон, который можно написать в Java и он встроен в JVM язык Scala

А зачем?

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

> Да. Книга будет бесплатная и находиться в свободном доступе.

Не забудь на ЛОР ссылку кинуть :)

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

>Живых реализаций больше - VisualWorks, Smalltalk/X, GemStone.

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

К слову, реализация Руби на Smalltalk/X по тестам работает куда быстрее, чем официальная :)

Ну если Smalltalk/X достаточно быстр - ничего слишком удивительного, официальная руби была интерпретатором, потому и тормоз, а тк языки похожи и если в смолтоке есть какие-то средства вроде лисповых reader macro (а может и без них) то превратить смолток в руби будет довольно просто, языки очень похожи.

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

>Для web-ориентированных задач - Pharo.

И как оно по требованиям к ресурсам по сравнению с RoR или другими распространенными фреймворками?

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

Pharo - это IDE, виртуальная машина и всё сразу, с рорами да фреймворками её не сравнивают.

Говорят, что сама машина быстрее, чем питон и руби 1.9 (сам не знаю, не спрашивал).

У меня оно будучи загруженным (в оконном режиме, с IDE и поднятым сервером) кушало ~32 метра рамы.

Сам-же фреймворк, Seaside - был когда-то шибко прожорлив до памяти, из-за продолжений (состояние пользовательской сессии, т.н. flow, хранится в памяти машины целиком на стороне сервера). На каждого пользователя по 200-400 кбайт набегало иногда. В последних версиях это более-менее пофиксили, в грядущей 3.0 так ещё лучше обещают.

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

>В последних версиях это более-менее пофиксили, в грядущей 3.0 так ещё лучше обещают.

Насколько пофиксили?

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

> был когда-то шибко прожорлив до памяти, из-за продолжений

Веб на продолжениях это просто ошибка природы, ладно не закопали в 95-ом, но сейчас то?

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

>Веб на продолжениях это просто ошибка природы

Почему? Удобно же, и просто (для конечного разработчика).

Да и IBM так не считает: http://www.ibm.com/developerworks/java/library/j-cb03216/index.html

UncommonWeb и Weblocks, стало быть, тоже ошибки природы? :)

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

>Если вам это нужно, то есть паттерн-синглтон, который можно написать в Java и он встроен в JVM язык Scala

Не, я это спрашивал не в контексте изготовления синглтонов

>А зачем?

Это такой тест на чистоту ОО :) В Смолтоке аналог this, self, доступен как на стороне объекта (обычные методы), так и на стороне класса («статические методы» в др. языках). На стороне класса self вернет ссылку на текущий класс (классы тоже объекты).

Это порой бывает удобно:

Matrix class >> new: dim tabulate: aBlock
    "Answer a dim*dim matrix where it at: i at: j is aBlock value: i value: j."
    ^self rows: dim columns: dim tabulate: aBlock
Matrix new: 3 tabulate: [:i :j | i * j] "will return a Matrix(1 2 3 2 4 6 3 6 9)"
yoghurt ★★★★★
()
Ответ на: комментарий от yoghurt

> Почему? Удобно же, и просто (для конечного разработчика).

HTTP это протокол без состояния и он сделан таким специально. Продолжения противоречат концепции REST и есть не более, чем костыль 95-года.

Я помню в демке для Weblocks меня просто убила кнопка внизу страницы для перезагрузки сессии. Я пробовал менять адресную строку в браузере, но меня всё время закидывало в одно и тоже место. Просто жуть.

Да и IBM так не считает


Там у них на сайте много разного мусора.

UncommonWeb и Weblocks, стало быть, тоже ошибки природы? :)


Конечно, как и CoreServer с dwim. Но да, согласен, это скорей не ошибка природы, а тяжёлая болезнь мозга. Либо, когда этим заниматься just for fun и просто хочется чего-нибудь забавного.

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

>Продолжения противоречат концепции REST и есть не более, чем костыль 95-года

Да больно нужна эта REST в стейтфульных веб-приложениях. Во всяких контентных сайтах, форумах и пр.- да, но это не есть основная сфера применения Seaside :)

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

>>Во всяких контентных сайтах, форумах и пр

Стейтфульных веб-приложения не нужны


Типичный лисперский бред. Даже на лоре используются сессии, куки и прочие средства для создания state.

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

> Даже на лоре используются сессии, куки и прочие средства

для создания state.


Это, ЛОР это оказывается statefull? Весь state, который есть на лоре, можно спокойно хранить в одном куки и это вообще назвать state затруднительно. В этом есть нарушение REST, но очень небольшое. Что такое продолжения не осилили?

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

>Весь state, который есть на лоре, можно спокойно хранить в одном куки и это вообще назвать state затруднительно.
Что же тогда вообще большое?

Что такое продолжения не осилили?

А зачем его осиливать, если ни в одном нормальном не фанатском языке их нет?

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

>JavaScript сейчас всё позволяет делать очень здорово.

Слабо я себе представляю, как на JS можно сделать онлайн-аналог MS Access, ну да ладно, поверю наслово :)

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

> HTTP это протокол без состояния и он сделан таким специально. Продолжения противоречат концепции REST и есть не более, чем костыль 95-года.

HTTP в web — костыль, ибо есть 9P/Styx

Стейтфульные веб-приложения не нужны

Стейтлессные «веб-приложения» — не приложения

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

> Совсем забыл добавить - информация собираться в целях использования в книге по Smalltalk

Сперва осиль Smalltalk, а потом пиши книгу!

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