Зачем использовать Ruby вместо Smalltalk? [закрытый]
Руби становится популярные, в основном от влияния Ruby на Rails, но он чувствует, что в настоящее время борется через свой подростковый возраст. Есть много общего между Ruby и Smalltalk -- maglev - это свидетельство. Несмотря на более необычный синтаксис, Smalltalk имеет всю (если не больше) объектно-ориентированную красоту Ruby.
из того, что я прочитал, Smalltalk, похоже, имеет Ruby beat on:
- зрелости (разработана в 1970-х годах)
- стабильность
- коммерческая поддержка
- распределенная система управления версиями (понимает структуру кода, а не только текст diffing)
- несколько реализации виртуальной машины
- кросс-платформенную поддержку
- на Приморский веб-фреймворк как сильная альтернатива рельсам
похоже, что Ruby просто изобретает колесо. Итак, почему разработчики Ruby не используют SmallTalk? что у Руби есть Smalltalk?
для записи: я рубиновый парень с небольшим опытом в Smalltalk, но я начинаю задаваться вопросом, почему.
Edit: я думаю, что проблема простоты сценариев была решена GNU Smalltalk. Насколько я понимаю, это позволяет писать smalltalk в обычных старых текстовых файлах, а вы нет дольше нужно находиться в среде IDE Smalltalk. Вы можете тогда запуск скриптов С:
gst smalltalk_file
28 ответов
Я больше питониста, чем пользователь Ruby, однако то же самое относится к Ruby по тем же причинам.
архитектура Smalltalk несколько изолирована, тогда как Python и Ruby были построены с нуля, чтобы облегчить интеграцию. Smalltalk никогда не получал поддержку гибридных приложений так, как Python и Ruby, поэтому концепция "smalltalk как встроенный язык сценариев" никогда не была понята.
в сторону, Java было не так просто взаимодействовать с другими базами кода (JNI довольно неуклюжий), но это не помешало ему получить mindshare. IMO аргумент interfacing значителен-простота встраивания не повредила Python - но этот аргумент имеет только умеренный вес, поскольку не все приложения требуют этой возможности. Кроме того, более поздние версии Smalltalk в основном касались изолированности.библиотека классов большинства основных реализаций smalltalk (VisualWorks, VisualAge etc.) был большим и имел репутацию довольно крутой кривой обучения. Большинство ключевых функций в Smalltalk скрыты где-то в библиотеке классов, даже основные вещи, такие как потоки и коллекции. Языковая парадигма также является чем-то вроде культурного шока для кого-то, не знакомого с ней, и фрагментарный вид программы, представленный браузером, сильно отличается от того, к чему привыкли большинство людей.
общий эффект заключается в том, что он получил (несколько заслуженная) репутация за то, что трудно учиться; требуется довольно много времени и усилий, чтобы стать действительно опытным программистом Smalltalk. Ruby и Python намного проще изучать и вводить новых программистов в курс дела.исторически основные реализации Smalltalk были довольно дорогими и требовали экзотического оборудования для запуска, как можно видеть эта сеть.Лэнг.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 IDE, хотя я не могу говорить за Ruby.Smalltalk несколько поздно пришел в веб-приложение вечеринка. Ранние усилия, такие как VisualWave, никогда не были ужасно успешными, и только когда Seaside вышел, приличная веб-структура получила признание в кругах Smalltalk. Тем временем у Java EE был полный жизненный цикл принятия, начиная с бредящих фанатов, продвигающих его и, наконец, скучающих и переходящих на Ruby ; -}
по иронии судьбы, Seaside начинает получать немного mindshare среди знатоков, поэтому мы можем обнаружить, что Smalltalk едет на велосипеде обратно в популярность.
сказав это, Smalltalk-очень хорошая система, как только вы выяснили, как ее управлять.
когда я выхожу из дома утром, чтобы пойти на работу, я часто борюсь с решением сделать левый или правый поворот из моего пути (я живу посреди улицы). В любом случае я доберусь до места назначения. Один путь ведет меня к шоссе, которое, в зависимости от движения, скорее всего приведет меня в офис. Я еду очень быстро, по крайней мере, часть пути, и у меня есть хороший шанс увидеть красивую девушку или двух по пути на работу: -)
другой путь позволяет мне путешествовать по очень очаровательной, ветреной проселочной дороге с полным древесным покровом. Этот путь довольно приятен, и из двух подходов, безусловно, более забавен, хотя это означает, что я доберусь до офиса позже, чем если бы я поехал по шоссе. Каждый путь имеет свои достоинства. В дни, когда я очень спешу, я обычно выбираю шоссе, хотя я могу столкнуться с движением, и я также увеличиваю свои шансы попасть в аварию (если я не осторожен в своей спешке). Другое время Я могу выбрать лесную тропинку и ехать по ней, наслаждаясь пейзажем и понимая, что опаздываю. Я могу попытаться ускорить процесс, повысив свои шансы получить билет или вызвать аварию.
Не лучше, чем другие. У каждого из них есть свои преимущества и риски, и каждый из них приведет меня к моей цели.
Я думаю, что ваш вопрос несколько отсутствует. вы не следует выбирать, вы должны узнать их обоих!
Если вы действительно находитесь в положении, что вы можете выбрать следующий фреймворк (vm, инфраструктура), то вам нужно решить, что использовать, и может задать конкретный вопрос с плюсами и минусами с точки зрения того, что ваше приложение намеревается сделать.
Я использовал smalltalk (люблю его) и ruby (люблю его).
дома или для проекта с открытым исходным кодом я могу использовать любой язык, который мне нравится, но при выполнении работы я должен принять.
Я начал использовать ruby(на работе), потому что нам нужен был язык сценариев,который вел себя более или менее одинаково в solaris, linux и windows (98,2000, xp). Руби в то время был неизвестен среднему Джо, и никаких рельсов не существовало. Но это было легко продать всем участникам.
(Почему не python? правду ? Однажды я провел неделю в поисках жука, который случился, когда терминал преобразовал мое пространство во вкладку, и намерение перепуталось).
таким образом, люди начали кодировать все больше и больше в ruby, потому что это было так расслабленно, наслаждаясь и не облако на небе.
Это правда, конечно, что большинство людей не выбирают языки программирования просто на основе их достоинств. Большинство программистов говорят, Какой язык использовать кому-то другому.
и
чтобы быть привлекательным для хакеров, a язык должен быть хорош для написания виды программ, которые они хотят написать. И это означает, возможно, удивительно, что это должно быть хорошо для написания одноразовые программы.
а когда были на Земле Lisp попробуйте заменить LISP на smalltalk
библиотеки Ruby, сообщество и импульс хороши
Итак, если LISP все еще более мощный, чем Руби, почему бы не использовать LISP? Типовое значение возражения против программирования в LISP:
- библиотек не хватает.
- мы не можем нанять программистов LISP.
- LISP никуда не делся за последние 20 лет.
Это не подавляющие возражения, но они, безусловно, стоит принимая во внимание.
и
теперь, учитывая выбор между мощным язык, и популярный язык, он может сделайте превосходный смысл выбрать могущественный. Но если разница в власть незначительна, популярность имеет все. своего рода приятные преимущества. В 2005 году я подумайте долго и упорно, прежде чем выбрать Шепелявит над Руби. Я бы, наверное, только это если мне нужен оптимизированный код, или макросы, которые действовали как полноценные компиляторы.
Я бы сказал наоборот: синтаксис Smalltalk является одним из самых простых и мощных языка программирования, синтаксис.
Это правда, что языки очень похожи. Неглубокий способ интерпретировать это-назвать Ruby Smalltalk cover band. Более разумная интерпретация заключается в том, что закрытая система Smalltalk изолировала ее, в то время как участие Руби в экологии Unix и привычка присваивать функции из каждого языка под солнцем дает ей бесконечно более мягкую кривую принятия и легкую интеграцию с такими инструментами kickass, как Git.
угадайте, кто это сказал? (цитата близка, возможно, не точная): "я всегда думал, что Smalltalk победит Java. Я просто не знал, будет ли называться "Руби", когда это произойдет."
барабанная дробь ....
...
ответ ... Кент Бек!--1-->
Стефан Дюкасс имеет некоторые большие Smalltalk книги, доступные здесь:
http://stephane.ducasse.free.fr/FreeBooks.html
поэтому, хотя сообщество Smalltalk не так плодовито, как сообщества Ruby и Rails, там все еще есть большая помощь.
что Руби что он не знает?
- массивная, текущая поддержка основных платформ (IronRuby и jRuby), которые обогащают набор библиотек
- Евангелисты, такие как Дэйв Томас, которые в течение многих лет путешествовали по стране, проповедуя Евангелие своего языка. Я видел Дэйва в конференции Java заявив, что он не знает Java и что он предпочитает Ruby.
- сильная, текущая недвижимость на книжные полки!--4-->
- создатель Ruby сказал, что он думает о программисте: синтаксис Ruby, похоже, имеет эту Дзен-привлекательность. Это трудно определить, но, кажется, гальванизировать вентиляторы.
- творческие, динамические презентации, как Джайлз и этот что получить mindshare
Я думаю, ваша точка зрения принята. Как однажды сказал друг, Руби может быть "старым вином в новой бутылке" по отношению к Smalltalk. Но иногда новое вопросы бутылки. Вино должно быть в нужном месте в нужное время.
бьет меня. Я провел год, проверяя Ruby и делая некоторые небольшие проекты, чтобы увидеть, как мне это нравится. Я думаю, что я фанатик Smalltalk, потому что каждый раз, когда я сажусь работать с Руби, я вздыхаю и думаю: "я действительно предпочел бы делать это в Smalltalk". Наконец я сдался и вернулся к светской беседе. Теперь я счастливее. Счастливее-лучше.
что, конечно, вызывает вопрос: "почему?". В определенном порядке:
- потому что IDE сдувает все остальное Я с ним работал. Это включает в себя кучу платформ от ISPF на мэйнфреймах IBM до Visual (.* ), включают такие вещи, как Visual Basic 4-6, Visual C++ (различные воплощения), Turbo Pascal и потомки Борланда (например, Delphi) и прочее на машинах DEC как в символьном режиме, так и под X-Windows.
- потому что изображение-прекрасное место для жизни. Я могу найти там то, что мне нужно. Если я не могу понять, как сделать что-то, я знаю, что где-то in этот образ-пример того, что я пытаюсь сделать, - все, что мне нужно делать, это охотиться, пока не найду его. И это самодокументирование - если вы хотите увидеть детали того, как что-то работает, вы просто открываете браузер в интересующем вас классе, смотрите на метод, и вот как это работает. (Хорошо, в конце концов вы столкнетесь с чем-то, что называет примитивом, а затем "здесь есть драконы", но это обычно понятно из контекста). Можно делать подобные вещи в Ruby / C++/ C, но это не так простой. Легко лучше.
- язык минимальный и последовательны. Три вида сообщений - унарные, двоичные и ключевые слова. Это также описывает приоритет выполнения-сначала унарные сообщения, затем двоичные сообщения, затем сообщения ключевых слов. Используйте скобки, чтобы помочь. Чертовски мало синтаксиса, на самом деле - это все сделано с сообщениями. (Хорошо, назначение - это не отправка сообщения, это оператор. Так же как и оператор "return" (^). Блоки заключены в квадратные пары скобок ([ ]). Можно быть одним или двумя другими "волшебными" битами там, но чертовски мало...).
- блоки. Да, я знаю, они есть в Ruby (и других), но черт возьми, вы буквально не можете программировать на Smalltalk без их использования. Ты заставили чтобы узнать, как их использовать. Иногда заставляют хорошо.
- объектно-ориентированное программирование без компромиссов или альтернатив, если на то пошло. Вы не можете притворяться, что вы "делаете объекты", все еще делая то же самое вещь.
- потому что это растянет ваш мозг. Удобные конструкции, к которым мы все привыкли (if-then-else, do-while, for (;;) и т. д.), больше не существуют, поэтому вам нужно узнать что-то новое. Есть эквиваленты всему вышесказанному (и многое другое), но вам придется научиться думать по-другому. Иначе хорошо.
с другой стороны, это может быть просто бред парня, который программировал с тех пор, как мэйнфреймы правили землей, мы пришлось пройти пять миль, чтобы преодолеть слепящие метели, поднимаясь в обе стороны, а компьютеры использовали пончики в качестве памяти. Я ничего не имею против Ruby/Java/C/C++/, они все полезны в контексте, но дайте мне Smalltalk или дайте мне...ну, может, мне стоит научиться шепелявить или плести интриги... :-)
Smalltalk: люди вперед ifTrue: [думаю] ifFalse: [не думаю]
Рубин: люди думают вперед, если не думают назад
1) RPN-подобный поток управления Smalltalk по сообщениям похож на Lisp-это регулярно и круто, но странно людей.
2) Ruby позволяет людям писать код, используя идиоматический способ, которым люди говорят-do blah если есть причина не делать этого.
обновление переписать образец Smalltalk на на самом деле это скорее юридический кодекс..
Ruby-это текущий язык buzz. Проще продать программное обеспечение, построенное с его помощью прямо сейчас, чем язык, разработанный в 70-х годах.
сообщество! У Ruby и особенно Rails такое замечательное сообщество. Когда возился с smalltalk, казалось, что было не так много бросков экрана, статей, сообщений в блоге и т. д. написано о языке Smalltalk.
вы ответили на вопрос в первой строке: "Рубин становится популярным"
- здесь много интересных модулей, проектов и таких, основанных на Ruby.
- Если у вас возникли проблемы с чем-то в Ruby, будет тривиально найти помощь где-то.
- Ruby установлен на много компьютеров сейчас (он включен по умолчанию в OS X, многие дистрибутивы Linux, и есть хорошие установщики для Windows) - я не видел smalltalk установлен по умолчанию на любой машине, которую я использовал..
Я бы сказал, что независимо от того, один язык превосходит другой, это не имеет значения.. Например, PHP не может быть" лучшим " языком, но я бы все равно рассмотрел его использование через Ruby on Rails ("лучший" инструмент для создания веб-сайтов), потому что он настолько распространен.
в принципе, конкретные плюсы и минусы языка гораздо менее важны, чем все, что его окружает, а именно сообщество.
Ruby (или любой другой язык) более популярен, чем Smalltalk (или любой другой язык), потому что мы живем в хаотической вселенной. А именно:
- от самого Дэйва Томаса, " [после видео о том, как создать блог в Десять Минут... Руби ушла из бытия хороший маленький нишевый язык, чтобы будучи " языком, который вы написали Rails приложения в" (Ruby Conference 2010 keynote).
- ранние поставщики Smalltalk взимаются запретительно
- Smalltalk, потому что он был изобретен (раньше своего времени) 30 лет назад, встречается многим как старый, "мертвый" язык (например, Фортран)
- корпорации считают Smalltalk таким конкурентным преимуществом, что они скрывают свое использование
в то время как языки похожи в функциях OO, Smalltalk убийца преимущество-это живая, открытая среда (сильно неправильно понятый "образ"). После того, как вы проверить этот пример программирования в Smalltalk, в дебаты окончены.
для меня это не столько случай того, что у Руби есть, но чего у Руби нет. И то, что у него нет, - это необходимость в виртуальной машине и полной среде.
Smalltalk велик-его, где я узнал концепции OO, но для простоты использования я иду на Ruby. Я могу написать код Ruby в моем любимом редакторе и запустить его из командной строки.
Итак, для меня это то, что я выбираю Ruby над Smalltalk.
Я думаю, что все, кто работает с Ruby в течение некоторого времени признает свой глубокий долг Smalltalk. Как один из этих людей, что мне нравится в Ruby за Smalltalk? Я думаю, с чисто языковой точки зрения, это сахар. Руби намеренно очень синтаксиса-слащавый язык, в то время как Smalltalk-это очень синтаксиса-минимальный язык. Ruby-это, по сути, объектная модель Smalltalk с синтаксическим сахаром Perlish. Мне нравится сахар, и это делает программирование более увлекательным.
вы можете найти работу довольно легко сделать Ruby. хотя я действительно люблю Smalltalk, практически невозможно попасть в нишу Smalltalk. В нем есть работа, но если вы не вошли, когда он был популярен, это практически невозможно сейчас.
все остальные причины отступают на второй план, потому что нужно потратить много времени, сосредоточены на реальной работе научиться правильно язык. Если вы не являетесь независимым богатым, лучший способ сделать это-разоблачение к нему на работу.
используйте Ruby, потому что у него могут быть деловые ноги, Smalltalk нет.
Я могу сказать вам из личного опыта. Все еще используя Smalltalk, любите его и использовали пару ароматов. Хотя Smalltalk-отличный язык и все, что вы упомянули, вы, скорее всего, не убедите среднего CIO/CTO использовать Smalltalk в новом проекте. Конечно, вам даже может быть трудно убедить консервативного CIO / CTO использовать Ruby. В конце концов, вы должны быть очень осторожны, если вы хотите устойчивая долгосрочная коммерческая поддержка и возможность найти сотрудников вне улицы, которые могут поддерживать ваши системы в будущем. Например, Smalltalk был действительно большой вещью в начале 90-х годов, и IBM вложила в него значительные средства в конце 90-х. Для IBM Smalltalk должен был стать следующим языком для всех бизнес-приложений. IBM поставила Smalltalk на все, включая свои системы мэйнфреймов. Java стала популярной, захватила рынок, а Smalltalk стал нишевым игроком. Больше года назад IBM выбросила язык (их термин-sunset). Кроме того, взгляните на историю. ParkPlace и Digitalk, где первые крупные коммерческие игроки на Smalltalk арене, они объединились, а затем вышли из бизнеса.
Я люблю Smalltalk и Ruby-но обнаружил, что Ruby более применим к тому, что я делаю ежедневно, и ближе к моему сердцу (практически говоря). Что предлагает Ruby, чего не предлагает Smalltalk?
- текстовые скрипты
- низкие требования к реализации (выполняется в большем количестве мест)
- легче учиться и оправдывать (программисты Perl и Python будут иметь нет проблемы
- легче перемещать программы Вокруг-текст файлы!
- хорошо взаимодействует с родной средой
- В любом месте Java работает, JRuby работает...
- больше и гораздо более активное сообщество
некоторые упомянули gst (GNU Smalltalk); проблемы все еще сохраняются.
используйте все, что делает вас более мощным и быстрым, чтобы победить ваш вызов.
на нас, немного в рамках дома, мы построили в верхней части seaside действительно наша сверхдержава.
Я люблю сообщество RoR, у него правильное отношение. Это очень очень ценно. Но в то же время, технологически, seaside делает вас сильнее против более сложных проблем.
вы можете делать отличные приморские веб-приложения с открытым исходным кодом материал.
dabbledb был sartup основаны на побережье и, Эй! Avi продал его twitter в июне этого года!
Я говорю, что вам не нужно ждать, пока другие одобрят вашу инициативу.
просто пойти на это. Сделай это. Покажи нам, как это работает.
ты не один. Мы на одной лодке.
интересная перспектива от Роберта Мартина (от RailsConf 2009): "То, Что Убило Smalltalk, Может Убить И Руби"
Я думаю, что часть проблемы заключается в том, что среда разработки-это среда выполнения. Это дает много энергии, но также представляет большую кривую обучения.
здесь это учебник hello world.
Это очень отличается от других языков, где мне просто нужно знать, как открыть в текстовом редакторе, скопировать и вставить текст, нажмите Сохранить, и запустить компилятор. Я должен знать, как использовать окружающую среду. Этот учебник даже не показывает мне, как создать basic программа (которая, скорее всего, является ошибкой этого учебника), которую я могу запустить.
существует определенно более высокая стоимость просто получать вещи происходит, чем большинство других языков.
в большинстве языков есть хороший привлекательный код, который они могут показать. Я не видел этого с Smalltalk. Я также думаю, что есть некоторое клеймо для Smalltalk, потому что он был вокруг так долго, и это все еще относительно неясно.
Я думаю, что самая большая разница в том, что Ruby намного больше похож на perl с точки зрения использования. Smalltalk никогда не закреплялся в языках "сценариев".
виртуальная машина действительно классная, и я надеюсь, что у ruby будет что-то похожее на нее, поэтому мы можем рассматривать все на нашей ОС, написанное в ruby как объект в пространстве памяти, однако до тех пор я просто наслаждаюсь кратким, коротким синтаксисом Ruby, возможностью просто написать крошечный скрипт и использовать его позже. Рубин получил все преимущества perl и ООП гораздо больше похожи на smalltalk, чем ООП-Хак perl.
Я бы пошел дальше, чем ответ Йонке, и сказал, что теперь есть большое количество языков, которые имеют очень сильное сообщество, почти достаточно, чтобы удовлетворить любой вкус, и подмножество из них имеет основное признание (т. е. ваш менеджер позволит вам использовать их на работе).
легко изучить основы языка, но на самом деле использовать его эффективно, нужно вложить достаточно времени, чтобы изучить платформу и инструменты, а также синтаксис и идиомы. IIRC, McConnell утверждает, что требуется около трех лет, чтобы стать действительно опытным.
учитывая эти вещи, трудно оправдать тратить много времени на такие языки, как LISP и Smalltalk, хотя они интересны и, возможно, образовательны.
как опоздавший к обсуждению, основная проблема с Smalltalk и Lisp заключается в том, что вы не можете запускать их с CGI или FastCGI на общем хостинге.
немытые массы никогда не будут использовать их, если им нужны VPS или выделенные серверы для их использования. IMHO Seaside превосходит почти все, но будет ли он работать на Dreamhost или Webfaction?