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

Я знаю Perl 5. В чем преимущества изучения Perl 6, а не перехода на Python?

Исходя из фона Perl 5, каковы преимущества перехода на Perl 6 или Python?

Изменить: Если вы проигнорировали это, потому что считаете, что это просто пламя, прочитайте ответы ниже. Они не бредют рассуждения; это хорошо написанные дискуссии о плюсах и минусах каждого языка. Дайте сообществу некоторый кредит.

4b9b3361

Ответ 1

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

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

Ответ 2

У Python нет Junctions. На самом деле я думаю, что только Perl имеет Junctions.: -)

Ответ 3

Perl 6 имеет несколько отличных функций над python. Я думаю, что это все функции, которые Python 3 не имеет:

  • расширяемая, но необязательная система типов
    • включая отправку нескольких методов и проверку типов.
    • даже для встроенных и "операторов"
    • с типами подмножеств
  • Роли: Non-instantiable классы для повторного использования кода (aka mixins)
    • с некоторыми дополнительными преимуществами по сравнению с большинством миксинов:
    • проверка столкновения имени метода компиляции,
    • способность требовать в определении роли определенных методов присутствовать в классе хоста и впоследствии вызывать методы класса хоста при реализации роли.
  • Грамматики (композиции регулярных выражений, возвращающих структурированные данные)
  • Мощные расширенные регулярные выражения. Fancier, чем встроенные возможности регулярного выражения python.
  • Разъемы и соединения типа
  • Metaoperators
  • Возможность определять операторы circumfix, postcircumfix, infix, prefix и postfix.
  • Теоретически, способность работать с AST как структурированные данные. (Aka: lisp)
  • Обзор области
  • * термин для генерации замыканий из любого выражения
  • Неявные конструкции concurrency ([] meta, junctions)
  • Декларативные concurrency конструкции (гипер для)
  • MAIN sub превращает свою сигнатуру функции в интерфейс командной строки и руководство по использованию командной строки.
  • Lazy списки (но вы можете сворачивать свои собственные с генераторами)

И он разделяет с Python следующие преимущества перед Perl 5:

  • Понятие "класс", ключевое слово класса и связанный с ним сахар **:
    • Ключевое слово self
    • геттер/сеттер с концепцией частных данных
  • четко определенный, доступный метаобъектный протокол
  • поддержка большого юникода
  • отличная поддержка даты и времени
  • В общем, "включенные батареи" - множество встроенных функций
  • переменные, не связанные с глобальным охватом, по умолчанию

Реализация Perl6 не заполнена на 100% или недостаточно настроена для использования для определенных значений приложений с высокой чувствительностью к производительности. Но 80-90% спецификации, которая необходима для 95-99% случаев использования, завершена в Ракудо, прямо сейчас *

* Одно очевидное упущение - это любое условие для асинхронного ввода-вывода. Эта часть спецификации находится в движении.

** Хотя популярный проект Moose предоставляет это в Perl 5.

Ответ 4

По-моему, синтаксис Python намного чище, проще и последователен. Вы можете определять вложенные структуры данных одинаково повсюду, планируете ли вы передать их функции (или вернуть их из одного) или использовать их напрямую. Мне нравится Perl много, но как только я узнал достаточно Python, чтобы "получить" его, я никогда не возвращался.

По моему опыту, случайные фрагменты Python, как правило, более читабельны, чем случайные фрагменты Perl. Разница действительно сводится к культуре вокруг каждого языка, где пользователи Perl часто ценят ум, в то время как пользователи Python чаще предпочитают ясность. Это не значит, что у вас не может быть ясного Perl или коварного Python, но это гораздо реже.

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

Обратите внимание на обилие ласковых слов в приведенном выше. Честно говоря, это действительно сведется к личным предпочтениям.

Ответ 5

Perl, как правило, лучше, чем python для быстрых лайнеров, особенно для текстовых/регулярных выражений
http://novosial.org/perl/one-liner/

Ответ 6

У Python есть одно огромное преимущество: оно реализовано, там довольно стабильный компилятор.

Perl 6 - довольно дальновидный язык, но еще не достаточно стабильный для производства. Но у него есть набор очень интересных функций, среди которых: переходы, грамматики (да, вы можете писать полные парсеры с регулярными выражениями Perl 6), обработку юникода на уровне графемы, ленивые списки и мощные макросы.

В вашем конкретном случае, когда вы знаете Perl 5, вы очень быстро познакомитесь с синтаксисом Perl 6.

Для более полного списка интересных функций Perl 6 см. FAQ.

Ответ 7

Вы не сказали, почему хотите отойти от Perl *. Если мой хрустальный шар функционирует сегодня, то это потому, что вы не полностью знаете язык, и это вас разочаровывает.

Придерживайтесь Perl и хорошо изучайте язык. Если вы это сделаете, то однажды вы станете гуру и узнаете, почему ваш вопрос не имеет значения. Просветление приходит к тем, кто ищет его.

  • Вы назвали его "Perl5", но такого языка нет.: P

Ответ 8

Python имеет большое преимущество в том, что он доступен в готовом для производства формате.

У Python есть Jython и IronPython, если вам нужно тесно работать с Java или .NET.

Perl 6 имеет преимущества, основанные на тех же принципах, что и Perl (1-5); Если вам нравится Perl, вам понравится Perl 6 по тем же причинам. (Есть несколько способов сделать это и т.д.)

Perl 6 также имеет преимущество только частично реализовано: если вы хотите взломать внутренние языки или помочь определить стандартные библиотеки, это отличное время для начала работы в Perl 6.

Изменить: (2011) По-прежнему прекрасное время взломать внутренности Perl6, но теперь есть гораздо более зрелый, удобный дистрибутив Perl6, Rakudo Star. Если вы хотите использовать Perl6 сегодня, это отличный выбор.

Ответ 9

IMO python regexing, особенно. когда вы пытаетесь представить что-то вроде perl/e-оператора, как в s/whatever/somethingelse/e, становится довольно медленным. Так что сомневайтесь, вам может потребоваться остаться с Perl5: -)