Здравствуйте, quadrochups, Вы писали:
Q>pavel, а какая САМАЯ УДАЧНАЯ реализация Смоллтока существует?
На мой взгляд это Dolphin, вот почему:
— недорогая лицензия (примерно 500$);
— приятный внешний вид (в традиционном стиле windows);
— неплохой интелисенс. Т.к. код часто пишется в workspace-е "по ходу", то переменные уже как правило содержат объекты, а это значит что вся инфа об нем (список методов для интелисенса в частности) доступна;
— достаточно приличное быстродействие. для большинства задач более чем достаточно.
— активное доброжелательное комюнити.
Еще есть VisualWorks, про неге скажу следующее:
— невнятная лицензионная политика, а точнее просто дорого, и а это на фоне MS VS2005 — это на мой взгляд самый существенный недостаток, фактически ставящий крест на коммерческом использовании .
— самый быстрый, настоящий динамический JIT компилятор, уделывающий C++ на вызовах виртуальных методов (специально сам проверял — все правда!).
— реально многоплатформенный.
— мне не понравилось создание GUI, контролы выглядят как не родные.
— очень много хорошей доки.
— очень много наворочено вокруг продукта полезных библиотек и тулов (ORM-ы, профайлеры и т.п.).
Вообще мне в Смолтоке нравиться следующее:
— простой синтаксис. Это дает ОЧЕНЬ низкий порог входимости. Не повериш, но мне реально для того чтобы практически полностью освоить язык (синтаксис) и научиться читать его понадобилось около 2-3 часов (застваил себя напрячся и не жалею). На мой взгляд ST — просто идеальный язык для непрограммеров, а для бизнес-аналитиков, технологов-бизнес процессов, настройщиков информационных систем на предприятии (сам занимаюсь примерно и в этой сфере).
— динамическая типизация, да-да! она самая . не будем разводить флеймы, но я бы для определенных проектов СОЗНАТЕЛЬНО предпочел бы ее, прекрасно понимая все достоинства / недостатки.
за счет нее в частности более высокый уровень абстракции и соответсвенно возможность создания DSL.
— блоки кода (BlockClosures), это просто мега-круто и мега-удобно пользоваться.
— инкрементальный принцип разработки. т.е. программа создается маленьким кусочками, опробывал идею в workspace-е, из этого кусочка кода сделал метод, потом следующий и так шаг за шагом, пробуеш идею, проверяеш, save метод, подрефакторили, сохранили, юнит тестик под это дело. при этом у тебя есть живое состояние программы. Например, делаеш сложную учетную операцию, при каком-то стечении данных вылез ексепшн, в отладчике можно подлезть в любое место посмотреть любую переменную (в том числе приватные члены классов у любых живых объектов), раскопал суть проблемы тут же в отладчике и поправил и не теряя состояния пошел дальше. очень удобно.
— высокая динамичность среды. т.е. в работающем приложении можно без проблем добавлять/удалять методы в классы, менять сигнатуру класса, добавлять удалять классы и при этом программу не надо перезапускать и не теряется текущее состояние живых объектов. причем все это можно делать программно. в разумных пределах конечно.
По поводу твоего исходного вопроса — к сожалению ничего подобного с синтаксисом приближенным к "настоящим" языкам нету увы, жаль. Но по собственным ощущениям привыкнуть можно и не сильно болезненно, хотя до сих пор не нравиться как приходиться записывать сложные логические выражения — получается куча скобок, но 1-2 пишутся и выглядят нормально.
Здравствуйте, pavel74, Вы писали:
P>Еще есть VisualWorks, про неге скажу следующее: P>- невнятная лицензионная политика, а точнее просто дорого, и а это на фоне MS VS2005 — это на мой взгляд самый существенный недостаток, фактически ставящий крест на коммерческом использовании . http://www.progz.ru/forum/index.php?showtopic=15226
Если вкратце — для некоммерческих разработок (да и, по сути, для мелких коммерческих или внутренних) — бесплатно (при полном сохранении функционала).
Кроме этого существуют две лицензии, VAR и Server:
* VAR — Вы платите базовые $500 за каждого разработчика в год, и 6% от прибыли полученной от продаж за продукт (минус те $500*dev*year, что уже заплатили). При этом учитывается только вклад самого VW в продукт, например: VW — 60%, Oracle9 — 40%.
* Server — Вы платите $6000 в год за *серверную установку* продукта вне зависимости от количества разработчиков и прибыли.
Как легко видно, для мелких и средних фирм выгоднее лицензия VAR, для крупных — Server.
P>- мне не понравилось создание GUI, контролы выглядят как не родные.
Вкус и цвет — повод для драки . По мне, так вполне нормально выглядят. Кстати, насколько я знаю, прикручивание родных виджетов — это достаточно приоритетный проект у Cincom.
Здравствуйте, pavel74, Вы писали:
P>Еще есть VisualWorks, про неге скажу следующее: P>- невнятная лицензионная политика, а точнее просто дорого, и а это на фоне MS VS2005 — это на мой взгляд самый существенный недостаток, фактически ставящий крест на коммерческом использовании . P>- самый быстрый, настоящий динамический JIT компилятор, уделывающий C++ на вызовах виртуальных методов (специально сам проверял — все правда!). P>- реально многоплатформенный. P>- мне не понравилось создание GUI, контролы выглядят как не родные.
Ну, то что они выглядят как не родные, еще не страшно. Но вот расширяемость некоторых контролов, а особенно DataSet'a, удручает. Хотя, казалось бы, все написано на том же ST, бери и правь/добавляй.
С другой стороны, грядет Pollock (доолго уже грядет..), там, возможно, ситуация будет получше. Ну и native-контролы обещают поддержать.
P>- очень много хорошей доки. P>- очень много наворочено вокруг продукта полезных библиотек и тулов (ORM-ы, профайлеры и т.п.).
А кроме того, для VW есть Store — достаточно удобная VCS. Я не в курсе, как с этим дела у Dolphin'a?
Здравствуйте, Poisson, Вы писали:
P>Тем не меннее.. Исходников в привычном представлении как таковых нет. Весь код хранится в двух видах — тексты методов и байт-код. Причет и то, и другое хранится в специальных файлах, куда простым редактором лазать не рекомендуется.
Мнэээ......
А что же тогда является единицей source control'а?
С уважением, Евгений
JetBrains, Inc. "Develop with pleasure!"
Здравствуйте, xvost, Вы писали:
X>Здравствуйте, Poisson, Вы писали:
P>>Тем не меннее.. Исходников в привычном представлении как таковых нет. Весь код хранится в двух видах — тексты методов и байт-код. Причет и то, и другое хранится в специальных файлах, куда простым редактором лазать не рекомендуется.
X>Мнэээ...... X>А что же тогда является единицей source control'а?
Source Control (в диалекте VisualWorks, про прочие не скажу) свой, спецфицский и очень удобный. Работает с пакетами, классами, методами и так далее. Т.е. я могу для любого класса/метода посмотреть его историю изменений (прямо из IDE, одним кнопкой)
Здравствуйте, Poisson, Вы писали:
X>>А что же тогда является единицей source control'а? P>Source Control (в диалекте VisualWorks, про прочие не скажу) свой, спецфицский и очень удобный. Работает с пакетами, классами, методами и так далее. Т.е. я могу для любого класса/метода посмотреть его историю изменений (прямо из IDE, одним кнопкой)
А как совместная работа над проектом идет? Может какую-нибудь ссылочку на эту тему подкините?
SObjectizer: <микро>Агентно-ориентированное программирование на C++.
Здравствуйте, quadrochups, Вы писали:
Q>pavel, а какая САМАЯ УДАЧНАЯ реализация Смоллтока существует?
Из доступных бесплатно наверно Дольфин. Правда там половина на C++ написано (вопреки рекламным лозунгам). Да и откровенно говоря лично у меня Дольфин вызвал весма печальные ощущения гда два назад. Но вроде как последня версия вроде как даже комплит-ворд стала поддерживать. Просто прорыв для "самых лучших сред разработки".
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, quadrochups, Вы писали:
Q>Не совсем понимаю почему... Вон, даже у Си есть браузер кода В чём проблема?
С строготипизированный язык. Для него как раз любой рефакторинг и навигация делается с пол пинка.
Как раз для Смолтока это сделать тяжелее. А для Руби еще тяжелее. Хотя список классов можно сделть без проблем для обоих.
ЗХ>>AFAIK, Smalltalk чуть ли не единственный язык-среда программирования, который подходит к исходникам не как к "простому тексту, который мы сейчас распрасим-скомпилируем-выполним".
Q>Мне тогда не совсем понятен стиль работы программиста — он же должен иметь исходники, отладчик, и т.п. Вы не могли бы кратко описать, как смоллтокист создаёт программу?
Все очень просто. Ты не можешь править программу без специальной IDE. Программа "живет" в этой IDE. IDE знает многое о программе. В Руби же программу запускает интерпретатор не связанный с IDE. Фактически нет никаких проблем совместить IDE и интерпретатор, но это никто не сделал.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Дарней, Вы писали:
Д>Здравствуйте, pavel74, Вы писали:
P>>- блоки кода (BlockClosures), это просто мега-круто и мега-удобно пользоваться.
Д>Выглядит очень похоже на лямбду. Или есть какие-то отличия, которые я не заметил?
По сути она и есть, возможно есть какие-то различия в тонкостях. Самый простой пример использования блока кода:
|b| "объявили локальные переменные"
b:=[:i | i>10 ]. "создал блок кода, это в итоге объект и понимает сообщение value: "
какаятоКоллекция select: b .
" что значит - выбрать все элементы удовлетворяющие условию проверяемым блоком кода (в данном случае i>10 )
внутри коллекции работает свой алгоритм ее обхода и для каждого элмента запускает блок кода,
передавая ему в качестве параметра текущий элемент, т.е. можно не парится как именно правильно ее обходить.
Если блок кода вернул true - значит элемент нам подходит выбираем его в результат.
Да кстати класс коллекции может быть любым - интервал с верхней и нижней границей: ( 1 to: 100 )
просто массив, словарь на основе дерева или хэш таблицы или еще какой, за это заморочится сама коллекция.
"
или тоже самое токо одной строкой
какаятоКоллекция select: [:i| i>10].
Вообщем часто бывает в методе надо реализовать какой-то универсальный алгоритм, в котором в каком-либо месте код будет зависеть от конкретного контекста использования этого метода. При помощи блоков кода такие вещи решаются легко и красиво, передал в конкретном месте вызова этого метода ему блок кода и внутри реализации метода переданный блок кода и будет работать. В итоге гораздо проще писать обобщенные алгоритмы и повторно их использовать.
В Linq наконец-то такая возможность и появилась, не прошло и 20 лет с момента выхода первого ST в свет .
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Здравствуйте, VladD2, Вы писали:
VD>>Из доступных бесплатно наверно Дольфин. Правда там половина на C++ написано (вопреки рекламным лозунгам).
ANS>Это в .Net половина на С++ (точнее обёртки к нэтиву, но это один фиг). И ниче — все довольны.
А кто-то где-то говорил, что в дотнете все на нем? Вот про Смолток я это слушу постоянно. Ну, а открытое вранье я не люблю.
Первое что я услышал о Дольфине, что у него среда написана на Солтоке. Первы же взгляд на эту среду Spy++-ом показал, что это не правда.
Что до С++ в дотнете... Скачай Моно погляди сколько там на чем написано. Так же интересно поглядеть на IDEA и #Devolop.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Из-за невероятной тяжести первый реф.броузер был сделан именно в ST.
Броузер — это детский лепет. Он действительно делается без проблем. А вот комплит-ворд, навигация по коду, подсказки для методов и их параметров. А это все для полноценной работы нужндается в статической информации о типах.
А то что что-то где-то было впервые сделано ничего не значит. Это просто говорит, о том, что те кто делал Смолток по натуре исследователи.
... << RSDN@Home 1.2.0 alpha rev. 637>>
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Здравствуйте, VladD2, Вы писали:
VD>Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>>Из-за невероятной тяжести первый реф.броузер был сделан именно в ST.
VD>Броузер — это детский лепет.
Не путаем рефакторинг браузер с класс браузером. Класс браузер был в Smalltalk изначально — это неотъемлимая часть среды разработки, которая, в свою очередь, неотъемлимая часть языка.
VD>Он действительно делается без проблем. А вот комплит-ворд, навигация по коду, подсказки для методов и их параметров.
Да уж, по сравнению со всем этим (и в сумме и по отдельности) автоматизированный рефакторинг — так, мелочь, не стоящая упоминания.
VD>А это все для полноценной работы нужндается в статической информации о типах.
А мужики-то и не знают... Придётся срочно это всё запрещать и вырезать. Тяжёлая работа, но что поделать — VladD2 так сказал.