What have you found for these years?

2007-11-14

Fwd: Re: Microsoft Puts the 'F' in Functional

以下是在電車上打的 XDDD

========

(補充說明:.NET 其實可以說是一個 runtime environment,
就像 jvm 那樣的東西。不過 jvm is for java, .net is for variant
programming languages... e.g., C#, VB.NET, C++/CLI, F#, IronPython,
IronRuby, etc.)

.NET 我一直沒真的用過,不過中間斷斷續續摸過幾秒,
主要原因大概就是好奇試試味道吧?畢竟還滿多人對 .NET 評價不低。
第一個嘗試的當然就是 C++/CLI 了。早期是 Managed C++,
後來又多改了很多東西,就改名為 C++/CLI 了。

知名 C++ 書籍作者 Stanley Lippman 又稱 C++/CLI to C++
如同 C++ to C, 讓人實在不禁好奇。

不過事實上,摸了幾秒後我就覺得 C++/CLI 其實是個很彆扭的東西,
無怪每個人都說用 .NET 還是用 C# 比較好。基本上,我個人認為
.NET 根本就是為了 C# 設計的,在其他語言上別說好用了,
搞不好其實根本就很難用也說不定。至少在 C++ 上根本就是個大有問題的東西。

最主要的問題就在於 .NET 是個動態的東西,而 C++ 本身其實是追求
靜態模型,也就是 template. 要使用 .NET 的東西?不能使用 template,
而要用另外一個什麼 generic 還什麼的我忘了,總之就是個有點像 template,
卻遠遠不若 template 好用的怪東西,C++/CLI 中發明的。

也許可以這樣說,新的什麼 generic 其實是 template 的子集,
還是非常小的子集。所以如果要和 C++ STL 中的東西共用,其實是會打架的。
我想等到 C++09 推出後,這個差異會變得更大。

所以 F# 到底能做到什麼程度,其實我也滿懷疑的...
不過搞不好更因此好奇他的能耐吧? :p
改天可以來試試看

至於 runtime 嘛,前幾天我倒是試過 C# 生出來的 .NET 程式。
副檔名是 .exe, 不過其實他恐怕是像 java 那樣的 bytecode,
因為我直接拿到 mono 上是可以執行的。

mono ooo.exe

這樣可以正常執行。不過在 mac 上,GUI 的部份是用 X11,
然後我要用的程式居然是要用 drag & drop @@
無奈我無法將 Aqua 上的檔案 drag & drop 到 X11 上,
本來是試著開啟 xfce4, 不過不曉得為什麼一直失敗,
KDE3 我沒灌(和 Qt4-mac 有衝突),
GNOME 之前一直灌不起來(現在灌起來了,不過沒試過)

最後的辦法就是,反正有 src, 我就暴力把輸入路徑寫死就好了 :o
靠著 xbuild 可以吃微軟的 .csproj 專案檔,
成功用 mcs compile 好該程式,用 X11 + mono 就成功執行程式了 :D

所以如果後來微軟真的把 .NET 完全推出來,不會再有人用 Win32 API,
MFC 之類的 native program, 搞不好靠 mono 可以通吃這些程式,
我覺得這倒算是個不錯的結果...

--
cheers,
飽和脂肪星 http://godfat.org/

godfat 真常

0 retries:

Post a Comment

All texts are licensed under CC Attribution 3.0