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


121

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

Из того, что я прочитал, кажется, что в Smalltalk лучше работает Ruby:

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

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


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

gst smalltalk_file

47
Потому что все еще ждут "Smalltalk on Snails"?
Марк Рушаков

10
Технически он называется Seaside (www.seaside.st) и довольно быстро запускается на виртуальной машине Gemstone с JIT-компилятором. Также существует порт Ruby для виртуальной машины Gemstone, называемый Maglev.
ConcernedOfTunbridgeWells

3
После прочтения всех этих комментариев ниже, будучи фанатом Ruby в течение последних 5 лет, теперь я испытываю искушение выучить smalltalk как можно скорее
Амол Пуджари

1
GNU Smalltalk - почти единственная бесплатная реализация, которая не связана жестко с графическим интерфейсом. Думаю, это все еще критично.
eonil

Ссылка "распределенный контроль версий" не работает.
Пиовезан

Ответы:


88

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

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

    Кстати, Java - не самая легкая вещь для взаимодействия с другими базами кода (JNI довольно неуклюжая), но это не помешало ей получить всеобщее внимание. ИМО, аргумент о взаимодействии важен - простота встраивания не повредила 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 захватила большую часть умов во второй половине 1990-х, сделав Smalltalk чем-то вроде того, что нужно делать.

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

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

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

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

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


1
Я думаю, что точка библиотеки классов не в основе. Я знаю, что и Smalltalk, и Ruby, и библиотеки классов очень похожи. Если бы у меня возникли проблемы с изучением одного, я бы изучил другой. Сделав сначала больше Ruby, он значительно упростил изучение библиотек Smalltalk. Они удивительно похожи во многих местах. Я не думаю, что что-то в библиотеке классов или самом языке делает Smalltalk более сложным, чем Ruby.
Шон Т. Аллен

2
И VW, и VA Smalltalk раньше имели репутацию специалистов с крутой кривой обучения из-за размера библиотек классов. В то время это было широко признано. Я изучил Smalltalk на старой DOS-версии Digitalk Smalltalk / V, которая имела гораздо меньшую библиотеку классов. Руководство для этого было примерно того же размера, что и книга PP Ruby, и, как и эта книга, ссылка на библиотеку классов составляла примерно половину от общего количества страниц. Однако библиотеки классов для VW и VA намного больше.
ConcernedOfTunbridgeWells,

79

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

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

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


5
Какая из них является межгосударственной, а какая - ветреной проселочной дорогой, покрытой деревьями? lol
Чарли Флауэрс

9
Чарли: это то, что делает его дзен :)
xofz 09

32
А на каком языке девушки красивее?
Железный Человек

25

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

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

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

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

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

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

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

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

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

и

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

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

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

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

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

Это не слишком серьезные возражения, но они, безусловно, заслуживают внимания.

и

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


4
Кхм, «последние 20 лет»?!?! Я думаю, вы имели в виду «последние 51 год». :-)
DigitalRoss

1
@DigitalRoss - я бы пошел с 20; На самом деле LISP был довольно популярен в определенных кругах в какой-то момент, но (несмотря на ViaWeb) с 1980-х годов действительно не было замечено никаких новых «приложений-убийц». Однако в 60-х, 70-х и 80-х годах технологии на основе LISP действительно получали довольно много финансирования; люди действительно думали, что LISP какое-то время идет куда-то.
ConcernedOfTunbridgeWells

2
@DigitalRoss, да, если вы игнорируете такие вещи, как продолжения, мультиметоды, макросы, оптимизацию хвостовых вызовов, из моей головы.
Фрэнк Шеарар

Я всегда нахожу такие аргументы менее приятными. Не существует лучшего языка, и любой инженер-программист может делать Lisp, scheme, ruby, php или c или что-то еще. А если не сможет, то выучит это за 2 недели. Язык - это просто инструмент. Вам не нужно с этим спать.
Эдгар Клеркс

22

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


7
Просто хочу сказать аминь!
Schpaencoder

19

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

Джайлз Боукетт


17

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

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

...

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


15

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

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

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


1
Это заслуживает большего количества голосов!
froginvasion

15

Что есть в Ruby, чего нет в Smalltalk?

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

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


Ваш первый пункт не указан. Поддержка JVM и .NET VM означает для Smalltalk чушь, поскольку каждая реализация уже работает на виртуальной машине (как еще они могут так хорошо работать в нескольких операционных системах, не так ли?) Синтаксис Ruby сложнее, чем у Smalltalk. Трудно определить, что является частью проблемы;)

1
Да, одна из причин, по которой некоторые люди могут использовать jruny / ironruby, - это относительная незрелость ruby ​​vm, но для .net / jvm доступны несколько действительно хороших библиотек, которые они могут захотеть использовать, не имеющие аналогов в других местах, плюс его Некоторым компаниям намного проще работать с их базами кода java / c #.
Роман А. Тайчер

