我应该首先学习用于开源Web开发的Perl或PHP吗?

时间:2009-06-15 16:48:23

标签: php perl lamp

我一直在使用Microsoft堆栈,并希望在业余时间获得一些像LAMP这样的替代堆栈的经验。

LAMP中的P通常是“PHP”,但可以是Perl(或Python,但我正在考虑Perl或PHP以上的Python。)。我倾向于Perl,因为它看起来在其他应用程序中很有用,并且因为Perl似乎比PHP更“聪明”和“更好”。

Perl的优点:

  • 更好的声誉。 PHP因糟糕的设计决策和编写的大量不良程序而声名狼借。
  • 可用于非网络程序。
  • 更多人似乎喜欢Perl,但即便是PHP社区对PHP也不热衷。

PHP的优点:

  • 更多的网络服务器已经安装了PHP而不是Perl。
  • 因为解决了与网络有关的一些架构问题,所以很容易上手。
  • PHP是一种流行语言,用于当前互联网上的大多数网站。
  • 了解PHP似乎更有可能在我的工作中使用。

由于这个社区似乎更关注微软和Java,而这正是我开始的地方。我对你的意见很感兴趣。

14 个答案:

答案 0 :(得分:13)

Perl有一堆库来处理Web堆栈(包括ORM)。 CPAN是你的朋友。使用Perl的最大驱动因素之一是CPAN。

我建议您查看PerltidyMasonCatalystTemplate-Toolkit2MooseDBIPOE为一旦你学会了语言的基础知识,就可以开始搜索相关的关键词了。

PHP更“新手”友好,同样意义上说VB6是新手友好的。你可以编写代码,甚至可以编写好代码,但编写好的PHP代码要困难得多。

Asa Ayers:perldoc perlvar是你的朋友(另见perldoc perl)。

答案 1 :(得分:10)

PHP是一种非常受欢迎的语言,因为很多设计决策都哄骗他们在代码中制造计算机科学错误。 PHP允许用户轻松混合HTML和域逻辑,这显然是计算机科学中的一个禁忌。这既是PHP易于使用的原因,也是导致它被认为如此糟糕的原因。如果您是一名优秀的,有纪律的程序员,您可以使用PHP进行良好,干净的编程实践。

Perl正在迅速消失,在现代Web应用程序中并没有得到太多使用。有很多Perl纯粹主义者,但我知道太多人嘲笑Perl的语法和PHP一样多。

PHP是一种特定于doman的语言,而Perl则不是。 PHP包含许多您将习惯使用.NET环境的好功能,例如验证和清理输入以及通过ORM轻松使用数据库。 Perl本身并没有太多做这样的事情,因此使用Perl的框架或Web编程库几乎总是更容易,与其他常见的CGI语言(如Python和Python)一样。红宝石。出于这个原因,如果你想进入网络编程,如果你选择不用PHP开始,我可能会完全放弃Perl,而不是从其他两种语言开始。

答案 2 :(得分:7)

对于Web开发,我会说PHP很明显,因为它更好地与数据库集成,并且有点为Web设计。不要忘记,几乎所有的webhost都支持PHP,其他语言也是如此。

但是,如果选项存在,那么考虑到现在可用的所有框架,Python可能是更好的选择,但从主机角度来看,PHP很容易找到,除非您从自己的服务器托管。

答案 3 :(得分:7)

为什么不查看您感兴趣的开源项目并根据这些项目做出决定?我不认为反过来做得特别聪明。

答案 4 :(得分:6)

@Asa Ayers

Perl不使用魔术变量,程序员也这样做。 Perl只提供它们。

foreach (@x) {
    print $_, "\n";
}

foreach my $x (@x) {
    print $x, "\n";
}

并不难。 $ _和@_在Perl中非常非常基本,并且是可选的。 RTM或Larry Wall的书。

PHP是一个上帝可怕的混乱。 Perl的设计得到了优秀人才的支持。如果你把像Perl这样经过深思熟虑的语言的开发外包给那些花费一半时间来回答AMEX常见问题解答和花费一半时间编程的人,那么PHP就是你所获得的。

答案 5 :(得分:5)

我主动使用Perl和PHP。通常,我使用PHP进行Web开发,使用Perl进行重量级脚本编写任务。我还帮助维护一个使用Perl作为Web语言的遗留系统以及Mason。

在我开始使用Perl(使用5.x)之前,我至少使用了PHP几年。在使用这两种语言一段时间之后,我发现核心Perl语言的语法和可用性略微优于PHP。这通常是关于我怀疑是由于PHP实现的小问题。例如,PHP函数 func_get_args 要求将结果设置为变量。你必须这样做:

$args = func_get_args();
return $instance->objectMethod($args);

无法做到这一点:

return $instance->objectMethod(func_get_args());

