LINUX.ORG.RU

GNU Smalltalk 3.2

 ,


0

0

Сегодня вышла новая версия реализации динамического, полностью объектно-ориентированного языка программирования Smalltalk от проекта GNU.

Основные изменения и новшества в данной версии:

  • Новая среда разработки VisualGST (gtk);
  • Возможность загрузки и установки дополнительных пакетов (.star) с официального сайта;
  • Портирована легковесная ООПБД SandstoneDb;
  • Инкрементальная сборка мусора;
  • Набор инструментов для профилирования;
  • Традиционные исправления ошибок.

В стандартную поставку GNU Smalltalk так же входят фреймворки Seaside и Magritte, многочисленные биндинги, интерфейсы к БД и многое другое

>>> Полный список изменений

★★★★★

Проверено: isden ()

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

> область применения

Комплексные системы управления, банковские системы, агентное моделирование, веб

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

> И, да, в питоне управляющие конструкции и циклы - не объекты, поэтому мимо кассы.

Мне вот интересно, а можно ли в смолтоке реализовать вычислительные выражения (computation expressions / workflows)? Как в F# или Немерле. Самого языка не знаю, но есть подозрение, что шансы велики. Ведь продолжения как-то работают в смолтоке. В тех двух языках как раз управляющие конструкции и циклы отображаются на довольно таки произвольные структуры данных. Это открывает широкие возможности для создания удобного eDSL.

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

>Даже Python для прикладных задач лучше, чем C++. У C++ преимущество только в наличии крупнейшей в мире базе библиотек.

На чистом питоне далеко не уедете - придется писать модули на С/С++. Отсутствие контроля параметров/типов приносит массу гемора в средних/крупных проектах - поиск неотловленных ошибок сводит на нет преимущество в скорости разработки. Имхо будущее за гибридными статическими языками типа D,Scala.

qwerky ()

Scala-фанбой в моём лице просит сравнения от местного гуру Smalltalk. Учитывая, что Scala вообще дофига чего из него позаимствовала%)

Zenom ★★★ ()

А многопоточность Samlltalk осилил? Если да, то есть ли что-то интересное/новое в реализации многопоточности? (синхронизация и т.д.)

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

Да, осилил.

GemStone позволяет работать с одним и тем же образом (stone) сразу с кучи виртуальных машин (gems). Распределенность из коробки.

yoghurt ★★★★★ ()
Ответ на: Re: внезапно от yoghurt

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

octave ()
Ответ на: Re: внезапно от yoghurt

Я даже не знаю зачем вы такого толстого кормите...
ОН ЖЕ ЛОПНЕТ!

yoghurt,объясни что ты от нас то хочешь?
Уже стало давно ясно что даже на питоне писать лучше чем на этом псевдо илитарном языке. Кто тебе мешает на нем программировать? Кодь на нем спокойно. Зачем доказываешь всем что он такой мега производительноэлитарныйдорогооплачеваемыйязык. Новость добавил показал людям язык. 1-2 (что сомнительно вообще) пойдут учить и кодить на нем.

Тебя же троллят а ты кушаешь и кричишь: «МАЛО МАЛО!!11 ЕЩЁ!!!!!!!»
Вот тебе и подбрасывают вкусняшку от жалости.

VictimOfLoveToLinux ()

А вот еще вопрос: почему в рабочей области (где пишется код) не отображаются номера строк (например, в Pharo или VW)? Можно ли это как-то исправить? И вообще, эти среды как-нибудь настраиваются? Где хранятся их настройки?

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

ты это мне?
мне просто тоже хочется получить «илитную» работу, если конечно она существует
ну привлекают меня такие слова как lisp, smalltalk, haskell. говорят что кто пользуется этими штуками, но их никто не видел, а как стать одним из них никто не говорит

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

> Уж всяко нужнее, чем тот же Лисп.

Кому нужнее?

капиталисты теряют бабло на медленной разработке на С++ вместо смолтолка?

Раз массы не осилили, значит язык не годится для массового применения. Т.е. он - «элитарный» язык.

А извольте ответить, если линукс такой весь из себя замечательный, почему венда захавала весь мир? Может линус таки негоден?

no-such-file ★★★★★ ()
Ответ на: комментарий от VictimOfLoveToLinux

ну, откровенного троллинга тут ещё нет и вопросы вполне адекватные (вспомните, например, лиспосрачики)