2
Конечно, я считаю, что забота о «сильной, актуальной недвижимости на книжных полках» - это наказание за сложный язык без живой, динамичной среды. Когда я программировал на C ++, у меня были полки полных книг. После перехода на Smalltalk (через Ruby) я ни капли не скучаю по ним. Полагаясь на саму среду разработки в качестве руководства, я редко оставляю изображение для чего-то, кроме быстрого поиска в Google, и облагородил часть этой полки с помощью серии игр «Игра престолов»;)
Шон ДеНигрис

14

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

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

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

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


1
Я думал, что вопрос был в том, "Что есть у Ruby, чего нет в Smalltalk?"
Маурисио

1
@Mauricio, а @Bob ответил: "Бьет меня".
systemovich

1
Блестяще поставлено, нравится! Почему что-то не может быть лучше, несмотря на то, что оно менее популярно? Если вы не согласны, полагаю, вы не понимаете Smalltalk ;-)
Амос М. Карпентер

@aaamos - спасибо. Я подозреваю, что причина непопулярности Smalltalk кроется в №6 и в меньшей степени №5. Smalltalk - это не место вашей мамы с «старым синтаксисом» - это другое. Например, если вы знаете C, то C ++, Java и C # будут чувствовать себя вполне комфортно. А «как» и «почему» поведения Smalltalk могут несколько запутать. (Я рискну, что если новичок в Smalltalker не чувствует, что у него кружится голова, то либо они настолько хороши, что сразу грокнули, либо они просто не понимают этого. Да, мне интересно, как «блестящий» "вещь будет чувствовать :-).
Боб Джарвис - Восстановить Монику

Вы пробовали отладку с помощью pry (и плагинов) и кодирование в реальном времени с горячей перезагрузкой сохраненных файлов? Это был мой лучший опыт программирования.
Rivenfall 05

11

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

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

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

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

update переписал образец Smalltalk, сделав его более легальным кодом ..


4
Английский, вероятно, один из худших способов выражения инструкций по программированию. Я имею в виду, что это вызывает достаточно путаницы среди людей, не говоря уже о компьютерах. Бла? Кто должен делать мля? На что? Также ваш рубиновый код не имеет смысла и недействителен. Должно быть: Ruby: people.think_forwards, если только people.think_backwards? и SmallTalk должен быть: Smalltalk: (люди think_forwards?) ifTrue: [люди думают_forwards])
donalbain 08

2
Вы также можете добавить метод под названием except: aBlock к классу BlockClosure из категории Kernel-Methods, который будет оценивать aBlock и ifTrue: оценивать вызывающий блок.
Рикардо де Силло,

3
@donalbain, я не предполагал, что это были буквальные программные операторы, а указывали на порядок операторов. Я думал, что это было довольно очевидно, когда писал свой ответ.
Энди Дент,

1
@donalbain Совершенно верно, на самом деле существует. Поток управления, более похожий на Ruby, находится на github.com/randycoulman/SuffixConditionals . Энди, в твоем коде есть ошибка - отсталые люди не думают, поэтому тебе следовало послать #ifFalse: ;-P
Шон ДеНигрис

У Smalltalk плохой маркетинг: странный синтаксис и изображения. Ruby более нормален, но также имеет синтаксис хорошего качества. Java типизирована и скомпилирована, что успокаивает клиентов. Я был бы не против выучить и использовать странный синтаксис, если бы он не повлиял на мой собственный «маркетинг» как программиста.
Rivenfall 05

8

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


Тот факт, что он был «разработан в 70-х годах», не имеет ничего общего с тем, насколько сложно его развивать.
Gracchus

3
и мой комментарий не имеет ничего общего с разработкой.
coder1

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

8

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


7

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

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

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

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


7

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

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

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


5

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

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

Так что я предпочитаю Ruby Smalltalk.


Но продолжайте изучать и Smalltalk.
Саймон Найтс,

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

Да - спасибо - только что посмотрел и скачала копию!
Саймон Найтс,

2
Ну, у него также нет отличного веб-фреймворка. Rails в порядке, но это не Seaside
Стефан Эггермонт

3
Любая платформа smalltalk позволяет вам писать код smalltalk в вашем любимом редакторе. Но если вам нравится отключаться от живого мира, это ваш выбор. Просто знайте, что вы теряете около 90% производительности, делая это.
Игорь Стасенко

5

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


1
Однако в Ruby объектная модель отличается от Smalltalk. Я бы сказал "под влиянием", но не то же самое. Вы можете писать программы на Ruby на основе прототипов, избегая необходимости создавать новые классы. Хотя это необычно, Smalltalk этого просто не поддерживает.
Dafydd Rees

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

5

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

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


4

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


4

Ruby для Smalltalk соответствует арабским цифрам для римских. Та же математика, более простой синтаксис.


3
Это неправильный путь. Smalltalk имеет гораздо более простой синтаксис.
Стефан Эггермонт

1
Только если думать в рпн. Большинство людей этого не делает. Я действительно горжусь тем фактом, что этот пост постоянно набирает и опускает голоса.
Sal

