PHP之后的下一步:Perl还是Python?

时间:2009-03-09 19:45:26

标签: python perl

似乎有人曾多次询问,但事实上它并没有。我做了我的研究,现在我渴望听到其他人的意见

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

专业人士可能会同意PHP不是一种鼓励良好开发习惯的编程语言。 (我认为这不是该工具的任务,但这并不重要。)此外,其表现也存在争议,并且与竞争对手相比,往往被认为是穷人。

42nd podcast at Stack Overflow blog来自波兰的一位开发人员询问他应该学习哪种语言来提高自己的技能。杰夫和乔尔建议每个人都会帮助,尽管有些特定的东西在某些方面更好。 尽管他们提出了一些很好的观点,但对我来说并没有那么大的帮助。

从初学者的角度来看,没有可能看不到(S. Lott建议的更正) Perl& amp;蟒即可。我希望你强调他们的优点和缺点,并列举一些独特的服务。

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

首先,我想关注 OOP结构并从根本上使用它。我部分地计划使用MySQL和XML的多用户 CMS ,因此实现越多越好。由于其预见的性质,将强烈使用字符串操作

如果差异不大,那么比较应该首先提及语法和其他微不足道的细节。

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


结论

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

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

在我的特殊CMS的开发过程中,我将要求更多关于编程疑惑的问题 - 因为开发人员现在可以相互依赖!谢谢。

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

另外,我被告知使用Ruby。到目前为止,我与之沟通的大多数开发人员对Ruby都有不好的看法。我会亲自看到,但那是我优先考虑的最后一个元素。

14 个答案:

答案 0 :(得分:25)

Perl是一种非常好的语言,CPAN拥有大量成熟的模块,可以为您节省大量时间。此外,Perl现在正在向前推进很多有趣的项目(不像那些不知情的粉丝喜欢传播)。即使是Perl 6 implementation,现在也可以发布Perl 6。

我想做OO,我会推荐Moose

答案 1 :(得分:11)

老实说,我编程的“大多数”都是Perl和PHP,我最近决定用Python做我最新的项目,我必须承认编程非常好。我对整个没有花括号的东西犹豫不决,因为那是我一直以来所做的,但它真的非常干净。但是,在一天结束时,您可以使用所有3个来创建良好的Web应用程序,但是如果您在放弃PHP以尝试新的东西时已经死定,我会推荐Python和Django框架。

答案 2 :(得分:10)

我会选择Perl。不是每个人都会在这里同意我,但它是一种非常适合系统管理工作的优秀语言,它会让你接触到更多功能性的编程结构。它也是学习如何为给定任务使用最少量代码的好语言。

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

答案 3 :(得分:7)

我没有使用Python的经验。我强烈要求学习Perl,不是出于磨损,而是因为在平台上有TON需要学习。 Perl的关键概念是:做我的意思(DWIM)并且有多种方法可以做到(TMTOWTDI)。这意味着,假如问题得到充分解决,通常没有错误的方法来解决问题。

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

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

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

答案 4 :(得分:7)

