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

嗯,楼上说的我深表赞同。
以前我学C, 然后附带学了perl.
后来转向c++, 那叫个复杂,于是就附带学了python.
我的感想在我的签名中。
当初我是很抵触sh*说perl是邪教的说法,不过后来跟一些老外讨论过很久。他们说perl是一种宗教未尝不可。不过教派的宗旨是让人崇尚自由,而且和其他编程语言相比更加独立特行。


QUOTE:
原帖由 福瑞哈哥 于 2007-8-27 11:23 发表
关于「Perl语法复杂,不一致」这样的观点在我看来真是太逊了。
持这样观点的人难道不知道这个世界是多样的吗?大家基因不同,选择当然也不同了。
美也有多样性,简洁是美,丰富也是美。c简洁,c++丰富;python ...

这个观点我非常赞同.

QUOTE:
下面我来讲讲上面是Perler。Perler的定义是,盲目崇拜perl,以一种奴性的心理学习,使用perl的人。

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

典型的奴才心理。

在任何情况下,== 都是同等的比较。左边是字符,右边也是字符,它就必须是字符的。

你会说这是上下文,因为 == 表示它的两边都必须是数字。

这还是奴性。上下文的意思应该是,当我左边写出字符串,右边也写出字符串的时候,== 就必须是字符除比较。

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

当你在用Perl的时候,记住,不是Perl规定的每件东西都是对的。你是对的,Perl是错的。

lol, 如果你没有用过Shell的话, 可以原谅.


QUOTE:
原帖由 topgunroot 于 2007-8-28 05:51 发表

lol, 如果你没有用过Shell的话, 可以原谅.

不光是 shell,C 语言也是如此。

char a[] = "abc";
char b[] = "abc";

a == b 肯定是失败的。用 strcmp( a, b ) 才对。


QUOTE:
原帖由 shhgs 于 2007-8-28 10:27 发表
Perler就是会无理搅三分。

shell根本没有数字,一切都是字符。sh里面,甚至简单的加减都要依靠expr。至于数字,是bash扩展出来的。因此shell的比较是非常清楚的。

可是Perl不可饶恕的地方是,它把这种无可 ...

你是java/python玩多了, 走火入魔了。freak


QUOTE:
原帖由 shhgs 于 2007-8-28 12:23 发表
在shell之下,无论是eq还是==, aaaa都不会等于hello,所以shell的这个语法还多少能让人接受。

不是数字的你用==来比较,Perl会报警。如果你忽略警告,那Perl当然只能按照语义规定的把他们转为0来比较,这也没什么好抱怨的。

#!/bin/sh

if [[ 'aaa' -eq 'hello' ]];
then
echo surprise
fi


QUOTE:
原帖由 shhgs 于 2007-8-28 10:27 发表
想想CSDN版主XYZXYZ1111的大论,更是让人喷饭。他说python里面3.0==3是错的。因为3.0是float的,而3是int的,类型都不同怎么能相同的。

我没看原文, 不过XYZXYZ1111 可能是从二进制编码方式来考虑的,如果真的是这样,当然不能说她说错了. 这和perl无关吧?像你这样说, 浮点加法都不遵循结合律,难道浮点运算就一塌糊涂了?
你不理解不代表别人有错啊,都已经给你分析了,Perl为什么要这样。
那这样说吧,你认为在这个地方该如何?
不知道你到底什么观点。