Рубин или Питон? [закрыто]

24

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

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

Вот в чем дело: я программист на всю жизнь C / C ++ / Java. Я немного болтливый, так как я работал с этим семейством языков всю свою карьеру программиста. Поэтому я хотел бы выучить язык, который не так тесно связан с этой группой. То, что я в основном ищу, это язык, который является относительно универсальным, интересным для изучения, имеет несколько новых концепций, которые отличаются от C ++ / Java, и имеет хорошее сообщество. Второе соображение заключается в том, что он имеет хорошие рамки веб-разработки. Третичное соображение заключается в том, что оно не является полностью академическим (читай: существуют реальные рабочие места, использующие его).

Я сузил его до Ruby или Python. Мое впечатление от Ruby состоит в том, что он чрезвычайно ориентирован на веб - единственное его реальное применение - это язык сценариев на стороне сервера для выполнения веб-задач (в основном Ruby on Rails). У меня нет большого впечатления от Python, за исключением того, что у него, похоже, есть страстная фанатская база, и он выглядит довольно универсальным языком.

TL; DR, и, говоря кратко, насколько это возможно: что из этого будет лучше для парня C ++ / Java, чтобы научиться новым взглядам на программирование? И что является более открытым и универсальным и применимо к более широкому набору приложений? Сейчас я склоняюсь к Ruby, но до такой степени беспокоюсь, что похоже, что он используется только как веб-язык на стороне сервера.

Бобби Столы
источник
«Для Python я не уверен»? Которого? Насколько это актуально?
S.Lott
Вы можете найти намного больше о Ruby vs Python в StackOverflow. Я удивлен, что сам Леннарт еще не прокомментировал. regebro.wordpress.com/2009/07/12/python-vs-ruby stackoverflow.com/questions/1113611/…
Работа
@ S.Lott: Извините, не ясно, Ebough. Просто означало, что у меня пока нет очень подробного представления о Python. За исключением того, что он универсален и имеет сильную базу поклонников.
Бобби Столы
9
Perl, конечно.
Брюс Олдерман
Это попадает в «Какие технологии лучше?» категория вопросов, которые согласно FAQ считаются не по теме.
ChrisF

Ответы:

35

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

Поиграйте с Руби и посмотрите, влюбитесь ли вы в нее. Вы или будете или не будете. Это похоже на музыку Grateful Dead; Вы либо любите это, либо терпите.

Руби растянет ваш мозг. Во многих отношениях он настолько далек от C ++ / Java, насколько это возможно. Я пришел из C и C #, и мне показалось, что динамичность и мощь метапрограммирования Руби довольно опьяняющие.

Тем не менее, Python является абсолютно выдающимся языком, и он выбьет вас из коляске.

Почему бы не изучить оба? Я использую оба на регулярной основе: Ruby для программирования с Rails и Python для работы с Google AppEngine.

Адам Кроссленд
источник
2
+1 за
мертвую
1
Спасибо. Сначала я пойду с Руби и посмотрю, влюблюсь ли я в нее. :)
Бобби Столы
8
Я немного опаздываю на вечеринку, но trypython.org и tryruby.org - отличные сайты для опробования языков.
Мишель Тилли
17

Правда, я почти не использовал Ruby, но вот мои впечатления от Python:

  • когда я пишу псевдокод, чтобы нарисовать функцию, я обнаруживаю, что то, что я пишу практически, - это Python, и иногда требуется очень мало переписывания, чтобы сделать его реальным кодом. Вы можете даже пропустить псевдокод все вместе и просто выразить свои мысли прямо в Python
  • когда мне нужно сделать что-то, похожее на обычную задачу, Python стремится встроить необходимые функции (на высоком уровне) в свою стандартную библиотеку. Например, в начале, когда я хотел открыть файл и сканировать его построчно, ответ был прост: «для строк в myFile: dostuff (lines)». Это, я думаю, они называют подход «включенные батареи», и он отличается от некоторых других языков, которые я использовал, где повседневные операции намного сложнее

Эти две вещи выделяются для меня.

