Re: [連結] 松本行弘: Code 的世界~成為超級程式設 …
※ 引述《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
討論串 (同標題文章)
Ruby 近期熱門文章
PTT數位生活區 即時熱門文章