What have you found for these years?

2008-12-20

越來越不看好 Ruby 1.9

Ruby 1.9 引入 YARV 後,速度快到不可思議。
加上一些不錯的新功能,例如 Enumerator, BasicObject,
還有些啥有點忘了... block local variables 吧?
其他像是 Fiber 好在哪我是有點不懂,但說來總是期待多些。

直到後來看到 1.9 針對 encoding 的設計,剛開始會讚嘆
這種設計實在太強大了。但隨著討論的進行,不禁讓人眉頭一皺,
發現案情並不單純 XDDDD

咳,我是說這種 encoding 設計會碰到的問題太多太複雜,
不禁讓人懷疑這做得起來嗎?剛開始會覺得這肯定會成為一絕,
但越看越能理解為什麼沒有任何 string encoding 是這樣設計的。
原因真的很簡單,太複雜難懂了,可能碰到的問題太多。

這時就會覺得 java 統一的 16-bits char 設計乾淨俐落。
雖然很愚笨,不過至少在面對很複雜的編碼情況可以很清楚明白。
只是 java 的 char 是對的,那 c++ 的 wchar_t 又怎麼了??
可能用 java 比較不在意記憶體,而 c/c++ 則反之,是故不用 wchar_t 吧?

就我自己處理 encoding issues, 則基本上都是 bytes based,
然後所有 encoding 一律轉成 utf-8, 轉不了就不管了。
不過在看到 matz 說 "unicode whiner", 加上眾人提出各種不相容
unicode 的實例,又開始懷疑 unicode 真的是唯一解嗎?

畢竟 ruby 1.9 要是真能做出這種 encoding 機制,倒真的可以肯定
比 unicode 還要強。unicode 是包容各種 character,
而 ruby 1.9 則是企圖包容所有 encoding, 層級差了一級。

但到了今天,仍然看到各種 encoding 問題討論不休,
真的開始覺得這種 encoding 機制大概是註定失敗吧。
畢竟,there's always a deadline, isn't it?
君不見 perl 6 的 there's no schedule 已經使得他變成 vaporware?

我知道 parrot 和 pugs 都還在開發,問題是對於沒有關切開發進度的人而言,
其實 perl 6 跟死掉應該也沒啥差吧?ruby 1.9 如今也面臨相似的狀況,
不過我覺得應該還沒那麼慘就是了。至少就執行效能而言,還沒有可以跟 1.9 比的。

只是越來越沒信心倒是真的。尤其在看了 rubinius 之後...
已經試到太多東西在 rubinius 上合乎預期,但 1.8/1.9 就是怪怪的...
這麼說來,等到 rubinius 可以做 production, 我可能就會用 rubinius 吧。
就看誰先成熟...

4 retries:

Plumm said...

> 真的開始覺得這種 encoding 機制大概是註定失敗吧。
我覺得,為何不 godfat 參入下去呢?這樣也許就不會失敗了。

> 我可能就會用 rubinius 吧
rubinius 有這咩好喔??

Lin Jen-Shin (godfat) said...

你想有辦法嗎? XDDD
我連參與討論都沒辦法了
先別說需要 unicode 以外的知識,
我連 unicode 詳細是怎麼運作的都不太清楚


不是 rubinius 有這麼好,
而是 mri 有些地方真的太奇怪,
很難理解他內部是怎麼實做的

不想追究內部的話,就沒有需要用到 rubinius

老林 said...

Hello,我在 multimice2 branch 裡加了 src/test/test_thread_main.cpp 測試 thread 與大量計算的使用測試,
請你有空去看看這樣的測試有沒有漏考慮什麼 @@"
我測起來感覺是還不錯,詳可見計畫板 ._.

第一次真的寫 multithreading,不過這算得上 multithreading 嗎?
感覺上沒處理過 race condition / deadlocks 應該不算寫過 multithreading XD
現在這種模式原則上只是「一寫多讀」甚至「一寫一讀」而已 ..

Lin Jen-Shin (godfat) said...

先撇過不能編譯的部份,光用看的話,
我覺得有一點怪怪的,不過還說不太上來,
需要點時間再想想看

你這作法還滿奇妙的 @@

Post a Comment

Note: Only a member of this blog may post a comment.



All texts are licensed under CC Attribution 3.0