漢語程式設計語言,簡稱“漢語言”,或者“漢編”, 即沈志斌教授發明的一種電腦程式設計語言。它是一種採用漢民族語言文字進行電腦編程的語言系統,支持基於漢語字、詞編程,符合計算機符號語言規範,並繼續向自然語言發展。它已經取得國家專利,國家發明專利號: ZL 94 1 07330.0 國際專利主分類號:G06F 17/00)。 中國是個多民族的國家,語種眾多,有:漢語,藏語,滿語等;中文字型也非常多,如篆書、金書、隸書、楷書等。嚴格來說稱“漢語編程”而不稱之為“中文編程”。因為,漢語是中國的官方語言,所以,但一般情況下,稱中文編程時,也特指漢語編程。 漢語程式設計語言,是中文程式語言的一個分支,但由於研發時間比較早,當時中國大陸少有其它中文程式語言面世,所以,發明者也稱其為“漢語編程”。 在當今中文程式語言發展多樣化的情況下,我們一般簡稱沈志斌教授在二十世紀九十年代實研發的漢語程式設計語言為“漢編”,簡稱吳濤先生在二十一世紀初研發的易語言漢語編程為“易語言”。
基本介紹
- 中文名:漢編
- 外文名:HanBian
- 創始人:沈志斌
- 創始時間:1984年
- 類 別:電腦程式設計語言
- 執行方式:既能解釋執行,也能編譯執行
- 創新理念:數摞
- 表達式:後綴
定義,編譯原理,特點,編程,詞典,發展歷程,異同,編程實例,製作簡視窗,新詞編寫,數摞操作,發明者簡介,
定義
漢語程式設計語言,簡稱“漢語言”,或者“漢編”, 即沈志斌教授發明的一種電腦程式設計語言。它是一種採用漢民族語言文字進行電腦編程的語言系統,支持基於漢語字、詞編程,符合計算機符號語言規範,並繼續向自然語言發展。它已經取得國家專利,國家發明專利號: ZL 94 1 07330.0 國際專利主分類號:G06F 17/00)。 中國是個多民族的國家,語種眾多,有:漢語,藏語,滿語等;中文字型也非常多,如篆書、金書、隸書、楷書等。嚴格來說稱“漢語編程”而不稱之為“中文編程”。因為,漢語是中國的官方語言,所以,但一般情況下,稱中文編程時,也特指漢語編程。 漢語程式設計語言,是中文程式語言的一個分支,但由於研發時間比較早,當時中國大陸少有其它中文程式語言面世,所以,發明者也稱其為“漢語編程”。 在當今中文程式語言發展多樣化的情況下,我們一般簡稱沈志斌教授在二十世紀九十年代實研發的漢語程式設計語言為“漢編”,簡稱吳濤先生在二十一世紀初研發的易語言漢語編程為“易語言”。
編譯原理
特點
漢編系統是一個互動式的程式設計環境,最初是為程式設計師在小型和微型計算機上開發應用程式而設計的。主要套用於科學計算和工業控制,比如儀器、機器人、過程控制、圖形和圖像處理、人工智慧和商業套用。 漢編語言的主要優點是軟體開發快速、互動式、計算機硬體的高效使用等。
漢編語言與傳統語言最大的不同是它的可擴展性。 漢編語言的編程過程就是定義新的詞,詞實際上就是語言的新命令。詞可以用一系列以前定義的詞來定義,這個過程與教育孩子的過程相似:我們總是用孩子們以前理解的概念來教給孩子們新的概念,而這些詞被稱為“高級定義”。同樣,新的詞也可以用彙編代碼定義。
可擴展性的結果是我們在開發一個套用的同時,也間接地開發了一個特殊的、針對這一類套用的“面向套用的模組,它可以用於或者經過修改之後被用於相似的套用。
漢編語言的可擴展性並不僅僅是為語言自身增加新的命令,所以不要把定義詞與傳統高級語言定義函式、過程等同。漢編系統還能對定義詞(建詞)進行擴展,創建一個可以定義其它詞的詞,這種詞被稱為“定義詞”。在創建這樣一個定義詞的時候,程式設計師能夠指定它所創建的詞在編譯時間、運行時間或者這兩種狀態下的特殊行為。這個能力允許我們定義特殊的數據類型,並對其行為和結構實施完全的控制。又由於這種詞的運行時行為可以用高級語言或者彙編語言來定義,所以由定義詞創建的詞將具有與其它漢編詞一樣的性能。系統也允許我們增加一個新的“編譯指示符”以實現特殊類型的循環或者其它的控制結構。 比如,漢語言定義一個程式變數的 詞:給,其代碼大概如下:
編 給 ( 32位數 -<變數名>- ) \ 編譯時
( --- 32位數 ) \ 運行時
建詞 可用地址 4 位元組空出 寫
動作 讀
。
定義變數時
5 給 變數一
則 5 被自動寫入 變數一的實體域中
運行“變數一”時
變數一
則 變數一 實體域中的數字 5 被自動讀取,放到數摞上
編程
漢編詞可以使用以前定義的詞或者彙編代碼來定義,它們與其它語言的子程式相似,也與其它語言的命令等效。 漢編系統允許我們在鍵盤上打入一條指令的詞名,這個詞將被立即執行。然而,如果我們把功能的詞名放到定義中,將編譯成對於這個詞的引用。
高級詞是由其它詞的集合來定義的,我們可以把這個過程想像成是其它語言的宏。新的詞被加入到它們可以使用的存儲器中,其定義被加入到詞典中。在一個漢編詞的命名規則中,只有很少的幾個字元不能作為詞名使用。
當遇到一個詞的時候, 漢編系統就通過詞典搜尋希望找到這個詞的定義,如果找到這個詞定義的功能,或者被立即執行,或者作為引用而被編譯到新的定義中。然而,如果在詞典中沒有找到這個詞,系統就試著把它轉換成一個數。如果轉換成功,就把它放在數摞上。如果不能轉換成數字,就顯示這個未定義的詞名並列印出一個錯誤的信息來報告這個詞是系統所不知道的。
漢編詞的執行流程大概可以用一個詞來模擬如下:
編 查詞測試
{ \詞名串 -- }
255個位元組空給 詞名串
詞名串 255填0
詞名串 字串傳送
詞名串 (查詞)
0=
就
計位元組
串>數
就
♀
否則
字串"未定義"詞名串 字串+傳送
詞名串 計位元組
回車 印字串
全復位
然後
否則
執行
然後
。 ★
字串" 看數摞" 查詞測試 數摞已空! ★
字串" 123456" 查詞測試 ★.
看數摞 [1] 123456 ★.
顯 123456 ★
字串" 看方法" 查詞測試
看方法未定義
漢編系統編譯流程如右圖(流程圖來源:漢編新浪部落格)所示。
漢編語言堅持“結構化程式設計”原理:
· 詞必須在引用之前被定義;
· 邏輯流限制只有順序、條件和循環,有專門的詞用於實現常用的程式控制結構;
· 程式設計師使用許多小的、獨立的模組(詞)來實現最大的可測試性和可靠性;
這種方法有兩個明顯的優點
· 新的詞總是用以前定義和測試過的詞來構造,所以調試更容易。模組可以單獨執行以測試它的功能;
· 固有的模組性使漢編語言成為一個“設計性語言”,允許自頂向下的設計同時保持自底向上的測試。一個詞可以在不同的程式中使用,但是它的功能只需要定義一次;
這些都保證了漢編軟體能夠快速和有效地被開發,同時,如果管理得當,也可以作為自身文檔的基礎。
漢編語言的5個主要元素決定了它的特點:
· 一個詞典;
· 鍵盤(輸入流)解釋器;
· 一個編譯器;
· 虛擬存儲;
詞典
詞典是漢編定義詞的數據和代碼存儲空間,也為編譯建立了詞的索引。詞典中的詞包括漢編程式代碼詞、常數定義詞、變數定義詞、不定量定義詞,面向對象部分還有模板、對象、對象事件、訊息。
詞是由“定義詞”加入詞典的,最常用的定義詞是“ 編 。”當“編”執行的時候,馬上就把後面的詞名掃描,建立一個詞典項,然後進入“編譯”模式。有許多不同的編譯方法,最常用的是“串線編碼”,這種方法把定義編譯成一系列以前定義詞的地址引用。詞的定義由“。”(句號)結束。下面就是一個詞的定義:
編 平方 ( -- ) ♂ * 顯 。
當一個詞名項被編譯到詞典中的時候(稱為定義的首部),它包含一個指向詞典中前一個首部的指針。新詞的詞名加入詞典(這裡就是 平方 ),接著一個指向詞名為“( 編 )”子程式調用的指針編譯到詞典中作為定義的第一部分,這個指針指向一段在解釋定義體時需要執行的代碼。當然,這裡所說的不是唯一的編譯技術,但它的套用最為普遍,這種技術稱為間接串線編碼,因為定義中的第一個項目是一段代碼的引用,這段代碼知道如何解釋定義的其它部分。
定義的其它部分稱為這個定義的體。在編譯模式下,系統將依次尋找每個詞的首部。每個首部地址依次放到定義體中,這樣就產生了一個地址列表。最後在到達“。”時,詞名為“。”的子程式地址被編譯進詞典。“ 。” 子程式用來將控制返回到調用詞,就像一個子程式返回一樣。
發展歷程
漢編的發展早於 1993 年,看起來像Forth,是中國人自己研發的完全以漢語為描述語言的電腦程式設計語言,它完全具有中國自主智慧財產權。作為一種計算機語言,它和現在流行的大部分計算機語言具有一些共同的特點,都是人機對話必須的工具語言。但該語言絕非曾流行過的任何一種計算機語言的簡單漢化,或是為某種軟體製造一個中文環境。這是一個完全由中國人自行開發,由中國人自我掌握全部原始碼,從形式到內容全面符合中國人的思維方式,使用漢文字表達的面向對象、面向問題電腦程式設計語言。“漢語編程”具有自成平台、面向對象、面向問題、所見即所得、高度安全性、強大的繁衍功能、高度兼容性以及資源占用少、速度快等特點,開闢了計算機語言發展的新紀元。
1984年-1989年:漢語編程的基礎構想和基礎算法及其基本功能驗證階段九十年代,沈志斌的漢語編程初步推出。並申請了“漢語編程單片機”專利。
1990年-1994年:漢語編程嵌入式系統的開發及套用的階段;
1994年《漢語程式設計語言》一書由電子出版社出版,為漢語編程技術建立了基礎標識。
1995年-1999年:漢語編程嵌入式系統,在多種行業中套用及windows平台,漢語編程系統發展階段;隨著世界信息技術的發展,漢語編程技術在與新技術的對接和兼容上的靈活性已獨具特點。
2000年-今 :漢語編程嵌入式系統、漢語程式設計語言、漢語編程資料庫開發環境、軟體工程整體發展階段;這期間,用漢語編程開發出具有廣泛套用價值的民族計算機技術體系,在教育及軟硬體開發領域廣泛套用。
異同
漢語編程 | JAVA | C++ | |
編譯 | 編譯機器碼 | 編譯為位元組碼 | 編譯為機器碼 |
執行 | 可選擇CPU直接執行或虛擬機中執行 | 在虛擬機中執行 | 由CPU直接執行 |
完全面向對象 | 完全面向對象 | 支持面向對象 | |
結構 | 詞典結構,及標準類庫,可擴展第三方類庫 | 標準類庫 | 標準類庫較小, 但第三方類庫非常豐富 |
跨平台 多CPU | 支持同一個原始碼未經修改在其它平台下編譯生成多CPU運行目標 | 支持 同一個程式或類庫未經修改或經少量修改可在其它平台下運行 | 支持(但在多執行緒、網路、文本編碼轉換等領域需第三方類庫支持) |
多執行緒 | 支持 | 支持 | 第三方類庫支持 |
支持 | 支持 | 部分支持 | |
網路 | 支持 | 支持 | 第三方類庫支持 |
語言複雜度 | 非常簡單 | 較簡單 | 較複雜 |
學習難度 | 容易 | 較容易 | 較難 |
IDE支持 | 自行開發,會支持很好 | 支持很好 | 支持較好 |
啟動方法 | 編: 進入() :編。 | public static void main(String[] args) | int main(int argc, char** argv) |
著作權費用 | 自主智慧財產權, 著作權費用低 | 美國智慧財產權, 著作權費用高 | 美國智慧財產權, 著作權費用高 |
編程實例
製作簡視窗
1、在編譯器上輸入如下(不包括實心五角星)代碼
2、運行結果如下:
3、上面程式代碼結構如下:
擴展對象 <用戶自定義視窗名稱> 繼承自 視窗對象模板
對象。
啟動: <用戶自定義視窗名稱>
新詞編寫
漢語言的視窗編程還是好理解的,初學者往往對數摞不太容易理解,主要是 數據運算比較抽象了,傳統程式語言的參數都用變數來標識,而漢編語言的指令參數可以直接通過數摞來提供,這樣就造成了抽象性加強。當然,初學者,可以不使用數摞來傳遞參數,比如,平方的編寫。
1、使用變數 來傳遞參數 如下:
編 平方
{ 底數 \ -- }
底數 底數 *
。
(( 雙括弧裡邊的內容為解釋
註: 平方 { 底數 \ -- } 相當於 傳統編程中的 平方(底數)
其中 { 這裡為輸入參數 \ 這裡為中間變數定義 -- 這裡為輸出結果 }
直接使用數摞傳遞參數,這些可以不定義
))
2、使用數摞直接傳遞參數如下:
編 平方
♂ *
。
(( 雙括弧裡邊的內容為解釋
平方的計算過程為:
其中 { 這裡為輸入參數 \ 這裡為中間變數定義 -- 這裡為輸出結果 }
直接使用數摞傳遞參數,這些可以不定義
))
2、使用數摞直接傳遞參數如下:
編 平方
♂ *
。
(( 雙括弧裡邊的內容為解釋
平方的計算過程為:
數1 * 數1在漢編中,用後綴表示法表示 為:
數1 數1 *
簡化為:
數1 ♂ *
數1 數1 *
簡化為:
數1 ♂ *
♂ 的功能是 複製數摞頂層的一個數,這裡即複製 數1
我們在編寫平方這個詞的時候,就要考慮到,平方的功能,平方,這個詞必須能計算所以數字的平方值,所以,底數不能放在 詞(指令 或 函式)裡邊,必須通過參數提供,因此,就有如下形式:
編 平方
♂ *
。
這樣,在初學才看來,就顯得抽象了,我們看到這個詞的時候,第一感覺就是要想到,這個詞,有一個參數,而 ♂ 複製的 數字正是參數,這樣才能理解 平方 這個詞的含義。
有人會說,假如,有些新詞參數有多個,非復複雜,用戶無法判斷參數的是什麼,有多少,又怎么辦呢,其實,漢編中,也有標準的參數 解釋法則,上面的平方 新詡編寫, 規範的形式如下:
編 平方 ( 數字1 --- )
♂ *
。
注 參數注釋採用 ( 輸入參數 --- 返回結果 ) 的形式,當然,這只是注釋而已,這裡產沒有定義任何變數、字元串之類的。
))
我們在編寫平方這個詞的時候,就要考慮到,平方的功能,平方,這個詞必須能計算所以數字的平方值,所以,底數不能放在 詞(指令 或 函式)裡邊,必須通過參數提供,因此,就有如下形式:
編 平方
♂ *
。
這樣,在初學才看來,就顯得抽象了,我們看到這個詞的時候,第一感覺就是要想到,這個詞,有一個參數,而 ♂ 複製的 數字正是參數,這樣才能理解 平方 這個詞的含義。
有人會說,假如,有些新詞參數有多個,非復複雜,用戶無法判斷參數的是什麼,有多少,又怎么辦呢,其實,漢編中,也有標準的參數 解釋法則,上面的平方 新詡編寫, 規範的形式如下:
編 平方 ( 數字1 --- )
♂ *
。
注 參數注釋採用 ( 輸入參數 --- 返回結果 ) 的形式,當然,這只是注釋而已,這裡產沒有定義任何變數、字元串之類的。
))
數摞操作
同義詞 複製 ♂ ★
看數摞 數摞已空! ★
5 ★.
看數摞 [1] 5 ★.
複製 ★..
看數摞 [2] 5 5 ★..
摞初始 ★
編 平方
複製 * 。 ★
2 平方 顯 4 ★
3 平方 顯 9 ★
看數摞 數摞已空! ★
5 ★.
看數摞 [1] 5 ★.
複製 ★..
看數摞 [2] 5 5 ★..
摞初始 ★
編 平方
複製 * 。 ★
2 平方 顯 4 ★
3 平方 顯 9 ★
((
從上面代碼可以看出,漢語言代碼和C語言在表達形式和編譯方式上是有本質的不同的,下面通過對上面發出的小代碼注釋,來體驗數摞操作:
示例代碼如下(下面是在編譯器上輸入的漢語言代碼,不含實心五角星和“看數摞”、“顯”後面的內容,斜槓後面為,為代碼解釋):
漢編語言中,用反斜槓來表示單行解釋,用雙括弧表示多行解釋。
漢編採用詞典式架構,因此,漢編指令,即漢編詞,漢編詞分為編譯器已有的系統詞和用戶新編的新詞。
在漢編編譯器上,輸入一條指令 按回車鍵後執行,★ 號表示執行成功。
從上面代碼可以看出,漢語言代碼和C語言在表達形式和編譯方式上是有本質的不同的,下面通過對上面發出的小代碼注釋,來體驗數摞操作:
示例代碼如下(下面是在編譯器上輸入的漢語言代碼,不含實心五角星和“看數摞”、“顯”後面的內容,斜槓後面為,為代碼解釋):
漢編語言中,用反斜槓來表示單行解釋,用雙括弧表示多行解釋。
漢編採用詞典式架構,因此,漢編指令,即漢編詞,漢編詞分為編譯器已有的系統詞和用戶新編的新詞。
在漢編編譯器上,輸入一條指令 按回車鍵後執行,★ 號表示執行成功。
))
同義詞 複製 ♂ ★
\ 解釋:通過 同義詞 這個系統詞將新詞 複製 定為與♂功能相同(同義)。
看數摞 數摞已空! ★
\ 系統詞:看數摞,是用來查看數摞上的數的,現在,查看結果:數摞已空,說明數摞上沒有數
5 ★.
\ 在數摞上放入一個數:5
看數摞 [1] 5 ★.
\ 用看數摞 系統詞查看數摞上的數,發現數摞上有一個數:5 (中括弧內的數為數摞上數的總個數,中括弧後面為數摞上所有數字的顯示
複製 ★..
\ 執行剛才定義的新詞:複製,試試看能不能將數摞上的數複製
看數摞 [2] 5 5 ★..
\ 查看結果表明,數摞上的數變為兩個,說明,複製 這個詞正確
摞初始 ★
\ 用 摞初始 這個系統詞 來清除數摞上的數,使數摞為空
編 平方
複製 * 。 ★
\ 編寫新詞:平方 在漢編中,一個指令(詞)的編寫以 編 開頭,以 。 結尾
2 平方 顯 4 ★
\ 測試新詞:平方 ,如上計算:2的平方(系統詞:顯,意思將數摞上的一個數顯示出來)
3 平方 顯 9 ★
\ 再次測試:平方,如上計算:3 的平方
\ 當然,我們也可以用 看數摞來查看計算結果
摞初始
2 平方 看數摞 [1] 4 ★.
\ 測試新詞:平方 ,如上計算:2的平方
3 平方 看數摞 [2] 4 9 ★..
\ 再次測試:平方,如上計算:3 的平方
(( 注意:顯 這個詞 僅僅是顯示數摞上的一個數,而看數摞,是查看數摞上的所有數;顯 這個系統詞顯示數摞上的數的時候,同時會清除在數摞上顯示的該數,而 看數摞 這個詞僅僅是查看數摞上的所有數字,而不會清除數摞上的數字。 ))
同義詞 複製 ♂ ★
\ 解釋:通過 同義詞 這個系統詞將新詞 複製 定為與♂功能相同(同義)。
看數摞 數摞已空! ★
\ 系統詞:看數摞,是用來查看數摞上的數的,現在,查看結果:數摞已空,說明數摞上沒有數
5 ★.
\ 在數摞上放入一個數:5
看數摞 [1] 5 ★.
\ 用看數摞 系統詞查看數摞上的數,發現數摞上有一個數:5 (中括弧內的數為數摞上數的總個數,中括弧後面為數摞上所有數字的顯示
複製 ★..
\ 執行剛才定義的新詞:複製,試試看能不能將數摞上的數複製
看數摞 [2] 5 5 ★..
\ 查看結果表明,數摞上的數變為兩個,說明,複製 這個詞正確
摞初始 ★
\ 用 摞初始 這個系統詞 來清除數摞上的數,使數摞為空
編 平方
複製 * 。 ★
\ 編寫新詞:平方 在漢編中,一個指令(詞)的編寫以 編 開頭,以 。 結尾
2 平方 顯 4 ★
\ 測試新詞:平方 ,如上計算:2的平方(系統詞:顯,意思將數摞上的一個數顯示出來)
3 平方 顯 9 ★
\ 再次測試:平方,如上計算:3 的平方
\ 當然,我們也可以用 看數摞來查看計算結果
摞初始
2 平方 看數摞 [1] 4 ★.
\ 測試新詞:平方 ,如上計算:2的平方
3 平方 看數摞 [2] 4 9 ★..
\ 再次測試:平方,如上計算:3 的平方
(( 注意:顯 這個詞 僅僅是顯示數摞上的一個數,而看數摞,是查看數摞上的所有數;顯 這個系統詞顯示數摞上的數的時候,同時會清除在數摞上顯示的該數,而 看數摞 這個詞僅僅是查看數摞上的所有數字,而不會清除數摞上的數字。 ))
發明者簡介
沈志斌 1956年9月8日生於南京,1974年12月入伍。1983年曾因發明“發動機不解體測功儀” 而獲全軍科技成果進步獎, 並榮立一等功, 並破格保送到解放軍南京工程學院本科班深造, 畢業後分配到北京軍區指揮自動化工作站任工程師。漢語編程的基礎構想和基礎算法及其基本功能驗證, 便始於此。1995年沈志斌離開部隊後, 曾分別就職於航天工業部和信息產業部, 後到國家漢語編程研究院和北京國之經典漢語編程科技總公司任總工程師。沈志斌之於漢語編程就當相比爾·蓋茨之於windows作業系統。沈志斌和他的團隊歷經20多年的研發,終於讓漢語成為一種新型的計算機語言, 並廣泛套用在編程中。其成果有:《漢語程式設計語言》、《漢語編程基礎教程》﹑漢語編程資料庫開發環境、漢語編程單片機的計算機系統(專利)、非接觸式IC卡可程式讀寫器(專利)等等。 但是任何一項影響較大的發明都不應該是一個人的功勞,而應該歸功於人類歷史的進步,就像漢語編程的發明就是根源於中國五千年的燦爛文明,中國具有世界上最多人口的語言民族,漢語編程是必然應該被開發出來也必然應該被廣泛利用的。