Ruby 板


LINE

※ 引述《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







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:WOW站內搜尋

TOP