Что получит программист Python, изучив Ruby?

Я собираюсь изучать Ruby, Haskell и Prolog в университете. Теперь, мне интересно, что должно привлечь мое внимание. У меня есть полгода, чтобы сделать все три, а это означает, что мне нужно выбрать один язык, чтобы получить внеурочное время. Остальные я узнаю достаточно, чтобы сделать очень хорошо в курсе.

Я достаточно хорошо знаком с Haskell и Prolog, чтобы узнать, что их изучение научит меня нескольким очень важным концепциям информатики. Я не уверен в рубине.

Пройдя несколько руководств и интродукций, у меня создается впечатление, что рубин - это много мелкой магии. Теперь я спрашиваю рубинов: что я получу, если я решит никогда не использовать его снова, после того, как я провел полгода, изучая его, что Питон меня не научил.

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

Я использую Python для всей моей работы в CS сейчас. Я тоже много программировал с ним. Я также уже хорошо знаком с объектно-ориентированным программированием (в Java, Python и С#). И я, как я сказал, сделаю логическое программирование с помощью Prolog.

Что же осталось для Ruby, чтобы научить меня?

Для дальнейшего разбавления вопроса:

  • Мне не интересно писать программ или прохладных веб-приложений. Меня просто интересует компьютер Научные бит. Реализация алгоритмов, структур данных и т.д. (Хотя с удовольствием наверняка не повредит)

  • В идеале обсуждаемые концепции должны быть изучены примерно через 1.000 часов.

  • Меня не интересуют Rails. Любая технология, которая скрывает сложность, в этом случае вредна.

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

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

Ответы

Ответ 1

По большей части ничего. Большинство сильных/слабых сторон Ruby такие же, как у Python, за исключением того, что Ruby немного более "функциональный". Однако, если у вас есть Haskell в качестве опции, гораздо больше можно узнать о функциональном программировании от Haskell, чем от Ruby.

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

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

Ответ 2

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

  • Оба языка сильно, динамически типизированы.
  • Оба поддерживают многие парадигмы, такие как функциональные, объектно-ориентированные и т.д.
  • У Ruby есть немного больше пуха/сахара (похоже на Perl), в то время как Python считает, что явное лучше, чем неявное.

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

Ответ 3

Ответ на следующие два вопроса, в общем, то же самое:

  • Если я уже знаю Python, что я узнаю из Ruby?
  • Если я уже знаю Ruby, что я узнаю из Python?

Ответ на оба:

  • Ничего важного, кроме немного другого способа делать вещи.

Они оба являются динамическими языками OO. Ruby предлагает себя немного более функциональным, в то время как у Python есть некоторые другие приятные вещи (понимание списка). В целом, однако, вы не собираетесь многому научиться, что в целом применимо к информатике, перейдя от одного к другому.

Ответ 4

Я профессионально программировал более 20 лет и имею много разных языков, от сборки и C через различные SQL. Наличие этого диапазона дает мне хороший инструмент для выбора, когда мне нужно что-то делать.

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

Ответ 5

Если вы хотите научиться материалу в области компьютерных наук, изучите Scala. Это язык информатики будущего. Посмотрите, сможете ли вы это узнать;)

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

Алгоритмы и структуры данных все хорошо и хорошо, но не забывайте о архитектуре и высокоуровневом дизайне. Это действительно важно - иметь возможность проектировать крупномасштабные вещи, которые не воняют плохой дизайн. Из 3 вариантов Ruby может многое показать вам здесь. Таким образом, Scala.

Все языки могут делать вещи CS, поэтому я не вижу, как язык будет вредным. Конечно, один язык может быть более элегантным, чем другой, но люди привыкли выражать вещи уровня CS на C и С++ в тот же день, так что действительно, вы не ошибетесь, если просто пытаетесь научиться концепции и не становитесь жидкость с языком.

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