我知道Perl5。学习Perl 6而不是使用Python有什么好处?

我知道Perl5。学习Perl 6而不是使用Python有什么好处?,python,perl,raku,Python,Perl,Raku,来自Perl 5的背景,迁移到Perl 6或Python有什么好处?对于快速一行程序,Perl通常比Python好,特别是涉及文本/正则表达式 从Perl切换到Python没有任何好处。从Python切换到Perl也没有好处。他们两人能力相同。根据你所知道的和你试图解决的问题来选择你的工具,而不是基于某种观念,即一种工具天生比另一种更好 唯一真正的优势是,如果您从不懂的语言切换到懂的语言,那么您的生产率可能会提高。在我看来,Python的语法更干净、更简单、更一致。无论是将嵌套数据结构传递给函数

来自Perl 5的背景,迁移到Perl 6或Python有什么好处?

对于快速一行程序,Perl通常比Python好,特别是涉及文本/正则表达式

从Perl切换到Python没有任何好处。从Python切换到Perl也没有好处。他们两人能力相同。根据你所知道的和你试图解决的问题来选择你的工具,而不是基于某种观念,即一种工具天生比另一种更好


唯一真正的优势是,如果您从不懂的语言切换到懂的语言,那么您的生产率可能会提高。

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

根据我的经验,Python的随机片段往往比Perl的随机片段更具可读性。这种差异实际上可以归结为每种语言周围的文化,Perl用户通常喜欢聪明,而Python用户更喜欢清晰。这并不是说您不能使用清晰的Perl或迂回的Python,但它们不太常见

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


请注意上面有大量的黄鼠狼词语。老实说,这实际上取决于个人喜好。

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

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

Perl 6(2019年更名为Raku)是一种相当有远见的语言,2015年发布了一个测试规范。它有一组非常酷的特性,其中包括:连接、语法(是的,您可以使用Raku“regex”编写完整的解析器)、在grapheme级别的unicode处理以及惰性列表

在您的特定情况下,当您了解Perl 5时,您将很快熟悉Raku(née Perl 6)语法


有关Raku具有哪些酷炫功能的更全面列表,请参阅或选择。

您还没有说明为什么要放弃Perl*。如果我的水晶球今天起作用了,那是因为你不完全了解它的语言,所以它让你感到沮丧

坚持使用Perl,好好学习这门语言。如果你这样做了,总有一天你会成为大师,知道为什么你的问题是无关紧要的。启示来到那些寻求它的人身上

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

Python的一个主要优势是,它现在可以以生产就绪的格式提供

如果需要与Java或.NETCLR密切合作,Python有Jython和IronPython

Perl 6的优点是基于与Perl(1-5)相同的原则;如果您喜欢Perl,出于同样的原因,您也会喜欢Perl6。(有不止一种方法,等等)

Perl 6的另一个优点是只实现了部分功能:如果您想破解语言内部结构或帮助定义标准库,现在是开始使用Perl 6的好时机


编辑:(2011)现在仍然是破解Perl6内部结构的好时机,但现在有了一个更成熟、更可用的Perl6发行版。如果您现在想使用Perl6,这是一个很好的选择。

IMO python的regexing,特别是当您试图在
s/whatever/somethingelse/e
中表示类似perl的/e操作符时,速度会变得相当慢。因此,如果有疑问,您可能需要继续回答Perl5:-)

您的答案可能属于相反的问题;这个问题提供了一个链接。问题是Python的随机片段有时不起作用,因为它们粘贴的地方没有正确保留空格。如果Python更一致,那么为什么数组索引是一种单独的语法?为什么列表理解不同于大多数其他代码?为什么lambdas只限于一行代码,而这需要不同于您可能编写的语法?还有一个问题是关于Perl6的,它现在被称为Raku。在Raku,我前面提到的所有这些都使用完全相同的语法。这是一个常见的比喻说,拉库是奇怪的一致性。主要是因为它在表面上是一致的,但在深层次上也是一致的,这是大多数语言(包括Python)所没有的;al1=所有(al)+1;如果有(al)>3:print“some true”。Perl 6中的连接可以做更多的事情。你的连接可以自动执行吗?不,不是我的。junction自动线程是否已经提高了程序的速度?如果是,由什么因素决定?连接主要不是关于速度,而是关于可读性。你的答案可能属于相反的问题。我是一个perl的人,但你得到+1,因为Perl6是一种“有远见的语言”。你说,“根据你所知道的和你试图解决的问题选择你的工具”,但现在,我两种语言都不懂,我不知道我要解决的问题的哪些方面适合哪种语言。这就是我问这个问题的基本原因。@raldi-Perl6与Perl5没有太大区别,所以您知道一种语言的大部分内容。据我所见,Python与Perl5甚至没有什么不同,许多Perl知识都将被带入Python中,所有这些都没有添加任何信息来帮助提问者(和我)做出任何选择。这是一个非常空洞的答案。我认为PrL5是一种语言。我是五岁的DPerl 5.10失效