【问题标题】:Next step after PHP: Perl or Python? [closed]PHP 之后的下一步:Perl 还是 Python? [关闭]
【发布时间】:2010-10-12 06:43:05
【问题描述】:

它似乎已被多次询问,但实际上并没有。我做了我的研究,现在我很想听听其他人的意见。

我有使用PHP 5 的经验,包括函数式和面向对象的编程方法。我创建了一些功能简约的网站。

专业人士可能会同意 PHP 不是一种鼓励良好开发习惯的编程语言。 (我相信这不是该工具的任务,但这无关紧要。)此外,它的性能也存在争议,并且与竞争对手相比,通常被认为很差。

在42nd podcast at Stack Overflow blog 中,一位来自波兰的开发人员询问他应该学习什么语言来提高自己的技能。 Jeff 和 Joel 建议他们每个人都会有所帮助,尽管在​​某些方面有些特定的更好。 尽管他们提出了一些很好的观点,但对我的帮助并不大。

从初学者的角度来看,没有人们可能看不到(S. Lott 建议更正)Perl 和 Python 之间的许多差异。我希望您强调他们的优势和劣势,并列举一些独特的服务。

当然,这不公平,因为我也可以同时检查它们。所以这是我的愿望清单和要求,以帮助你帮助我。

首先,我想遵循 OOP 结构 并从根本上使用它。我部分计划了一个使用 MySQL 和 XML 的多用户 CMS,所以实现越多越好。由于其可预见的性质,字符串操作将被大量使用。

如果没有很大差异,比较可能首先应该提到语法和其他无关紧要的微小细节。

所以,这是我的问题:我应该首先尝试哪个 -- Perl ||蟒蛇?


结论

Perl 和 Python 都有自己的粉丝,这很棒。我想说我很感谢所有的参与——没有任何火焰战争的痕迹。

我接受了最有价值的答案,尽管下面有很多很棒的迷你文章。正如更经常建议的那样,我将首先使用 Python。然后我稍后会尝试 Perl。让我看看哪一个更适合我的想法。

在我的特殊 CMS 开发过程中,我将询问更多关于编程方面的疑虑——因为开发人员现在可以互相依赖了!谢谢。

编辑:有些人建议选择 Ruby 或 Java。 Java实际上让我失望了。也许它有很棒的功能,也许它没有。我不会喜欢使用它。

此外,我被告知要使用 Ruby。到目前为止,与我交流的大多数开发人员对 Ruby 的看法都很差。我自己去看看,但这是我的优先级列表中的最后一个元素。

【问题讨论】:

标签: python perl


【解决方案1】:

Perl 是一门非常好的语言,CPAN 有大量成熟的模块可以为您节省大量时间。此外,如今 Perl 确实在向前发展,带来了许多有趣的项目(不像不知情的粉丝喜欢传播的东西)。即使是 Perl 6 implementation 现在也正在发布可以工作的 Perl 6。

我想做OO,推荐Moose。

【讨论】:

  • 看到这里对 Perl 的喜爱让我感到很温暖。我一看到“Python 还是 Perl?”我确信有一千个人会发布关于 Perl 是如何死亡的帖子。随着 Moose 和 Perl 6 等框架的快速发展,它远未消亡(而且我的公司到处都在使用它)
  • 小心 jjnguy - 你看到上次你这么说发生了什么。 ;)
  • @rjh 借调,但 Perl 6 进展不快 :)
  • 哈哈,确实...... Perl 5 也没有完全增加新功能:/
【解决方案2】:

老实说,我的“大部分”编程都是使用 Perl 和 PHP,而我最近决定用 Python 来完成我的最新项目,我必须承认用它来编程非常好。我对整个没有花括号的事情犹豫不决,因为这就是我一直在做的事情,但它真的很干净。不过,归根结底,您可以使用所有 3 个组件制作出色的 Web 应用程序,但如果您一心想放弃 PHP 尝试新的东西,我会推荐 Python 和 Django 框架。