А вообще мне пока это всё по приколу - надо же в автобусе чем-то себя занять :)

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

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

Этим летом попытаюсь поработать на сабже на деньги гугля.

Вакансии на Смолтоке есть, есть спец-сайт со списком. В основном работа за рубежом. Недавно, например, INRIA искали программиста для работы над Pharo. В группе пользователей иногда всплывают объявления о работе в Москве и СПб.

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

Да ладно, тебе. Ведь на самом деле интересно. Вообще, этот релиз — просто прорыв какой-то.

Безумное количество байндингов к сторонним библиотекам из коробки (у питона меньше).

Зачатки пакетов (gst-package)

Нет мутотни с образами.

Производит впечатление современного секси языка для молодежи.

Поигрался сегодня с iliad — первый юзабельный компонентный веб фреймворк от которого не тянет блевать.

Честно, я — заядлый питонист, под сильным впечатлением от платформы. Однозначно буду следить за развитием.

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

>Безумное количество байндингов к сторонним библиотекам из коробки (у питона меньше).

Где список? В новости на оффсайте ничего об этом нет.

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

smalltalk-git /usr/share/smalltalk/BLOXBrowser.star
smalltalk-git /usr/share/smalltalk/Blox.star
smalltalk-git /usr/share/smalltalk/BloxGTK.star
smalltalk-git /usr/share/smalltalk/BloxTK.star
smalltalk-git /usr/share/smalltalk/CParser.star
smalltalk-git /usr/share/smalltalk/Cairo.star
smalltalk-git /usr/share/smalltalk/CairoSDL.star
smalltalk-git /usr/share/smalltalk/ClassPublisher.star
smalltalk-git /usr/share/smalltalk/Compiler.star
smalltalk-git /usr/share/smalltalk/Complex.star
smalltalk-git /usr/share/smalltalk/Continuations.star
smalltalk-git /usr/share/smalltalk/DBD-MySQL.star
smalltalk-git /usr/share/smalltalk/DBD-PostgreSQL.star
smalltalk-git /usr/share/smalltalk/DBD-SQLite.star
smalltalk-git /usr/share/smalltalk/DBI.star
smalltalk-git /usr/share/smalltalk/DebugTools.star
smalltalk-git /usr/share/smalltalk/DhbNumericalMethods.star
smalltalk-git /usr/share/smalltalk/Digest.star
smalltalk-git /usr/share/smalltalk/GDBM.star
smalltalk-git /usr/share/smalltalk/GLUT.star
smalltalk-git /usr/share/smalltalk/GNUPlot.star
smalltalk-git /usr/share/smalltalk/GTK.star
smalltalk-git /usr/share/smalltalk/Glorp.star
smalltalk-git /usr/share/smalltalk/I18N.star
smalltalk-git /usr/share/smalltalk/Iconv.star
smalltalk-git /usr/share/smalltalk/Java.star
smalltalk-git /usr/share/smalltalk/LibSDL.star
smalltalk-git /usr/share/smalltalk/LibSDL_GL.star
smalltalk-git /usr/share/smalltalk/LibSDL_image.star
smalltalk-git /usr/share/smalltalk/LibSDL_mixer.star
smalltalk-git /usr/share/smalltalk/LibSDL_sound.star
smalltalk-git /usr/share/smalltalk/LibSDL_ttf.star
smalltalk-git /usr/share/smalltalk/Magritte-Seaside.star
smalltalk-git /usr/share/smalltalk/Magritte.star
smalltalk-git /usr/share/smalltalk/NCurses.star
smalltalk-git /usr/share/smalltalk/NetClients.star
smalltalk-git /usr/share/smalltalk/OpenGL.star
smalltalk-git /usr/share/smalltalk/Parser.star
smalltalk-git /usr/share/smalltalk/ProfileTools.star
smalltalk-git /usr/share/smalltalk/ROE.star
smalltalk-git /usr/share/smalltalk/SUnit.star
smalltalk-git /usr/share/smalltalk/SandstoneDb.star
smalltalk-git /usr/share/smalltalk/Seaside-Core.star
smalltalk-git /usr/share/smalltalk/Seaside-Development.star
smalltalk-git /usr/share/smalltalk/Seaside-Examples.star
smalltalk-git /usr/share/smalltalk/Seaside.star
smalltalk-git /usr/share/smalltalk/Sockets.star
smalltalk-git /usr/share/smalltalk/Sport.star
smalltalk-git /usr/share/smalltalk/Swazoo.star
smalltalk-git /usr/share/smalltalk/VFSAddOns.star
smalltalk-git /usr/share/smalltalk/VisualGST.star
smalltalk-git /usr/share/smalltalk/WebServer.star
smalltalk-git /usr/share/smalltalk/XML-DOM.star
smalltalk-git /usr/share/smalltalk/XML-Expat.star
smalltalk-git /usr/share/smalltalk/XML-ParserTests.star
smalltalk-git /usr/share/smalltalk/XML-PullParser.star
smalltalk-git /usr/share/smalltalk/XML-SAXDriver.star
smalltalk-git /usr/share/smalltalk/XML-SAXParser.star
smalltalk-git /usr/share/smalltalk/XML-XMLNodeBuilder.star
smalltalk-git /usr/share/smalltalk/XML-XMLParser.star
smalltalk-git /usr/share/smalltalk/XPath.star
smalltalk-git /usr/share/smalltalk/XSL.star
smalltalk-git /usr/share/smalltalk/ZLib.star

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

