你覺得用中文寫程序怎麼樣?
比如,我設計了一門中文程序語言,代碼大致長下面這樣
--------------------------------UPDATE 1:
累加為和
數列的和是數
和除以項數為算術平均
數列的算術平均是數
1 2 3 4 5的算術平均
3
這是一門精確定義的語言,是一門靜態類型強類型語言。不會允許有歧義。不要問我是怎麼實現的,假如你會寫編譯器應該能自己寫一個的,不會就回去看編譯原理。--------------------------------UPDATE 2:上面的代碼,兩個空格開頭的相當於是REPL里輸入的程序,沒有兩個空格開頭的相當於REPL里的輸出。第一行程序定義了和這個函數,第二行程序定義了算術平均這個函數,第三行程序調用了算術平均這個函數。--------------------------------UPDATE 3: 用易語言不算用中文編程,因為易語言不符合中文習慣寫法
用中文設計編程語言自然沒有問題,只要精確定義,技術上不成問題。
它的特點是刻意的將非中文用戶擋在了門外。而這就阻礙了非中文區的黑客們為改進它作貢獻。這似乎沒有好處。首先,你得搞定分詞……
完全準確的分詞然後你要解決漢字輸入不夠快的問題。就算你能解決……
你能讓西洋人用漢語寫程序嗎?國內程序員大體都懂英語,西洋人懂漢語的屈指可數。另外,題主的語法設計很成問題,我不認為有不依賴自然語言處理的編譯器能編譯題主的語言。
首先要解決的頭號問題就是
utf8 gbk編碼!
你看看那個語言的程序不是用ASCII就可以存?毫無意義- - 對於編程來說什麼英語根本算不上是個門檻吧。
我覺得——終於可以把日編千行的人拉低到普通人水平了
說是用中文編程其實就是為了讓自己不學英語找借口。
2
光是在中英文輸入法之間的切換已經讓人崩潰了,不信你還能忍受漢字的超低輸入速度
你先試試看寫一個中文的正則表達式引擎就會放棄了
NLP發展到一定階段,什麼語言都是程序。如果僅僅是為了好玩,可以寫一個變數名、關鍵字和操作符替換的腳本,作為編譯、解釋之前的預處理步驟,這樣你就可以把一個語言偽裝成中文編程語言。
想那趙國,光「劍」字寫法就有一十七種,何其繁瑣,待寡人一統天下,必定將那些雜七雜八的文字通通廢除,只留一種,豈不痛快!
說到底,不過是工具。
我覺得最大的不好就是輸入效率要比英文低。不適合做工程開發。
編程語言的生命力在於能幹什麼以及能否低成本的去干。你如果能在一年內提供出比.Net frame還豐富的各種類庫,同時還能保證免費的、持續的提供升級與擴展,那還有一定的生命力。否則就當個鍛煉自己編程能力的愛好吧。至於語言本身的技術水平就算了,就算現在的IDE不做任何發展,你一個人也無法提供類似vs這樣的高效開發環境。我們用的不是c、c#、java這個語言,而是一個高效的編程生產力工具。你確定能免費提供?
樓主給出的例子可讀性是很好的。然而我不知道是不是樓主設計好的語言中其他的語句和函數都能保持這種漢語的理解習慣,而不是落入現有高級語言的格式限制之後形成某種不自然的閱讀習慣。非常希望能看到樓主設計的語言的整體面貌。可讀性對於程序具有重要的作用,因為程序被閱讀的時間多於其編寫的時間。而我們的編程能力很大程度除了自己多寫代碼以為最主要的就是要多讀代碼,正如棋手的棋力除了靠對弈以外最大的因素就是靠打譜。現在有一些能夠使用漢語關鍵字和漢語標識符的語言。但是這些語言都不是真正的漢語編程語言。正如現在的絕大多數計算機語言都在使用英文的關鍵字或標識符,但是也不能據此就稱它們是英語編程語言。
我認為,自然語言編程,對中國人而言,就是漢語,對英國人而言,就是英語,是極為有作用的。這可以降低學習編程的門檻,能讓更多的人編程,更多的問題被編程,提高編程的效率。
個人覺得如果你能為這個語言做一個編譯器(compiler)那就行。。。但是很難吧
編譯器有幾大步驟scanning, parsing, Context-sensitive Analysis, code generation.
一般自然語言最大的問題在scanning和parsing上。。。
不然為什麼今天的計算機語言基本上都是形式語言?因為想要compile自然語言太難了。。。而且自然語言不如形式語言嚴謹,這是硬傷。
----------------------------------------------------------------------------------------------------------------------題外話:如果僅僅是以中文代替英文來做一種形式語言的話個人覺得未必很難。我覺得首先對非中文母語的人太不友好,英文學起來很簡單,中文對老外就是天書,除非哪天中文都普及了否則肯定世界範圍無法推廣。
其次改用中文字的話輸入效率會降低很多,我覺得大部分年輕朋友現在都用拼音了不怎麼會五筆那些什麼了,這樣的話你用ruguo如果即使是ruo若不都比英文慢么還不說打了ruo還得去選聲調確定哪個字。
中文肯定是更好理解一些,但總體上覺得弊大於利,所以感覺不好普及雖然是中文代碼,居然看懂不容易
- 現在3歲幼兒園小朋友就開始學英文了,程序語言那點關鍵字算什麼障礙,中文編程沒賣點啊。起變數名方便?不過我平時編程變數名都用中文先考慮的,也照樣沒轍的。
- 一門精確定義的語言--那請形式化說明如何精確定義了,起碼得有語言的語法生成式吧。
- 都一門精確定義的語言了,要符合中文習慣寫法貌似很難吧。我也沒覺得那些英文的編程語言就符合英文習慣寫法了。
- 我倒是更喜歡英文的格式,起碼有空格,中文這個一坨坨的,倒是符合習慣用法了,但是不想以後維護了么。本來程序可以結構化的,一眼過去大概明白程序意思。中文不分詞,每行擠得滿滿的,只有流式通讀一遍才能明白。
- 這個是個人觀點:中文在形式化上和邏輯上天生有短板,這編毛程序啊。
- 計算機體系整個都是外文、英文為主,計算機專業的同學在專業範圍內相當於從開始接觸的就是英文,第一印象很重要的,再轉中文編程語言肯定不習慣了。
- 編程語言就是個符號系統,最重要的就是比較抽象,不要有形象的聯想,否則數學系的同學們發明那麼多的數學符號是用來打醬油的么。
呃,我要瘋掉了。
If , 如果,ruguo僅僅關鍵字,需要打這麼多字母。這是要作死的節奏。專業的東西還是用專業的工具來做比較好這一點貌似已經實現了,易語言就是個例子。而且該軟體製作精良
推薦閱讀:
※編譯器的詞法分析和語法分析是如何處理C++的模板?
※你對基於機器學習的編譯技術有什麼看法?
※為什麼C++預處理期編譯期的支持比較薄弱?
※想用用flex和bison寫個C的編譯器,應該如何處理C的宏?
※peg, ometa 解決什麼問題,ometa-js怎麼入門/正確理解和認知?