Re: [連結] 松本行弘: Code 的世界~成為超級程式設 …

看板Ruby作者 (Schelfaniel)時間15年前 (2009/08/10 09:14), 編輯推噓2(200)
留言2則, 2人參與, 最新討論串13/16 (看更多)
※ 引述《godfat (godfat 真常)》之銘言: : : 演算法相同,但 Ruby 的看起來密度較低。Ruby 不需要明確給定型別, : : 不必要的型別指定可以省略,因此可以較簡潔。 : 這比較可能略嫌粗糙了點... XD : static typing 與 dynamic typing 在本質上就不同了, : 從這點出發的話,恐怕是需要比較 trade off. : 或許可以從這邊看出,Matz 並不太喜歡 static tying. 其實我覺得,會喜歡 dynamic typing 的人, 如果不是初學者,就真的是高手了,因為 dynamic typing 要寫時, 考量的東西絕不比 static typing 來得少, 亂寫的下場會比 static typing 更慘。 : : 若導入巨集功能,會引起嚴重的副作用,這裡到底是函式呼叫,控制結構, : : 還是要代入什麼,得再查文件才能知道。 : : 嗯,也許世界上也有不會為此所苦的 Lisp 程式人員,不過我認為這只是 : : 少數人。 : : 要能在世界上普及的程式語言,我相信必須要有「不為風所搖動的核心」 : : 的文法。 : 噢,原來原因是這個,那我完全能理解 XD : 之前看 Lisp 就常常搞不清楚 macro 跟 function 之間的狀態... : 如果全部都是 function, 那很多事情就會變得一致了。 這個說法其實有一點奇怪,在 Lisp 裡面,使用就直接使用了, 沒有人會特別去在意這個人是巨集還是函式, 我舉個例子好了,像是 or,其實 or 是從 if 衍生的,不難想像吧。 這邊我先寫只有兩個參數的版本,其實完整的是 1 至 n 個參數都可以接受的。 (defmacro my-or [a b] `(let [result# ~a] (if result# result# ~b))) 完整版應該類似下面這樣。 (defmacro my-or ([a] a) ([a b] `(let [result# ~a] (if result# result# ~b))) ([a b & c] `(my-or (my-or ~a ~b) ~@c))) 像是這樣,但是其實真正在用 or 的時候, 應該不會有人刻意去分辨它是不是巨集... 就像中文,外國人覺得不順的話是他們不習慣的關係。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 163.29.28.137

08/10 09:47, , 1F
推一本書Masterminds of programming,雖然無ruby... :P
08/10 09:47, 1F

08/10 11:18, , 2F
不熟沒辦法舉實例,不回了 XD
08/10 11:18, 2F
文章代碼(AID): #1AVtHgxY (Ruby)
討論串 (同標題文章)
文章代碼(AID): #1AVtHgxY (Ruby)