精華區beta Ruby 關於我們 聯絡資訊
[edited: 感謝訂正錯字] http://www.lrde.epita.fr/%7Edidier/comp/ruby.php 本文大意可以用一句話來形容:幹嘛重新發明 40 年前就已經發明的語言? 標題與內文都相當聳動,不過我覺得這篇文章還算值得一看。原因是,Lisp 確實 都有這些能力,甚至更加強大。問題是一個語言是否能被大家接受,並不只是功能 到底強不強大?那只是所有需要考量的事中的一個。不過從本篇文章可以看出, Lisp 確實非同小可,而他早在 40 年前就已經被發明出來了…? Anyway, 我覺得 Lisp 最大的問題在於,他實在不太容易讓人理解,沒有那麼的 親近人、沒有那麼的直覺。一個 Lisp 的程式要看懂,我覺得實在沒那麼容易。當然 也許這跟我和 functional language 不太熟有很大的關係,而 functional language 現在還不是主流。也許在未來電腦硬體架構改變,functional language 的執行效率 大幅提昇,並成為主流後,有所改變也不一定…? 另外 Haskell 看起來也是很凶狠,慢慢期待吧 @_@ -- Nobody can take anything away from him. Nor can anyone give anything to him. What came from the sea, has returned to the sea. Chrono Cross -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.28.18 ※ 編輯: godfat 來自: 220.135.28.18 (08/13 20:02) > -------------------------------------------------------------------------- < 作者: poga (波卡) 看板: Ruby 標題: Re: [連結] Ruby sucks(All those shaky languages..) 時間: Sat Aug 12 21:14:12 2006 ※ 引述《godfat (godfat 真常)》之銘言: : http://www.lrde.epita.fr/%7Edidier/comp/ruby.php : 本文大意可以用一句話來形容:幹嘛重新發明 40 年前就已經發明的語言? : 標題與內文都相當聳用,不過我覺得這篇文章還算值得一看。原因是,Lisp 確實 : 都有這些能力,甚至更加強大。問題是一個語言是否能被大家接受,並不只是功能 : 到底強不強大?那只是所有需要考量的事中的一個。不過從本篇文章可以看出, : Lisp 確實非同小可,而他早在 40 年前就已經被發明出來了…? 在hackers and painters這本書裡面 作者推薦所有的programmer一定要學lisp 他也提到了這點 也就是所有的語言都在朝著lisp的方向走下去。 不過他個人的見解是: lisp不能幫你找到工作,但是lisp能讓你更輕易使用其他語言, 就像拉丁文之於西洋文學。 也提到了ruby非常像lisp 甚至說是一個lisp的方言也不為過 XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.174.246.127 > -------------------------------------------------------------------------- < 作者: godfat (godfat 真常) 看板: Ruby 標題: Re: [連結] Ruby sucks(All those shaky languages..) 時間: Sat Aug 12 22:15:03 2006 ※ 引述《poga (波卡)》之銘言: : ※ 引述《godfat (godfat 真常)》之銘言: : : http://www.lrde.epita.fr/%7Edidier/comp/ruby.php : : 本文大意可以用一句話來形容:幹嘛重新發明 40 年前就已經發明的語言? : 在hackers and painters這本書裡面 作者推薦所有的programmer一定要學lisp 看到 hackers and painters 這個字眼覺得很眼熟, 好像今天才在哪裡看過…於是我剛剛找到了: http://willh.org/cfc/wiki/index.php/Meta_Programming [quote] 著名的 Lisp 駭客 Paul Graham 在駭客與畫家這本書中說: In Lisp, you don't just write your program down toward the language. you also build the language up toward your program. Ruby 也同樣的有這樣的特性。 [/quote] 改天看看能不能找這本書來看看好了 :) : 他也提到了這點 也就是所有的語言都在朝著lisp的方向走下去。 : 不過他個人的見解是: : lisp不能幫你找到工作,但是lisp能讓你更輕易使用其他語言, : 就像拉丁文之於西洋文學。 : 也提到了ruby非常像lisp 甚至說是一個lisp的方言也不為過 XD 好像滿有道理的 XDDD 那麼或許我們可以說是,Ruby 朝 Lisp 這個方向更跨了一大步? -- By Gamers, For Gamers - from the past Interplay -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 220.135.28.18
poga:台灣O'Reilly有出 可以去書店看看 08/12 22:56
> -------------------------------------------------------------------------- < 作者: Schelfaniel (Test) 看板: Ruby 標題: Re: [連結] Ruby sucks(All those shaky languages..) 時間: Sat Aug 12 22:55:42 2006 ※ 引述《poga (波卡)》之銘言: : 在hackers and painters這本書裡面 作者推薦所有的programmer一定要學lisp : 他也提到了這點 也就是所有的語言都在朝著lisp的方向走下去。 : 不過他個人的見解是: : lisp不能幫你找到工作,但是lisp能讓你更輕易使用其他語言, : 就像拉丁文之於西洋文學。 : 也提到了ruby非常像lisp 甚至說是一個lisp的方言也不為過 XD 其實不只 Ruby...REBOL, Python, Perl 6 都有朝向 Lisp 的方向... ( 修正, 其實 Ruby 比較偏向 Perl + Smalltalk ) Lisp 的缺點是太過分散, Implementation 太多... 舉常見的 Common Lisp 和 Scheme 的例子好了... Common Lisp 定義 Function 是 (defun foo (a b c) (princ "a")) Scheme 的話則是 (define (foo a b c) (princ "a")) 雖然都是括號, 但是不只是定義用的不用, 一個是 defun, 一個是 define, 括號位置有微妙的差異 @_@ 以下先以 Common Lisp 為例子 ( Common Lisp 我比 Scheme 熟 ) Lisp 因為它定義性強, 很容易造成各家不相容的情形.... 重點是 Common Lisp 雖然 Spec 很多造成 Implementation 困難, 但真正需要商業化的元件, 竟然 Spec 中沒有, 因此... 造成每個 Implementation 各自為政的情形 @_@ 括號 我覺得是...還好, 應該說 Lisp 沒有像 C++, Java, Ruby 等容易閱讀 但是我是覺得比 ML 系(如 OCaml) 或 Haskell 容易閱讀... 只是函式 巨集 變數 這些光看敘述完全看不出差異點 @_@ Lisp 其實寫得好的話效率不會輸 C 太多...重點是 Implementation 啦... 目前一般評價較好的 SBCL, 在 Windows 上是處於中斷的狀態 不過 Lisp 效率要寫的好的話, 除了 Lisp 程式師要強... ( 有文章說 Lisp 程式師很容易寫出效率不佳但又不知為何的程式 ) 另一方面 Lisp 要寫的有效率的話, 除了藉由 C Interface 之外... 可以看看這個 inline Assembly 的例子 (Corman Lisp, 別的 Lisp 不知道支不支援) (defun foo (x) (format t "Called foo...") {{ mov eax, [ebp + ARGS_OFFSET] mov ecx, 1 }}) 或是看 SBCL 的程式(節錄) (let ((lut (make-array 256 :element-type '(unsigned-byte 8) :initial-element (char-code #\*)))) 像這一行, 它用 make-array 相當於 C 的配置記憶體了... 後面又指定型態 unsigned-byte 看起來很熟悉吧... 不過這樣寫, 真的是有點 C 化了, 之前看文章也是說... 如果 Lisp 為了效率, 有時候要犧牲一些 Lisp 的語法, 轉向類似 C 的 Lisp 另一大缺點是它的語法不夠直覺, 缺少 syntax sugar @_@ 像 二維陣列 int a[][] = {{1, 2, 3}, {5, 6, 7}}; (setf a #(#(1 2 3) #(5 6 7)) 這個還好.... 但是 a[0][1] 就變成這樣... (aref (aref a 0) 1) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 221.169.205.162 ※ 編輯: Schelfaniel 來自: 221.169.205.162 (08/12 23:54)
godfat:這個實在是離題太遠了… XDb 08/13 01:32
> -------------------------------------------------------------------------- < 作者: b6s (http://b6s.blogspot.com) 看板: Ruby 標題: Re: [連結] Ruby sucks(All those shaky languages..) 時間: Sun Aug 13 13:08:12 2006 Paul Graham 推銷 LISP 時其實有很多但書的,他以自身的例子說明了, 如果是開發 "web apps," 用 LISP 一樣很實際,而且還兼具技術寡佔效果。 然而,當 web apps 服務的對象多到某個程度之後,想要榨取效能,又想要有更多維護人 手,技術寡佔就變成了缺點。最後,LISP 變成了適合開創軟體(事業)「雛型」的語言。 Python 也曾經這麼自我定位,Ruby 目前看起來也差不多。 所以,現階段先拿來快速開發的話,當然是愈容易上手、支援愈多的語言愈好,這跟誰是 誰的方言,不是同一層次的問題。 XD 題外話: 從研究的角度來看,LISP 確實是偉大的語言;但奇妙的是,Paul Graham 一邊說不喜歡 computer "science" 研究(雖然他自己也是 PhD),一邊又熱愛這個由科學研究中誕生 的語言,卻有意無意地忽視他明明很在乎的「工程上」的現實。 :p -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.105.131.104
godfat:推 XD 08/13 14:11
> -------------------------------------------------------------------------- < 作者: Schelfaniel (Test) 看板: Ruby 標題: Re: [連結] Ruby sucks(All those shaky languages..) 時間: Mon Aug 14 10:02:58 2006 其實大部份語言都視 Web Apps 為一個戰場.... RoR 真的算是蠻簡短的, 之前看到國外文章 PhP 50000 行的, 用 RoR 改寫只剩 5000 行了 擴充延展性吧...我是覺得考慮這個比較像是一開始就要考慮進去, 不管用什麼語言, 一開始沒考慮到的, 就直接寫下去的話, 後來要擴充延展自然就比較麻煩了. Ruby 拿來寫寫小程式其實很不錯...雖然它效能不太好, 但是有些地方並沒有太要求效能的, 用 Ruby 這好寫的語言其實很適合的 ^_^ 不過說 Ruby 是 Lisp 的方言有點怪怪的... 整個 Lisp 體系原本就有很多方言, Common Lisp 和 Scheme, 還有 Paul Graham 在開發中的 Arc 都算是 Lisp 的方言, 但是 Ruby 應該不算是 Lisp 的方言吧 Lisp 雖然是一個偉大的語言, 但是我還是覺得 Lisp 本身, 如果像 Ruby 這樣 One Implementation, 而且不要一堆方言, 使用者容易集中, 這樣元件也容易開發, 目前 Lisp 元件難以開發, 很多都是各方言各 Implementation 的相容性, 以致於各自發展各自的, 這樣就算它元件總數和 Ruby 相同, 也被打散掉了 @_@ 這算是它整個體系的問題...@_@ 商業性的話, 我覺得還是走 C++, Java, C# 等等較好, 研究研究冷門語言, 算是興趣吧, 要期望冷門語言能變成熱門語言, 幾乎是不太可能. 但是可以視情形, 在某些地方改用冷門語言來實作 ^_^ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.220.34.34 ※ 編輯: Schelfaniel 來自: 61.220.34.34 (08/14 10:03)
ogamenewbie:推"在某些地方改用冷門語言來實作" 08/14 12:10
godfat:就這點而言,C++ 可能也有點混亂吧,呵呵 XD 不過程度有差 08/14 14:51
Schelfaniel:老實說, 因為一直寫熱門語言會煩, 所以才碰碰冷門 :QQ 08/14 19:05
cplusplus:推樓上 XD 我也是這樣一開始才會去碰lisp的 08/14 23:56
PsMonkey:樓上都是高手... 我聯 Java 都沒沒有膩... 08/14 23:57
godfat:換句話說是耐心十足不是嗎? :p 08/15 00:08