Что получит программист на Python, изучая Ruby? - PullRequest
16 голосов
/ 24 октября 2010

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

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

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

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

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

Что же тогда Руби научит меня?

Чтобы еще больше разбавить вопрос:

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

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

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

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

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

Ответы [ 5 ]

8 голосов
/ 24 октября 2010

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

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

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

5 голосов
/ 26 октября 2010

Ответ на следующие два вопроса в целом одинаков:

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

Ответ на оба вопроса:

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

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

5 голосов
/ 24 октября 2010

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

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

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

3 голосов
/ 25 октября 2010

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

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

1 голос
/ 24 октября 2010

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

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...