【问题标题】:Learning Perl - Which version? [closed]学习 Perl - 哪个版本? [关闭]
【发布时间】:2010-07-29 21:48:21
【问题描述】:

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

【问题讨论】:

    标签: perl raku


    【解决方案1】:

    Perl 5 如果您想要 CPAN,Perl 5 如果您想要可接受的运行时性能,Perl 5 如果您想要稳定性和一种完整的语言。 Perl 6,如果你想玩世界上最漂亮的玩具。

    当然,它们并非互不相容——我编写 Perl 5 是为了付费和我的大部分“严肃”开源工作,而 Perl 6 是为了好玩。但是我写 Perl 的时间已经够长了,以至于我对 Perl 5 已经足够舒适了,可以在业余时间切换并编写 Perl 6。

    但是对于刚起步的人来说,当然你只想专注于一种语言,并且对于大多数实际用途,该语言应该是 Perl 5。 Perl 5不会在未来 10 年内随时消亡,无论 Perl 6 取得了多大的成功,即使 Perl 5 和 Perl 6 是完全不同的语言,仍然有很多你学到的东西如果您以后选择学习 Perl 6,则从 Perl 5 开始将帮助您开始使用它。

    【讨论】:

    • 对我自己的帖子发表评论:希望有一天我们会得到我们所承诺的 p5/p6 互操作,并且您将能够使用来自 Perl 6 的整个 Perl 5 CPAN,并且对两种语言来说都是美好的一天。但我们仍处于早期阶段,在那里:)
    【解决方案2】:

    这是来自Perl6 webpage 的引用(重点是我的):

    Perl 5 和 Perl 6 是两种语言 Perl 家族,但不同 血统。如果您正在寻找 生产就绪代码请使用 Perl 5.

    Perl5 已经成熟。 Perl6 正在开发中。

    【讨论】:

    • 值得强调的是,它们是不同的语言,而不是同一语言的不同版本
    【解决方案3】:

    Perl5.

    如果你愿意进行全新的开发并且可以等待 N 年直到 Perl 6 真正退出,你可以学习 Perl 6。但实际上,Perl5 .

    编辑澄清:Rakudo Star,一个

    Perl 6 的有用、可用、“早期采用者”分发版

    最近引起了一些关注,但它不是完整的或最终的,并且还没有真正准备好在生产环境中部署。如果你在未来一三年内寻找一份新工作,它不太可能帮助你获得那份工作。或许最重要的是,如果一个企业对 Perl 6 感兴趣,那么它很可能也有一些 Perl 5 基础架构,并且在学习之前先学习 Perl 5 及其局限性会更好地理解它一种明显较新的语言,例如 Perl 6。

    如果您只是在寻找“乐趣”,您可能确实更喜欢 Perl 6...

    Perl 6 没有发布日期。

    【讨论】:

    • Perl6 测试版已于昨天发布。
    • Rakudo Star 与其说是测试版,不如说是一个技术演示者。在他们甚至宣布 alpha 之前,它还有更多工作要做。 rakudo.org/announce/rakudo-star/2010.07
    • @fennec:在发表此类声明之前,请先了解您在说什么
    • @ysth - 嗯,哪些陈述? “距离 Perl 6 真正还有 N 年”?没有人知道要多久才能正式发布 Perl 6。FAQ 很容易承认这一点。您可能会对我在区分 Rakudo 之类的实验性/早期采用者软件和“实际上 out”方面缺乏明确性表示质疑,但对“请提供一些线索”的不屑一顾的指示似乎有点强烈。
    • “N 年”。我的评论与早期采用者版本无关。 IMO 在 2 年内不会退出的可能性微乎其微。
    【解决方案4】:

    建议在学习 Perl 6 之前学习 Perl 5 有几个原因。

    • 关于编写 Perl 5 程序的书籍比 Perl 6 程序要多。
    • 在 Perl5 中编程的信息比在 Perl 6 中编程的信息要多。
    • Perl 6 仍处于设计过程中。这意味着你现在要学的一些东西,以后可能不适用了。
    • 有很多优质的 Perl 5 模块,而 Perl 6 模块的数量相对较少。
      • CPAN
      • Perl 6 的大多数模块目前只是 Perl 5 模块的重新实现。
    • Perl 5 不会消失。
      • Perl 5 语言的大多数当前版本 Perl 6 规范工作开始后问世。
      • 可以说是 Perl 6 保存 Perl 5。

    推荐 Perl 6 而不是 Perl 5 还有几个原因。

    • 经过重新设计,不同的事物看起来不同,而相似的事物看起来更相似。
    • 语言中已经设计了并行性
    • 许多可以说相互冲突的范式被组合在一起,感觉好像它们只是整体的一部分。
    • 更好的默认对象系统
      (Perl 5 中的 Moose/Moo/etc 也很棒,并且已经被复制到其他语言中)
    • 特殊情况较少。
    • 有更多的方式来表达您的想法,这使您可以选择一种更易于阅读的方式。
    • 元运算符
    • 普通运算符只是子例程,它允许您添加新的和扩展现有的。
      (不要将现有的运算符用于它们不是为它们设计的东西,添加新的)

    【讨论】:

      【解决方案5】:

      Perl6 自 2000 年 7 月 以来一直在开发中。您决定是否要等待。

      仍然建议将 Perl5 用于生产代码,并且拥有庞大的支持社区,不过,作为 Perl6 的证明,如果您遇到问题,更有可能是语言的新添加,而不是 Perl5 中的那些东西.

      Perl6 “发布”后,Larry Wall 和其他人创建了一个翻译器,它将大部分(如果不是全部)Perl5 代码转换为 Perl6 语法,如果这对您的决定有帮助的话。

      【讨论】:

      • 虽然会有翻译,但我怀疑它是否足以可靠地翻译大型生产系统。我不知道他们将如何处理 XS,因为它很难理解、测试和记录。更可靠的方法使用现有的 Perl 5 解释器。要么 Perl 5 嵌入到 Perl 6 中,要么 Perl 6 被翻译成 Perl 5(又名 6on5)。 AFAIK 正在推进所有三种方法。
      • 我不知道你在第一句话中引用了谁。 Larry Wall 在 2000 年的一次会议上提出了对 Perl 语言进行彻底改革的想法,并开始接受 RFC 作为规范,但任何严肃实现的切实发展直到大约 5 年后才开始。区别可能是语义上的,但 Rakudo 已经有十年没有开发了,如果这样想或没有注意到区别,人们就会得出关于其进展速度的错误结论。
      • @cikkle: 自动报价算不算? :) -- 不过你是对的,该语言是在 2000 年宣布的,然后拉里开始接受和分组 RFC。我认为 Masak 的历史记录接近准确(use.perl.org/~masak/journal/40451)。和你一样,他把 2005 年作为事情开始的神奇日期,但实际上在 2002 年末有一些推动,直到那时。尽管如此,开发一种已经成熟的语言仍然是一个很长的时间,即使它的大部分都被重写了。仅供参考,有点无关紧要的 Perl 历史:youtube.com/watch?v=jl9HVEJl_-w
      • @Schwern 如果您可以通过使用最常见的重新实现版本进行 5 到 6 翻译的解决方案获得很大的吸引力,我不会感到惊讶XS 使用模块,并且简单地标记其余不支持。这将是比我们现在更晚的游戏阶段的解决方案:)
      • @hobbs 有模拟大型、旧模块的经验(请参阅 DBIx::Class::CDBICompat)我可以告诉你,它永远不够正确。那是在纯 Perl 中。即使您正确掌握了所有已记录的功能,人们也会在大型商业代码库中使用非常微妙的未记录功能。模拟 DBI 及其所有驱动程序之类的东西是一种西西弗斯式的前景。最后,它必须完美运行,要么全有,要么全无,否则风险太大,大型项目无法切换。另请参阅 Python 3 一直存在的问题。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-06
      • 2014-03-26
      • 2011-02-24
      • 1970-01-01
      • 1970-01-01
      • 2011-03-23
      相关资源
      最近更新 更多