> не та ниша

есть статья, сравнение по этим двум языкам?

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

итак, в смолтолке типы - объекты, что ещё там есть?

Даже не смешно

мне тоже, паскаль лучше Си и С++, его и пользую

Джаба - жалкое и уродливое подобие Смолтока.

может быть, но не надо, как в с++ вручную убивать классы

На моей практике в паскале разработка приложений в разы быстрее, чем на С++

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

> Ты мне объясни: а с какого фига молодые программисты _обязаны_ не знать smalltalk и кодить на сраном C++? Даже Python для прикладных задач лучше, чем C++. У C++ преимущество только в наличии крупнейшей в мире базе библиотек.

Покажи мне большой проект на питоне, и чтобы он при этом был популярен и не тормозил.. Что-то действительно важное, а не написанные энтузиастами апплеты для Gnome, от которых я бы с удовольствием избавился.

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

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

> Чтобы стало понятно, что на чем писать, надо прочувствовать плюсы

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

вы защищаете язык, вы и доказывайте, что он имеет преимущества

yantux ()

Вопросы к аналитикам.

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

И второе компилятор полноценный, или байткод для виртуальной машины?

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

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

Пишу (а не кодирую) на C++ с 1998г, как только вышел Zortech C++. За еду не работал никогда. Скорее - наоборот :)

А что за бред Вы несете про надежность и отлаженность? Мне просто интересно. Несколько систем, написанных на C++ моей командой, работают уже годами без каких-либо серьезных проблем. Что мы делаем не так?

Сейчас вот пишем систему для управления 50тыс счетчиков газа/воды/электричества per server. Uptime в режиме разработки пока не превышает недели (раз в неделю генерируем новую версию и рестартуем). Написанная одним гуру до этого версия на Perl сильно тормозила на 300 счетчиках и практически умирала на 1000. А Perl по тестам из динамических языков чуть ли ни лидирует. Кроме того, надежность системы на Perl ниже из-за ограниченных возможностей тестирования. Ни тебе race conditions посмотреть, ни памятью поуправлять в свое удовольствие. Так обьясните мне - нахрена нужен smalltalk или питон на реальных задачах? Чтобы потешить себя «элитарностью»??

Я выше приводил цифры - никому не нужны программеры на smalltalk. НИКОМУ. Единственно, где еще какое-то знание smalltalk нужно - это для перевода legacy systems во что-то более удобоваримое. Вроде Cobol, только без тонн написанного на нем финансового софта. Это исчезающая ниша.

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

> Smalltalk там, куда тебя с твоими кривыми ручками даже близко никто не подпустит.

Ты не трепись - ты конкретно покажи, где??

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

> Покажи мне большой проект на питоне, и чтобы он при этом был популярен и не тормозил..

youtube.com

область применения

Комплексные системы управления, банковские системы, агентное моделирование

Если в ST нет легковесных потоков и проверки типов во время компиляции, то во всех этих областях он очевидно хуже чем Haskell. Присоединяюсь к вопросу - можно ли в ST сделать красивый синтаксический сахар для монад?

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

