Зачем использовать Ruby вместо Smalltalk? [закрытый]


Руби становится популярные, в основном от влияния Ruby на Rails, но похоже, что в настоящее время он борется за свою юность. Есть много общего между Ruby и Smalltalk -- маглев - это свидетельство. Несмотря на более необычный синтаксис, Smalltalk имеет все (если не больше) объектно-ориентированной красоты Ruby.

из того, что я прочитал, Smalltalk, похоже, имеет Ruby beat on:

похоже, что Рубин просто изобретает колесо. Итак, почему разработчики Ruby не используют SmallTalk? что у Ruby есть Smalltalk нет?

для записи: я рубиновый парень с небольшим опытом в Smalltalk, но я начинаю задаваться вопросом, почему.


Edit: я думаю, что проблема простоты сценариев была решена GNU Smalltalk. Как я понимаю, это позволяет писать smalltalk в обычных старых текстовых файлах, а вам нет дольше нужно находиться в Smalltalk IDE. Вы можете тогда запустить ваши скрипты С:

gst smalltalk_file
28 120

28 ответов:

Я больше питонист, чем пользователь Ruby, однако те же самые вещи имеют место для Ruby по тем же причинам.

  • архитектура Smalltalk несколько изолирована, тогда как Python и Ruby были построены с нуля, чтобы облегчить интеграцию. Smalltalk никогда не получал поддержку гибридных приложений таким образом, как Python и Ruby, поэтому концепция "smalltalk как встроенный язык сценариев" никогда не прижилась.

    как в сторону, Java не была самой простой вещью для взаимодействия с другими кодовыми базами (JNI довольно неуклюж), но это не помешало ему получить mindshare. IMO аргумент сопряжения значителен - простота встраивания не повредила Python, но этот аргумент имеет только умеренный вес, поскольку не все приложения требуют этой возможности. Кроме того, более поздние версии Smalltalk существенно затрагивали изолированность.

  • библиотека классов большинства основных реализаций smalltalk (Среда visualworks, использованием visualage и т. д.) был большим и имел репутацию довольно крутой кривой обучения. Большинство ключевых функций в Smalltalk скрыты где-то в библиотеке классов, даже основные вещи, такие как потоки и коллекции. Языковая парадигма также является чем-то вроде культурного шока для тех, кто не знаком с ней, и фрагментарный вид программы, представленный браузером, совершенно отличается от того, к чему привыкло большинство людей.

    общий эффект заключается в том, что он получил (отчасти заслуженно) репутацию трудно учиться, это занимает совсем немного времени и усилий, чтобы стать действительно опытным программистом на языке Smalltalk. Ruby и Python гораздо проще в освоении и привлечении новых программистов.

  • исторически, основные реализации Smalltalk были довольно дорогими и требовали экзотического оборудования для запуска, как видно это сообщение net.lang.st80 с 1983 года. Windows 3.1, NT и ' 95 и OS / 2 были первые операционные системы массового рынка на основном оборудовании, способном поддерживать реализацию Smalltalk с достойной встроенной системной интеграцией. Ранее Mac или оборудование рабочей станции были самыми дешевыми платформами, способными эффективно запускать Smalltalk. Некоторые реализации (особенно Digitalk) поддерживали операционные системы ПК довольно хорошо и действительно преуспели в получении некоторой тяги.

    тем не менее, OS / 2 никогда не была такой успешной, и Windows не достигала основного принятия до тех пор, пока к сожалению, это совпало с ростом Интернета как платформы и большим маркетинговым толчком за Java. Java захватила большую часть mindshare во второй половине 1990-х годов, сделав Smalltalk немного также запущенным.

  • Ruby и Python работают в более обычной цепочке инструментов и не тесно связаны с конкретной средой разработки. Хотя идентификаторы Smalltalk, которые я использовал, достаточно хороши, я использую PythonWin для разработки Python в основном потому, что он имеет хороший редактор с подсветкой синтаксиса и не путался под ногами.

    однако Smalltalk был разработан для использования с IDE (на самом деле Smalltalk был оригинальной графической IDE) и по-прежнему имеет некоторые приятные функции, не реплицируемые другими системами. Тестирование кода с выделением и "показать его" по-прежнему очень хорошая функция, которую я никогда не видел в Python IDE, хотя я не могу говорить за Ruby.

  • Smalltalk несколько поздно пришел в веб-приложение вечеринка. Ранние усилия, такие как VisualWave, никогда не были очень успешными, и только когда Seaside вышел, приличная веб-структура получила признание в кругах Smalltalk. В то же время Java EE имеет полный жизненный цикл принятия, начиная с бредовых фанатов, продвигающих его, и, наконец, скучая и переходя на Ruby ;-}

    по иронии судьбы, Приморский начинает получать немного mindshare среди знатоков, так что мы можем обнаружить, что Smalltalk едет, что цикл обратно в популярность.

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

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

