来自 Perl 5 背景,迁移到 Perl 6 或 Python 有什么优势?

#1楼 票数:24

从Perl切换到Python没有任何好处。 从Python切换到Perl也没有任何好处。 他们都有同样的能力。 根据你所知道的和你想要解决的问题来选择你的工具,而不是某种观念,即某种方式本质上比另一方更好。

唯一真正的优势是,如果您从不熟悉的语言切换到您知道的语言,在这种情况下,您的工作效率可能会提高。

#2楼 票数:16

Perl 6比python有一些很棒的功能。 我认为这些都是Python 3没有的功能:

  • 可扩展但可选的类型系统
    • 包括多方法调度和类型检查
    • 甚至对于内置和“运营商”
    • 与子集类型
  • 角色:代码重用的非实例化类(aka mixins)
    • 与大多数mixin相比具有一些额外的优势:
    • 编译时方法名称冲突检查,
    • 能够在角色定义中要求在主机类中存在某些方法,然后在角色的实现中调用主机类的方法。
  • 语法(返回结构化数据的正则表达式的组合)
  • 强大的扩展正则表达式。 比python的内置正则表达式功能更加出色。
  • 连接点和类型连接点
  • Metaoperators
  • 定义circumfix,postcircumfix,infix,prefix和postfix运算符的能力。
  • 从理论上讲,能够将AST作为结构化数据使用。 (Aka:lisp宏)
  • 阻止范围
  • 用于从任何表达式生成闭包的*术语
  • 隐式并发构造([] meta,junctions)
  • 声明性并发构造(超级)
  • MAIN子函数将其函数签名转换为命令行界面和命令行使用指南。
  • 懒惰列表(但您可以使用生成器自行滚动)

它与Python共享以下优于Perl 5的优势:

  • “类”的概念,类关键字和相关的糖**:
    • self关键字
    • getter / setter sugar与私人数据的概念
  • 一个定义良好,可访问的元对象协议
  • 很棒的unicode支持
  • 内置的日期/时间支持
  • 一般来说,“包括电池” - 许多内置功能
  • 默认情况下,非全局范围的变量

Perl6的实现不是100%完成,或者已经足够调整以用于“性能敏感”应用程序的某些值。 但是,在95-99%的用例中,80-90%的规范在Rakudo中已经完成,现在*

*一个明显的遗漏是异步I / O的任何规定。 该规范的那部分是不断变化的。

**虽然流行的Moose项目在Perl 5中提供了这个功能。

#3楼 票数:13

Python没有连接点 事实上,我认为到目前为止只有Perl有连接点。 :-)

#4楼 票数:12

在我看来,Python的语法更清晰,更简单,更一致。 您可以在任何地方定义嵌套数据结构,无论您是计划将它们传递给函数(还是从一个函数返回)或直接使用它们。 我非常喜欢Perl,但只要我学会了足够的Python来“获取”它,我就再也没有回头了。

根据我的经验,Python的随机片段往往比Perl的随机片段更具可读性。 差异实际上归结为每种语言的文化,Perl用户通常喜欢聪明,而Python用户更喜欢清晰。 这并不是说你不能有明确的Perl或狡猾的Python,但那些不太常见。

两者都是优秀的语言,解决了许多相同的问题。 我个人倾向于Python,如果没有其他原因,它似乎正在获得动力,而Perl似乎正在失去用户的Python和Ruby。

注意上面的丰富的黄鼠狼词。 老实说,它真的会归结为个人偏好。

#5楼 票数:7

对于快速的一个衬里,Perl通常比python更好,特别是涉及文本/正则表达式
http://novosial.org/perl/one-liner/

#6楼 票数:5

Python有一个巨大的优势:它已实现,有一个相当稳定的编译器。

Perl 6是一种颇具远见的语言,而且还没有足够的稳定性来生产。 但它有一套非常酷的功能,其中包括:联结,语法(是的,你可以使用Perl 6“regexes”编写完整的解析器),在字形级别处理unicode,懒惰列表和强大的宏。

在您了解Perl 5的特定情况下,您将非常快速地熟悉Perl 6语法。

