shhg进,想和你心平气和的讨论一些关于perl的问题。

shhg进,想和你心平气和的讨论一些关于perl的问题。

TO SHHGS:
刚刚看到你上线,你还在关注perl版块啊,想和你讨论一些问题,为了引起你的注意,重新开了一帖。首先,为了让讨论能够进行下去,请在发言中不要使用过激的措辞,如果贴子被flw删了或者封了 ,那也就没法讨论了,其实你和他都不能算不讲道理的人,呵呵。

基本同意你的观点

我认真的看过以下几篇帖子:
  • 致Python、Perl板块网友:http://topic.csdn.net/t/20051225/15/4480177.html
  • 我为什么讨厌Perl:http://topic.csdn.net/t/20060108/04/4503932.html
  • Perl是一种邪教:http://topic.csdn.net/t/20051223/14/4477508.html

你总结的有些观点(不限于perl)还是不错的,以下是我感受最深的:
  • 缺乏一致性、普适性的缺失。
  • 用python编程序思路到、代码出
  • Perl也可以,而且完全应该做得简单一些。


我使用perl编程序更像是在windows下编程序,要记忆的特例比较多,很多语法规则不通用、不能推广。而使用python编程序更像是在unix下编程序,比如说:在unix中本地文件和网路文件的路径形式是一致的,而在windows里面文件至少有如下几种形式

  • 本地目录和正规文件 c:\windows\notepade.exe
  • 网络共享文件 \\share\movie\a.rm
  • 设备文件 \\.\A (相当于linux中的/dev/fd0)  \\.\C (相当于linux中的/dev/hda1)  \\.\D (相当于linux中的/dev/hda2)

而我们在unix中只需要记住一种文件形式就可以了。

在perl中有着和上面的例子相同的问题,perl内置有数组、hash表两种高级数据类型,每一个变量在使用的时候都要加一些古怪的前缀,以下是我的总结:

[Copy to clipboard] [ - ]
CODE:
# 定义标量
$sclar = 123;

# 定义数组
@array = (1, 2, 3);

# 定义hash表
%hash = (1=>"A", 2=>"B", 3=>"C");

# 定义数组的引用
$aref = [1, 2, 3];

# 定义hash表的引用
$href = {1=>"A", 2=>"B", 3=>"C"};

# 直接访问数组
$array[$sclar]

# 直接访问hash表
$h{$s}

# 通过引用访问数组
@{$aref}

# 通过引用访问hash表
%{$href}

而python中有数组、hash表、链表三种高级数据类型,但是你在使用的时候不需要加上任何前缀,perl语言变量的前缀可能有些特殊的用法,但总体来说这么做是得不偿失的。

关于你与perler们的争吵
我把你和perler们争吵的整个来龙去脉都了解了一遍,以下是我的看法,不知你觉得是否公平:
  • 起初,你在perl版块中批评perl这不好、那不好,遭到perl fans理所当然的反击。
  • 后来,由于你一个人孤军奋战,你使用的措辞越来越严厉,有的帖子就被版主删掉了。
  • 这就造成了恶性循环,你把perl称之为邪教,而不少假的"perl fans"则用骂人的方式来表达他们的不满。


我认为:
  • 不要使用"perl是邪教"的提法了,以往你受到的一些不公正的待遇(至少limmdou和我是理解你的)就让它过去吧,继续这样做只是自讨没趣,徒然让自己的心情变坏,何必呢?
  • 正如limmdou所说,版主只是单纯批评你而对部分出言讽刺(甚至于骂人)的perler却视而不见,这样的做法确实有失公允,这也导致了后来的恶性循环。
从LZ的言辞看,其对perl与python的理解,都较sh*差之较远.
不要人云亦云,多做就对了.
我就是把perl当sh脚本的替代品, 发现很不错.

至于python没有学过, 身边也没有人用(其实我身边也没有别人懂perl), 不清楚了.

不过perl现在在几乎所有UNIX上都自带的, 所以很方便. python很多平台没有自带吧?

至于语法, 我觉得还好了. 比较简洁. OO这些东西我没用. 非标准模块我也避免不用, 因为小脚本本来就是为了方便, 一copy过去就能用了.
此sh非比sh

都挺好用的

