天天看點

程式設計範式與程式設計語言

一、綜述

範式是語言的核心;

語言是範式的表現形式。

程式設計範式是程式設計語言的核心特征。

二、程式設計範式

 程式設計範式的核心是:世界觀、思維方式、思想、體系;

程式設計範式的表現形式就是一組概念和規則、(邏輯)體系的集合;

實作了程式設計範式的程式設計語言需要對這些概念、規則作出定義、解釋和運作支援。

程式設計範式是基于數學理論或一組特定原則的方法,每一種範式支援一組概念。

範·羅伊信仰多範式程式設計語言:

解決一個程式設計問題,需要選擇正确的概念;解決多個問題,則需要組合分屬不同部分的多個概念。況且,許多程式需要解決的問題本來就不止一個。“理論上,一門語言應該以良好的方式支援多種概念,這樣程式員就可以在需要時選擇合适的概念,不受他人所累。”說得很直覺,但我覺得也有潛在缺點:閱讀這種語言的源碼時,需要精通多種範式,并了解它們是怎麼互相影響的。(範·羅伊可能在說“良好的方式”時考慮過如何改正這種缺點:真正的多範式語言應該避免跨範式幹擾,而不僅僅是支援一大堆概念)。正如範·羅伊本人在後面讨論狀态時所說的:“關鍵在于選擇具有正确概念的範式。概念太少,則程式比較複雜;太多,則推理比較複雜。”

https://www.cnblogs.com/feng9exe/p/11052037.html

三、程式設計語言

每一種程式設計範式都是一種解決方案;

程式設計語言的實作就是要選擇解決方案和世界觀、思維方式的集合。

并為這些集合的概念和規則提供實作支援。

同一種程式設計範式在不同的語言中提供的實作細節可能會不同:比如oop,c++提供的是虛函數表機制,oc提供的是動态派發機制。

四、語言、原生範式、二次範式

由語言提供方提供的語言中預設支援的範式稱為原生範式。

比如c++的oop、泛型;

java的oop、泛型、注解;

swift的oop、面向協定、函數式、泛型等。

二次範式是程式設計語言原生沒有提供,有第三方庫提供的範式。

比如rxjava、rxjs等rx系列。

第三方庫給程式設計語言添加範式,是在原聲語言的基礎上進行二次開發,提供新引入的範式的概念、規則等支援。

五、程式設計範式是思想、思維、世界觀和邏輯體系。

1. 自然觀/世界觀——觀念範式:指看待世界、運用科學的不同方式。

2. 學科的邏輯體系——規則範式。在科學實際活動中,各種被公認的規範,如定律、理論、應用以及儀器裝置、工具等等,組成了一個邏輯體系。這一體系通過專業教育,為從事該領域的人——科學共同體,規定了思考架構,并形成一種科學習慣和科學傳統。科學共同體從同一模型(規則範式)中學習專業基礎,是以他們不會再在基本原則方面碰到重大分歧。

------------------越是喧嚣的世界,越需要甯靜的思考------------------

合抱之木,生于毫末;九層之台,起于壘土;千裡之行,始于足下。

積土成山,風雨興焉;積水成淵,蛟龍生焉;積善成德,而神明自得,聖心備焉。故不積跬步,無以至千裡;不積小流,無以成江海。骐骥一躍,不能十步;驽馬十駕,功在不舍。锲而舍之,朽木不折;锲而不舍,金石可镂。蚓無爪牙之利,筋骨之強,上食埃土,下飲黃泉,用心一也。蟹六跪而二螯,非蛇鳝之穴無可寄托者,用心躁也。