有关Perl 6具有哪些酷炫功能的更全面列表,请参阅常见问题解答

#7楼 票数:4

你还没有说过为什么要离开Perl *。 如果我的水晶球今天运转,那是因为你不完全了解语言,所以它让你感到沮丧。

坚持使用Perl并很好地学习语言。 如果你这样做,有一天你会成为一个大师,并知道为什么你的问题是无关紧要的。 寻求它的人会得到启发。

  • 你称它为“Perl5”,但没有这样的语言。 :P

#8楼 票数:4

如今,Python具有以生产就绪格式提供的主要优势。

如果你需要与Java或.net clr密切合作,Python有Jython和IronPython。

Perl 6的优点是基于与Perl(1-5)相同的原理; 如果你喜欢Perl,你会因为同样的原因而喜欢Perl 6。 (有多种方法可以做到,等等)

Perl 6还具有仅部分实现的优点:如果您想破解语言内部或帮助定义标准库,那么这是开始使用Perl 6的好时机。

编辑 :(2011)现在仍然是攻击Perl6内部的好时机,但现在有一个更加成熟,可用的Perl6发行版, Rakudo Star 如果你想今天使用Perl6,这是一个很好的选择。

#9楼 票数:3

IMO python的regexing,尤其是 当你试图像在s/whatever/somethingelse/ e那样代表perl的/ e运算符之类的s/whatever/somethingelse/ e ,变得非常慢。 所以有疑问,你可能需要继续使用Perl5 :-)

  ask by raldi translate from so

未解决问题?本站智能推荐:

5回复

学习Perl - 哪个版本? [关闭]

我一直在考虑学习Perl。 我应该学习Perl5还是从Perl6开始?
4回复

如何开始使用Perl 6? [关闭]

有人可以提供从Perl 6开始的材料链接吗? 还有人可以指出已经用Perl 6开发的真实应用程序吗?
3回复

Perl6中的twigil是什么?

我正在阅读有关Perl6的精彩介绍,并且遇到了一个相当有趣的术语: 注意! twigil的意思是“这是班上私人的”。 我知道Perl5中有什么名字。 但是什么是意大利细面条 ? 只是在属性/变量名称之前有两个信号的一种奇特的说法?
2回复

如何在Perl 5中定义解析语法?

我最近决定看看Perl,当面对Perl 5 vs 6时,由于它的成熟和大量的支持,我选择了5。 然而,Perl 6的一个真正吸引我的功能是grammar关键字 ,允许人们定义一种语言语法,可以用来解析复杂的文本。 在其他语言中,通常需要外部库或手动解析实现。 既然我已经确定了Per
4回复

Perl6 / Rakudo的“ perldoc -f”

对于Perl6 / Rakudo,是否已经存在诸如perl5的“内置函数”之类的“ perldoc -f function_name”之类的内容,这给了我简短而快速的用法说明?
1回复

如何在Perl 6中控制循环的嵌套性?

该程序应编写总和小于或等于7的三重索引: 我以为它只会循环遍历列表的顶层(然后代码在循环体中会有错误,但这不是重点),但是它只是循环遍历单个数字,这令人沮丧:(避免这种麻烦的妙招是:顺便说一句,有没有办法制造n元直接乘积?
1回复

我可以在Perl 5中为字符串创建文件句柄,我该如何在Perl 6中完成?

在Perl 5中,我可以创建一个字符串的文件句柄,并从字符串中读取或写入,就像它是一个文件一样。 这非常适合使用测试或模板。 例如: 我怎么能在Perl 6中做到这一点? 以下内容不适用于Perl 6(至少不适用于我在2015年1月发布的Rakudo Star 64位CentO
2回复

有多少种方法可以描述Perl 6中的Fibonacci序列?

我一直在研究在Perl 6中构造惰性列表的各种方法,我想收集所有描述Fibonacci序列的简洁方法。 我将从马萨克的期刊中的三个开始: 我认为这样的东西也会起作用,但我认为我的语法有误: 有什么东西急切(切片?)并导致Rakudo进入无限循环。 它是Haskell定义的