-1

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

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

Perl 的优点:

  • 更好的声誉。PHP 因糟糕的设计决策和编写了许多糟糕的程序而臭名昭著。
  • 可用于非网络程序。
  • 似乎更多的人喜欢 Perl,但即使是 PHP 社区也对 PHP 不冷不热。

PHP的优点:

  • 安装 PHP 的网络服务器比安装 Perl 的要多。
  • 由于为您解决了一些与 Web 相关的架构问题,因此更容易上手。
  • PHP 是一种流行的语言,目前用于 Internet 上的大多数网站。
  • 了解 PHP 似乎更有可能在我的工作中发挥作用。

由于这个社区似乎更专注于 Microsoft 和 Java,这就是我开始的地方。我对你的意见很感兴趣。

4

14 回答 14

14

Perl 有很多处理 Web 堆栈的库(包括 ORM)。CPAN 是您的朋友。使用 Perl 的最大驱动力之一是 CPAN。

一旦您学习了语言的基础知识,我建议您将PerltidyMasonCatalystTemplate-Toolkit2MooseDBIPOE作为相关关键字来开始搜索。

PHP 对“新手”更友好,就像 VB6 对新手友好一样。您可以编写代码,甚至可以编写好的代码,但是编写好的 PHP 代码要困难得多。

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

于 2009-06-15T17:29:50.170 回答
11

PHP 是一种非常流行的语言,但声名狼藉,因为许多设计决策都在诱使未受过训练的人在其代码中犯下计算机科学错误。PHP 允许用户轻松混合 HTML 和域逻辑,这显然是计算机科学中的一大禁忌。这既是使 PHP 易于使用的原因,也是导致它被认为如此糟糕的原因。如果您是一名优秀、纪律严明的程序员,那么您可以使用 PHP 应用良好、干净的编程实践。

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

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

于 2009-06-15T16:59:23.797 回答
7

对于 Web 开发,我会明确地说 PHP,因为它可以更好地与数据库集成,并且是为 Web 设计的。不要忘记几乎所有的虚拟主机都支持 PHP,其他语言也不一样。

但是,如果有这个选项,那么 Python 可能是一个更好的选择,因为它提供了所有现在可用的框架,但从托管的角度来看,PHP 很容易找到,除非您从自己的服务器进行托管。

于 2009-06-15T16:52:41.020 回答
7

你为什么不看看你感兴趣的开源项目并据此做出决定呢?我不认为反过来做是特别聪明的。

于 2009-06-15T16:53:07.930 回答
7

@阿萨艾尔斯

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

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

或者

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

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

PHP 真是一团糟。Perl 是由才华横溢的人设计和支持的。如果您将像 Perl 这样经过深思熟虑的语言的开发外包给那些花费一半时间回答 AMEX 常见问题解答和一半时间进行编程的人,那么您会得到 PHP。

于 2009-06-15T18:16:45.423 回答
5

我积极使用 Perl 和 PHP。通常,我将 PHP 用于 Web 开发,将 Perl 用于重量级脚本任务。我还帮助维护一个使用 Perl 和 Mason 作为 Web 语言的遗留系统。

在我开始使用 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 的遗留系统,我不得不说我更喜欢阅读其他程序员用 Mason 讨论 PHP 而不是 Perl。问题是在浏览器中加载页面和执行的代码之间的联系可以更快地确定。这可能是因为这里使用了 Perl 和 Mason。我强烈怀疑它是。

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

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

于 2009-06-15T18:11:12.903 回答
5

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

一旦您使用了几个月的 PHP,您就可以尝试 Perl,它的大部分语义都会很熟悉,除了 API 和模块。Perl 有很多快捷方式,例如“$_”,可能需要一段时间才能弄清楚。

PHP API 使用了很多 C 程序员熟悉的函数,并且您可以掌握通过引用传递以及 PHP 5 中的一些核心 OO 功能(不过,您也将学习 Perl 中的 OO 编程,语法真的是没什么不同)。

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

我的免责声明 - 我是以相反的方式学习的 - Perl 然后是 PHP。Perl 是 5.x 版本和 PHP 3.x 到 4.x。虽然我已经有 5 年没用过这两种语言了,但是当我用的时候写 很多。Perl 6 在当时也被认为是未来的救星(看起来它还没有发布!)。

于 2009-06-15T17:04:20.177 回答
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::* 系列允许集成其他语言的代码。
  10. 良好的可读性(见http://www.slideshare.net/osfameron/readable-perl-presentation/

与 PHP 比较:

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

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

于 2009-06-15T22:03:50.247 回答
2

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

于 2009-06-15T17:27:10.373 回答
2

你应该选择一个你认为应该在两种语言中都可行的小项目,并尝试在两种语言中实现它,以比较你对每种语言的感觉。

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

于 2009-06-15T19:14:33.187 回答
1

这是一个个人决定,你所说的 PHP 的优点将推动我转向 PHP 而不是 Perl。但这只是我。有些人真的很喜欢 PHP,但大多数情况下我认为你是对的,他们对它不冷不热。但这并不意味着没有好的 PHP 站点。

于 2009-06-15T16:54:03.283 回答
0

如果你追求的是开源,那么选择你想要的。
开源的自由之一是您可以按照自己喜欢的方式进行操作。

哦,我会选择 Ruby (On Rails)

于 2009-06-15T17:00:08.010 回答
0

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

再说一次,就像 Itay Moav 说的,我推荐 Ruby on Rails……你会得到真正的替代/开源体验 ^^

于 2009-06-15T17:18:39.643 回答
-1

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

在这里试试:

http://www.codeplex.com

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


珀尔:

ActivePerl


Python:

铁蟒


编辑:

既然你改变了你的问题,我会补充说你也可以使用 LAMC# 堆栈:

单声道项目

于 2009-06-15T16:53:04.483 回答