другой путь позволяет мне путешествовать по очень очаровательной, ветреной проселочной дороге с полным покрытием деревьев. Этот путь довольно приятный, и из двух подходов, безусловно, более увлекательный, хотя это означает, что я доберусь до офиса позже, чем я бы взял шоссе. Каждый способ имеет свои достоинства. В дни, когда я очень спешу, я обычно выбираю шоссе, хотя я могу столкнуться с трафиком, и я также увеличиваю свои шансы попасть в аварию (если я не буду осторожен в своей спешке). Другое время Я могу выбрать лесистую тропинку и ехать дальше, наслаждаясь пейзажем и понимая, что опаздываю. Я могу попытаться ускориться, повысив свои шансы получить билет или вызвать аварию самостоятельно.

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

Я думаю, что ваш вопрос несколько упускает суть. вы не следует выбирать, вы должны узнать их обоих!

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

Я использовал smalltalk (люблю его) и ruby (люблю его).

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

Я начал использовать ruby(на работе), потому что нам нужен был какой-то язык сценариев,который вел себя более или менее одинаково под solaris, linux и windows (98,2000, xp). Руби в то время был неизвестен среднему Джо, и не было никаких рельсов. Но это было легко продать всем участникам.

(Почему не python? правду ? Я однажды целую неделю охотился на жука, который случился, когда терминал преобразовал мое пространство в вкладку, и намерение было испорчено).

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

Пол Грэм подводит итог

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

и

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

а когда были на Земле Lisp попробуйте заменить LISP на smalltalk

библиотеки, сообщество и импульс Ruby хороши

Так что если LISP все еще более мощный, чем Руби, почему бы не использовать LISP? Типовое значение возражения против программирования в LISP являются:

  1. библиотек не хватает.
  2. мы не можем нанять программистов LISP.
  3. шепелявость никуда не делась за последние 20 лет.

Это не подавляющие возражения, но они, безусловно, стоят принимая во внимание.

и

теперь, учитывая выбор между мощным язык, и популярный язык, он может есть отличный смысл, чтобы выбрать очень сильный. Но если разница в власть незначительна, популярность имеет все какие-то приятные преимущества. В 2005 году я подумайте долго и упорно, прежде чем выбрать Шепелявят над Руби. Я бы, наверное, только это если мне нужен оптимизированный код, или макросы, которые действовали как полноценные компиляторы.

Я бы сказал наоборот: синтаксис Smalltalk является одним из самых простых и мощных языка программирования, синтаксис.

Это правда, что языки очень похожи. Неглубокий способ интерпретировать это-назвать Ruby Smalltalk cover band. Более разумная интерпретация заключается в том, что закрытая система Smalltalk изолировала ее, в то время как участие Ruby в экологии Unix и привычка присваивать функции из каждого языка под солнцем дает ему бесконечно более мягкую кривую принятия и легкую интеграцию с инструментами kickass, такими как Git.

Джайлз Bowkett

угадайте, кто это сказал? (цитата близка, может быть, не точная): "я всегда думал, что Smalltalk будет бить Java. Я просто не знал, будет ли называться "Рубин", когда это произойдет."