显示的例子是一个非常小的刺激,但它是典型的出现的事情。另一个典型的是函数参数的顺序(参见字符串函数,它改变哪个参数首先出现而不是坚持一些人认为总是将字符串作为第一个参数的逻辑思想)。

另一方面,看看Perl和Mason的遗留系统,我不得不说我更喜欢阅读另一个程序员,用梅森将Perl与Perl相提并论。问题是在浏览器中加载页面与执行的代码之间的连接更快确定。这可能是由于Perl和Mason在这里使用的原因。我强烈怀疑它是。

关于Perl的另一点是,虽然CPAN是一个强大的东西,但是需要大量CPAN模块的应用程序的持续维护有时会花费比预期更多的时间。考虑到这一点,我尝试限制多余的CPAN模块使用。

我的建议是从PHP开始。虽然PHP可能会有轻微的烦恼,但如果仔细考虑使用它会非常强大。

答案 6 :(得分:4)

这可能会让Perl程序员感到不安,但我会学习PHP。根据经验,它的API对用户和新手更友好,并且您可以更快地获得可见结果。

一旦你进入PHP几个月,你可以试用Perl,它的大部分语义都会很熟悉,减去API和模块。 Perl有许多快捷方式,例如“$ _”,这可能需要一段时间来弄明白。

PHP API使用了C程序员熟悉的许多函数,并且您可以通过引用传递PHP 5中的一些核心OO功能(您将在Perl中学习OO编程,但是语法确实差别不大。)

另外一个:PHP纪录片非常好。它对几乎所有的功能都有评论和注释,并且在.NET扩散之前让MSDN感到羞耻。它仍然使Javadoc(标准库)感到羞耻。

我的免责声明 - 我以相反的方式学到了它 - Perl然后是PHP。 Perl是5.x版本,PHP 3.x到4.x.我现在已经用了大约5年没用过这两种语言了,但是当我做的时候写了this lot。此外,Perl 6被誉为未来的救世主(看起来它还没有发布!)。

答案 7 :(得分:3)

任何* nix或* BSD(包括当前的Mac OS)都默认安装了Perl - 你不能这样说PHP。当然任何托管服务器都有PHP,但是他们安装它(例如在选择dist安装类型时)。

Perl优势:

  1. 非常好的社区
  2. 稳定性,版本和操作系统兼容性
  3. CPAN + cpantesters
  4. 测试方向
  5. 良好的Unicode支持。
  6. 强大而快速的正则表达式
  7. Apache中的紧密集成(mod_perl)
  8. 编写错误的代码比其他语言更明显
  9. 使用语言本身和CPAN扩展语言的可能性。旧的Python风格的OO系统被认为是过时的 - Moose取而代之。 Devel :: Declare允许添加新关键字。 CPAN具有模块,即使是类型安全。源过滤器允许添加新语言。 Inline :: * family允许使用其他语言集成代码。
  10. 良好的可读性(请参阅 http://www.slideshare.net/osfameron/readable-perl-presentation/
  11. 与PHP比较:

    • 使用严格;使用警告;
    • Perl ::评论家,perltidy
    • Unicode已集成到语言
    • 'eq'和'=='而不是== / === / strval / intval

    我建议从CGI :: Application框架开始。它以3种语言存在:Perl,PHP和Python。

答案 8 :(得分:2)

为什么选择Perl或PHP?为什么不使用Python或Ruby,它们都具有优秀的Web框架,并且比Perl更容易学习,但设计比PHP更好。

答案 9 :(得分:2)

您应该选择一个您认为应该在两种语言中都可以使用的小项目,并尝试在两者中实现它,以比较您对每种语言的看法。

这就是我做出选择的方式,我并没有后悔。

答案 10 :(得分:1)

这是一个个人决定,你为PHP所说的加分将推动我超越Perl的PHP。但那就是我。有些人非常喜欢PHP,但大多数时候我认为你是对的,他们对此不太热心。但这并不意味着没有好的PHP网站。

答案 11 :(得分:0)

如果您是开源的,那么选择您想要的东西 开源的自由之一就是你可以以任何你喜欢的方式做到这一点。

哦,我会选择Ruby(On Rails)

答案 12 :(得分:0)

我首先说的是PHP,因为它的传播范围更广,你会发现更多的帮助,还有更多的文档。部署更容易,因为99.99%的托管公司提供PHP支持。

然后,就像Itay Moav说的那样,我推荐Ruby on Rails ......你将获得真正的替代/开源经验^^

答案 13 :(得分:-1)

如果您想进入开源,为什么不继续使用Microsoft堆栈?

试试这里:

  

http://www.codeplex.com

正如Frakkle的评论中指出的那样,您甚至可以在继续使用Microsoft堆栈时尝试其他“开源”语言。


的Perl:

  

ActivePerl


的Python:

  

IronPython


编辑:

由于您更改了问题,我将添加您还可以使用LAMC#stack:

  

The Mono Project