Smalltalk для людей. Есть такой?
От: quadrochups ЮАР  
Дата: 29.08.06 11:54
Оценка: :))) :)))
Ребят, вопрос такой возник: очень нравится мне идеология Смоллтока (не предмет спора, будем считать это субъективным мнением). Но вот его синтаксис... Я думал, после Перла мне уже ничего не страшно — ан нет, я ошибся. Какой-то он мне кажется жуууткий и нечитабельный. Конечно, привыкнуть можно даже к Лиспу, но мне бы хотелось не коверкать сознание, а просто сесть и работать.
Так вот сам вопрос: есть ли язык по идеологии совпадающий со Смоллтоком, но с более человеческим синтаксисом?

Для примера (что я считаю "человеческим") могу привести C# (да и вообще любой Си-подобный язык) — на мой взгляд это достаточно краткий и выразительный синтаксис, вполне пригодный для массового программинга.
Re: Smalltalk для людей. Есть такой?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 29.08.06 12:01
Оценка: +2
Здравствуйте, quadrochups, Вы писали:

Q>Так вот сам вопрос: есть ли язык по идеологии совпадающий со Смоллтоком, но с более человеческим синтаксисом?


Ruby


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Smalltalk для людей. Есть такой?
От: Зверёк Харьковский  
Дата: 29.08.06 12:19
Оценка: 7 (2) +2
Здравствуйте, eao197, Вы писали:

Q>>Так вот сам вопрос: есть ли язык по идеологии совпадающий со Смоллтоком, но с более человеческим синтаксисом?


E>Ruby


Есть распространенное мнение, что таки да, Руби.
Впрочем, есть одна как минимум "фича" смолтолка, которой у Руби нет и не будет никогда (это не хорошо и не плохо, но на способ мышления на этом языке сильно влияет):
Ruby хранит исходники в традиционной форме текстовых файлов, а Smalltalk — в image.

"Благодаря" этому, например, Smalltalk — это язык, имеющий лучшие в мире IDE (потому что он by design устроен так, что дихотомии design-time/run-time не существует, и в момент написания кода о нем есть вся та информация, что и в момент выполнения). Поэтому действительно полнофункциональный браузеры кода и refactory-браузеры для Ruby создать почти невозможно (т.к. любой класс и любой объект может измениться в рантайме, и простым парсингом исходников это очень тяжело определить и корректно обработать).
AFAIK, Smalltalk чуть ли не единственный язык-среда программирования, который подходит к исходникам не как к "простому тексту, который мы сейчас распрасим-скомпилируем-выполним".
FAQ — це мiй ай-кью!
Re[3]: Smalltalk для людей. Есть такой?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 29.08.06 12:42
Оценка: 1 (1) :))
Здравствуйте, Зверёк Харьковский, Вы писали:

ЗХ>Есть распространенное мнение, что таки да, Руби.


А вот я, например, до сих пор не уверен -- то ли Ruby -- это испорченный Perl-ом Smalltalk, то ли это улучшенный Smalltalk-ом Perl. Последний вариант весьма вероятен

ЗХ>Впрочем, есть одна как минимум "фича" смолтолка, которой у Руби нет и не будет никогда (это не хорошо и не плохо, но на способ мышления на этом языке сильно влияет):

ЗХ>Ruby хранит исходники в традиционной форме текстовых файлов, а Smalltalk — в image.

А ведь это же поддчеркивается и по данной мной ссылке:

Ruby Sparkles

Take a true object-oriented language, such as Smalltalk. Drop the unfamiliar syntax and move to more conventional, file-based source code. Now add in a good measure of the flexibility and convenience of languages such as Python and Perl.

You end up with Ruby.


ЗХ>"Благодаря" этому, например, Smalltalk — это язык, имеющий лучшие в мире IDE (потому что он by design устроен так, что дихотомии design-time/run-time не существует, и в момент написания кода о нем есть вся та информация, что и в момент выполнения). Поэтому действительно полнофункциональный браузеры кода и refactory-браузеры для Ruby создать почти невозможно (т.к. любой класс и любой объект может измениться в рантайме, и простым парсингом исходников это очень тяжело определить и корректно обработать).