барабанная дробь ....

...

ответ ... Кент Бек

Стефан Дюкасс имеет некоторые большие Smalltalk книги, доступные здесь:

http://stephane.ducasse.free.fr/FreeBooks.html

поэтому, хотя сообщество Smalltalk не так плодовито, как сообщества Ruby и Rails, там все еще есть большая помощь.

что есть у Руби, что Smalltalk не делает?

  • массивная, текущая поддержка основных платформ (IronRuby и jRuby), которые обогащают набор библиотек
  • Евангелисты, такие как Дэйв Томас, которые в течение многих лет путешествовали по стране, проповедуя Евангелие своего языка. Я видел Дэйва в конференции Java заявив, что он не знает Java и что он предпочитает Ruby.
  • сильная, текущая недвижимость на книжные полки
  • создатель Ruby сказал, что он думает о программисте: синтаксис Ruby, похоже, имеет эту Дзен-привлекательность. Трудно придавить, но, кажется, гальванизировать вентиляторы.
  • творческие, динамические презентации, как Джайлз и этот что получить mindshare

Я думаю, ваша точка зрения принята. Как однажды выразился один мой друг, Руби может быть" старым вином в новой бутылке " по отношению к Smalltalk. Но иногда новое бутылка имеет значение. Вино должно быть в нужном месте в нужное время.

бьет меня. Я провел год, проверяя Ruby и делая некоторые небольшие проекты, чтобы увидеть, как мне это нравится. Наверное, я фанатик Smalltalk, потому что каждый раз, когда я садился работать с Руби, я вздыхал и думал: "я бы предпочел делать это в Smalltalk". Наконец я сдался и вернулся к светской беседе. Теперь я счастливее. Чем счастливее, тем лучше.

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

  1. потому что IDE сдувает все остальное Я с ним когда-нибудь работал. Это включает в себя кучу платформ от ISPF на мэйнфреймах IBM до Microsoft Visual (.* ), включают в себя такие вещи, как Visual Basic 4-6, Visual C++ (различные воплощения), Turbo Pascal и потомки Borland (например, Delphi) и прочее на машинах DEC как в символьном режиме, так и в X-Windows.
  2. потому что изображение является прекрасным местом для жизни. Я могу найти там то, что мне нужно. Если я не могу понять, как сделать что-то я знаю, что где-то in изображение является примером того, что я пытаюсь сделать - все, что мне нужно сделать, это охотиться, пока я не найти его. И это самодокументирование - если вы хотите увидеть детали того, как что-то работает, вы просто открываете браузер в интересующем вас классе, смотрите на метод, и вот как это работает. (Хорошо, в конце концов вы нажмете что-то, что называет примитивным, а затем "здесь есть драконы", но это обычно понятно из контекста). Можно делать подобные вещи в Ruby/C++ / C, но это не так простой. Легче-это лучше.
  3. язык минимален и последователен. Три вида сообщений - унарные, двоичные и ключевые слова. Это описывает приоритет выполнения, слишком-сначала унарные сообщения, затем двоичные сообщения, затем сообщения ключевых слов. Используйте скобки, чтобы помочь вещи. Чертовски мало синтаксиса, на самом деле - все это делается с помощью отправки сообщений. (Хорошо, назначение-это не отправка сообщения, это оператор. Так же как и оператор' return' (^). Блоки заключены в квадратные пары скобок ([]). Можно будь там еще один или два "волшебных" кусочка, но чертовски мало...).
  4. блоки. Да, я знаю, они есть в Ruby (и других), но черт возьми, вы буквально не можете программировать на Smalltalk без их использования. Ты заставили чтобы узнать, как их использовать. Иногда быть вынужденным-это хорошо.

Smalltalk: люди вперед ifTrue: [думаю] ifFalse: [не думаю]

Рубин: люди думают вперед, если не думают назад

1) RPN-подобный поток управления Smalltalk по сообщениям похож на Lisp-это регулярно и круто, но странные люди.

