一個強大、優美的編程語言應該具備哪些特性?
01-06
一個「強大而優美」的編程語言為了確保語義嚴謹性必然會分層,然後上層就會為了加入哪些 Feature 吵得不可開交,最後形成一個 core language 和一堆 surface language……
強大而優美的語言?
一般都是變得越來越強大……
若干年後,一種問題有九種解法。
優美再沒人提了……
直把強大作優雅……
P.S. 我覺得編程語言強大而優雅的最小集特性是:有高階函數,有lambda,有模式匹配,有模塊,有簡單夠用的OOP,有並發支持(不論是語言核心還是庫支持)。1.零代價抽象2.行為可推知3.mixin4.代數數據結構5.高階函數和currying6.模板匹配
7.元編程和宏
8.靜態類型和強大的類型推斷9.精簡的內核,與c互操性很好10.社區和包管理工具都有自我編程
我以前覺得也許存在個客觀標準,現在我傾向與認為編程系統的好壞最終是品味問題
最完美的語言是和自己的品味100%匹配
也就是說,差不多得自己定義自己實現才行目前我的想法:1.聲明式編程
2.高階編程
3.元編程4.同像性(Homoiconic)5.極少語法(或無語法)6.極小核心7.面向語言編程(LOP)8.統一抽象數據容器9.閉包(lexical scoping)能大量產出「一行黨」的語言,才是最強大和最優美的。
就這樣。
表達能力強大,行文優美,高性能,一門編程語言只能同時擁有兩樣。XD
讓我來用一些具體的例子說明,
c, 有最高的性能,最少的內存印痕,能進行最底層的系統開發,豐富的社區資源(庫,源碼,文檔等)
c++, 繼承c的很多好處,而且有著類型安全,有OO/FP等多範式的開發方法, java/c#, 高性能,安全,解決了系統問題(虛擬機,內存管理/GC) lua/pthon/javascript, 動態性帶來的靈活,代碼短小,可嵌入 haskell/scala,極為強大的抽象能力,極強的表達能力當然這些所有的優點都集中在一個語言身上不太可能,而且不是只有強大,優美,就能成為主流,編程思想和實現也在進步,我認為有一些現在的語言正在接近上述的優點,scala, rust, 我較為欣賞自舉,有強大的開發者環境,友好的測試方式,各種編譯器支持,有大量成型類庫,合理的包發布和管理系統,編譯器隨波逐流學習各種新的好的語言特性。基於這種語言的各種架構和各種操作系統的編譯器、瀏覽器、操作系統、編輯工具的源代碼。新的架構會提供交叉編譯器。
從代碼庫里隨便拿出100行代碼, 找個沒接觸過這個語言的人, 看他10分鐘內能不能看懂。
看懂了, 就是優美的語言,看不懂,就不是。隨便想一個問題,在10分鐘內,構想在這個語言的框架里該怎麼做。
有清晰思路了,強大的語言,沒有,就不夠強大。但這根數學上的優美是兩回事。C#語言
內褲多,有啥需求都兜得住JAVA子孫多很多框架,這兒jar一橋,那兒jar一樓工具存在的意義就是節省人的時間,不管是節省用戶的時間,還是節省程序員的時間。一個介面,它看起來是幹什麼的,一用真是干這個的,這就叫優雅。一個介面,號稱是幹什麼的,拿到項目里真能用,就叫做強大。從這個意義上說,強大的不優雅,優雅的語言都不強大。
Q:一個強大、優美的編程語言應該具備哪些特性?
A:非主流
因為市場有一個強橫無比的自然規律:劣幣驅除良幣。現在的主流語言,沒有一個是正常的。語言本身垃圾的根本沒眼看。
這是有原因的,因為很多人自己不懂編程,更不懂數學,不懂計算機,所以更樂意於接受劣幣。所以那些主流的劣幣清一色都有龐大的生態圈、社區、學習資料。設計模式,UML等毫無底線的下流產物為什麼會如此流行,就是這個原因。如果想要實現一個優美強大的編程語言,一定要知道,那是不可能成為主流的,而只能是小眾,因為能認知良幣,喜愛良幣人,很少很少。最大的特性莫過於飽受爭議
推薦閱讀:
※美是直覺的還是反思的?
※「唯美」是一種初級的審美層次嗎?藝術上、美學上對「唯美」是怎樣一個認識過程?
※侘寂美學是什麼?
※人類的審美是否存在極限?
※為什麼日本文學中屢次出現死亡美學?