Зачем использовать Ruby вместо Smalltalk?

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

Из того, что я прочитал, Smalltalk, похоже, побил Ruby:

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

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


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

gst smalltalk_file

Ответ 1

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

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

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

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

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

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

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

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

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

    По иронии судьбы, Seaside начинает получать немного ума от cognoscenti, поэтому мы может обнаружить, что Smalltalk ездит на велосипеде обратно в популярность.

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

Ответ 2

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

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

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

Ответ 3

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

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

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

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

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

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

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

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

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

и

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

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

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

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

  • Достаточно достаточно библиотек.
  • Мы не можем нанять программистов Lisp.
  • LISP никуда не исчезло за последние 20 лет.

Эти несостоятельные возражения, но theyre конечно worth принимая во внимание.

и

Теперь, учитывая выбор между мощным языка и популярного языка, он может иметь отличный смысл выбрать мощный. Но если разница в власть незначительна, будучи популярной, все сорта приятных преимуществ. В 2005 году Id думаю, долго и упорно, прежде чем выбрать Lisp над Ruby. Идентификация, вероятно, если мне нужен оптимизированный код, или макросы, которые действовали как полноценные Составители.

Ответ 4

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

Ответ 5

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

Джайлс Бокетт

Ответ 6

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

Бросок барабана....

...

Ответ: Кент Бек

Ответ 7

У Стефана Дюкасса есть отличные книги Smalltalk, доступные здесь:

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

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

Ответ 8

что у Ruby есть Smalltalk?

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

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

Ответ 9

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

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

  • Потому что IDE сбрасывает все, с чем я когда-либо работал. Это включает в себя множество платформ от ISPF на мэйнфреймах IBM до Microsoft Visual (. *), Включая такие вещи, как Visual Basic 4-6, Visual С++ (различные инкарнации), Borland Turbo Pascal и потомки (например, Delphi) и прочее на DEC машин в режиме символов и под X-Windows.
  • Потому что изображение - прекрасное место для жизни. Я могу найти то, что хочу. Если я не могу понять, как сделать что-то, я знаю, что где-то на изображении есть пример того, что я пытаюсь сделать - все, что мне нужно сделать, это охотиться, пока я не найду его. И он самодокументируется - если вы хотите увидеть детали того, как что-то работает, вы просто открываете браузер в интересующем вас классе, смотрите на метод и то, как он работает. (ОК, в конце концов вы ударите то, что вызывает примитив, а затем оно "здесь есть драконы", но это обычно понятно из контекста). Это можно сделать в Ruby/С++/C, но это не так просто. Легко лучше.
  • Язык минимален и согласован. Три вида сообщений - унарный, двоичный и ключевое слово. Это также описывает приоритет выполнения - унарные сообщения сначала, затем двоичные сообщения, затем сообщения ключевых слов. Используйте круглые скобки, чтобы помочь. Dang небольшой синтаксис, действительно - все это сделано с отправкой сообщений. (ОК, назначение не является отправкой сообщения, это оператор. Таким образом, оператор "return" (^). Блоки заключены в квадраты с квадратной скобкой ([]). Может быть один или два других "волшебных" бита, но чертовски мало...).
  • Блоки. Да, я знаю, они там, в Ruby (и других), но, помните, вы буквально не можете программировать в Smalltalk, не используя их. Вы вынуждены научиться их использовать. Иногда принуждение - это хорошо.
  • Объектно-ориентированное программирование без компромиссов - или альтернативы, если на то пошло. Вы не можете притворяться, что вы "делаете объекты", все еще делаете то же самое.
  • Потому что он растянет ваш мозг. Удобные конструкции, к которым мы все привыкли (if-then-else, do-while, for (;;) и т.д.) Больше не существуют, поэтому вам нужно научиться чему-то новому. Есть эквиваленты всем вышеперечисленным (и более), но вам придется учиться думать по-другому. Иными словами, хорошо.

С другой стороны, это может быть просто проклятие парня, который программировал с тех пор, как мейнфреймы управляли землей, нам пришлось пройти пять миль, чтобы работать сквозь ослепительные метели, в горах в обоих направлениях, а компьютеры использовали пончики для памяти, Я ничего не имею против Ruby/Java/C/С++/, они полезны в контексте, но дайте мне Smalltalk или дайте мне... ну, может быть, я должен изучить Lisp или Scheme or...: )

Ответ 10

Smalltalk: люди форварды ifTrue: [think] ifFalse: [не думаю]

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

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

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

update переписал образец Smalltalk, чтобы на самом деле был более законный код.

Ответ 11

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

Ответ 12

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

Ответ 13

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

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

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

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

Ответ 14

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

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

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

Ответ 15

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

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

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

Ответ 16

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

Ответ 17

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

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

Ответ 18

Поскольку дистрибутивы Smalltalk были оценены в несколько раз в 1000 долларов США, тогда как Ruby является бесплатным.

Ответ 19

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

Ответ 20

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

Ответ 21

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

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

Ответ 23

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

  • Текстовые сценарии
  • Низкие требования к реализации (выполняется в большем количестве мест)
  • Легче учиться и оправдываться (программисты на Perl и Python не будут беспокоиться
  • Легче перемещать программы вокруг - текстовые файлы!
  • Интерфейсы с родной средой
  • Где-то работает Java, jRuby работает...
  • Больше и более активное сообщество

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

Ответ 24

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

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

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

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

dabbledb был сартупом на берегу моря и, эй! Ави продал его в twitter в июне этого года!

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

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

Ты не один. Мы находимся на одной лодке.

Ответ 25

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

Здесь - это приветственный учебник мира.

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

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

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

Ответ 26

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

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

Ответ 27

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

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

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

Ответ 28

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

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