怎麼用中文設計程式語言?

時間 2021-05-06 00:49:53

1樓:

另乙個問題裡面的回答,這邊也寫一遍吧。

漢語問題我曾經仔細的思考過,結論是,另乙個時空的中中國人會創造出一批新的字元來作為程式設計的關鍵字,比如這樣的:

帶圈的為生造的關鍵字,這樣就不用以空格或者其它方式進行分詞了;

頓號'、'是句讀標識;

普通漢字是識別符號,其中"甲"和"屏"是變數名,"十"是整數常量,"數"是型別名,"示"是函式名;

「」表示傳送訊息(函式呼叫),中間括起來的是訊息內容(函式引數),其後帶圈的'至'表示訊息的接收者,即Smalltalk風格的物件導向。

與之比較接近的是BASIC語言,翻譯過來大概是這樣的:

Dim 甲 as Number

Let 甲=10

屏.示(甲)

用英文寫就是這樣的:

Dima

asNumber

Leta=10

Screen

.Print(a)

2樓:

易語言啊,但是卵用。

就好像1+1和一加一。

英語是通用語言,建立在英語結構上的計算機程式語言,自然是世界流行,而且很多規範都已經形成,設計了幾十年了,再去創造一門中文語言得不償失。自己寫著玩兒還可以。

3樓:於冬

用中文變成意義不大,弊大於利。設計一門中文變成語言不難,以前就有e語言啊,但是一門程式語言用什麼文字書寫區別不大因為就那麼幾個關鍵字。重要的事學習資料是中文還是英文,社群是中文還是英文

4樓:

嗯…比如這樣:

定義名為讀取檔案的函式為:嘗試開啟名字為x.txt的檔案,如果開啟失敗則丟擲異常並結束函式。迴圈(通過檔案輸入流逐個讀取字元到變數甲並輸出,直到遇到EOF結束迴圈)

5樓:

來作死一下。

/* * 氣泡排序

*/public class BubbleSort ;

System.out.println("排序前陣列為:");

for(int num:arr);系統.

輸出.列印(

"排序前陣列為:"

);當迴圈(整數

整數元素

:數集甲

)當迴圈(整數

甲=0;

甲<數集甲.長度-

1;甲自增

)}}系統

.輸出.列印

("");系統.輸出

.列印("排序後的陣列為:"

);當迴圈(整數

整數甲:

數集甲)}}

6樓:靈劍

可以用數學教材當中常用的中文描述,比如

定義 f(名字,次數):

取i從範圍(次數):

輸出「你好世界」,名字

f(「使用者」,2)

主要的優點:

可以省略空格(但是分詞演算法可能會很複雜)

主要的缺點:

輸入真TM累,如果有輔助的輸入法的話可能能好一點附關鍵字:

若否則若否則

取(變數)從(範圍)

當(條件)

繼續跳出

嘗試丟擲捕捉(為) 否則最終

定義返回

交出(yield)類

7樓:nameoverflow

開了下腦洞,覺得 @NightyNight 的文言程式設計有意思,關於語法規則的劃分可以考慮更加充分的利用文言虛詞,不一定要拘泥於句式。文言中的虛詞本身起到了語法的界定作用,用文言虛詞來進行語法界定可以避免那些亂七八糟的符號。

比如過程定義的文法可以寫成

definition := parameters "之" def_name "者" expression "也"

expression := (arguments "之" function) | (lhs function rhs)

也就是寫成

某之均者某之數除某之累和也

這一句就相當於

(define (均某) (/ (sum 某) (count 某)))

不過有一點難處理的是,這樣的機制預設寫出來的 identifier 都是單個漢字,連續的單個漢字會被認為是並列的多個引數(如「甲乙之積」中認為「積」是兩個引數的函式,甲乙是兩個並列的引數),畢竟文言名詞也以單字詞居多。這種時候可能就不得不引入諸如引號(「」或「」)、逗號(,)、頓號(、)分號(;)等現代漢語的標點來進行輔助的界定,比如放在引號中的多個單字被認為是乙個整體(「隔壁老王」藏於「衣櫃」)。

別的一些語義也可以用類似形式表達,比如 let...in... 寫成 「以……為……」

如以十三為廣,十四為縱,廣縱之積

相當於(let ((廣 13) (縱 14)) (* 廣縱))

部分參考《九章算術》

8樓:

#include

#define shiyong using

#define minmingkongjian namespace

#define changliang const

#define zhengxing int

#define changzheng long long

#define wufuhao unsigned

#define buer bool

#define ruguo if

#define xunhuan for

#define mo %

#define jiashang +

#define jianqu -

#define chengyi *

#define chuyi /

#define zuiyi haiyaoshuchu

#define youyi dayu dayu

#define haiyou ,

#define canshukaishi (

#define canshujieshu )

#define jieshubencixunhuan continue

#define tiaochuxunhuan break

#define zhuhanshu main

#define fanhui return

#define fuzhi =

#define dengyu =

#define wancheng ;

#define kaishi

#define biaozhunku std

#define jiegouti struct

#define lei class

#define duilie queue

#define shuangduanduilie deque

#define zhan stack

#define youxianduilie priority_queue

#define zhuhanshu main

#define zifuchuan string

#define shuru cin

#define shuchu cout

#define yaoshurude >>