Андрей М
источник
Я думаю, что именно поэтому я предпочитаю Ruby. Ruby - больше ОО и имеет меньше ключевых слов. Например, в Ruby "[1,3,5] .length ()" и "[1..10] .each () ..." против Python "len ([1,3,5])" и "для i в диапазоне (1,11) "
LennyProgrammers
6
@Lenny - в Ruby на самом деле есть больше ключевых слов: krijnhoetmer.nl/stuff/ruby/keywords vs. zetcode.com/tutorials/pythontutorial/keywords - для Python 2.6 это 31 ключевое слово для Ruby 38. Кроме того, «more OO» кажется здесь используется довольно субъективно, поскольку в обоих языках применяется «все является объектом» (и даже более буквально с Python 3.x, как и все подклассы object). Кроме того, len(obj)это ярлык для вызова obj.__len__(), а for i in rangeтакже абстрагирует подробности работы действующих объектов генератора. Я думаю / эквивалентно, но отличается / точнее.
Уэйн Вернер
У меня такое ощущение, что Ленни имел в виду, что вы используете меньше ключевых слов в своем типичном утверждении, например, «потому что у меня в диапазоне (1,11) есть 3 ключевых слова (для, в диапазоне). Конечно, иногда больше слов лучше.
Андрей М
5
диапазон - это не ключевое слово, это функция
Kugel
9

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

Джейсон Уэбб
источник
+1, оба кажутся довольно простыми. Clojure, с другой стороны ... это очень весело, но и сложнее.
Работа
7

ИМО, вы должны пойти с Python. Причина в том, что он более универсален, вы можете использовать его практически для всего. Как вы заметили, Ruby больше используется в веб-разработке благодаря своим веб-фреймворкам. В отличие от Python, Ruby не так хорош для разработки настольных приложений с графическим интерфейсом, программ для числовой, статистической обработки или обработки изображений.

Marcin
источник
1
Можете ли вы указать, что делает Ruby "не очень хорошим для разработки настольных приложений с графическим интерфейсом, программ для числовой, статистической обработки или обработки изображений"? Когда я программировал на Ruby в 2001/2002, я с удовольствием делал все эти вещи.
LennyProgrammers
7
@ Lenny222. В Ruby нет таких библиотек, как numpy, scipy, sympy, PIL, matplotlib. Какими бы ни были числовые библиотеки, они сильно отстают от Python. Аналогично с документацией и библиотеками для разработки графических приложений.
Марчин
1
Вы говорите, что Python более универсален, а затем указываете на библиотеки, почему. Я признаю, что в Ruby не так-то просто сделать что-то из-за отсутствия хорошей библиотеки, но это не значит, что сам Ruby менее универсален.
Twisol
@Twisol - это именно то, почему: Python очень прост (и непротиворечив), это причина, по которой он настолько универсален и почему так много полезных библиотек (IMO).
Надир Сампаоли
6

Ruby существует намного дольше, чем рельсы, поэтому позвольте мне рассказать об этом в мире Ruby != web, хотя он делает это очень хорошо. Есть множество систем связанных вещей, которые он может и делает. Кажется, что вся среда Rails поглотила весь остальной мир Ruby. И да, я фанат Ruby.

Python, с другой стороны, многое делает для этого, и он интегрирован почти со всем в Linux. Это говорит о том, что его, вероятно, довольно легко включить в более крупные программы (по сравнению с Ruby, Java и т. Д.). Существует немало инфраструктуры Ubuntu Linux, написанной на Python, которая говорит мне, что Python имеет применение в системном программировании. Я слышал, что его веб-фреймворк действительно хорош, я еще не играл с ним.

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

Берин Лорич
источник
5

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

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

Во-вторых, вы хотите изучить Ruby или Python для возможных рабочих мест. Я предлагаю вам изучить оба. Изучить второй из этих двух будет намного легче, чем первый, несмотря на их различия. Что касается возможных рабочих мест, мое внутреннее чувство заключается в том, что из-за Rails работает больше Ruby, но я знаю, что в этой области есть и некоторые работы Zope. Инвестируйте хотя бы в одну из них, но также проверяйте другую как минимум достаточно долго, чтобы построить что-то маленькое.

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

tl; dr: оба и схема.

Джесси Милликен
источник
1
+1 Все, что я видел, было «один идеальный язык» и «схема». :)
dietbuddha
1

Я тоже пришел из Java / C ++ и последние 4 месяца программировал на Python с использованием инфраструктуры Django, и это действительно здорово. Всякий раз, когда у меня есть проблема или вопрос, я могу найти объяснения существующих сообщений. Я не могу поручиться за Руби, так как я еще не использовал его, но я обязательно попробую, когда у меня будет время.

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

chiurox
источник
1

Я бы проголосовал за Руби. Я пришел из .Net и C # фона, сначала попробовал Python, но Ruby просто очаровал меня =)
Я пишу в нем много системных вещей и некоторых разработчиков Rails. Он способен как Python в системном программировании и великолепен в сети. И это чувствует себя более отполированным для меня ..

Алексей Ануфриев
источник