太極語言出世 比C 更好的語言

2021-04-06 16:08:38 字數 3570 閱讀 6192

太極語言出世----比c++更好的語言

我設計了一種新的計算機語言--太極語言,英文名the universe language。

我是2023年秋天開始做太極語言的,(我是微波專業衛星通訊方向的,當時我正在編乙個非常複雜的程式,那個程式要自動做微積分自動推導一些電磁場與電磁波方程,用c++編覺的不夠靈活,於是下決心做一套自己的編譯器實現自己的語言)

下面我簡單介紹一下太極語言。

(一)太極語言實現了「概念的概念」,太極語言中的這種「面向概念的程式設計」將有深遠的意義。太極語言講究「所思既程式」,怎麼想怎麼編(hthc -- how thinking how coding)。

do_sth(int fc1(int a))

do_sth(int fc2(int a,int b))

do_sth(int fc3(int a))

do_sth(int fc4(int a))

編譯後這就成了一組函式,

int fc1(int a)

int fc2(int a,int b)

int fc3(int a)

int fc4(int a)

規則還是剛才的規則:依次第n個引數用後面第n個括號中的**來代換,最後乙個可以用{}。

這是非常奇妙的,你現在可以自己試著寫一段公用退出**。

其實在太極語言中while,if等控制語句都是這樣基於概念虛擬出來的。

比如定義while概念

code while(a)

後while(i<100)

被編譯成

sign:

n=n+i;

i++goto(i<100) sign;

(goto(i<100) sign;是條件goto語句,就是if(i<100) goto sign。另外sign是乙個標號編譯自增量,這個以後再說了)

基於概念的程式設計可以方便的控制非線性上下文相關**。比如有進入和退出模式的**。

例1:code usepointer(code pointertype,code pointer,code c)

usepointer(int,p)

想想這個編譯後是什麼了?

是:int * p=new int;

……delete p;

但是delete的語句不用寫了,會自動產生這句話。一次定義,到處使用。在標頭檔案裡包含usepointer的定義。好了,這樣可以自動解決一大部分可能造成記憶體洩露的**了。

usepointer(int,p1)

}這個呢?會被編譯成什麼?

再舉乙個例子

例2:code paint(a)

paint

被編譯成什麼了?

hdc=beginpaint(hwnd, &ps);

textout(hdc,0,0,str, strlen(str));

endpaint(hwnd, &ps);

限於篇幅,這裡不多講了,而且概念的設計還可以繼承,還有「**裝配」的概念,就象機械裝配,電路搭配那樣,非常有趣。

太極語言非常講究怎麼想怎麼編(hthc)。看前面那個chain_show,是不是思維的直接描述?

void chain_show(chain * pchn)

}太極語言提出了基於概念描述的程式設計模式,這是根據模擬思維的原則做的。認識世界,通過概念的設立與關聯應用。 比如我們剛才的例子中,遍歷就是乙個概念,每乙個概念都單獨用乙個模組表示,概念間的關係用模組的組合來描述。

這是比現在流行的「物件導向」,「泛型」更先進的模式。我可以預言,「基於概念」將是未來軟體開發的主要模式,因為這幾乎完全是在模擬人的思維形式。

以前的「函式」,「類」,「物件導向」,只是非常有限度的區域性部分模擬,「基於概念」將帶來更深遠的影響。

基於概念的**有極強的可復用性。你想想你自己頭腦中的概念這種東西被你思維是復用了多少次。

概念不只是描述靜態物體,而且對於執行狀態也同樣可以描述,比如剛才說的「遍歷」。數學上的定理都可以用概念的形式描述。

概念的實現不只是一種編譯器技術。還是乙個軟體總體設計工程的原則。

太極語言實現了垣的概念。一段包含進入與退出**的區域就叫垣,其中進入與退出**都可以為空。簡單一點的說,就是兩個括號一包就叫垣——這個字怎麼這麼形象呢。

