程式設計的函式和數學的函式為什麼都叫函式?

時間 2021-05-29 23:05:33

1樓:哲學嘉

本質是一樣的,電腦程式的函式概念基於數學上的函式,只不過加了一些操作在裡面,所以變得跟數學上的函式有點不一樣:

計算機中的函式包含輸入、輸出、資料處理還有操作(比如輸出到螢幕),而數學上的函式只關注數。

在數學上,輸入、資料處理、輸出,這三者缺少任何乙個都是沒有意義的,而在電腦程式裡,就算你輸入、輸出、資料處理、操作這些什麼都沒有,也是被認為是有意義的,這種就叫做空函式。

為什麼會有這樣的區別呢?因為數學是理論科學,而電腦程式是應用科學,後者函式的意義怎麼樣完全根據設計者的意願而定,是設計上的事情。但設計者肯定也不是隨意設計的,首先是基於數學上的函式的思想,然後為了方便和開放性,允許在函式中加入一些無關的操作,甚至沒有輸入或輸出都可以。

所以你可以看到,電腦程式裡面的函式概念繼承自數學,但為了實現應用上的目的不得不加入一些亂七八糟的東西,這樣子的設計你不要認為就是真理,它其實是不完美的,不要問我完美是怎樣子的,我也不知道,但我知道一件東西美或不美。像程式裡面的函式這樣的設計,這樣的定義,儘管實用,但沒有那種大成的美,要不你也不會來問這個問題了,因為在大成的美前,你一看就懂,並且讚嘆。美的東西簡單而優雅,以至於你很難想出比它更合理、更美的東西。

如果你會一些計算機語言,你可以看到,有些語言中將函式和子過程分開來,有些又合在一起,這是一種設計上的掙扎。

2樓:Max.x

在中國清代數學家李善蘭(1811—1882)翻譯的《代數學》一書中首次用中文把「function」翻譯為「函式」,此譯名沿用至今。對為什麼這樣翻譯這個概念,書中解釋說「凡此變數中函彼變數者,則此為彼之函式」;這裡的「函」是包含的意思。

程式設計中,也使用function來作為方法的名詞,因此也譯作函式。

3樓:夏爾謝夫

在程式語言裡面,如果不允許function的引數是指標(包括廣義指標)的話,那麼function就和數學裡面的函式完全一致。

輸入1-n個變數,輸出1個值。

但是怎麼可能讓程式設計師放棄用指標啊,於是function就和數學上的函式越走越遠。

4樓:嵐沐

函式其實就是一種實現方式,計算機的函式可以看成幾種操作的集合,數學中的函式也是一種操作,不過是數一數間的操作,結果都能得到結果

5樓:

我覺得確切地說,從更加抽象的意義上,現代多數程式語言的函式都應該稱之為過程或者process or procedure,不應該叫function,數學的函式很貼近於函式的本義,y=f(x),這體現出數學上的自變數和因變數的對映關係 y <- x。如果學習過lambda演算和圖靈機的概念,就會領悟到數學演算和計算機的程式執行具有同一性,所以很多人都會稱為函式,無法辨明其中的差異。

6樓:

函式就是指變數之間的依賴關係,表示了一種值與值之間的對應法則。

在數學中的函式和程式設計中的函式都有類似的特點。都是數值或者物件通過某種對應法則得到相應的結果。

7樓:

初中的時候,函式就是有且僅有乙個解析式的東西;高中的時候,函式可以分段,有不同解析式;大學時,只要學微積分的專業哪怕只學一點點,也知道有隱函式,隱函式乃是不能以初高中那種具體表示式表示的東西

由此可見函式是什麼,是可以拓寬內涵的。數學上有多種代名詞:關係,對映,泛函。。。。

是針對不同物件的輸入及輸出而叫的。當然,你也可以程式設計寫個函式沒有輸入輸出值,換個說法,那就是沒有定義域和值域、沒有原象集和象集。。。等等等等

當然,英語的function本身就含混不清的,中中國人跟著翻譯也含混不清,這沒什麼不妥,甚至很合理

8樓:

從架構上來講,都有輸入(自變數)和輸出(因變數)。

而且一部分程式語言中的函式確實實質上跟數學上的函式一樣——自變數和因變數都是數字或數學概念。

當然有些程式語言中的函式會設定其他的輸出,比如void(main)

9樓:

最初只有function這種稱呼。function啥意思?就是功能的意思。

