Я знаю Perl 5. В чем преимущества изучения Perl 6, а не перехода на Python?
Исходя из фона Perl 5, каковы преимущества перехода на Perl 6 или Python?
Изменить: Если вы проигнорировали это, потому что считаете, что это просто пламя, прочитайте ответы ниже. Они не бредют рассуждения; это хорошо написанные дискуссии о плюсах и минусах каждого языка. Дайте сообществу некоторый кредит.
Ответы
Ответ 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: -)