Ruby становится популярным , во многом благодаря влиянию Ruby on Rails, но кажется, что в настоящее время он переживает период юности. Между Ruby и Smalltalk много общего, и Maglev является тому подтверждением. Несмотря на более необычный синтаксис, в Smalltalk есть все (если не больше) объектно-ориентированной красоты Ruby.
Из того, что я прочитал, кажется, что в Smalltalk лучше работает Ruby:
- Зрелость (разработан в 1970-х годах)
- стабильность
- Коммерческая поддержка
- Распределенный контроль версий (понимает структуру кода, а не только текст)
- Несколько реализаций ВМ
- Кросс-платформенная поддержка
- Приморский фреймворк как сильная альтернатива Rails
Кажется, Руби изобретает велосипед заново. Итак, почему разработчики Ruby не используют SmallTalk? Что есть в Ruby, чего нет в Smalltalk?
Для справки: я парень Ruby, практически не имеющий опыта в Smalltalk, но я начинаю задумываться, почему.
Изменить: я думаю, что проблема простоты написания сценариев была решена GNU Smalltalk . Насколько я понимаю, это позволяет вам писать smalltalk в обычных старых текстовых файлах, и вам больше не нужно находиться в Smalltalk IDE. Затем вы можете запускать свои скрипты с помощью:
gst smalltalk_file
источник
Ответы:
Я больше питонист, чем пользователь 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 - очень хорошая система, если вы разобрались, как ею управлять.
источник
Когда я выхожу утром из дома, чтобы пойти на работу, я часто не могу принять решение свернуть налево или направо с проезжей части (я живу посреди улицы). В любом случае я доберусь до места назначения. Один путь ведет меня к шоссе, которое, в зависимости от загруженности дорог, вероятно, быстрее всего доставит меня в офис. Я еду очень быстро, по крайней мере, часть пути, и у меня есть хороший шанс увидеть пару симпатичных девушек по дороге на работу :-)
Другой путь позволяет мне путешествовать по очень очаровательной, ветреной проселочной дороге, полностью покрытой деревьями. Этот путь довольно приятный, и из двух подходов он определенно более увлекателен, хотя это означает, что я доберусь до офиса позже, чем если бы ехал по шоссе. У каждого способа есть свои достоинства. В дни, когда я очень спешу, я обычно выбираю шоссе, хотя могу попасть в пробку, а также увеличиваю свои шансы попасть в аварию (если я не буду осторожен в спешке). В другие дни я могу выбрать лесной путь и ехать, наслаждаясь пейзажем и осознавая, что опаздываю. Я могу попытаться ускориться, что повысит мои шансы получить билет или сам попасть в аварию.
Ни один из способов не лучше другого. У каждого из них есть свои преимущества и риски, и каждый поможет мне достичь моей цели.
источник
Я думаю, что в вашем вопросе несколько упущено суть. Вы не должны выбирать, вы должны изучить их оба!
Если вы действительно в состоянии выбрать следующую структуру (виртуальная машина, инфраструктура), тогда вам нужно решить, что использовать, и задать конкретный вопрос с плюсами и минусами с точки зрения того, для чего предназначено ваше приложение.
Я использовал smalltalk (люблю это) и ruby (люблю это).
Дома или в проекте с открытым исходным кодом я могу использовать любой язык, который мне нравится, но при работе мне приходится усваивать.
Я начал использовать ruby (на работе), потому что нам нужен был какой-то язык сценариев, который более или менее одинаково работал бы под solaris, linux и windows (98,2000, xp). Руби в то время была неизвестна обычным людям, и рельсов не существовало. Но продать его всем участникам было легко.
(Почему не питон? Правда? Я однажды потратил неделю на поиск ошибки, которая произошла, когда терминал преобразовал мое пространство во вкладку, и намерение испортилось).
Итак, люди начали писать все больше и больше на рубине, потому что он так расслаблял, приносил удовольствие, а не облако на небе.
Пол Грэм подводит итог
и
И когда были на земле Lisp, попробуйте заменить LISP на smalltalk
и
источник
Я бы сказал наоборот: синтаксис Smalltalk - это один из самых простых и мощных синтаксисов языка программирования.
источник
Джайлз Боукетт
источник
Угадай, кто это сказал? (цитата близка, может быть, неточна): «Я всегда думал, что Smalltalk превзойдет Java. Я просто не знал, будет ли называться Ruby, когда это произошло».
Барабанная дробь ....
...
Ответ ... Кент Бек
источник
У Стефана Дюкасса есть несколько замечательных книг по Smalltalk здесь:
http://stephane.ducasse.free.fr/FreeBooks.html
поэтому, хотя сообщество Smalltalk не так плодовито, как сообщества Ruby и Rails, все же есть большая помощь.
источник
Что есть в Ruby, чего нет в Smalltalk?
Я думаю, что ваша точка зрения понятна. Как однажды сказал друг, Ruby может быть «старым вином в новой бутылке» по сравнению с Smalltalk. Но иногда имеет значение новая бутылка. Вино должно быть в нужном месте в нужное время.
источник
Бьет меня. Я провел год, проверяя Ruby и выполняя несколько небольших проектов, чтобы увидеть, насколько он мне понравился. Думаю, я фанат Smalltalk, потому что каждый раз, когда я садился работать с Руби, я вздыхал и думал: «Я бы предпочел делать это на Smalltalk». В конце концов я сдался и вернулся к Smalltalk. Теперь я счастливее. Чем счастливее, тем лучше.
Что, конечно, вызывает вопрос «Почему?». В произвольном порядке:
С другой стороны, это может быть просто бред человека, который программировал с тех пор, как мэйнфреймы правили землей, нам приходилось проходить пять миль, чтобы работать через ослепляющие метели, подниматься в обе стороны, а компьютеры использовали пончики для памяти. Я ничего не имею против Ruby / Java / C / C ++ /, все они полезны в контексте, но дайте мне Smalltalk или дайте мне ... ну, может мне стоит изучить Lisp или Scheme или ... :-)
источник
Smalltalk: люди пересылают ifTrue: [думают] ifFalse: [не думают]
Рубин: люди думают вперед, если не думают задом наперед
1) Поток управления сообщениями, подобный RPN в Smalltalk, похож на Lisp - он обычный и крутой, но приводит людей в замешательство.
2) Ruby позволяет людям писать код, используя идиоматическую манеру разговора - молчите, если нет причин не делать этого.
update переписал образец Smalltalk, сделав его более легальным кодом ..
источник
Ruby - текущий язык разговоров. Сейчас проще продавать программное обеспечение, созданное с его помощью, чем язык, разработанный в 70-х годах.
источник
Сообщество! У Ruby и особенно Rails такое прекрасное сообщество. Когда мы возились с smalltalk, казалось, что о Smalltalk написано не так много снимков экрана, статей, сообщений в блогах и т.д.
источник
Вы ответили на вопрос в своей первой строке: «Рубин становится популярным».
Я бы сказал, превосходит ли один язык другой, не имеет значения. Например, PHP может быть не «лучшим» языком, но я бы все же подумал об использовании его поверх Ruby on Rails («лучший» инструмент для создания веб-сайтов), потому что он настолько широко распространен.
По сути, конкретные плюсы и минусы языка гораздо менее важны, чем все, что его окружает, а именно сообщество.
источник
Ruby (или любой другой язык) более популярен, чем Smalltalk (или любой другой язык), потому что мы живем в хаотической вселенной. А именно:
В то время как языки схожи по функциональности объектно-ориентированного программирования, убийственное преимущество Smalltalk - это живая открытая среда (часто неправильно понимаемый «образ»). После того, как вы ознакомитесь с этим примером программирования на Smalltalk , дискуссия закончится.
источник
Для меня это не столько то, что есть у Ruby, сколько то, что у Ruby нет. И чего у него нет, так это необходимости в виртуальной машине и полноценной среде.
Smalltalk великолепен - именно здесь я изучал концепции объектно-ориентированного программирования, но для простоты использования я выбрал Ruby. Я могу написать код Ruby в моем любимом редакторе и запустить его из командной строки.
Так что я предпочитаю Ruby Smalltalk.
источник
Я думаю, что каждый, кто какое-то время работал с Ruby, признает его глубокий долг перед Smalltalk. Что мне, как одному из этих людей, нравится в Ruby over Smalltalk? Я думаю, что с чисто языковой точки зрения это сахар. Ruby намеренно является языком с очень большим количеством синтаксиса, тогда как Smalltalk - языком с очень минимальным синтаксисом. Ruby - это, по сути, объектная модель Smalltalk с синтаксическим сахаром Perlish. Мне нравится сахар, и я считаю, что он делает программирование более увлекательным.
источник
Вы можете легко найти работу, занимаясь Ruby. Хотя я очень люблю Smalltalk, попасть в нишу Smalltalk практически невозможно. Здесь есть обходной путь, но если вы не попали, когда это было популярно, сейчас это практически невозможно.
Все остальные причины бледнеют, потому что вам нужно много времени уделять реальной работе, чтобы выучить язык должным образом. Если вы сами не богаты, лучший способ сделать это - познакомиться с этим на работе.
источник
Поскольку дистрибутивы Smalltalk были оценены по цене, кратной 1000 долларов США, тогда как Ruby является бесплатным.
источник
Ruby для Smalltalk соответствует арабским цифрам для римских. Та же математика, более простой синтаксис.
источник
Я немного поработал на Smalltalk - я помню, что у Ruby есть хорошая поддержка IDE?
источник
Используйте Ruby, потому что у него могут быть деловые возможности, а у Smalltalk нет.
Могу сказать вам по личному опыту. Все еще использую Smalltalk, мне он нравится, и я использовал несколько вариантов. Хотя Smalltalk - отличный язык, и это все, что вы упомянули, вы вряд ли убедите среднего ИТ-директора / технического директора использовать Smalltalk в новом проекте. Конечно, вам может быть даже сложно убедить консервативного ИТ-директора / технического директора использовать Ruby. В конце концов, вы должны быть очень осторожны, если хотите стабильную долгосрочную коммерческую поддержку и возможность найти неуловимых сотрудников, которые смогут поддерживать ваши системы в будущем. Например, Smalltalk был действительно большим проектом в начале 90-х, и IBM вложила в него значительные средства в конце 90-х. Для IBM Smalltalk должен был стать следующим языком для всех бизнес-приложений. IBM использует Smalltalk во всем, включая свои мэйнфреймы. Java стала популярной, захватила рынок, и Smalltalk стал нишевым игроком. Более года назад IBM отказалась от этого языка (их термин - закат). Также взгляните на Историю. ParkPlace и Digitalk, которые стали первыми крупными коммерческими игроками на арене Smalltalk, объединились, а затем прекратили свое существование.
источник
Я люблю и Smalltalk, и Ruby, но обнаружил, что Ruby более применим к тому, что я делаю каждый день, и он мне ближе (практически). Что предлагает Ruby, чего нет в Smalltalk?
Некоторые упоминали gst (GNU Smalltalk); проблемы все еще сохраняются.
источник
Используйте все, что делает вас сильнее и быстрее, чтобы справиться с задачей.
Для нас , немного в рамках дома, построенного на берегу моря, действительно наша сверхдержава.
Мне нравится сообщество RoR, у него правильное отношение. Это очень ценно. Но в то же время технологически море делает вас сильнее против более сложных проблем.
Вы можете создавать отличные приморские веб-приложения, используя материалы с открытым исходным кодом.
dabbledb был сартапом, основанным на приморском побережье, и, эй! Ави продал его в твиттере в июне этого года!
Я говорю, что вам не нужно ждать, пока другие одобрят вашу инициативу.
Просто пойти на это. Сделай это. Покажи нам, что работает.
Ты не один. Мы находимся в одной лодке.
источник
Интересная точка зрения Роберта Мартина (с RailsConf 2009): «То, что убило Smalltalk, могло убить и Руби»
источник
Я думаю, что отчасти проблема заключается в среде разработки и времени выполнения. Это дает много возможностей, но также требует большего обучения.
Вот учебник hello world.
Это сильно отличается от других языков, где мне просто нужно знать, как открыть текстовый редактор, скопировать и вставить текст, нажать «Сохранить» и запустить компилятор. Я ДОЛЖЕН знать, как использовать окружающую среду. Этот учебник даже не показывает мне, как создать базовую программу (что, скорее всего, является ошибкой этого учебника), которую я могу запустить.
Безусловно, простое начало работы обходится дороже, чем на большинстве других языков.
У большинства языков есть красивый привлекательный код, которым они могут похвастаться. Я не видел этого с Smalltalk. Я также думаю, что есть некоторая стигма в отношении Smalltalk, потому что он существует так давно и все еще относительно неясен.
источник
Я думаю, САМАЯ БОЛЬШАЯ разница в том, что Ruby намного больше похож на perl с точки зрения ИСПОЛЬЗОВАНИЯ. Smalltalk так и не вошел в «скриптовые» языки.
Виртуальная машина действительно крутая, и я надеюсь, что у Ruby будет что-то похожее на нее, чтобы мы могли рассматривать все в нашей ОС, написанное на ruby, как объект в пространстве памяти, однако до тех пор мне просто нравится лаконичный, короткий синтаксис Ruby, возможность просто напишите крошечный скрипт и используйте его позже. Ruby обладает всеми преимуществами Perl, а ООП гораздо больше похож на smalltalk, чем на ООП perl.
источник
Я бы пошел дальше, чем ответ Джонке, и сказал бы, что сейчас существует большое количество языков с очень сильным сообществом, почти достаточным на любой вкус, и некоторые из них получили широкое признание (то есть ваш менеджер позволит вам использовать их в тоже работают).
Выучить основы языка легко, но для того, чтобы использовать его эффективно, вам нужно потратить достаточно времени на изучение платформы и инструментов, а также синтаксиса и идиом. IIRC, МакКоннелл утверждает, что требуется около трех лет, чтобы стать по-настоящему профессиональным.
Учитывая все это, трудно оправдать тратить много времени на такие языки, как LISP и Smalltalk, хотя они интересны и, возможно, поучительны.
источник
Как опоздавший к обсуждению, основная проблема Smalltalk и Lisp заключается в том, что вы не можете запускать их с CGI или FastCGI на общем хостинге.
Немытые массы никогда не воспользуются ими, если им для их использования понадобятся VPS или выделенные серверы. IMHO Seaside превосходит все остальные, но будет ли он работать на Dreamhost или Webfaction?
источник