太極語言中的函式,類,while等都是基於垣而實現的。垣可以無限巢狀。比如你可以在函式中再定義函式,甚至在if後面的()裡再定義另乙個函式,在表示式的()裡定義乙個類,……這都是可以的。太極語言的語法就是自由到這種程度。

(二)1.函式可以象類一樣繼承,從而大大的提高了復用能力

2.函式可以巢狀定義,有利於避免名字空間中的衝突。

3.對一般型別可以象類一樣新增成員函式

比如可以對int自己新增乙個tostr成員函式,

typedef出來的型別也可以新增自定義成員函式,

4.對變數也可以新增成員函式,

比如 int a,然後你可以對a 新增乙個onchange函式,a的值一被改變時就被觸發,或一用a做加法就被觸發——象觸發器的概念了。我是以前上vhdl課設計電路時想到這個觸發器概念是可以做到編譯器中的。

5.函式可以返回多個值,(從matlab中學來的)。

6.動態**(變形**),等效於**可在執行時改變自身。

7.對區域(比如函式體)設計了onenter,onout,可以自動觸發。

8.可以自己定義函式或類中變數的offset。

9.可以直接使用a**與機器碼。

………太極語言比c++描述能力更強更靈活,比c更貼近系統底層更可控。

我拓展了許多c++的基本概念,使其具有全面的普適性。

比如在設計函式繼承時,設定了有名體的概念——無論資料型別(類,結構,一般型別)還是變數還是函式都是有名字的,只要是有名體,就可以進行繼承,過載,……等一切操作,「一切有名體平等」。

最少的語法規則,最強的組合能力,最靈活又最表義的組合,最強的描述能力,最自由的語法……

太極語言在編譯時是完全動態的嵌入式**。

太極語言設計時是這樣考慮的:用最少的語法規則,通過最靈活又最表義的組合,實現最完備的編譯描述功能。

更少卻更靈活的語法規則,更強大的描述能力.

舉個例子

c++中 :templateclass cls

;這是幹什麼,不就是t1,t2是引數麼,看我的

class cls(code t1,code t2)

;這看上去多象函式的那種格式啊,這樣建立模板類多直觀。還有模板引數用()多好,為什麼非要設計個古怪的<>呢?

而且c/c++中

typedef count int;

struct student ;

class cls ;

看我的type count int;

type student ;

type cls ;

只要是定義資料型別就用type!

這也是可以的:

class cls(type t1,type t2)

;我覺得一種好的語言,不是在於設計了多少**規則讓你去遵守服從,而是設計的盡量少的規則,讓你去組合搭積木玩。這裡我與c/c++的對比不是說c/c++不好,c/c++有很好的組合靈活性與完備程度,但是我覺的c/c++仍然做的不夠好,所以我設計了太極語言。

(未完待續,今天先去睡覺,明天繼續,我的email:[email protected]

C 比C語言新增的特徵(一)

1.c 變數的定義可以在語句之後,隨時隨地定義變數,而c語言變數的定義則必須在函式內所有語句的最上方 c 變數可以隨時定義 include stdafx.h include int main int argc,char argv c語言定義變數必須在所有語句的最上方 include int main...

C語言while與do while迴圈的比較

凡是能用while迴圈處理,都能用do while迴圈處理。在一般情況下,用while語句和用do while語句處理同一問題時,若二者的迴圈體部分是一樣的,它們的結果也一樣。但是如果while後面的判斷表示式一開始就為假 0 時,兩種迴圈的結果是不同的。通過對比可以發現,當輸入 i 的值小於或等於...

(C語言)練習8 老 質價比

problem description 給出n件物品,每件物品有質量和 兩種屬性。你要做的是按質量公升序排序,若質量相同則按 降序排序。input 多組輸入。每組先輸入乙個正整數n 1 n n 100 代表有n件物品。接下來的一行有n個正整數wi 1 wi wi 10000 代表每件物品的質量。再接...