它似乎已被多次询问,但实际上它没有.我做了我的研究,现在我渴望听到别人的意见.
我有PHP 5的经验,包括功能和面向对象的编程方法.我创建了一些功能简约的网站.
专业人士可能会同意PHP不是一种鼓励良好开发习惯的编程语言.(我认为这不是该工具的任务,但这并不重要.)此外,它的表现也存在争议,并且与竞争对手相比通常被认为是差的.
在Stack Overflow博客的第42期播客中,来自波兰的开发人员询问他应该学习哪种语言以提高他的技能.Jeff和Joel建议他们每个人都会有所帮助,尽管有些特定的东西在某些方面更好.尽管他们提出了一些很好的观点,但对我来说并没有那么大的帮助.
从初学者的角度来看,没有人可能看不到(由S. Lott建议的更正)Perl和Python之间的许多差异.我希望你强调他们的优点和缺点,并列举一些独特的服务.
当然,这不公平,因为我也可以检查它们.所以这是我的愿望清单和要求,以帮助你帮助我.
首先,我想遵循OOP结构并从根本上使用它.我部分地计划使用MySQL和XML 的多用户CMS,因此实现越多越好.由于其预见的性质,将强烈使用字符串操作.
如果没有很大的差异,比较应该首先提到语法和其他无关紧要的细节.
所以,这是我的问题:我应该先尝试哪一个- Perl || 蟒蛇?
Perl和Python都有自己的粉丝,这很棒.我想说我很感激所有参与 - 没有任何火焰战争的痕迹.
我接受了最有价值的答案,尽管下面有许多很棒的迷你文章.正如我经常提到的那样,我将首先使用Python.然后我会稍后再尝试Perl.让我看看哪一个更符合我的想法.
在我的特殊CMS的开发过程中,我将要求更多关于编程疑惑的问题 - 因为开发人员现在可以相互依赖!谢谢.
编辑:有些人建议选择Ruby或Java.Java实际上让我很失望.也许它有很棒的功能,也许它没有.我不喜欢使用它.
另外,我被告知要使用Ruby.到目前为止,我与之沟通的大多数开发人员对Ruby都有不好的看法.我会亲自看到,但那是我优先考虑的最后一个元素.
Perl是一种非常好的语言,CPAN拥有大量成熟的模块,可以为您节省大量时间.此外,Perl现在正在向前推进很多有趣的项目(不像那些不知情的粉丝喜欢传播).即使是Perl 6实现,现在也可以发布Perl 6.
我想做OO,我会推荐Moose.
老实说,我的编程的"大部分"都是在Perl和PHP中,我最近决定用Python做我最新的项目,我必须承认编程非常好.我对整个没有花括号的东西犹豫不决,因为那是我一直以来所做的,但它真的非常干净.但是,在一天结束时,您可以使用所有3个来创建良好的Web应用程序,但是如果您在放弃PHP以尝试新的东西时已经死定,我会推荐Python和Django框架.
我会选择Perl.不是每个人都会在这里同意我,但它是一种非常适合系统管理工作的优秀语言,它会让你接触到更多功能性的编程结构.它是学习如何为给定任务使用最少量代码的好语言.
对于你提到的使用场景,我认为PHP仍然是你最好的选择.但是Python确实有一些很棒的Web框架,所以如果你只是想尝试一种新的语言来开发Web应用程序,那么Python可能就是你的选择.
我没有使用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应用程序.
我没有太多使用Python,但我可以告诉我为何在使用它时不喜欢Perl.
OO的支持感觉很强.perl中的OO与我使用的其他语言(包括PHP,Java和C#等内容)中的OO支持非常不同
TMTOWTDI(有多种方法可以做到).理论上的好主意,实践中的糟糕想法,因为它降低了代码的可读性.
Perl使用了很多魔术符号.
Perl不支持命名函数参数,这意味着您需要深入了解@_数组以获取传递给函数的参数(或者更确切地说,一个sub作为perl没有函数关键字).这意味着你会看到很多东西,如下面的例子(移动'因为SO不喜欢编号列表中的代码)
说了这么多,我会看看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; }
经过几年Perl之后,我最近从Perl迈出了一步到Python.此后不久,我发现我已经开始阅读所有类型的Python代码,就像任何其他易于阅读的文本一样 - 这是我从未用Perl做过的事情.不得不深入研究第三方Perl代码对我来说一直是个噩梦,所以这是一个非常非常好的惊喜!
对我来说,这意味着Python代码更容易维护,从长远来看,这使得Python比Perl更具吸引力.
Python干净而优雅,并且已经包装了许多C API,这为您提供了强大的功能.我也喜欢" 禅宗的Python ".
美丽胜过丑陋.
显式优于隐式.
简单比复杂更好.
复杂比复杂更好.
Flat优于嵌套.
稀疏优于密集.
可读性很重要.
特殊情况不足以打破规则.
虽然实用性胜过纯洁.
错误不应该默默地传递.
除非明确沉默.
面对模棱两可,拒绝猜测的诱惑.
应该有一个 - 最好只有一个 - 明显的方法来做到这一点.
虽然这种方式起初可能并不明显,除非你是荷兰人.
现在比永远好.
虽然从未往往比好正确的现在.
如果实施很难解释,这是一个坏主意.
如果实现很容易解释,那可能是个好主意.
命名空间是一个很棒的主意 - 让我们做更多的事情吧!