Как - и это ВСЕ?? Поставь рядом такой же список для C++, и мы посмеемся вместе! Причем на C++ мне кое-чего все еще не хватает.

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

А что такого питон делает в youtube.com? Если просто посылает запросы к базе и принимает результат - то это как раз его ниша, как скриптового языка. Покажи проект, который содержит много (несколько тысяч строк) питона, и действительно много делает именно в питоне.

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

Механизм сигналов и слотов там работает через костыль ака moc. Попробуйте вон из «родного» метода «родного» плюсатого класса определить, кто его вызвал, без всяких там куте

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

> Что на нём можно написать такое, чего нельзя написать на Жабе, Плюсах, ПХП?

написать можно на всём, вопрос в том — как написать.

Сравни, к примеру, реализации OMeta http://tinlizzie.org/ometa/ на Squeak, JS (из коробки, но Squeak версия более активно разрабатывается), и OMeta# http://ometasharp.codeplex.com/ или IronMeta http://balafon.net/archives/829 http://ironmeta.sf.net

Или вот, реализация парсера на Newspeak : http://portal.acm.org/citation.cfm?id=1314923 http://bracha.org/executableGrammars.pdf http://gbracha.blogspot.com/2007/09/executable-grammars.html

Лаконично, похоже на Factor.

Можно сравнить, к примеру, реализации парсеров на Java (ANTLR и т.п.) и ту же OMeta. Да, PEG вообще и OMeta в частности менее быстрый алгоритм, нужно делать много ограничений, чтобы правила работали быстрее. LL(k)+DFA+NFA всяко быстрее будет. Писать, правда дольше и boilerplate кода в Жабе больше.

Но, с точки зрения удобства разработки грамматики, и быстрый цикл REPL — тут полный рулез. Опять же, легкость создания встраиваемых DSL в OMeta и в «простом» PEG — на высоте.

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

1. На GemStone вышеописанное делается почти прозрачно 2. Байткод

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

> рестартуем

Смолтокеры смеются над тобой.

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

> Я так понял, код интерпретируется, а не компилируется. Это верно?

Там всё непросто. Вот форт, к примеру, — интерпретируется или компилируется?

Во-первых, есть компилятор в байткод, который весь такой из себя объектно-ориентированный и есть расширение рантайма, как в лиспе: можно переопределять парсеры, кодогенераторы, и т.п.. Во-вторых, во многих реализациях смоллтока есть нативные компиляторы, в машинный код. В-третьих, рантайм очень динамический, как в лиспе — объекты имеют тип класс, классы имеют тип «метакласс», и метаклассами реализуются что львиная доля паттернов, что компилятор с кодогенератором, что рефлексия. В-четвёртых, объектная модель смоллтока (ещё её скопировали в Objective C) — основывается тупо на посылке сообщений (объектам, классам, метаклассам, ну ты понял). И объект-получатель может перекрыть метод doesNotUnderstand:, то есть, диспетчеризация методов (vtable и single dispatch, generic/multimethods и multidispatch) — можно перепрограммировать, как душе угодно.

В классическом смоллтоке типизация динамическая, в Self — прототипы, клонирование и более статическая типизация.
Таким образом, накладные расходы — это в основном, расходы рантайма на диспетчеризацию методов, и система типов (обычно её нет, типы динамические, но бывают и исключения, см. Self или Newspeak).
Для эффективной реализации вызова методов обычно используют PIC (Polymorphic inline cache) кеширование. В гугле есть тесты сравнения скорости вызова методов в объектной модели смоллток+PIC vs. C++ + vtable. В современных реализациях смоллтока, благодаря PIC всё не так уж и плохо, по сравнению с С++.

В общем, если взять к примеру какой-либо форт, например, Factor и современный смоллток — с точки зрения интерпретатор/компилятор они сопоставимы. Для тяжёлых случаев обычно есть FFI.

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

> Написанная одним гуру до этого версия на Perl...

Какой смешной аргумент! :) Вместо Перла можно подставить практически любой язык и ламер обязательно напишет на нём УГ.
Это я не к тому, что у Перла проблем нет - просто это не аргумент.

...счетчиков газа/воды/электричества per server


Боже, и ваш сервер на всём этом работает?? А на угле могёт? :)
Я так понимаю, вся задача - сбор инфы в реалтайме и выдача команд. Ну и что тут сверхсложного? Обычный многонитевый сетевой сервис.

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

