一個強大、優美的編程語言應該具備哪些特性?


一個「強大而優美」的編程語言為了確保語義嚴謹性必然會分層,然後上層就會為了加入哪些 Feature 吵得不可開交,最後形成一個 core language 和一堆 surface language……


強大而優美的語言?

一般都是變得越來越強大……

若干年後,一種問題有九種解法。

優美再沒人提了……

直把強大作優雅……

P.S. 我覺得編程語言強大而優雅的最小集特性是:有高階函數,有lambda,有模式匹配,有模塊,有簡單夠用的OOP,有並發支持(不論是語言核心還是庫支持)。


1.零代價抽象

2.行為可推知

3.mixin

4.代數數據結構

5.高階函數和currying

6.模板匹配

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等毫無底線的下流產物為什麼會如此流行,就是這個原因。

如果想要實現一個優美強大的編程語言,一定要知道,那是不可能成為主流的,而只能是小眾,因為能認知良幣,喜愛良幣人,很少很少。


最大的特性莫過於飽受爭議


推薦閱讀:

美是直覺的還是反思的?
「唯美」是一種初級的審美層次嗎?藝術上、美學上對「唯美」是怎樣一個認識過程?
侘寂美學是什麼?
人類的審美是否存在極限?
為什麼日本文學中屢次出現死亡美學?

TAG:編程語言 | 編程 | 美學 | 函數式編程 | 計算機體系架構 |