讨论容易吵架 都吵过了还吵

支持pangj


QUOTE:
原帖由 shhgs 于 2007-8-26 04:51 发表
关于Perl是不是邪教,等你写够3万行代码之后再来讨论。

据我所知,perl 是一种程序语言,不是教派,何谓邪教? 你就是写过 3亿行的代码也不能把一种程序语言改成一种教派。

至于你说的 perler 的素质,哪些人是 perler ? 正如现在的媒体、所谓名人评论,动辄中国人如何如何,外国人如何如何,中国有14亿人,外国也有近50亿,难道世界上只有两种个性,两种思想么?


QUOTE:
原帖由 shhgs 于 2007-8-26 15:35 发表
在任何情况下,== 都是同等的比较。左边是字符,右边也是字符,它就必须是字符的。

真可惜,perl没有你这么智能。perl是不分数字和字符串的。比如

perl -e "print 'zzz' if '555' == '0555'"
不明白这种东西有什么好争论的.
对大多数人来说就是用合适的方法和工具把自己的工作做好, 多赚点钱, 生活能跟舒适一些.

少数自命不凡的人, 可能也有点技术, 不过也就仅限于说说而已. 整天争论一些没有意义的事情. 从来没有做过任何有价值的事.

有本事就真的做出点什么来, 比如说像无数开源社区的朋友一样, 对开源社区做出点贡献.
或者像盖兹一样在商业上取得成功也行啊.
总的就是能拿出点东西来给大家看看.

perl的原代码应该是可以随便修改再发布的, 有意见的人完全可以去修改成你和你的FANS们喜欢的样子, 只要你有那个能耐, 不过我估计你看也看不懂.

TO SHHGS:
我在CSDN和CU看过你发的很多帖子(顶楼帖子只列出了一部分),在这些帖子中,你强调了Perl的不一致的问题:它的语法规则根本无法推广。

我非常赞同你总结的“Perl的不一致”的观点,为什么呢? 因为我体会深,你举了一些例子说明perl的缺陷,与我学习perl编程时遇到的问题正好吻合。比如,你说"print   $a   +1"有着很明显的缺陷,恰好我也考虑过这个问题,在回帖中没有人能够正面解答疑问,只是用一些什么“你要是觉的perl不好就不用”之类软弱无力的话来回应。

关于和你辩论的对手的素质,我说三点:第一、确实有少数人骂人;第二你没有和他们展开对骂,这点做的很不错;第三、版主包庇骂人的ID的做法不好,版主应该给个说法。

QUOTE:
举一个例子。上面有人讲 'aaaa' == 'hello'。作为一个Perler,他的想法是,我错了,因为Perl是对的,在它看来==表示数字比较,而我要作字符比较,因此我错了。
典型的奴才心理。

这个错误我在编程中碰到过的。难道有人会装大说自己没犯过这样的错误?哈哈,因为perl的设计错误给自己造成了麻烦,居然还要反过来为perl辩护,我也不知道他们是怎么想的?

QUOTE:
这就是一个正常的人和Perler的区别。

不正常到不至于,但是根据我的最新发现,部分perl用户喜欢给perl明显不好的地方狡辩,比如说perl的bless关键字设计的就不好,不知道larry是咋想的,但是perl用户狡辩的理由倒是蛮搞笑的。

PS:我对perl是不是教派并不感兴趣,我只希望大家能从技术的角度探讨perl语言!

关于「Perl语法复杂,不一致」这样的观点在我看来真是太逊了。
持这样观点的人难道不知道这个世界是多样的吗?大家基因不同,选择当然也不同了。
美也有多样性,简洁是美,丰富也是美。c简洁,c++丰富;python简洁,perl丰富。我喜欢c和perl,我自己也觉得奇怪,因为它们是不同风格的。有人则喜欢c++和python,也很奇怪。

在这个时代,还认为只有自己才掌握了真理,真是傻的可以。
仔细想来,也不奇怪。因为我在编写很多程序时,都使用了c,也体验到了它的简洁之美。在另外一些编程时,我就比较喜欢用语法丰富的perl,体会多变之美。

同理,那些经常用c++编程的人,在那么多语法规则之间跳来跳去,颇为疲惫。转而就比较爱用python,简洁清新,就算是小憩一下。