#define yaoshuchude <<

#define haiyaoshuchude <<

#define haiyaoshurude >>

#define xiaoyu <

#define dayu >

#define de .

#define bufanhui void

#define kongde bufanhui

#define neilian inline

#define youhua __attribute__((__optimize__("-O4")))

#define zijia ++

#define zairuguo else ruguo

#define bumanzu else

#define quandengyu ==

#define jiaguoqu +=

#define jianguoqu -=

#define chengguoqu *=

#define chuguoqu /=

#define moguoqu %=

#define xiaoyudengyu <=

#define dayudengyu >=

#define huozhe ||

#define bingqie &&

#define budengyu !=

#define hangjieshule endl

#define manzutiaojianjiuxunhuan while

#define qudizhi &

#define paixu sort

#define fanhui return

#define zhuhanshu main

shiyong minmingkongjian biaozhunku ;

zhengxing a , b;

zhengxing zhuhanshu canshukaishi canshujieshu

kaishi

shuru yaoshurude a; shuru yaoshurude b;

shuchu yaoshuchude canshukaishi a jiashang b canshujieshu ;

fanhui 0;

jieshu

乙份putong的a + b

(別打我哈哈哈哈哈哈哈哈哈)

9樓:宥寧公舉

[e=0].版本 2

.支援庫 spec

.程式集視窗程式集_啟動視窗

.子程式 __啟動視窗_建立完畢

除錯輸出 (getHashCode (「20|d13|sign|413094」))

.子程式 getHashCode, 文字型

.引數 seed, 文字型

.區域性變數 a, 文字型

.區域性變數 b, 文字型

.區域性變數 name, 文字型

.區域性變數 time, 文字型

.區域性變數陣列, 文字型, , "0"

.區域性變數 param1, 文字型

.區域性變數 param2, 文字型

.區域性變數 param3, 文字型

.區域性變數 hashCode, 文字型

.區域性變數 start, 整數型

.區域性變數 result, 文字型

陣列 = 分割文字 (seed, 「|」, )

a = 陣列 [1]

b = 陣列 [2]

name = 陣列 [3]

time = 陣列 [4]

param1 = getPart1 (b, a)

param2 = getPart2 (time, a)

param3 = getPart3 (name, a)

hashCode = param1 + 「dC.」 + param2 + param3

start = getStartIndex (hashCode, a)

result = substr (hashCode, start, 8)

返回 (result)

.子程式 getPart1, 文字型

.引數 b, 文字型

.引數 a, 文字型

.區域性變數 start, 整數型

start = getStartIndex (b, a)

' 除錯輸出 (start)

返回 (substr (b, start, 3))

.子程式 getPart2, 文字型

.引數 time, 文字型

.引數 a, 文字型

.區域性變數 start, 整數型

start = getStartIndex (time, a)

' 除錯輸出 (start)

返回 (substr (time, start, 3))

.子程式 getPart3, 文字型

.引數 name, 文字型

.引數 a, 文字型

.區域性變數 start, 整數型

start = getStartIndex (name, a)

' 除錯輸出 (start)

返回 (substr (name, start, 3))

.子程式 getStartIndex, 整數型

.引數 str, 文字型

.引數 a, 文字型

.區域性變數 length, 整數型

.區域性變數 start, 整數型

.區域性變數 ls_start

length = 取文字長度 (str)

start = 到整數 (a) % length

.如果 (start < length ÷ 2)

ls_start = start

.否則ls_start = -start

.如果結束

.如果真 (ls_start < 0)

start = ls_start + length

.如果真結束

返回 (start)

.子程式 substr, 文字型

.引數 str, 文字型

.引數 start, 整數型

.引數 length, 整數型

.區域性變數 end, 整數型

.區域性變數 result, 文字型

result = 取文字中間 (str, start + 1, length)

返回 (result)

中文作為程式語言可行嗎?

當然可行。任何語言的程式語言都是可行的,問題在於那種語言的普及度。如果乙個程式語言只能在其本土範圍適用,否則你永遠只是別人的作業系統和輸入輸出體系上的一種外掛程式,一種補充,需要別人幫你翻譯,別人隨時不帶你玩就不帶你玩了。可行,但程式語言是偏數學的語言,要這麼說很多符號語言都可以轉化為中文,但這個行...

假如設計一款基於中文識別符號的程式語言,各種術語應當如何命名呢?

大師兄 無論什麼程式語言都是設計者想用什麼就用什麼,沒有什麼統一的必要。什麼術語 概念都是有人創造出來,其他人覺得好就繼續用,覺得不好就創造新的。 我只有乙個想法 賦值跟 foreach 形式基本統一,賦值用某某以為某某,foreach 就用某某 乙個集合 依次以為某某。 Scheme族 defin...

如果要全新設計一款中文程式語言 編譯器 整合開發環境,大家有沒有什麼好的建議

首先你需要乙個適合輸入中文的鍵盤.如果你開發中文程式語言,卻還用拼音輸入法,那你在白費力氣.或者你乾脆直接開發一款適合程式設計中輸入中文的輸入法.不會輸入中文符號,能夠與ide互動啟用智慧型感知. 風君子 如果你的目的是 溝通維護成本 那這事兒實在想不到搞中文的意義。且不說中文和英文本身的差別了,如...