設計一門編程語言的話,你認為最重要的一定要有的特性會是哪些?
希望大家分享你們喜歡的語言特性。
有一個effect system。最起碼,你看著一個東西的類型簽名要能告訴我這玩意兒有沒有副作用。。
first class function/high order function
static type system(dynamic typing不過是其特例)不要oop(強行把一個二維的dispatch matrix拍成有限個一維向量是強行和自己過不去)parameterized modularity(有點類似於sig吧這樣可以完全把項目分成很乾凈的幾塊而不影響實際效率)
不要lazy eval(這樣會使value里混進一堆亂七八糟的求值過程,破壞數據結構的數學性質)不要有Null pointer(嚴重影響編碼效率,是just就是just,是nothing就是nothing)咦這不就是SML呀老師為什麼沒啥人用呢【大霧個人口味:
- 語法噪音少, 保護手指和眼睛
- 簡潔: 正常寫代碼不換行的話, 99.9% 的行都不需要超過 90 個字元
- 支持 lambda 式的 map, filter, sort 等常用集合操作
- 模式匹配, 最好支持 bitstring 的模式匹配
- 重量輕, 安裝編譯簡單快速, 最好不是二奶語言
- 調用 C 庫很簡便
要我做的話我一定會加上 Undelimited Continuation。類型系統的話,Haskell 的那套就可以,不過我會加上 m-ary class 來處理類似 Convertible 這樣的約束。KFFD 和 GC 看情況。
謝邀,我對如何設計一門編程語言思考不多,也無意自己去設計一門新的編程語言。從使用編程語言方面來說,對於一門通用編程語言,圖靈完備是基本的必要條件。另外比較重要的是語法要簡潔,概念要清晰,不要有過多冗餘的東西。但最最重要的我覺得是要可以很好的幫助程序員建立抽象的東西,可以在高層抽象中方便的操作抽象的數據和函數,數據和函數要有良好的可組合性。在底層抽象中能很好的貼近硬體,生成硬體可以高效執行的機器碼。可以在程序的源代碼中比較方便的通過語言支持的特性來控制底層抽象的數據和函數,以利於生成高效的代碼,生成能高效的並行執行的代碼。
s表達式,開發編譯器也方便,用的人寫宏也很方便
瀉藥,做為Scala粉,這是一套送分題。
當然,不是說Scala就是完美答案。
代碼,對碼農而言,是用來寫給CPU的情書,可惜,兩位國籍不一樣,有溝通障礙。
一門編程語言,應該做到至少幾個點1. 描述無異意
2. 有限關鍵字3. 高度抽象在已經有這麼多語言的情況下,再去發明一門語言最重要的是確定清楚新語言做什麼?
如果現在還推出一門無所不能的語言,我覺得肯定會失敗。
所以最重要的特性就是如何支持主力業務每個語言有具體風格,我做伺服器開發的,設計語言主要看檢查嚴格(靜態類型,少undefined behavior)、穩定性(自動管理內存,不要動不動崩)、性能(關鍵模塊能用C等優化)、現有組件結合(和現有語言無縫結合)和高並發(協程)等
基本上照著現在的C++做一些改進就好。
值語義是必需的。
RAII是必需的。move和ownership是必需的。
單層引用(比如T)是必需的,也就是說,不要有引用的引用(比如T**)。總之有一個很重要的點就是Zero runtime overhead。
另外,一個設計的不錯的宏/模板系統也是必需的。Concept是可選的。
雖然常規的泛型系統足以支撐一般的應用需求,但是如果有一個支持(partial) specialization且編譯時structural typing的模板,無論是應用/炫技還是作死都是必備神器。如果真的要比C++多什麼的話,統一ABI吧。first-class function和pattern matching,反射,一個足夠好的操作符重載系統,currying
圖靈完備……其他的隨時代和開發者喜好隨意
內置自動與女孩子聊天插件,畢竟代碼第一。
1st class function 和 純粹 OOP 貌似略有衝突啊... 不過不要求辣么純粹的話倒是很好辦
大括弧不換行會報error
有全功能的編譯時,語義體系符合使用場景,類型可約束或者可分析,有FFI,不要太adhoc
設計一台車的話,你認為一定要有的特性是哪些?
我這有一套祖傳的馬具,一定要能用上。不管在哪,一說它的名字,就會引起一場戰爭。
我要做一個基於關係的語言。
按照我自己的想法:首先必要的是邏輯運算、關係運算。
甚至可以把Prolog那種謂詞運算包含進去。除了都要有的嚴格計算外,再包括惰性計算。
採用消解率。
類型系統要有,可以採用C++那種靜態型,也可以採用Python那種動態型。
模型架構要有,可以採用OO那種面向對象的模型。
域要有。打算加一個域運算。
運行方式要有。一般來說,命令式語言是自上而下的。
總地來說類似於Prolog + Lisp + C++,不過四不像就是了。OO為主,有GC並且效率不低,泛型好用,語法糖足夠就好(不要像Perl那樣到處都是為了少寫幾個字而發明出來的奇怪變數),有反射,帶一點函數式特徵
嗯,你想到了哪門語言?推薦閱讀:
※怎樣用簡單的語言解釋 monad?
※函數式編程中cps(continuation-passing style )是什麼意思?
※函數式語言的缺陷是什麼?
※為什麼 pattern matching 常常出現在函數式編程語言?
※python協程是什麼?