Интересно в irb работать (если она скомпилирована с поддержкой автодополнения): набираешь несколько первых букв и жмешь Tab -- имя расширяется в зависимости от контекста (будь то имя класса или имя метода). Как в Smalltalk-е, только результат ввода нельзя в файл сохранить. Хотя и там не всегда есть помощь от irb, например, в случае:
irb(main):001:0> def func(x)
irb(main):002:1> x.what # <= Что хотел сказать автор?

А вот так понимает:
irb(main):001:0> class My
irb(main):002:1> def what_i_want; bla_bla_bla; end
irb(main):003:1> def what_you_want; bla_bla_bla; end
irb(main):004:1> end
=> nil
irb(main):005:0> x = My.new
=> #<My:0x2c15014>
irb(main):006:0> x.what_
x.what_i_want    x.what_you_want  # <= Это подсказка от irb.
irb(main):006:0> x.what_


ЗХ>AFAIK, Smalltalk чуть ли не единственный язык-среда программирования, который подходит к исходникам не как к "простому тексту, который мы сейчас распрасим-скомпилируем-выполним".


+1


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[2]: Smalltalk для людей. Есть такой?
От: FR  
Дата: 29.08.06 12:48
Оценка:
Здравствуйте, eao197, Вы писали:

E>Здравствуйте, quadrochups, Вы писали:


Q>>Так вот сам вопрос: есть ли язык по идеологии совпадающий со Смоллтоком, но с более человеческим синтаксисом?


E>Ruby


Питон тоже, но у него конечно синтаксис не совсем сишный
Re: Smalltalk для людей. Есть такой?
От: Владек Россия Github
Дата: 29.08.06 13:45
Оценка:
Здравствуйте, quadrochups, Вы писали:

Q>Ребят, вопрос такой возник: очень нравится мне идеология Смоллтока (не предмет спора, будем считать это субъективным мнением). Но вот его синтаксис... Я думал, после Перла мне уже ничего не страшно — ан нет, я ошибся. Какой-то он мне кажется жуууткий и нечитабельный. Конечно, привыкнуть можно даже к Лиспу, но мне бы хотелось не коверкать сознание, а просто сесть и работать.

Q>Так вот сам вопрос: есть ли язык по идеологии совпадающий со Смоллтоком, но с более человеческим синтаксисом?

Q>Для примера (что я считаю "человеческим") могу привести C# (да и вообще любой Си-подобный язык) — на мой взгляд это достаточно краткий и выразительный синтаксис, вполне пригодный для массового программинга.


Это?
WinAMP жуёт кассету.
Re[3]: Smalltalk для людей. Есть такой?
От: Beam Россия  
Дата: 29.08.06 14:33
Оценка:
Здравствуйте, Зверёк Харьковский, Вы писали:

ЗХ>Есть распространенное мнение, что таки да, Руби.

Руби — отличный язык. Хотя есть и концептуальные отличия между ним и Smalltalk.
Так в Руби конструкции типа if, for, while, [] реализованы на уровне синтаксиса, а в Smalltalk — с помощью методов.
С одной стороны это позволяет лечге перейти к Руби от Java/C# и пр., с другой стороны в Smalltalk соблюдается концепция ООП.
Хотя отступление от ООП и имеет определенные минусы, ИМХО, это не мешает создавать хорошие (а заодно и красивые) программы на Руби.

ЗХ>Впрочем, есть одна как минимум "фича" смолтолка, которой у Руби нет и не будет никогда (это не хорошо и не плохо, но на способ мышления на этом языке сильно влияет):

ЗХ>Ruby хранит исходники в традиционной форме текстовых файлов, а Smalltalk — в image.
В Smalltalk исходный текст можно тоже хранить в текстовых файлах. Так, при необходимости можно загружать код в image и, наоборот, выгрузить его оттуда в текстовый файл. Т.е. нужные библиотеки/классы лежат в image, а не нужные "на полочке" (на диске).

ЗХ>"Благодаря" этому, например, Smalltalk — это язык, имеющий лучшие в мире IDE (потому что он by design устроен так, что дихотомии design-time/run-time не существует, и в момент написания кода о нем есть вся та информация, что и в момент выполнения). Поэтому действительно полнофункциональный браузеры кода и refactory-браузеры для Ruby создать почти невозможно

