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

Next step after PHP: Perl or Python?

它似乎已经被问过很多次了,但事实上没有。我做了我的研究,现在我渴望听到别人的意见。

我在php 5方面有经验,包括函数和面向对象编程方法。我创建了一些功能极简网站。

专业人士可能会同意,PHP不是一种鼓励良好开发习惯的编程语言。(我认为这不是这个工具的任务,但这并不重要。)此外,它的性能也有争议,而且经常被认为比竞争对手差。

在StackOverflow博客的第42个播客中,一位来自波兰的开发者问他应该学什么语言来提高自己的技能。杰夫和乔尔建议他们中的每一个都会有所帮助,尽管在某些方面有一些具体的更好。尽管他们提出了一些很好的观点,但对我没什么帮助。

从初学者的角度来看,there are notone may not see(correction suggested by s.lott)many differences between perl&;python.我想让你强调一下他们的优缺点,并列举一些独特的服务。

当然,这是不公平的,因为我也可以检查他们两个。这是我的愿望和要求,以帮助你帮助我。

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

如果没有太大的差异,比较可能会提到语法和其他一开始并不重要的微小细节。

所以,我的问题是:我应该首先尝试哪一个——perl python?

结论

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

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

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

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

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


Perl是一种非常好的语言,CPAN有大量成熟的模块,可以节省大量时间。此外,Perl现在真的有很多有趣的项目在向前发展(不像那些没有经验的粉丝们喜欢散布的项目)。即使是一个Perl6实现现在也在发布可工作的Perl6。

如果你想,我推荐驼鹿。


老实说,我的大部分编程都是用Perl和PHP编写的,我最近决定用Python编写我的最新项目,我必须承认用它编程非常好。我一直都在做不带花括号的事情,所以我很犹豫,但它确实很干净。不过,到了一天结束的时候,你可以用这三个软件来制作好的Web应用程序,但是如果你已经下定决心要放弃PHP去尝试一些新的东西,我会推荐python和django框架。


我会和珀尔一起去。这里并不是每个人都同意我的观点,但这是一种非常适合系统管理工作的语言,它将使您了解一些更实用的编程结构。对于学习如何为给定的任务使用最少数量的代码来说,这也是一种很好的语言。

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


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

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


我对python没有太多的了解,但我可以解释为什么我在使用perl时不喜欢它。

  • OO支撑感很强。在Perl中的OO与我所使用的其他语言中的OO支持非常不同(包括PHP、Java、C等)。
  • tmtowtdi(有多种方法可以做到这一点)。理论上是好主意,实践上是坏主意,因为它降低了代码的可读性。
  • Perl使用了很多魔法符号。
  • Perl不支持命名函数参数,这意味着您需要深入挖掘@数组以获得传递给函数的参数(或者更确切地说,作为Perl的Sub没有函数关键字)。这意味着您将看到许多类似下面的示例的内容(移动是因为不喜欢编号列表中的代码)
  • 说了这么多之后,我会研究一下python。除非你想用一些更重的东西,比如C++或者C/j/java。

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

    1
    2
    3
    4
    5
    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;
    }


    我对Python没有经验。我强烈保证要学习Perl,而不是因为消耗,而是因为平台中有很多东西需要学习。Perl的关键概念是:按我的意思(dwim)做,有不止一种方法可以做到(tmtowtdi)。这意味着,假设如果问题得到充分解决,就没有错误的方法来处理问题。

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

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

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


    python干净优雅,而且很多C API都被包装好了,这给了您强大的钩子。我也喜欢"Python禅"。

    • 美胜于丑。
    • 显式优于隐式。
    • 简单胜于复杂。
    • 复杂总比复杂好。
    • 平的比嵌套的好。
    • 稀疏胜于稠密。
    • 可读性计数。
    • 特殊情况不足以打破规则。
    • 尽管实用性胜过纯洁性。
    • 错误永远不会悄悄地过去。
    • 除非明确沉默。
    • 面对歧义,拒绝猜测的诱惑。
    • 应该有一个——最好只有一个——明显的方法去做吧。
    • 不过,如果不是荷兰语的话,这种方式一开始可能并不明显。
    • 现在总比没有好。
    • 虽然从来没有比现在更好。
    • 如果实现很难解释,那是个坏主意。
    • 如果实现很容易解释,这可能是一个好主意。
    • 名称空间是一个非常好的主意——让我们做更多的事情吧!


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

    python教程(python类)

    Perl教程(Perl类)(找不到单一的"官方"Perl教程,请随意推荐一个)

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

    我对Perl的问题:

    • "use strict;",污点,警告?-理想情况下不需要这些。

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

    • 调查我的,本地的,我们的?(本地定义似乎特别指出了一些与Perl的混淆,"你可能真的想用我的来代替,因为本地并不是大多数人所认为的"本地"。

    一般来说,使用Perl技巧,我仍然可以找到内置特性的自引用文档。在那里,就像在python中一样,我发现这个更少。(我在这两方面的工作时间大致相同,但我的一般编程经验随着时间的推移而增长。换句话说,我现在可能是一个更好的Perl程序员)

    不过,如果您是一个UNIX命令行专家,Perl对您来说可能更自然。或者,如果您主要将它用作命令行管理任务的替换或扩展,它可能很适合您的需要。在我看来,Perl在命令行的绘制速度比Python快。


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

    我建议一些完全不同的东西:haskell(由joel建议)、lisp、lua、javascript或c。其中任何一个都可以通过开辟新的看待世界的方式让你成为一个更好的程序员。

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

    为了更好地了解这些语言的阴暗面,我衷心地推荐:你对你最喜欢的语言最讨厌的五件事是什么?


    "我想遵循OOP结构…"是Python的拥护者,或者,如果您是开放的,更重要的是Ruby。另一方面,就现有库而言,顺序可能是perl>python>>ruby。在你的职业生涯中,简历上的Perl不太可能让你脱颖而出,而python和ruby可能会引起招聘经理的注意。

    作为一个PHP程序员,您可能会认为这三个方面都有点"繁重",从而使Web页面向上。所有的Web框架都有很好的解决方案,但是没有一个能像PHP那样专注于呈现网页。

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


    你的名单上为什么没有红宝石?也许你应该试试。


    如果您不使用这种语言进行Web开发,那么它们中的任何一个都可以。如果是这样,您可能会发现用Perl进行Web开发有点复杂,因为所有的框架都需要更多的语言知识。您可以在这两个方面都做得很好,但我的观点是Perl允许更快速的开发。
    另外,Perl的Regexes Rock!


    如果这2个是您唯一的选择,我将选择python。

    否则,您应该学习javascript。

    不,我是说真的要学…


    每一种动态语言都来自同一个家族。不管你使用哪种工具,不管你怎么做。

    PHP与Python、OT、Perl还是Ruby?停止它

    正如许多评论所提到的,python在某些时候是干净的,其花括号使用full-to。你只需要练习。