English Deutsch Français Italiano Español Português 繁體中文 Bahasa Indonesia Tiếng Việt ภาษาไทย
所有分類

請問他們的差別在哪裡呢?
他們各會用在什麼樣的地方?
如果我們今天寫兩個一樣的程式,
一個用自訂函數,另一個用副程式,執行速度上有差嗎?還是不一定。

2007-01-14 12:48:00 · 1 個解答 · 發問者 Bibo 1 in 電腦與網際網路 程式設計

感謝你的回答,不過我指的「副程式」和「自訂函數」是像在vb裡的結構化程式設計,都是自己寫的,但是他們的差別在哪裡?用途?
如果他們都能回傳值,那為什麼還要有所分別呢?
副程式是
Sub 與 EndSub

自訂函數是
Function 與 EndFunction

謝謝!

2007-01-15 17:02:34 · update #1

1 個解答

自訂函數? default function? 應該是指 compiler 附的程式庫裡的函數吧!?
大多數的程式師,功力是比不上寫 compiler 的程式師的。
所以,理論上,自訂函數的速度是比自己寫的程式快的。
但,至少以下情況例外:
1. 自訂函數在設計時,因受商業因素,不能寫好。如:上司限時完成。
2. 自訂函數因配合舊版、舊規格,(且用高階語言寫,)而有多餘的部份。
3. 自訂函數因語言規定要用 macro 來完成。
4. 你要寫的東東是專用,自訂函數寫的是通用。
 如:quicksort,C裡的 quicksort 是通用。
   所以,它的cmp是要呼叫你的比較副程式!
   而,cmp是sort的重點!
   所以,自訂的quicksort函數若不是用 組合語言寫,
    而且你的功力不差,
   那,你寫的 QuickSort就會比 C 自訂的 quicksort 函數快。

2007-01-16 00:54:01 補充:
你 post 在 C/C++,我以為你主要是問 C/C++。

我會約 20 種程式語言(細分啦,粗分沒那麼多),但熟的只有 C。
BASIC 我會好幾種,就是 VB 可以算是不會(只幫人寫過 3 次入門級小作業)。

就我對一般程式語言的了解與記憶(沒查證),給你回答。
可能有小錯誤(如年代),也〝可能〞不適用於 VB。

2007-01-16 00:54:40 補充:
約 30 年前,Subroutine 和 Function 是兩種完全不同的東東。
 Sub-routine不能傳回值;Function 一定要傳回值。
 Sub-routine是副程式,是處理事情的;
 Function是函數,是數學用,像算:sin, cos, log, f(x) 等。
 (別忘了,早期電腦都是為了算數學用的。
  所以,極早的高階語言是 ForTran (Formula Translation, 1957) 數學用語言。
  當然,數學家/科學家沒錢,錢是由商人提供!
  商人要的是與錢有關的!

2007-01-16 00:54:57 補充:
  所以,COBOL(Common Business-Oriented Language, 1959)就問世啦!

後來(1960s),Computer Science 與數學系分家了。當然也就有了專為 CS 設計的語言問世。
 代表作:Pascal(1970)。它定義前述 Sub-Routine 和 Function 是不同的東西!
  它,是早期 CS 重要的語言。

2007-01-16 00:55:15 補充:
 到了 C 問世(1972),它卻說:Sub-Routine 和 Function 是一樣的東西!
  (所以,C 的傳回值有 void 這種東西!)
  而,C到現在都還是 CS 的重要語言。
 註:ForTran, Pascal, C 是 程式語言三個重要的里程碑。

2007-01-16 00:55:21 補充:
BASIC 誕生於 1963,雖然它是根據 ForTran II 和一些ALGOL設計的;
  它仍受PASCAL的影響,定義 SubRoutine 和 Function 是不同的。
 在 C 是 CS 重要語言 N 年的情況下,SubRoutine 和 Function 漸漸被認定是相同的東西。
  所以,VB也受這影響!
 但為要能和早期的 BASIC 相容,所以,仍有 SubRoutine 和 Function 這兩個東西。

2007-01-15 04:01:50 · answer #1 · answered by ? 7 · 0 0

fedest.com, questions and answers