Если для Руби реализовать IDE, работающую по принципу Smalltalk, т.е. формировать image, в котором будут файлы Руби, то ничего невозможного в этом нет. Вон та же IDEA подключает к проекту стороннюю библиотеку, и "интегрирует" ее в проект. Если код этих библиотек доступен неуж-то трудно реализовать "полнофункциональный браузер код и refactory-браузер"?
Правда следует учесть, что в IDE smalltalk хранится не только код, но и созданные объекты на текущий момент! То есть создайте любой объект в Workspace, поработайте с ним. Закройте и снова откройте image. И, вперед, продолжайте работать с тем же объектом. Это реализовать труднее, но, в принципе, также возможно и в Руби.

ЗХ>(т.к. любой класс и любой объект может измениться в рантайме, и простым парсингом исходников это очень тяжело определить и корректно обработать).

Не совсем понятно, что имелось ввиду.
... << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Best regards, Буравчик
Re[4]: Smalltalk для людей. Есть такой?
От: Зверёк Харьковский  
Дата: 29.08.06 14:43
Оценка:
Здравствуйте, Beam, Вы писали:

ЗХ>>(т.к. любой класс и любой объект может измениться в рантайме, и простым парсингом исходников это очень тяжело определить и корректно обработать).

B>Не совсем понятно, что имелось ввиду.
вот это:

B>Правда следует учесть, что в IDE smalltalk хранится не только код, но и созданные объекты на текущий момент! То есть создайте любой объект в Workspace, поработайте с ним. Закройте и снова откройте image. И, вперед, продолжайте работать с тем же объектом. Это реализовать труднее, но, в принципе, также возможно и в Руби.



Реализовать это возможно, но тяжело, долго, и коммьюнити не слишком стремится этим заниматься. Причины этому недавно в ruby-talk обсуждались (там раз в месяц поднимается тема вроде "Why not to have Smalltalk-like IDE for Ruby?")
FAQ — це мiй ай-кью!
Re[3]: Smalltalk для людей. Есть такой?
От: squiz  
Дата: 29.08.06 15:55
Оценка:
Здравствуйте, Зверёк Харьковский,

IDE как расширение VS 2005 уже накатали [ANN] Ruby in MSVS 2005
Автор: Dj.ValDen
Дата: 27.08.06
Never underestimate those behind you...
Re[4]: Smalltalk для людей. Есть такой?
От: Зверёк Харьковский  
Дата: 29.08.06 15:59
Оценка:
Здравствуйте, squiz, Вы писали:

S>IDE как расширение VS 2005 уже накатали [ANN] Ruby in MSVS 2005
Автор: Dj.ValDen
Дата: 27.08.06


IDE IDEю — рознь. Очень стоит потрогать нормальное смолтолковское средство разработки (в котором само средство разработки можно модифицировать так же легко, как и прикладной код), чтобы почувствовать разницу
FAQ — це мiй ай-кью!
Re[5]: Smalltalk для людей. Есть такой?
От: squiz  
Дата: 29.08.06 17:55
Оценка:
Здравствуйте, Зверёк Харьковский, Вы писали:

ЗХ>IDE IDEю — рознь. Очень стоит потрогать нормальное смолтолковское средство разработки (в котором само средство разработки можно модифицировать так же легко, как и прикладной код), чтобы почувствовать разницу


Я "трогал" только Smalltalk MT. Не впечатлило
Never underestimate those behind you...
Re[6]: Smalltalk для людей. Есть такой?
От: pavel74  
Дата: 29.08.06 19:14
Оценка: 3 (1)
Здравствуйте, squiz, Вы писали:


S>Я "трогал" только Smalltalk MT. Не впечатлило

Не самая удачная реализация, хотя и есть свои плюсы.
Если будет время и возможность "потрогайте" Dolphin Smalltalk, масса новых интересных (положительных) впечатлений гарантирована!

здесь
Re[2]: Smalltalk для людей. Есть такой?
От: quadrochups ЮАР  
Дата: 30.08.06 09:40
Оценка:
E>Ruby

Смотрел. Нашёл пару моментов, которые смущают:

1. В Smalltalk нету МЕТОДОВ, там есть сообщения. Если программа приняла неизвестное сообщение, его можно вежливо обработать. Руби же сразу начинает ругацца — метод должен быть определён заранее. Я правильно уловил?

