作者godfat (godfat 真常)
看板Ruby
标题Re: [连结] 松本行弘: Code 的世界~成为超级程式设 …
时间Sun Aug 9 19:02:57 2009
※ 引述《ericyu (Eric)》之铭言:
: == 程式语言的重要性 ==
: 因为语言是人类思考的本质。语言会影响说话者的思考。(这里还提到
: Sapir-Whorf 假说,请见 http://tinyurl.com/krz6nv )
在这本书里:
http://en.wikipedia.org/wiki/The_Language_Instinct
作者嘲弄了这个假说里的一个范例:
"Steven Pinker in the Language Instinct ridiculed this example,
claiming that this was a failing of human sight rather than language."
quoted from
http://en.wikipedia.org/wiki/Linguistic_relativity
我的解读是, Pinker 认为思想是在语言之上,人会因语言而有不同的表达,
但不会因为语言而有不同的想法,那多半来自文化或其他环境因素。
也就是说,其实我们有一个「心智语言」,利用这样的语言来思考,
再将之翻译成自然语言。打个比方,应该能够在心中想像一个立方体,
让他用各种方式翻转,但这件事是很难用自然语言表达出来的。
anyway, 程式语言和自然语言也差很多就是了,毕竟自然语言可以任意表达,
而我们写程式确实是会受限於程式语言,我们没办法表达超过语言本身能表达的,
就像在不是 Turing complete 的语言上,自然无法表达 Turing complete,
Ruby 如果不呼叫 C, 也没提供 system call API, 当然也无法做 system call,
而我们自然不会去想用那种方式来解决问题,毕竟本来就是办不到的事...
: 20 年来的名着「人月神话」也提到「程式人员一定时间内能产出的程式码
: 行数是一定的,不论用什麽语言」。假设这是真的,那麽一天五百行,
: 用组合语言,C,或是 Ruby 都是五百行。
我不记得人月神话有提到这句话 XD
不过假设我们现在在使用一个极端语言,例如没有回圈,什麽都没有,
但我们需要让某个工作重复做五百次,
那我一天的产生,也肯定不只五百行了... XD
写 Java 我产生程式码的速度也极快,因为有些时候必然需要大量程式码,
这点在 C++ 有时候也有类似的状况。但写 Ruby, 有时候我会写得很慢,
同一个程式码前後花很多时间在调整。而 Haskell 更常常因为需要思考,
而停下来,不太有办法写得很快。有时候写了一整天也只短短几行,
但是做的事情,可能就是 C++ 几千行在做的了...
我想这假设应该不太可能为真 XD
这假设要成立,恐怕需要先假设每个语言的表达能力是相同的。
: 演算法相同,但 Ruby 的看起来密度较低。Ruby 不需要明确给定型别,
: 不必要的型别指定可以省略,因此可以较简洁。
这比较可能略嫌粗糙了点... XD
static typing 与 dynamic typing 在本质上就不同了,
从这点出发的话,恐怕是需要比较 trade off.
或许可以从这边看出,Matz 并不太喜欢 static tying.
: 演算法教科书使用虚拟程式码来描述演算法,若要实际使用,就要处理类
: 似指定型别这些非本质的部份,而无法集中在演算法的本质部分。
我不是很同意 static typing 算是非本质的问题,
如果我们假设 programmer 绝对不会犯错,也绝对知道所有的问题,
那或许因为已经不用解决 typing 的问题,因此可以不视为本质问题。
但很多时候,其实我们是需要 static typing 来验证问题与答案,
也很可能 static typing 最後告诉你,想解决的问题本身是矛盾的。
我觉得 dynamic typing 的好处大概有两点:
1. 方便
2. polymorphic 有很大的发挥空间
当然这都是相对 static typing 的。
: (1993) 没什麽人认为可以在 script 语言里用物件导向程式,连内建型
: 别都是都以 class library 方式提供的可说是相当稀奇。之後看 Ruby
: 的成功,我想这个判断是成功的。
虽然我不是很熟,不过 Smalltalk 比 Ruby 早诞生很久很久 XD
也听过别人说,Smalltalk 藉由 Ruby 复活了...
没弄错的话,Smalltalk 也比 Ruby 更加 OO 许多。
: 若导入巨集功能,会引起严重的副作用,这里到底是函式呼叫,控制结构,
: 还是要代入什麽,得再查文件才能知道。
: 嗯,也许世界上也有不会为此所苦的 Lisp 程式人员,不过我认为这只是
: 少数人。
: 要能在世界上普及的程式语言,我相信必须要有「不为风所摇动的核心」
: 的文法。
噢,原来原因是这个,那我完全能理解 XD
之前看 Lisp 就常常搞不清楚 macro 跟 function 之间的状态...
如果全部都是 function, 那很多事情就会变得一致了。
: == 都是为了乐趣 ==
: 程式语言存在目的是为了生产程式,以及尽可能有效率地生产。还有与程
: 式设计的快乐连结在一起。
: 在国外活动等演讲後,有许多人跟我交谈,其中典型的就是「用了 Ruby
: 以後又能快乐地写程式了,谢谢。」
: 写程式本来就很快乐,是既刺激又富创造性,让人兴奋的知识活动。我想
: 起中学时用 BASIC 这种贫弱的语言写程式时也很快乐,不过也有因为工作、
: 期限等而造成不快乐的程式撰写,这是世间常情。
: 即使如此,Ruby 所提供的生产力若能解开程式人员身上的枷锁,重新找回
: 程式设计的乐趣的话,那就是我开发 Ruby 的理由。
同感 XDDD
以「乐趣」而言,写到现在还是 Ruby 最高 ~
--
生死去来、棚头傀儡、一线断时、落落磊磊
《花镜》-世阿弥
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 220.135.28.18