2) Ruby позволяет людям писать код, используя идиоматический способ, которым люди говорят-do blah если есть причина не делать этого.

обновление переписал образец Smalltalk на на самом деле будет больше юридического кодекса..

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

сообщество! Рубин и особенно рельсы имеет такое большое сообщество. Когда возился с smalltalk, казалось, что было не так много экранных слепков, статей, сообщений в блоге и т. д. написано о языке Smalltalk.

вы ответили на вопрос в первой строке: "Рубин становится популярным"

  • здесь много интересных модулей, проектов и таких, основанных на Ruby.
  • Если у вас есть проблемы, делая что-то в Ruby, это будет тривиально, чтобы найти помощь где-то.
  • Ruby установлен на много компьютеров теперь (он включен по умолчанию на OS X, многие дистрибутивы Linux, и есть хорошие установщики для Windows) - я не видел smalltalk установлен по умолчанию на любой машине, которую я использовал..

Я бы сказал, является ли один язык выше другого, не имеет значения.. Например, PHP не может быть" лучшим "языком когда-либо, но я все равно рассмотрю его использование над Ruby on Rails ("лучший" инструмент для создания веб-сайтов), потому что он так широко распространен.

в принципе, конкретные плюсы и минусы языка гораздо менее важны, чем все, что его окружает, а именно сообщество.

Ruby (или любой другой язык) более популярен, чем Smalltalk (или любой другой язык), потому что мы живем в хаотической вселенной. А именно:

  • от самого Дэйва Томаса, " [после ] видео на тему " Как построить блог в Десять Минут... Рубин прошел путь от хороший маленький нишевый язык, чтобы будучи ' язык, который вы написали рельсы приложения в" (Конференции По Ruby 2010 лейтмотивом).
  • ранние поставщики Smalltalk взимали непомерно
  • Smalltalk, потому что он был изобретен (раньше своего времени) 30 лет назад, встречается многим как старый, "мертвый" язык (например, Фортран)
  • корпорации считают Smalltalk таким конкурентным преимуществом, что они скрывают его использовать

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

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

Smalltalk-это здорово, где я изучил концепции OO, но для простоты использования я иду на Ruby. Я могу написать код Ruby в моем любимом редакторе и запустить его из командной строки.

Итак, для меня это то, что я выбираю Ruby над Smalltalk.

Я думаю, что все, кто работал с Руби в течение некоторого времени признает его глубокий долг перед Smalltalk. Как один из этих людей, что мне нравится в Ruby over Smalltalk? Я думаю, что с чисто языковой точки зрения, это сахар. Руби намеренно очень синтаксиса-слащавый язык, в то время как Smalltalk-это очень синтаксиса-минимальный язык. Рубин является, по сути, общее объектной модели с синтаксисом Perlish сахара. Мне нравится сахар, и я считаю, что это делает программирование более увлекательным.

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

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

потому что дистрибутивы Smalltalk были оценены в кратных $1000USD, тогда как Ruby является бесплатным.

Ruby-это Smalltalk, как арабские цифры-римские цифры. Та же математика, более простой синтаксис.

Я сделал немного Smalltalk-IDE-это одна вещь, которую я помню-у Ruby есть хорошая поддержка IDE?

используйте Ruby, потому что у него могут быть деловые ноги, Smalltalk-нет.

Я могу сказать вам из личного опыта. Все еще используя Smalltalk, люблю его и использовал пару ароматов. Хотя Smalltalk-отличный язык, и это все, что вы упомянули, вы, скорее всего, не убедите среднего CIO/CTO использовать Smalltalk в новом проекте. Конечно, вы могли бы даже иметь трудное время убедить консервативного директор по ИТ/технический директор, чтобы использовать Ruby. В конце концов, вы должны быть очень осторожны, если вы хотите устойчивая долгосрочная коммерческая поддержка и возможность найти сотрудников с улицы, которые могут поддерживать ваши системы в будущем. Например, Smalltalk был действительно большой вещью в начале 90-х годов, и IBM вложила в него значительные средства в конце 90-х. для IBM Smalltalk будет следующим языком для всех бизнес-приложений. IBM поставила Smalltalk на все, включая их системы мэйнфреймов. Java стала популярной, захватила рынок, а Smalltalk стал нишевым игроком. Больше года назад IBM сбросила язык (их термин-закат). Кроме того, взгляните на историю. ParkPlace и Digitalk, где первые крупные коммерческие игроки в Smalltalk arena, они объединились, а затем вышли из бизнеса.