2. Не совсем понятна (притянутая из Перла) фича в виде префиксов переменных. В Перле — понятно, это позволяло обходиться без описаний и шикарно манипулировать разнородными сущностями. В Руби сделали $ и @ — довольно глупый выверт.

3. Аналогично, перенесённые из Перл "псевдопеременные" вида $_, $/, etc — для Перла (изначально как обработчика текста) это было простительно, но для нового, ОО языка я считаю это мусором в языке.

4. Аксессоры — тоже какая-то мешанина: есть синтаксис с get_/set_ (с какой радости? может это мои методы!), есть его запись через "=", а есть его сокращение через attr_* — вам не кажется, что эта чехарда несколько несерьёзна?


Я не хочу хаять Руби в целом — он может быть вполне достойной заменой. Но вот как альтернатива СМОЛЛ-току — смотрится слишком дилетантски.
Re[2]: Smalltalk для людей. Есть такой?
От: quadrochups ЮАР  
Дата: 30.08.06 09:49
Оценка:
Q>>Для примера (что я считаю "человеческим") могу привести C# (да и вообще любой Си-подобный язык) — на мой взгляд это достаточно краткий и выразительный синтаксис, вполне пригодный для массового программинга.

В>Это?


О, нет!!! Только не этот ужыз! Он хоть и "си-шный", но мешанина полнейшая.
Re[3]: Smalltalk для людей. Есть такой?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 30.08.06 09:52
Оценка:
Здравствуйте, quadrochups, Вы писали:

E>>Ruby


Q>Смотрел. Нашёл пару моментов, которые смущают:


Q>1. В Smalltalk нету МЕТОДОВ, там есть сообщения. Если программа приняла неизвестное сообщение, его можно вежливо обработать. Руби же сразу начинает ругацца — метод должен быть определён заранее. Я правильно уловил?


Нет. В Ruby каждый вызов метода -- это отсылка сообщения. Если сообщение (метод) для объекта не определен, то у объекта вызывается метод method_missing, в котором можно это дело вежливо обработать.

Q>2. Не совсем понятна (притянутая из Перла) фича в виде префиксов переменных. В Перле — понятно, это позволяло обходиться без описаний и шикарно манипулировать разнородными сущностями. В Руби сделали $ и @ — довольно глупый выверт.


Еще @@ забыли.
$ практически не используется, кроме как для обращения к системным переменным типа $!, $: и пр.
А вот @ и @@ удобны.

Q>3. Аналогично, перенесённые из Перл "псевдопеременные" вида $_, $/, etc — для Перла (изначально как обработчика текста) это было простительно, но для нового, ОО языка я считаю это мусором в языке.


Он не новый, а 1994 года выпуска. И ноги у него растут из Perl-а.
Для $_ и $/ есть пакет English

Q>4. Аксессоры — тоже какая-то мешанина: есть синтаксис с get_/set_ (с какой радости? может это мои методы!), есть его запись через "=", а есть его сокращение через attr_* — вам не кажется, что эта чехарда несколько несерьёзна?


Нет. Я вообще не понял, про какие get_/set_ идет речь.

Q>Я не хочу хаять Руби в целом — он может быть вполне достойной заменой. Но вот как альтернатива СМОЛЛ-току — смотрится слишком дилетантски.


Да ради бога. Проходя проходи.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[3]: Smalltalk для людей. Есть такой?
От: quadrochups ЮАР  
Дата: 30.08.06 09:54
Оценка:
ЗХ>Впрочем, есть одна как минимум "фича" смолтолка, которой у Руби нет и не будет никогда (это не хорошо и не плохо, но на способ мышления на этом языке сильно влияет):
ЗХ>Ruby хранит исходники в традиционной форме текстовых файлов, а Smalltalk — в image.

Я так понимаю, и в Смоллтоке работа происходит с текстом, но при этом программа ещё и выполняется. Так?


ЗХ>Поэтому действительно полнофункциональный браузеры кода и refactory-браузеры для Ruby создать почти невозможно


Не совсем понимаю почему... Вон, даже у Си есть браузер кода В чём проблема?


ЗХ>AFAIK, Smalltalk чуть ли не единственный язык-среда программирования, который подходит к исходникам не как к "простому тексту, который мы сейчас распрасим-скомпилируем-выполним".


