作者gpmm (银色)
看板i-enterprise
标题Re: [请益] 网路创业大部分的网站规划都是用PHP吗?
时间Fri Jan 15 10:50:07 2010
※ 引述《StubbornLin (Victor)》之铭言:
: 你自己都说你认为的可读性(Readability)是风格(programming style)了
: 那你硬要来跟我说的可读性搭在一起
: 不是张飞打岳飞吗?
: 我的文章的可读性是指跨语言的比较
: 语言的天性有些就使得他们难读
: 我随手找篇文章你可以读读看
: "What Makes a Good Programming Language?"
: http://0rz.tw/U0NKe
: 里面提到Objective-C的可读性
: 语言本身就有可读性的差别
: 如果你有修过Programming Language这门课就会知道
: 里面有一些章节是在讨论语言的可读性
: 你硬要拿错误的认知来嘲笑我的文章是你的自由
如果你提及的语言的可读性是指 Readability,
但你所举出所拿来使用的例子却是这种,
那我真的只能说你已经完全处於逻辑失控的状态了。
一个语言本身可读性的高低,可以用多靠近人类语言的结构来定义。
而可读性的高与低,对这个语言造成的影响或优劣是什麽?
是进入这个语言的门槛。
是程式人员在学习这个语言的学习曲线。
是这个语言本身的容易普及或存活的程度。
举一个例子,
如果某种语言,它的所有判断式要放在一个地方,
但是判断式的描述区块却统统集中在另一个地方(想想还真可怕),
如果这样能让语言执行速度比 C 还跳跃 3 万倍,
那请问你这样的语言依旧是比较糟糕的吗?
对我来说不是,因为它是「牺牲了自己的可读性」,来「提昇了执行效率」。
所以在检讨可读性时,请将他背後的成因一起考虑进去。
当你硬是将你「正确的认知」套用在了「错误的逻辑」上,
提出了语言的可读性,却举出了聚焦在学习门槛的例子,
还认为别人指出这个部份是在嘲笑你,这实在令人啼笑皆非。
你如果告诉一个只会说台语的亲切大妈,英文很易读易懂,
她也会觉得你是在胡说什麽,那根本是无意义的鬼画符。
当然,如果你评判程式语言的优劣是依靠它的学习门槛来决定时,
你的确可以说,对同样不懂程式的人来说,
可读性是一个语言很重要的优劣指标。
另外,能否请你解释一下你的观点,
你把可写性界定在「熟悉这些符号的人」,
却又把可读性定义在「对这些语言陌生不懂的人」。
如此摇摆不定的评论基准点,
是怎麽让你打出这篇「如何评估比较程式语言」的?
: : 如果当我们将可读性误植在「语言」本身时,
: : 会产生一个极其荒谬的情况 -
: : 也就是语言的可读性,变成了你对於这个语言的熟稔程度的指标。
: : 如果依照这个逻辑,当我们在使用 windows 时,
: : 用滑鼠点选切换视窗的人,也会觉得这是比起键盘按 Alt-Tab 更好的技巧,
: : 只因为这个「组合键」的操作,你无法在键盘上直接看到。
: 这也是张飞打岳飞
: 组合键只是加速你达成那样的功能
: 但是和可读性完全搭不上关系
: 你大不了不用组合键,用滑鼠慢慢点
: 可是写程式就不一样了
: 你老板要你维护的perl程式丢给你
: 程式码一行一行地写在里面
: 请问你可以大不了不读算了吗?
: $| = 1;
: 你可以在没有看文件的情况下回答我这行的用意吗?
: 如果当初写的人没加注解
: 没有文件,那你只能查文件
: 好,那你可能会说这是看语言熟不熟来评断可读性
: 那我们设同样的条件,两个一样不熟的人来看同样的一份程式呢?
: disableBuffering();
: 一个不熟你要查文件
: 一个不熟你光看名字就能猜到
: 你要不要跟我说这两个差别在哪?
: 当然,你会说,Perl也可以这样用函数来写
: 问题是Perl本身提供那些$$ $% $^ $&就会有人去用它们
: 再说有些情况非用这些不可
: 通常都是大量被使用,别人在程式里用到这些,你没有选择
: 你只能去读他们....,而且要读懂
: 这就是我所说的问题所在
: ###### 补充例子 #####
: 那个disableBuffering()的例子实在很糟
: 我另外找个例子
: Perl版:
: while (<$CHILD>) {
: print $_;
: last if ($_ =~ /^[\s\x00]*$/);
: }
: 用Python的话
: import re
: for line in child.readlines():
: print line
: if re.match(line, '^[\s\x00]*$'):
: break
: Perl版你要知道的知识有:
: 1. <> 是读一笔资料
: 2. $/ 会影响<>读的东西是由什麽东西来分开的,预设是断行
: 3. last 是break的意思,也就是跳离回圈
: 4. last if 是当後面条件成立时跳离回圈
: 5. $_ 是<>每次读进来的资料所放的变数
: 6. =~ 是匹配用的语法
: 7. // 是用来表述regualr expression的语法
: Python版你要知道的知识有:
: 1. import 是引入函式库
: 2. re 是regular express的函式库
: 3. for value in sequence: 是foreach的意思,一次从seq中取一个value
: 4. file.readlines() 是以行为单位回传一个list
: 5. re.match 是匹配regular expression的功能
: 6. break 是跳离回圈
: 7. Python的code block是由缩排来决定的
: 我想很清楚的是,perl你不懂语法,就是不懂
: python版的可以猜,换成其它语言也一样
: 因为没有一个语言像perl做这麽多功能在语法上的...
老实说,这像什麽?
这像是因为 Perl 的学习门槛高,语言本身可直接阅读性低,
造成你学习上的不顺畅,所以让你特地写文章来大肆批评它一番。
更直接点,这像是一个明明在写 Python 的程式人员,
忽然被老板丢了一个 Perl 的 code 要求维护,
因为没办法用像平常一样顺畅阅读,所以炮轰 Perl 是个劣质语言。
Perl 会有如此丰富多变的语言标记是有他的历史和原因的,
我没有那麽清楚,但是请问你清楚吗?
今天你如果说因为 Perl 语言本身的可读性不佳,不接近一般语言,
让你看 code 看的很杜烂,我想大家都能接受,
但你非要用你无法直觉阅读 Perl 语言本身这件事,
来评论这个程式语言的优劣,那我真不知道是为什麽如此高估自己。
滑鼠 / 键盘组合键这个例子的意义就在於,你完全搞错方向了。
这也是张飞打岳飞
组合键只是加速你达成那样的功能
但是和可读性完全搭不上关系
你大不了不用组合键,用滑鼠慢慢点
可是写程式就不一样了
就像组合键可以加速操作一样,
熟悉 Perl 的人可以透过各种语言标记符号来达成更精简快速的操作,
当你看不懂的时候,你必须要去查手册,
就像当你不知道 windows 有 alt + tab 快速键的时候,
你也需要去找 windows 的快速键表。
--
明明说好不回的,到底为什麽又跑出来(猛撞墙
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.80.28.216
1F:→ TonyQ:嘴巴说不要...XDDDDDDD 01/15 11:32
2F:推 superpai:变数没$的语言都很难读啊啊~~(战 01/15 12:08
3F:→ rshadow:如果以贴近人类语言来说,VB就会比C++优越了= = 01/15 13:14