Я люблю как Smalltalk, так и Ruby-но обнаружил, что Ruby более применим к тому, что я делаю ежедневно, и ближе к моему сердцу (практически говоря). Что означает Рубиновая предложение, которое он не любит?

  • текстовые скрипты
  • низкие требования к реализации (работает в большем количестве мест)
  • легче учиться и оправдывать (программисты Perl и Python будут иметь нет проблемы
  • легче перемещать программы Вокруг-текст файлы!
  • хорошо взаимодействует с родной средой
  • везде Java работает, JRuby работает...
  • больше и гораздо более активное сообщество

некоторые упоминали gst (GNU Smalltalk); проблемы все еще сохраняются.

используйте все, что делает вас более мощным и быстрее, чтобы победить ваш вызов.

на нас, немного в рамках дома, мы построили в верхней части моря действительно наша сверхдержава.

Я люблю сообщество RoR, у него правильное отношение. Это очень и очень ценно. Но в то же время, технологически, Приморье делает вас сильнее против более сложных проблем.

вы можете сделать большие приморские веб-приложения с открытым исходным кодом материал.

dabbledb был sartup на основе seaside и, Эй! Avi продал его в twitter в июне этого года!

Я говорю, что вам не нужно ждать, пока другие одобрят вашу инициативу.

просто пойти на это. Сделай это. Покажите нам, что работает.

ты не один. Мы на одной лодке.

интересная перспектива от Роберта Мартина (от RailsConf 2009): "То, Что Убило Smalltalk, Может Убить И Руби"

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

здесь это Привет мир учебник.

Это очень отличается от других языков, где мне просто нужно знать, как открыть текстовый редактор и скопировать и вставить текст, нажать Сохранить и запустить компилятор. Я должен знать, как использовать окружающую среду. Этот учебник даже не показывает мне, как создать базовый программа (которая, скорее всего, является ошибкой этого учебника), которую я могу запустить.

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

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

Я думаю, что самая большая разница заключается в том, что Ruby гораздо больше похож на perl с точки зрения использования. Smalltalk так и не закрепился в "скриптовых" языках.

виртуальная машина действительно классная, и я надеюсь, что у ruby будет что-то похожее на нее, поэтому мы можем рассматривать все, что написано в нашей ОС, как объект в пространстве памяти, однако до тех пор я просто наслаждаюсь кратким, коротким синтаксисом Ruby, возможностью просто написать крошечный скрипт и использовать его позже. Рубин получил все преимущества perl и ООП гораздо больше похожи на smalltalk, чем ООП-Хак perl.

Я бы пошел дальше, чем ответ Йонке, и сказал, что в настоящее время существует большое количество языков, которые имеют очень сильное сообщество, почти достаточное, чтобы удовлетворить любой вкус, и подмножество из них имеет основное признание (т. е. ваш менеджер позволит вам использовать их на работе).

легко изучить основы языка, но чтобы эффективно использовать его, вам нужно потратить достаточно времени, чтобы изучить платформу и инструменты, а также синтаксис и идиомы. МСИО, Макконнелл утверждает, что это занимает около трех лет, чтобы стать действительно опытным.

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

как поздний участник обсуждения, основная проблема с Smalltalk и Lisp заключается в том, что вы не можете запускать их с помощью CGI или FastCGI на общем хостинге.

немытые массы никогда не будут использовать их, если им нужны VPS или выделенные серверы для их использования. IMHO Seaside превосходит почти все, что есть, но будет ли он работать на Dreamhost или Webfaction?