精華區beta CSSE 關於我們 聯絡資訊
※ 引述《Eventis (何逸凡)》之銘言: : ※ 引述《reader (讀者)》之銘言: : : 執行是 A::f() 才合乎 first-order function, 這正是它奧妙的地方。 : : 如果只是 function pointer 就簡單太多了。 : : 傳統的編譯程式是做不到的。你可以想像它是「執行時期的巨集函數」。 : : 有這個東西,就不需要醜陋的 iterator 了。用 iterator 不見得一定 : : 比較快,但是程式碼變醜太多了。 : 那不就是等於到linking的時候才能判斷在命名空間是否定義過@@? : 又,如果宣告不是又多又長的話, : 也許用hash function的負擔反而比較重? 如果是 32/64 bits hash function, 負擔應該就不會比較重, 例如著名的 FNV, 也不過就是乘法和 XOR, 此後就能大大減少 名稱比對的需求。 而如果在連結期間就能確定的話,那已是比較靜態的狀況了, 其實只比 template 複雜一點。當然那是萬一程式語言流行時 別人要傷腦筋的事情,一開始當然是用沒效率的方式,例如: void f() = { printf("%d", i); } void loop(int n, void f()) { for(int i = 0; i < n; i++) f(); } loop(100, f); => typedef void F(vars&); void f(vars& t) { printf("%d", t["i"]); } void loop(int n, F f) { vars t; for(t["i"] = 0; t["i"] < n; t["i"]++) f(t); } loop(100, f); 這大概是最白爛的做法了。但很多情況是得在執行時期處理的。 : : 現在 C++ 不過是把巨集語言合併到程式語言當中 (template),一堆人 : : 就在那邊大呼小叫說是什麼革命性發展的,弄個什麼泛型化程式設計就 : : 覺得世界被改變了,實在是眼光太過短淺。那叫「本來就應該這樣」。 : 說到這個,java終於有template了. : 可喜可賀可喜可賀...........(好像不重要,裝傻中....XD) 就現在 Java 程式的主流寫法而言,恐怕還得等好一陣子才能漸漸 流行吧。 嗯,我不知道,基本上我只拿 Java 做點小東西小案子。 : : 有太多東西該做了,例如內建的網路功能,使這樣的程式語言將可以在 : : 網路上互通,程式碼可以在機器之間移動複製和定址,分散式運算可以 : (比rpc或web service更powerful的功能? : @@.....這個很難以想像>.<) 這這... 我從來沒覺得 rpc 或 web service 強大或好用過... 五年前申請一半的專利就是網路軟體元件自動耦合連結了... 而在 十年前,我的天才學弟去留學前的臨別筆記,也就提到了,到現在 我想做的東西,只怕還沒超過他當年的規劃和想像太多。 基本上,只要有一個最基本的支援平台,這一點也不困難。 正如同我們需要 graphics platform 於是有了視窗系統,有一個 network platform, 也完全是理所當然的。 而要做 GUI 不可避免地需要 OOPL, 要做網路平台,自然也會需要 可以有效承載新觀念的程式語言。 這東西我不做別人也會做,只是看哪個組織有力量也有想法而已。 就像世界上不可能只有一個 Alan Kay 想做 GUI 一樣,就看是誰 有那個機會了。 : : 完全平順自然地達成。至於多執行緒更是最最基本的。這樣才起碼像是 : : 一個二十一世紀的程式語言。 : 雖然C++語言本身與基本函式庫沒有提供, : 可是這些功能或技術要做到,在一般的情況下並沒有太大的問題. : (或者是發展的人覺得寫不出更好的0.0?) 完全內建和外加是不一樣的。這要做過才知道,如果系統中的物件都 能自主動作,程式設計的概念都會不一樣了。 而當這些物件可以遊走於不同機器時,在程式設計上卻會是一模一樣, 當物件能夠自行昇級改版,我們還是可以使用同樣的程式碼持續性地 運作時,那麼它的威力就更會顯現出來。 這才是物件導向理論的原本想像,今天大家所認知的物件導向其實是 縮水版... 內建 multi-threading 機制,而且是有效地內建,我個人認為是新的 程式語言最需要的基礎設計,好用不好用,影響很大的。 不過 C++ 這種靜態系統的成功,也證明了只能使用 interpreter 的 高階程式語言,能夠應用的範圍有限、效能不足,是不能擔當大任的。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.222.173.26