Что должен знать разработчик Python при изучении Ruby? [закрыто]

16

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

Тем не менее, в области программирования, похоже, много внимания уделяется Ruby, но больше не о Python.

Таким образом, в изучении Ruby будут ли Pythonic вещи, которые просто плохие практики в Ruby? Чего следует остерегаться и чего следует избегать?

CJ
источник
4
Я всегда считал Ruby-программистом, должен ли я изучать Python, потому что это все, о чем все говорят: P
Earlz
Несмотря на слух, кажется, что Python по-прежнему используется вдвое чаще, чем Ruby (по крайней мере, согласно TIOBE -> tiobe.com/index.php/content/paperinfo/tpci/index.html ).
Даниэль Скокко
10
Вместо того, чтобы быть «программистом Python» или «программистом Ruby», вы должны попытаться стать отличным программистом. Затем вы можете использовать любой язык и переходить на новый, когда придет время.
Блэкджек

Ответы:

31

Я делал Python в 2003-5 годах, когда был консультантом Plone / Zope. Затем в 2006 году я начал собирать Ruby. Я никогда не оглядывался назад. Я думаю, что разные люди чувствуют себя более комфортно с разными языками программирования и культурами, но для меня Ruby чувствует себя намного лучше, чем Python.

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

С моей точки зрения, две лучшие вещи в Ruby - это две вещи, которые резко отличают его от Python. Во-первых, на Ruby большое влияние оказывает Perl. Кажется, что Python гордится тем, что является анти-Perl. Но то, что Ruby позаимствовал у Perl, имеет большую практическую ценность. Возьмите регулярные выражения, например. В Ruby вы можете писать регулярные выражения, например if mystring =~ /^\s+hello word!/ .... В Python не так уж и много, потому что Python настолько анально заставляет все следовать единому предсказуемому синтаксису. В Ruby вы можете сразу получить STDIN input = STDIN.read. В Python вы должны import sysи тогда sys.stdin.read(). Это всего лишь два примера, когда попытка Python дистанцироваться от Perl и быть настолько предсказуемо регулярной, перевешивается готовностью Руби делать то, что кажется правильным в каждом случае.

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

Есть много Lisp-подобных возможностей Ruby, которые позволяют делать больше с меньшим количеством кода в Ruby, чем в Python. Например, каждая структура оператора и элемента управления в Ruby возвращает значение: в Ruby вы можете обойтись без использования returnоператора. Даже ifзаявления оцениваются как значения, так что вы можете написать что-то вроде этого

result = if output == 'hello'
           [some code here]
           "world"
         else
           [some other code here]
           "there"
         end

В Python вы должны написать

if output == "hello":
  [some code here]
  result = "world"
else:
  [some other code here]
  result = "there"

Python заставляет вас печатать result =дважды. Это не очень сухо (не повторяйте себя). Есть много подобных случаев, когда Ruby будет более СУХИМ, чем Python, из-за его свойств, подобных Лиспу. Мац, создатель Ruby, пришел из Lisp.

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

Я думаю, что это правда, что в конце концов Ruby и Python могут выполнить свою работу. По сравнению с C и Java Ruby и Python - одно и то же. Это выразительные, продуктивные языки высокого уровня.

Так что все сводится к вашей личности.

Вам нравится, чтобы все было предсказуемо, регулярно и безопасно? Вам нравится императивный стиль программирования? Вы хотите когда-нибудь поработать на Google? Считаете ли вы, что Perl - это хаотическое порождение ада? Придерживайтесь Python.

Получаете ли вы большое удовольствие, находя абсолютно краткий способ достижения некоторого результата программирования? Вам скучно от регулярности и единообразия? Вам нравится иметь свободу писать код в собственном стиле, и у вас есть много места, чтобы придумывать свои собственные интересные трюки? Чувствуете ли вы сродство с Лиспом больше, чем с С? Чувствуете ли вы восхищение эпохальным вкладом Perl в программирование программного обеспечения, но только желаете, чтобы он был немного менее загадочным и безобразным? Вы думаете о коде, как другие люди думают о поэзии? Попробуйте Руби.

Дан
источник
11
«И это очень плохо, потому что метапрограммирование - это путешествие» ... И точно так же, как путешествие, это будет здорово на ночь, но в конце концов вы просыпаетесь утром и забыли, что вы сделали. Я думаю, что в Ruby особое внимание уделяется метапрограммированию, и я предпочитаю Ruby Python. Большинство решений Ruby для решения проблем синтаксиса заключается в том, что «вы можете обойти это с помощью метапрограммирования»
Earlz
23
Какая? result = "world" if output=="hello" else "there"отлично подходит Python (и на три символа короче).
Тим Пицкер
3
@ Хорошо, спасибо, что поправили меня. Но можете ли вы сделать то же самое с помощью оператора if / elsif / elsif / else - то есть if / elif / elif / else в Python? Можете ли вы сделать то же самое, даже если в предложении if или else есть несколько операторов?
дан
1
Подождите, Python не имеет троичного оператора?
пп.
3
«Matz, создатель Python, пришел из прошлого Lisp». подождите ... AFAIK Мац - создатель Ruby ...
Eimantas
6

По-разному.

Для меня python намного проще, чем ruby, плюс оба языка имеют разные цели.

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

Вам не помешает изучать Ruby, вы откроете для себя новые вещи, но имейте в виду, что Python ближе к простым парадигмам программирования, которые достигли успеха в C, с большим увеличением производительности. Ruby больше подходит для людей, которые хотят идти дальше в концепциях программирования в целом: Scheme и все эти «превосходные» языки.

jokoon
источник
3

Краткий ответ: да и да.

Изучение нового языка почти всегда полезно, и особенно для Ruby, поскольку Rails по-прежнему очень популярен. И да, если вы хорошо знаете Python, вам будет легко освоить Ruby. У них есть некоторые синтаксические различия и разные соглашения в именовании, но есть и много общего.

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

(Я использовал Python около 10 лет и в прошлом году изучал Ruby. В настоящее время работаю полный рабочий день в проекте RoR)

шан
источник
2

У всего есть своя ниша. Например, Python (django) - первоклассный гражданин в GoogleApp Engine, хотя он является языком или выбором для многих биоинформационных проектов. Python действительно имеет большую рыночную стоимость (я получаю много незапрошенных потенциальных вакансий просто потому, что я много сделал с Python), но Ruby - в разных областях. Как вы, несомненно, слышали здесь много раз, это всегда поможет вам выучить больше языков, так что да, изучайте Ruby. Это будет сложно? Это будет намного проще, чем изучение COBOL, так как доступные языки и платформы похожи друг на друга. Одним из примеров являются камни Руби и пипс питона .

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

Arcege
источник
Я хотел ответить в том же духе, надеюсь, вы не возражаете против редактирования ...
Димитриос Мистриотис
2

Стоит ли изучать рубин? Да.

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

Это будет сложно? Если вы выучили Python, вы, безусловно, тоже можете выучить Ruby.

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

На c2.com есть хорошее сравнение между Ruby и Python .

Trasplazio Garzuglio
источник