>что ещё там есть?

А всё. Только объекты да сообщения.

мне тоже, паскаль лучше Си и С++, его и пользую

Вау

не надо, как в с++ вручную убивать классы

Учите матчасть, в плюсах _классы_ неубиваемы

На моей практике в паскале разработка приложений в разы быстрее, чем на С++

Каких, простите, приложений?

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

> взять к примеру какой-либо форт, например, Factor

Сколько можно эту ерунду повторять? Фактор - что угодно, только не форт.

И я не очень понял, что ты хотел сказать про фактор в контексте беседы про комлятор/интерпретатор, но замечу, на всякий случай, что у фактора есть самый настоящий оптимизирующий компилятор в нативный код. Прямо как у sbcl.

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

> За еду не работал никогда. Скорее - наоборот :)

еда работает на тебе, как в совиет раша?

CL-USER ()
Ответ на: комментарий от HappySquirrel

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

Mercurial: ~20k строк на Питоне, вся сложная логика в нем (есть пара критичных по скорости модулей на Си, ~1100 строк), по скорости - наравне с Git, который в plain C.

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

> Пишу (а не кодирую) на C++ с 1998г, как только вышел Zortech C++. За еду не работал никогда. Скорее - наоборот :)

Миска риса для каждого своих размеров. Перефразирую старый анекдот: «Квартира, машина, дача есть? Так какой же ты Программист? Ты быдлокодер!»

Сейчас вот пишем систему для управления 50тыс счетчиков газа/воды/электричества per server. Uptime в режиме разработки пока не превышает недели (раз в неделю генерируем новую версию и рестартуем). Написанная одним гуру до этого версия на Perl сильно тормозила на 300 счетчиках и практически умирала на 1000.

Просто снизили частоту опросов? И вся эта муть должна упереться рогом в БД, уж никак не в Perl. Вы, лузерки, видать запустили свою систему с голой базой и сравниваете с системой забитой под завязку. Для начала попробуйте в свою базу затолкать дерьмеца тестового. Что?? Сяся тормозить начала?? Ай, яй, как же так.

Ни тебе race conditions посмотреть, ни памятью поуправлять в свое удовольствие. Так обьясните мне - нахрена нужен smalltalk или питон на реальных задачах? Чтобы потешить себя «элитарностью»??

Чтобы не тратить свое время на вечную борьбу с утечками и прочим геморроем. Если же решите тратить, то вы обречены работать за пол миски риса, ибо индус в это время на питоне в два раза больше накодит.

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

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

Хо. На с++ по своей воле пишет только школота, упоротые фанатики и кьютисты.

Товарищ, вы чьих будете?

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

Что-то подобное есть в ORM GLORP. Там блоки кода (лямбды), будучи скормленными глорпу, чудесным образом превратятся в SQL-запросы.

GlorpDatabase >> findUserByEmail: anEmailAddress
    ^ self glorpSession readOneOf: StUser where: [:each | each email = anEmailAddress]

Вот всё, что после where:, в квадратных скобках - лямбда.

В миру ровно такие же лямбды отлично работают со стандартными коллекциями:

st> #(1 2 3 4 5 6) detect: [:each | each squared = 4]
2
yoghurt ★★★★★ ()
Ответ на: комментарий от yoghurt

> Учите матчасть, в плюсах _классы_ неубиваемы

Сори. не в курсе, имею интеллекта и чести пользовать С++++++++

Каких, простите, приложений?

А какая разница? Обработка видеоизображений.

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

Сори. не в курсе, НЕ имею интеллекта и чести пользовать С++++++++

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

> с 1998г, как только вышел Zortech C++.

Названный компилятор, по-моему, КАК МИНИМУМ на 5 лет старше (это я ни гугль,ни википедию не спрашивал, просто помню, что оно ещё во времена Windows 3.0 существовало, а скорее всего - и ещё раньше).

З.Ы. Пишу на C++, но не считаю, что это «серебряная пуля».

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

>Хо. На с++ по своей воле пишет только школота, упоротые фанатики и кьютисты.

не городите чушь.

пример профильной задачи про счётчики вам привели. аналогичная задача, например на джаве, как минимум беспричинно и неоправданно кушала много, много памяти.

юзаем smalltalk для внутренних приложений, правда VW, из-за скорости и внешнего вида интерфейса

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