回覆列表
-
1 # 變換狂人傅立葉
-
2 # Jokerjoy
首先,我們先看一下百度百科上是如何定義函數語言程式設計的:
函數語言程式設計是種程式設計正規化,它將電腦運算視為函式的計算。函式程式語言最重要的基礎是 λ 演算(lambda calculus)。而且λ演算的函式可以接受函式當作輸入(引數)和輸出(返回值)。和指令式程式設計相比,函數語言程式設計強調函式的計算比指令的執行重要。和過程化程式設計相比,函數語言程式設計裡,函式的計算可隨時呼叫。從上文中我們可以看出,所謂的函數語言程式設計,和麵向過程程式設計、面向物件程式設計一樣,是一種程式設計的方法、程式設計的思想。
所以問題的描述並不準確,確切的說,C 語言可以使用函數語言程式設計的方法進行程式設計。
-
3 # 我低端就改我名
C是你說的面向物件或者面向函式的高等語言的實現語言。你可以用C進行任何正規化的程式碼型別開發。唯一的區別是,那些語言已經幫你制定了規範,而C語言需要你自己制定規範,比如制定一個定義特定型別函式指標的宏,然後所有具有callback特性的引數都必須用這個宏定義。C還能做的更多,可以實現各種正規化的混合開發。當然,學習C語言需要10年以上才能靈活使用它。但高等面向函式式語言只要一週就可以學習完畢,一個月就能實戰了。
首先給出結論,是。為什麼?
我們不妨先來從面向物件切入。
當我們將面向物件看作是語言的屬性時,c語言是面嚮物件語言嗎?眾所周知,c++,java等高階語言都是面嚮物件語言,而通常我們說c語言是面向過程的。這是因為c++與java對面向物件提供了很好的最佳化,透過類,成員變數與方法,繼承與多型,虛擬函式與過載等特性,我們就可以很詳細的抽象物件的模型。但是c語言中只有結構體,結構體內部不能定義函式,只能有成員變數,於是我們在用c語言抽象物件模型時遇到了很多困難,所以通常我們說c語言是面向過程的。
但是面向物件的提出是為了程式設計思想更好的演進,而不是作為劃分語言屬性。換句話講,面向物件的程式設計思想是與語言無關的。使用c語言的結構體,結合函式指標,我們也可以在c語言中實現c++中類的各項功能,只不過我們做了很多在其他高階語言中編譯器要做的事情,這對開發者而言很不友好,而且維護成本很高。
這裡我要說的是,如果你問我c語言是面嚮物件語言嗎?我一樣會回答是。因為面向物件是思想,不是劃分語言的屬性。
最後,我們回到問題上,函式式意味著我們可以將程式碼打包封裝,預留出介面,一個函式可以從介面呼叫其它函式的返回值,並將自身的返回值作為介面供其他函式呼叫。這同樣是一種設計思想,透過這樣的方式,我們很容易的可以將工程模組化,實現模組間的解耦。
無論是語言本身對於函數語言程式設計的支援與最佳化上還是從程式設計思想的實現上,c語言顯然都是符合這一特點的。