Что получит программист 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 и С++ в тот же день, так что действительно, вы не ошибетесь, если просто пытаетесь научиться концепции и не становитесь жидкость с языком.
Как только вы знаете набор понятий, гораздо легче понять любой язык, который использует эти понятия.