不知道的自己查英文本典- -

那麼問題來了,這個function有什麼用呢?為什麼要創造出這麼乙個東西?

其目的在於:輸入值,經過function之後,輸出值

就比如說function為:動物的腿的數量。

那麼輸入兔,經過這個function後,輸出4

輸入雞,經過這個function後,輸出2。

又比如說有個function為f(x)=1,x屬於R裡面的任意乙個數。

那麼輸入x,經過這個function,輸出1。

這個就是function.

那麼程式設計裡面的function不就是這個意思嗎?輸入值,經過function,再輸出。

數學裡面的function也是這個意思。

之後再說函式。

函式就是中中國人自己翻譯的。腦子不好,看不懂。據說是清代學者翻譯的。

同理,無後效性是啥意思?腦子不好,不懂。寫成英文memorylessness倒是懂的。

國內的一些學者貌似特別喜歡把東西寫得晦澀難懂,以顯得自身水準很高的樣子。

總體來說,

比較簡潔的回答就如同sin說的「輸入乙個值,都有對應的乙個輸出」。(但是不夠嚴謹,應該說,未必只有乙個輸出,可以有多個輸出,是1對多的關係)

比較嚴謹的回答就是RAINWOOD說的那個答案。在高數書中會講的乙個「對映」的概念。

為什麼有些叫做函式有些叫做方法呢

這兩個其實都是乙個意思。

input-> method(function)->output。

但method和function在概念上少許有些差別,這得等你學了「物件」這個概念之後才碰的到。

就比如說我們定義了乙個大象這個物件,要給它加乙個「洗澡」這個動作。那麼這個動作叫做「大象洗澡的函式」顯然又是「腦子不好,看不懂什麼意思」,所以稱之為method:方式/方法。

在這裡就是「大象洗澡的方式」

那麼再簡單點,就是:放在物件裡的function稱為method(比如說大象洗澡),單獨的function(比如說排序),就是function

如果分不清楚其實也無所謂。method其實就是函式。這個概念不清晰不影響程式設計。

再然後,我的回答就被人加點「高深」的詞彙,就這麼被抄了。

10樓:RAINWOOD

數學中我們是從定義域給它施加乙個f,對映到定義域。這個f就是乙個對應關係,或者說對應法則,這種對映關係就是函式。程式中出現函式,意義是差不多的,程式設計的時候我們需要給函式賦予引數,這個引數其實就是定義域中的某個點。

滿足引數型別的所有元素的集合就是定義域。函式有返回值的,返回值的集合就是值域。void函式沒有返回值這種,其實相當於乙個語句,起到處理的作用如輸入,輸出和賦值。

這種函式,輸入輸出或者賦值的資料就是定義域,輸入給某個物件a,輸出到螢幕上,賦值給某個物件b。這裡a,螢幕顯示的東西,b。這三者就是函式產生的影響,也就相當於值域。

所以在我看來函式的定義是廣義的,就是對當前狀態經過某種有規律的法則變換成另一種狀態的關係。

為什麼數學概念中,將凸起的函式稱為凹函式?

心緣 凹凸性是相對的,是依據參考係而言的,參考係不同,凹凸性就不同,凹可以變成凸,凸可以變成凹。就比如說,凹 這個漢字,它是以下面的橫線為參照物的,那麼它是凹下去的。但是如果在 凹 上面畫一條橫線,那它相對於上面那條線就是凸起的。在日常生活中,我們通常預設把地面作為參考係。比如凸起的小土堆,相對於地...

為什麼會有函式式程式設計?

Jason Hu 這個問題就是跟問 為什麼會有數學,數學是為了解決什麼問題 是乙個意思。基於lambda calculus的語言比基於TM的語言具有更數學含義。實際上,任一形式邏輯系統都對應一種函式式語言。相反,基於TM的語言自成一系,並無法繼承數學和邏輯系統裡的知識架構。另外,基於TM的程式語義也...

程式設計 和 數學 的關係是什麼?

酷酷 數學不好不代表程式設計就學不好,但反之,程式設計學的好,數學就不會太差!學習程式設計可以培養邏輯思維,而且對數學理解 嚴謹理念 解決問題能力 動手能力和創造力的培養都有很大幫助,如果數學不好,通過學習程式設計反而對數學非常大的提公升。 ruby是一種不錯的語言,但是趕不上python,數學還是...