Подтвердить что ты не робот

Просьба сообщить о Ruby vs Python, для тех, кто любит LISP много

Я разработчик С++, медленно вступая в веб-разработку. Мне нравится LISP много, но не нравится AllegroCL и веб-фреймворки, доступные для LISP. Я ищу больше свободы и способности делать классные хаки на языковом уровне. Я не рассматриваю вкладки как преступление против природы.

Какой из них ближе к LISP: Python или Ruby?

Я не могу выбрать из Python и Ruby: они кажутся очень похожими, но, по-видимому, Ruby более функциональный и объектно-ориентированный, это хорошие вещи, в то время как Python больше похож на Perl: простой скриптовый язык. У меня есть правильное впечатление?

PS - Это может показаться пламенной приманкой, но на самом деле это не так, я просто стараюсь не сходить с ума от OCD о переключении с RoR на Python/Django и обратно.

4b9b3361

Ответ 1

Я поеду с Рубином. Он получил все виды метапрограммирования и утиных пробивных хаков, которые делают его очень простым. Вначале такие функции, как блоки, могут показаться не такими, но они делают для действительно чистого синтаксиса, если вы используете их правильно. Открытые классы могут отлаживать ад, если вы их испортите, но если вы ответственный программист, вы можете очень легко сделать такие вещи, как 2.days.from_now (пример из Rails) (Python тоже может это сделать, но немного боль)

PS: Зайдите "Почему Ruby является приемлемым LISP" .

Ответ 2

Питер Норвиг, знаменитый и отличный переводчик, преобразован в Python. Он написал статью Python для Lisp Programmers, которая может показаться интересной с ее подробным сравнением функций.

Python выглядит как исполняемый псевдокод. Легко подобрать, и часто использование вашей интуиции будет просто работать. Python позволяет легко вставлять свои идеи в код.

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

Ответ 3

Адвокат дьяволов: кто заботится?

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

Это похоже на решения Java/.Net. В конкретном случае могут быть веские причины, но мягкие факторы, такие как знакомство с архитектурой платформы, являются гораздо более сильным предиктором успеха проекта.

Я признаю, что я использовал Python гораздо больше, чем Ruby, но я бы не сказал, что у меня есть отличное предпочтение между ними, кроме знакомства. Я использовал Python с 1998 года, и мне нравится Smalltalkish-ness of Ruby, так как я использовал Smalltalk примерно 15 лет назад. Они оба делают подобные вещи несколько иначе.

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

Если вы беспокоитесь о Rails vs. Django, это говорит о том, что вы ищете платформу для веб-приложений. Оба языка имеют хорошую поддержку инструмента и активное сообщество разработчиков. Кажется, что Django является победителем рукопашного интернет-фрейма Python, и Rails, похоже, находится в процессе "пересечения пропасти" и приносит Ruby вместе с ним. Оба являются достаточно зрелыми системами и продемонстрировали, что они хорошо работают для респектабельных объемов трафика.

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

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

Выберите один и используйте его. Вы также сможете эффективно создавать системы.

Ответ 4

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

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

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

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

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

Ответ 5

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

Ответ 6

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

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

Ответ 7

Я также рекомендую статью Peter Norvig, которую опубликовал namin. Если вы хотите посмотреть функциональное программирование на Python, проверьте functools модуль в стандартной библиотеке.

В Python также много места для взлома; частные переменные являются условными и не применяются, поэтому вы можете сориентироваться во внутреннем состоянии объектов, если вам это нравится. Обычно это не обязательно.

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

Ответ 8

Я Pythonista; однако, исходя из ваших требований, особенно "классных хаков на уровне языка", я предлагаю вам работать над Ruby. Ruby более гибкий в Perl, и вы можете делать много хаков; Python нацелен на читаемость, что очень хорошо, и, как правило, языковые хаки немного нахмурились. Основные типы Ruby могут быть модифицированы хакерским способом, который обычно поддерживает языки прототипа, в то время как базовые типы Python более подходят для подкласса.

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

Ответ 9

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

Ответ 10

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

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

Ответ 11

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

Ответ 12

Если вам нравится lisp, я думаю, что вы будете лучше, чем ruby, но С++ напоминает мне больше о python. Я разместил небольшой пост по этому вопросу: http://hartator.wordpress.com/2011/06/12/ruby-vs-python-2011/