Мне тогда не совсем понятен стиль работы программиста — он же должен иметь исходники, отладчик, и т.п. Вы не могли бы кратко описать, как смоллтокист создаёт программу?
Re[6]: Smalltalk для людей. Есть такой?
От: quadrochups ЮАР  
Дата: 30.08.06 09:56
Оценка: :))
ЗХ>>IDE IDEю — рознь. Очень стоит потрогать нормальное смолтолковское средство разработки (в котором само средство разработки можно модифицировать так же легко, как и прикладной код), чтобы почувствовать разницу

S>Я "трогал" только Smalltalk MT. Не впечатлило


Я извиняюсь за оффтопик, цитату с башорга вспомнил:

-Я не могу зайти на ваш сайт!
-Потрите все куки и попробуйте перезайти.
-Потёр. Приятно!

Re[7]: Smalltalk для людей. Есть такой?
От: quadrochups ЮАР  
Дата: 30.08.06 09:59
Оценка:
pavel, а какая САМАЯ УДАЧНАЯ реализация Смоллтока существует?
Re[8]: Smalltalk для людей. Есть такой?
От: eao197 Беларусь http://eao197.blogspot.com
Дата: 30.08.06 10:03
Оценка:
Здравствуйте, quadrochups, Вы писали:

Q>pavel, а какая САМАЯ УДАЧНАЯ реализация Смоллтока существует?


Может вам проще в гости на smalltalk.ru сходить?
В частности, посмотреть на описания существующих реализаций.


SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Re[4]: Smalltalk для людей. Есть такой?
От: quadrochups ЮАР  
Дата: 30.08.06 10:19
Оценка:
Q>>1. В Smalltalk нету МЕТОДОВ, там есть сообщения. Если программа приняла неизвестное сообщение, его можно вежливо обработать. Руби же сразу начинает ругацца — метод должен быть определён заранее. Я правильно уловил?

E>Нет. В Ruby каждый вызов метода -- это отсылка сообщения. Если сообщение (метод) для объекта не определен, то у объекта вызывается метод method_missing, в котором можно это дело вежливо обработать.


Уже лучше, учту. Там, где я читал про Руби (http://www.msiu.ru/~roganova/Ing_Spring_2003-2004/AboutRuby/www.sophtanet.com.html) про это ни слова.


Q>>2. Не совсем понятна (притянутая из Перла) фича в виде префиксов переменных. В Перле — понятно, это позволяло обходиться без описаний и шикарно манипулировать разнородными сущностями. В Руби сделали $ и @ — довольно глупый выверт.


E>Еще @@ забыли.

E>$ практически не используется, кроме как для обращения к системным переменным типа $!, $: и пр.
E>А вот @ и @@ удобны.

Хм... как сказать. Реализация методов класса — это и есть алгоритмы над членами класса. Какой смысл выделять их "плюшками"? А как же прозрачность кода?



Q>>3. Аналогично, перенесённые из Перл "псевдопеременные" вида $_, $/, etc — для Перла (изначально как обработчика текста) это было простительно, но для нового, ОО языка я считаю это мусором в языке.


E>Для $_ и $/ есть пакет English


Дело не в том как называть — здесь вопрос концепции. Если ВСЁ в Руби — объекты, зачем же тогда делать разные псевдосущности? (глобальные переменные, спец-переменные) Я ж потому и говорю про Смоллток, что он является "чистым" и целостным ООЯ. Т.е. достаточно иметь в голове небольшой набор правил, а сами программы пишутся, как говорится, не приходя в сознание.



Q>>4. Аксессоры — тоже какая-то мешанина: есть синтаксис с get_/set_ (с какой радости? может это мои методы!), есть его запись через "=", а есть его сокращение через attr_* — вам не кажется, что эта чехарда несколько несерьёзна?


E>Нет. Я вообще не понял, про какие get_/set_ идет речь.


Это отседа: http://www.msiu.ru/~roganova/Ing_Spring_2003-2004/AboutRuby/www.sophtanet.com.html (глава "Аксессоры")



Q>>Я не хочу хаять Руби в целом — он может быть вполне достойной заменой. Но вот как альтернатива СМОЛЛ-току — смотрится слишком дилетантски.


E>Да ради бога. Проходя проходи.


Вы не поняли моего вопроса... Я прошу показать, есть ли вразумительная замена Смоллтока, а не то, хороший Руби или плохой. И потом, см. замечание про "сорсы" и "image".
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.