【讨论】:

  • Django 被反复说太酷了。真的这么好,还是只是一个流行的框架?
  • 它受欢迎是有原因的。 :) 至于你的 PHP 对性能的关注,如果你做正确的事情,PHP 的性能会非常好:memcache 等。
  • @pestaa:好的通常会带来流行。很少有事情可以流行和坏。除非存在某种贸易垄断(如 Windows)。
  • @Paolo: 和启用缓存的 Perl/Python 可能会带来更好的性能。我想要一个坚实的基础。 @S。洛特:请不要引发激烈的战争。 :) 我可以说出 PHP 世界中流行的和坏的东西。 (例如 Zend Framework。甚至是 PHP 本身?)
  • @pestaa:我认为如果 Wikipedia 和 Facebook 可以让 PHP 为他们工作,你的表现应该没问题。不要因为一个可能不一定正确的感知想法而放弃整个语言。
【解决方案3】:

我会选择 Perl。不是每个人都同意我的观点,但它是一门非常适合系统管理工作的优秀语言,它会让您接触到更多函数式编程结构。它也是学习如何为给定任务使用最少代码量的一门很棒的语言。

对于你提到的使用场景,我认为 PHP 可能仍然是你最好的选择。然而,Python 确实有一些很棒的 Web 框架,所以如果你只是想尝试一种新的语言来开发 Web 应用程序,那么 Python 可能是你的选择。

【讨论】:

  • +1 我很高兴终于看到了一些珍珠岩。在 SO 上 Pyvangelism 似乎很重要,即使在未来使用 Perl 6,有些人 ahem 声称“Pearl”正在消亡......
  • 我屏住呼吸等待 Perl 6,但我担心它会永远走 Duke Nukem Forever..
  • 我们有一部制作了 20 年的《守望者》电影(但很烂),我们有一张制作了 13 年(-ish?)的 Guns 'N' Roses 专辑(很烂) ),还有什么这么疯狂的期望呢?
  • 考虑到 PHP 的性能...我会说不...我不会这样做...我真的想要光速。 :)
【解决方案4】:

我没有使用 Python 的经验。我强烈保证学习 Perl,不是因为消耗,而是因为在平台上有很多东西可以学习。 Perl 的关键概念是:按我的意思做 (DWIM) 和有不止一种方法可以做到 (TMTOWTDI)。这意味着,假设问题得到充分解决,通常不会有错误的方法来解决问题。

从学习 Perl 的基础语言开始,然后将自己扩展到学习关键的 Perl 模块,如 IO::File、DBI、HTML::Template、XML::LibXML 等。search.cpan.org 将是你的资源。 perlmonks.org 将成为您的向导。几乎所有有用的事情都可能会发布一个模块。

请记住,Perl 是一种动态且结构松散的语言。 Perl 不是强制执行严格的 OOP 标准的平台,但这是有充分理由的。您会发现该语言非常灵活。

Perl 在哪里使用?如前所述,系统管理员大量使用它。您仍然可以通过简单的 CGI 或 MVC 框架来制作出色的 Web 应用程序。

【讨论】:

  • 如果您没有使用 Python 的经验,为什么您对选择两者中的哪一个有意见?
  • IO::文件?我无法想象评价关键模块的标准。
  • 我的回答是教育。提问者将做出自己的决定。如果您感觉如此强烈,那么我建议您填写您的答案。
【解决方案5】:

我使用 Python 的次数不多,但我知道为什么我在使用 Perl 时不喜欢它。

  1. OO 支持感觉得到了加强。 perl 中的 OO 与我使用的其他语言(包括 PHP、Java 和 C#)中的 OO 支持非常不同
  2. TMTOWTDI(不止一种方法)。理论上的好主意,但在实践中却很糟糕,因为它降低了代码的可读性。
  3. Perl 使用了很多魔法符号。
  4. Perl 不支持命名函数参数,这意味着您需要深入了解@_ 数组以获取传递给函数的参数(或者更确切地说,作为 perl 的 sub 没有 function 关键字)。这意味着您会看到很多类似下面示例的内容(移动,因为 SO 不喜欢编号列表中的代码)

说了这么多,我会研究 Python。除非你想使用 C++ 或 C#/Java 等重量级的东西。

哦,在我忘记之前:我想为上面的 4 举一个例子,但是 SO 不喜欢将代码放在编号列表中:

sub mySub {
    #extremely common to see in Perl, as built-ins operators operate on the $_ scalar or @_ array implicitly
    my $arg1 = shift;
    my $arg2 = shift;
}

【讨论】:

  • “TMTOWTDI(有不止一种方法)。理论上的好主意”?真的吗?即使在理论上,这听起来也不是一个好主意。模棱两可总是一个问题。
  • 我相信如果语言结构有问题,你要么没有完全学会这门语言,要么是在误用它。这些项目中的大多数都是新手必须学会处理的问题。
  • 将哈希传递给 Perl 子例程并使用它来提供命名参数(以任何顺序)非常容易。子 get_dimensions { 我的 %params = @_;我的 $area = $params{'width'} * $params{'length'}; }
  • 其实就我个人而言,我已经迫不及待地希望 Perl6 将其他动态语言抛诸脑后。现在有很多事情可以用 Perl6 轻松完成,而在其他语言中几乎无法做到。它甚至还没有完成。
  • Perl OO 被添加。它简单、灵活,如果您想要更“纯粹”的 OO,请使用 Moose。 OO 并不是编程范式的全部。
【解决方案6】:

在只使用 Perl 的几年之后,我最近从 Perl 迈向 Python。此后不久,我发现我已经开始阅读各种 Python 代码,就像阅读任何其他易于阅读的文本一样——这是我在使用 Perl 时从未做过的事情。不得不深入研究第三方 Perl 代码对我来说一直是一场噩梦,所以这是一个非常非常好的惊喜!

对我来说,这意味着 Python 代码更容易维护,从长远来看,这使得 Python 比 Perl 更具吸引力。

【讨论】:

    【解决方案7】:

    Python 简洁而优雅,大量 C API 已被封装,这一事实为您提供了强大的钩子。我也喜欢“Zen of Python”。

    • 美胜于丑。
    • 显式优于隐式。
    • 简单胜于复杂。
    • 复杂胜于复杂。
    • 平面优于嵌套。
    • 稀疏优于密集。
    • 可读性很重要。
    • 特殊情况不足以打破规则。
    • 虽然实用胜过纯粹。
    • 错误绝不应该悄无声息地过去。
    • 除非明确静音。
    • 面对模棱两可,拒绝猜测的诱惑。
    • 应该有一种——最好只有一种——明显的方法 去做吧。
    • 虽然这种方式一开始可能并不明显,除非您是荷兰人。
    • 现在总比没有好。
    • 虽然从来没有比现在更好正确。
    • 如果实现难以解释,那就是个坏主意。
    • 如果实现易于解释,那可能是个好主意。
    • 命名空间是一个非常棒的想法——让我们做更多这样的事情!

    【讨论】:

    • 我真的很喜欢你的名单,虽然我不能完全理解为什么很多人都在这里。这些是被广泛接受或推荐的编程活动。
    【解决方案8】:

    作为一名 Perl 程序员,我通常会说 Perl。但是来自 PHP,我认为 Perl 太相似了,你实际上不会从中得到太多。 (不是因为没有太多要学的东西,而是你很可能在 Perl 中使用与 PHP 相同的风格进行编程。)

    我会建议一些完全不同的东西:Haskell(由 Joel 建议)、Lisp、Lua、JavaScript 或 C。其中任何一种都可以通过开辟新的看待世界的方式让你成为更好的程序员。

    但在此期间没有理由停止学习 PHP。

    为了更好地了解这些语言的阴暗面,我衷心推荐:What are five things you hate about your favorite language?

    【讨论】:

    • PHP 和 Perl 与 C 类似,并且共享一些语言结构,但只是在表面上。从 Perl 中学习的东西远比 PHP 多。我确信从 LISP 语言中可以学到很多东西,但不仅仅是因为它不像 C。
    • 是的。在我发帖后我意识到,在这种情况下打折 Perl 的原因是因为习惯,而不是内容。
    • 诚然,Perl 并不适合所有人。但我觉得很好。
    • Perl 与 PHP 非常相似,但它们也非常不同。我认为从 PHP 学习 Perl 有很多好处(反之亦然,就像我正在做的那样)。仅仅因为 Python “更加不同”并不意味着学习它会教你更多。但是 C 语言 +1 - 学习内存管理很好!
    • 请注意,我完全避开了 Python。我能想到的最好的事情是,我处理过的占用 CPU 的 Python 脚本看起来很干净,但并不是那么好。
    【解决方案9】:

    我建议阅读每个初学者教程,然后自己决定哪个更适合您。你会发现你可以做你需要做的事情:

    Python Tutorial (Python Classes)

    Perl Tutorial (Perl Classes) (找不到一个“官方”perl 教程,请随意推荐一个)


    根据我的经验,python 提供了更简洁、更直接的体验。

    我的 perl 问题:

    • 'use strict;', Taint, Warnings? - 理想情况下不需要这些。

    • 传递变量:@; vs. $,vs shift

    • 范围my、local、ours? (local 的定义似乎特别指出了与 perl 的一些混淆,“你可能真的想改用 my,因为 local 并不是大多数人认为的“local”。)

    总的来说,我的 perl 技能仍然可以找到我的内置功能的自我参考文档。在 python 中,我发现这不那么重要。 (我在两者上工作的时间大致相同,但我的一般编程经验随着时间的推移而增长。换句话说,我现在可能会成为一个更好的 perl 程序员)

    如果您是 unix 命令行专家,perl 对您来说可能更自然。或者,如果您主要将其用作命令行管理任务的替代或扩展,它可能适合您的需求。在我看来,perl 在命令行中的“绘图速度”比 python 快。

    【讨论】:

    • "使用严格;" - 它是一个标志,如果它丢失则意味着程序被重写:)。
    【解决方案10】:

    为什么你的名单上没有 Ruby?也许你应该试一试。

    【讨论】:

      【解决方案11】:

      “我想遵循 OOP 结构......”是 Python 的倡导者,或者,如果你是开放的,Ruby 更是如此。另一方面,就现有库而言,顺序可能是 Perl > Python >> Ruby。就你的职业而言,简历上的 Perl 不太可能让你脱颖而出,而 Python 和 Ruby 可能会引起招聘经理的注意。

      作为一名 PHP 程序员,您可能会认为这 3 种方法都有些“繁重”,无法创建 Web 页面。所有的 Web 框架都有很好的解决方案,但没有一个像 PHP 那样专注于呈现网页。

      我认为 Python 很可能是比 Perl 更好的选择。它有很多好的资源,一个庞大的社区(虽然可能没有 Perl 那么大),在简历上“突出”一点,并且有很好的声誉。

      【讨论】:

      • “就你的职业生涯而言……”这句话听起来极不可能。经理不会寻找“很酷的东西”,他们会寻找公司用来开发软件的语言。运行 Perl 的公司不会因为你了解 Ruby 而雇佣你。也许如果你知道 Ruby 和 Perl...
      • Perl 程序员现在很少见了。所以 Perl 实际上可能会帮助你。当然,除非您正在寻找 Python 工作。克里斯说得有道理。
      • @Chris Lutz:我倾向于不同意。我认为(优秀的)招聘经理正在寻找与社区互动的迹象,并且确实注意一个人是否正在使用被认为更“当前”的语言/框架/方法。 YMMV。
      【解决方案12】:

      如果这两个是你唯一的选择,我会选择 Python。

      否则你应该学习javascript。

      不,我的意思是真的学习它......

      【讨论】:

      • 你熟悉javascript吗?它不是服务器端语言。你说的是 Java 吗?
      • 为什么 javascript 不是服务器端语言?我很确定我不是唯一一个在服务器端使用它的人。
      • Javascript 肮脏的小秘密:隐藏在所有 DOM/HTML 内容之下的是一种非常好的语言。
      【解决方案13】:

      如果您不会使用这种语言进行 Web 开发,那么他们中的任何一个都可以。如果你是,你可能会发现在 perl 中进行 web 开发有点复杂,因为所有的框架都需要更多的语言知识。 你可以在这两个方面都做得很好,但我认为 perl 允许更快的开发。
      而且,perl 的正则表达式很棒!

      【讨论】:

        【解决方案14】:

        每一种动态语言都来自同一个家族。无论您使用哪种工具都无关紧要。

        PHP VS PYTHON OT PERL OR RUBY? Stop it

        正如许多 cmets 提到的那样,python 有时更干净,其花括号完全使用。你只需要练习。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-07-30
          • 2017-06-04
          • 1970-01-01
          • 1970-01-01
          • 2015-02-11
          • 2011-01-24
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多