12
RPN? Java: foo.bar () Perl: foo-> bar () Python: foo.bar () Smalltalk: foo bar Итак, если вы утверждаете, что Smalltalk - это RPN, кроме более простого синтаксиса, вы должны сказать, что все основные языки объектно-ориентированного программирования являются «РПН».
Randal Schwartz

2
Просто сравните количество ключевых слов Ruby с количеством ключевых слов Smalltalk. И это только начало! Синтаксис Smalltalk уместится на салфетке, попробуйте сделать это с помощью Ruby, и вам придется нелегко.
froginvasion

3

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


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

6
Если вы думаете, что «TextMate / Eclipse / Emacs» сравнима со встроенной IDE Smalltalk, вы не видели настоящего Smalltalk!
Рэндал Шварц,

Я все еще скучаю по выбору -> «Показать» из IDE в системах, с которыми я строю сегодня - с одним исключением: инструменты разработки SQL Server SQL позволят вам выделить выбор и выполнить его как запрос. Smalltalk как минимум влиятелен!
ConcernedOfTunbridgeWells

IDE приближается к Smalltalk, это ИМХО ArachnoRuby. Он лучше интегрирован, чем любой Emacs / TextMate и т. Д. Однако кажется, что люди вполне довольны тем, что несколько открытых окон работают с различными инструментами. С уважением
Фридрих

@Friedrich Re "люди вполне довольны тем, что открыты несколько окон, в которых запущены различные инструменты" ... "Языки программирования учат вас не хотеть того, чего они не могут предоставить. Вы должны думать на языке ..." - Пол Грэм
Шон ДеНигрис

3

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

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


Smalltalk «имеет деловые ноги» - если у вас уже есть правильный опыт и вы можете найти подходящие возможности ...
Дэфид Риз

Ваш титул сильно завышен. Не весь бизнес ограничивается недальновидными техническими директорами. Как сказал Пол Грэм, полностью развенчивая миф о том, что основной язык безопаснее: «Вам будет сложно убедить остроконечного босса позволить вам создавать что-то на Lisp ... Но если вы работаете в стартапе, который этого не делает» Пока у вас остроконечные боссы, вы можете ... использовать технологию, с которой ваши конкуренты, прочно приклеенные к среднему языку, никогда не смогут сравниться ".
Шон ДеНигрис

2

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

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

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


В каких «местах» работает Ruby, а в Smalltalk нет? Pharo Smalltalk, например, работает на Mac, Windows, Unix вообще без ОС (может ли Ruby это сделать?) И переносится на различные мобильные платформы (Android, iOS).
Шон ДеНигрис,

Как насчет FreeBSD и OpenBSD? (нет, я не знаю ответа ...) Как насчет Solaris, HP-UX и OpenVMS? Я также не хотел бы использовать Ruby или Smalltalk на Android или iOS. Самая большая проблема не в ОС, а в памяти: Ruby будет работать в значительно меньшем объеме памяти, чем Smalltalk.
Мэй,

По-видимому, существует виртуальная машина FreeBSD (см. Последний пункт OP на forum.world.st/SOB-minutes-3-6-12-td4453817.html ). Насчет остальных я не уверен. Что касается Android и iOS, то вопрос о том, хотите ли вы использовать Smalltalk, отличается от того, доступен ли он ;-) Люди писали об успешных экспериментах на этих платформах, из которых я видел несколько многообещающих скринкастов.
Шон ДеНигрис,

Это тоже напоминает мне - я вспоминаю Smalltalk для Palm.
Мэй

2

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

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

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

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

dabbledb был сартапом, основанным на приморском побережье, и, эй! Ави продал его в твиттере в июне этого года!

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

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

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


2

Интересная точка зрения Роберта Мартина (с RailsConf 2009): «То, что убило Smalltalk, могло убить и Руби»


2
Этот разговор предполагает, что smalltalk мертв (это не так), и что Ruby достаточно похож на smalltalk в пространстве и времени, и его может постичь та же (не) судьба. Это не так.
Рэндал Шварц,

0

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

Вот учебник hello world.

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

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

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


Внизу страницы: самооценка: «Hello, World!». Я согласен с тем, что кривая обучения более крутая, но использовать "привет, мир" в качестве доказательства, я думаю, слишком много. :)
jop

Я хотел посмотреть, как написать что-нибудь простое, например hello workld, в учебнике должно быть указано, какие окна нужно открывать. Я не могу догадаться об именах и использовании окон. Мне потребовалось немного щелкнуть, чтобы найти окна, о которых идет речь.
Стив g,

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

ruby -e 'помещает "привет, мир"'
Марсель Вальдес Ороско

1
pharo [имя файла изображения] -e "самоинформирование: 'привет, мир'"
Шон ДеНигрис

0

Я думаю, САМАЯ БОЛЬШАЯ разница в том, что Ruby намного больше похож на perl с точки зрения ИСПОЛЬЗОВАНИЯ. Smalltalk так и не вошел в «скриптовые» языки.

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


0

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

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

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


0

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

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


Интересно, является ли это все еще большим препятствием сейчас, когда, например, Digital Ocean предлагает VPS за 0,007 доллара в час
Шон ДеНигрис
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.