这两天没怎么看信,错过了各位的讨论。
我觉得我们在讨论的问题集中在怎么把Perl用来作为一个简单易用的web的基础,能够像php那样拿起来就用。感觉这样看不外乎POST/GET,加CRUD的逻辑。
我一直固执地认为语言是否适当是和怎么"用"密切相关的,用不好的话再好的语言也白搭。
当一个团队选择一种语言来实现WEB端的时候,如果选择的理由不是出于对这门的语言的掌握和把控能力,那么这种理由显然有些站不住脚。
比如说PHP简单,团队的成员能很快上手,但是缺少全局的控制,最后的结果可能会是非常混乱和难以维护的代码。
Facebook的web是php的,就一套程序,一次升级部署n台服务器(n是3位数或者更多)。
LJ/MIXI和其它一些的web是Perl的。国内很多都是Java的(我现在工作中维护的也是)。
Nginx我也在用,它用到epoll这样的新内核特性,流水线处理方式,并发能力相对Apache的提高是成倍的。
应该很多人看过《Perl最佳实践》,推荐没读过朋友也看看 :)
在 2009-12-29,上午11:22, alexe.cn@gmail.com 写道:
反�:我�有�得�人搞的�西都不可靠啊。我�的�http服�器和框架�一用perl�的目的:��只是想毒害下一代程序�而已。(�人�得那�的��起web服�器端程序�很��,比如serialize到�就不需要了,因�只要web服�器�在�行,你就可以保存一��象�所有的http�求使用。�然,��也有不好的地方。比如:如何���入一�模�,多�站�同��行�如何�保多站��不�突...)CPAN��是好,支�Perl到�在的�大�力�疑就是它。web��到�在服�器端的技�含量已�很低了,PHP能�出就�明了�一�。用Perl�做那些增�查改,�有Perl提供的方案�是太��了。太�于追求模�化的同���失掉��性的。就��。2009/12/29 flw <su2admin@gmail.com>
性能我没有测试过,即使有性能的差别,这也是实现时造成的问题,
并不是模块化的坏处。(当然 CPAN 上的模块良莠不齐,在所难免)
至于警告么,我觉得需要就事论事,有些警告是程序员的问题,有些警告是模块自身的问题。
(Perl 序列化可以用 http://search.cpan.org/~ams/Storable-2.21/Storable.pm)
我不懂 web 开发,可以请擅长的朋友们详细阐述一下 PHP 和 Perl 在 web 开发时的性能问题,
以及这种性能差距假如存在的话,是否有可能在 Perl 内部解决掉。
我的想法是,Perl 应该不会比 PHP 慢,如果真的慢,那么应该是 mod_perl 的实现问题,
只是单纯地搞一套 Perl 库出来应该无济于事。
PHP 从语言的角度讲,实在算不得上是一种设计优美的语言(平坦的名字空间,含糊的冗余的内置函数)。
没有 CPAN 是它的劣势,不是它的优势,PHP 社群这两年也在搞类似于 CPAN 的东西,足以说明这一点。
事实上就我接触过的语言来说,大多都缺乏一个像 CPAN 这样运作良好的模块中心。
近年来 PHP Erlang Haskell 等也都在搭建类似于自己的 CPAN 这样的东西。
小林和 alex 提到的感想,是许多老一辈程序员(尤其是另一些 C 程序员)经常会有的想法,
他们往往觉得别人搞的东西都不可靠,只有自己从零开始搞出来的东西才可靠,
(于是 PHP 诞生了,nginx 诞生了)但是对于大多数新入门的朋友们来说,
能够有更多的模块来复用,在这些基础上快速地构建自己的应用,实在是一件乐事。
只是,过了新入门这个阶段之后,还是应该深入了解一些东西,这样就可以在使用第三方模块的时候,
又不为它们所制约,逢山开路遇水搭桥,有 BUG 就改 BUG 有不足就重写之。
我在使用 Net::SSH::Perl 的过程中尤其感受到这一点。2009/12/29 Lin <i@lxl.cn>除了写法不同,性能也会有不少差异。我们经常能看到很多 PHP 脚本拿 serialize 和 unserialize 来做数据库缓存以减少 SQL 查询,而在 Perl 里面要达到这个效果,你就不得不搬出一堆模组,并且可能有这样或那样的警告,非常不方便。2009/12/28 flw <su2admin@gmail.com>
我觉得这个只是写法上的不同吧。
Data::Dumper 本身也是 Perl 标准发行版的一部分,
基本上不需要你另行安装的。
更何况 Module 本身也是软件工程发展的方向,
如果什么都要集成,那就会像 PHP 一样,有很多重复的功能。
Perl 就已经够不正交的了。
2009/12/25 Lin <i@lxl.cn>比如 Perl 大家经常会用:use Data::Dumper;print Dumper( ... );而在 PHP 里面,可以有:var_dumnp( ... );print_r( ... );serialize( ... );等等,这是很明显的区别。
没有评论:
发表评论