我没有太多使用过Python,但是当我使用它时,我可以告诉我为什么没有喜欢Perl。

  1. OO支持感觉很强。 perl中的OO与我使用的其他语言(包括PHP,Java和C#等内容)中的OO支持非常不同。
  2. TMTOWTDI(有多种方法可以做到这一点)。理论上的好主意,实践中的糟糕想法,因为它降低了代码的可读性。
  3. Perl使用了很多魔术符号。
  4. Perl不支持命名函数参数,这意味着您需要深入了解@_数组以获取传递给函数的参数(或者更确切地说,一个sub作为perl没有函数关键字)。这意味着你会看到很多像下面的例子(移动'因为SO不喜欢编号列表中的代码)
  5. 说了这么多,我会看看Python。除非你想使用比C ++或C#/ Java更重的东西。

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

    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;
    }
    

答案 5 :(得分:7)

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

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

答案 6 :(得分:5)

Python干净而优雅,并且LOTS的C API已被包装,这为您提供了强大的功能。我也喜欢“Zen of Python”。

  • 美丽胜过丑陋。
  • 明确胜于隐性。
  • 简单比复杂更好。
  • 复杂比复杂更好。
  • Flat比嵌套好。
  • 稀疏比密集更好。
  • 可读性很重要。
  • 特殊情况不足以打破规则。
  • 虽然实用性胜过纯洁。
  • 错误永远不会无声地传递。
  • 除非明确默许。
  • 面对歧义,拒绝猜测的诱惑。
  • 应该有一个 - 最好只有一个 - 明显的方式 做吧。
  • 虽然这种方式起初可能并不明显,除非你是荷兰人。
  • 现在总比没有好。
  • 虽然现在永远不会比正确更好。
  • 如果实施难以解释,那就不错了。
  • 如果实施很容易解释,那可能是个好主意。
  • 命名空间是一个很好的主意 - 让我们做更多的事情!

答案 7 :(得分:3)

作为Perl程序员,我通常会说Perl。但是来自PHP,我认为Perl太相似了,你实际上并没有从中获得那么多。 (不是因为没有太多需要学习的东西,但是您可能使用与在PHP中编程相同的样式在Perl中编程。)

我建议一些完全不同的东西:Haskell(由Joel建议),Lisp,Lua,JavaScript或C.其中任何一个都会通过开辟新的世界观来让你成为更好的程序员。

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

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

答案 8 :(得分:3)

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

Python Tutorial Python Classes

Perl Tutorial Perl Classes) (无法找到一个'官方'perl教程,随意建议一个)


根据我的经验,python提供了更清晰,更直接的体验。

我对perl的问题:

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

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

  • 确定范围mylocalours? (当地的定义似乎特别指出了与perl的一些混淆,“你真的可能想要使用我的代替,因为本地并不是大多数人认为的”本地“。”。)

总的来说,通过我的perl技能,我仍然可以找到内置功能的自引用文档。在python中我发现这不那么。 (我的工作时间大致相同,但我的一般编程经历随着时间的推移而增长。换句话说,我现在可能是一个更好的perl程序员了)

如果你是unix命令行大师,perl可能会更自然地给你。或者,如果您主要使用它作为命令行管理任务的替换或扩展,它可能适合您的需求。在我看来,perl在命令行上的“绘制速度比python快”。

答案 9 :(得分:2)

为什么列表中没有Ruby?也许你应该试一试。

答案 10 :(得分:2)

“我想关注OOP结构...”支持Python,或者如果你是开放的话,更是如此,Ruby。另一方面,就现有库而言,订单可能是Perl> Python>>红宝石。就你的职业而言,Perl在你的简历上不太可能让你脱颖而出,而Python和Ruby可能会引起招聘经理的注意。

作为一名PHP程序员,你可能会看到所有这三者都有点“繁琐”来获取网页。所有这些都有很好的Web框架解决方案,但没有一个像PHP那样专注于渲染Web页面。

我认为Python很可能是比Perl更好的选择。它拥有许多优秀的资源,一个庞大的社区(尽管可能没有Perl那么大),在简历上“脱颖而出”,并且拥有良好的声誉。

答案 11 :(得分:1)

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

否则你应该学习javascript。

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

答案 12 :(得分:1)

如果您不使用这种语言进行Web开发,则其中任何一种都可以。如果您是,您可能会发现在perl中进行Web开发有点复杂,因为所有框架都需要更多的语言知识。 你可以在两者中做好事,但我认为perl允许更快速的开发。
另外,perl的正则表达式摇滚!

答案 13 :(得分:0)

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

PHP VS PYTHON OT PERL OR RUBY? Stop it

正如许多评论所提到的那样,python在某些时候更清晰,其大括号是完全使用的。你只需要练习。