如果計算機是由中國人發明的,那麼編程時寫代碼會是全中文嗎?
題主原問題是「如果計算機由中國人發明,那編程怎麼編,全中文嗎?為什麼不發明一款中文編程軟體?」,這其實是兩個問題,關於第二個問題「為什麼不發明一款中文編程軟體?」,很多答主已經提到了「易語言」等用中文來做標記的編程軟體。
但是第一個「如果計算機由中國人發明,那編程怎麼編,全中文嗎?」還需要各位仔細考慮一下。
程序員的第一個程序將是:「吃了沒,世界!」
物理層:陰陰陰陰陽陽陽陽陽陰陽陰陽陰陽陰陽陰陽陽陽陽陽陽
高級一點:甲 加一平五後出之 乙三 又丁六之於丙五入棧三 反丁六加甲 末陽殺之 末陰入棧四 乙三與甲或丙一補之入棧三 棧三出之 棧三出之 棧四齣之。。。
再直觀一點: 先聖標準庫雲 出入通暢 實函數 主 無參 言 你好 世界 你好 言葉 回稟 零再直觀一點:馬者 機密 整數 眼睛 鼻子 嘴 蹄子 陰陽 釘掌了沒 健康與否 實數 日食青草 日食乾草 日食黑豆公開
實函數 吃草量 實函數 釘掌 子類 騩者 馬者 字 毛色 淺黑 子類 驪者 馬者 字 毛色 深黑 子類 雒者 驪者 字 鬃色 白 子類 驔者 驪者 字 脊色 黃。。。你們把中國人想像的太沒有創造力了
如果是中國人發明的,中國人一定會為此發明一套符號來編程就像這樣(古琴減字譜)還有這樣(工尺譜)至於輸入嘛,你以為中國人發明的電腦如果用鍵盤鍵盤上就不能寫的是 一丨丶丿亅乛?夬?嗎?
再者說,中國人發明的電腦一定是用鍵盤的嗎?你以為編程語言是英語嗎?不是。編程語言就是一門語言,語法完全不同於英文,只是標識用了英文單詞,而標識完全能用中文代替,火星文也可以。你以為編程語言的標記是英文,所以英語母語的人,學編程很有優勢?是,但沒你想像的大。他們的優勢在於,介紹語言特性的資料,一手的都是英文。中文的都是二手,時間上會晚於國外,還有要是翻譯功力不強,曲解原作意思,或未表達好,我們讀者,就只能掉入深淵了
。。。。。是你理解錯了,編程你看到的都是界面化的東西,編程語言其實是01,高級一些與或非,並不是用英語編程
Ruby 的設計者松本行弘先生有一個採訪談過類似的話題,我覺得很有道理。
摘錄一下《圖靈社區 : 閱讀 : 松本行弘:代碼的未來(圖靈訪談)》:
松本行弘:在日本還存在一個問題就是語言障礙,日本人除了母語以外,精通外語的人不多,有趣的是,居然有用日語來編寫程序的編程語言呢。
周自恆:說到這個,其實中國也有用漢語寫程序的編程語言呢。
松本行弘:中國也有嗎?果然。不過這些語言雖然有趣,卻只能給日本人用,也就無法走向世界了。說句題外話,我曾經收到過一個美國人發給我的一封郵件,他說你是個日本人,但 Ruby 看上去卻跟英語沒什麼區別,因為 Ruby 程序都是用英語寫的嘛,難道沒有用日語寫程序的編程語言嗎?為什麼沒有呢?我只好回答說:有啊,只不過你不知道而已,即便知道你也沒辦法用嘛。
基本字符集太大對編程語言來說絕對不是一件好事。
全中文編程軟體是有的,印象中叫易語言
很多語言都支持中文的函數名與參數名。
以scheme為例:(define (加 加數 被加數)
(+ 加數 被加數))
(加 1 2)
以上代碼合法,並會給出正確的結果3。
其中define是一個相當特殊的符號,因此不能直接使用中文 。但是通過一些簡單的重定義,能夠把scheme變成一種純中文的編程語言。在scheme中可以通過宏實現。
將上例稍作修改,在scheme中可以使以下代碼完全合法(定義 加 (加數 被加數)
(+ 加數 被加數))
(加 1 2)
這段代碼仍能得到3這個結果。
也就是說僅使用中文編寫一個程序也完全沒有問題!「易語言」,「漢編」等中文編程語言不是非常了解,但是基本可以斷定都是用某種其它語言的宏系統實現的。
什麼?這不是你們想要的?不僅要中文還要漢語的語法?這也不是不可實現的。
上述代碼可改為:加法的結果是加數與被加數之和
1加2
翻譯為英語:
the result of plus method is the sum of the addend and the augend
1 plus 2
result methed plus = + addend augend
1 plus 2
plus result = addend + augend
1 plus 2
好了,我想說的是,最後一種表達方式比前面的都要清晰簡單,這裡沒有考慮以上語言在語法分析上的難點。如果程序的規模擴大,是否清晰與簡單就會變成非常嚴重的問題。
上述代碼再稍做修改:plus addend augend = addend + augend
plus 1 2
就變成Haskell了……
好像很多編程語言看起來很像英語?其實僅僅因為它們了借用很多英語辭彙而已,實際上都是和英語完全不同的其它語言。否則英語母語的人都應該天生會編程才對……。
考慮一下數學、邏輯學等,它們都有一套自各形式化的語言,而無須考慮是在哪個國家。正是因為這些特殊的語言更加簡潔,表達能力更強。使用自然語言的語法只能在最初級的階段緩解痛苦,從長遠來是功不補過的。
如果計算機由中國人發明?這個問題要看計算機誕生在哪個時期,如果是上個世紀,作為最通用的符號,拉丁字母一定仍然會佔據主導。如果計算機誕生在更早的時期,那時候中國和西方的文化交流還不多,拉丁字母還沒有普及,聰明多智的中國人一定會自己發明一套符號系統,比如卦爻。考慮到漢字在排版、存儲、輸入等方面的技術困難,基本上不可能成為最初的編程語言的載體,漢字的某些變體有可能,比如平假名和片假名。語言用什麼符號都無所謂的關鍵中文不行的原因是在鍵盤這麼大塊的輸入工具的限制下輸入中文無論如何效率都趕不上英文
這世界上有很多中文可視化編程的編譯器,很多奇葩...
目前奇葩中的佼佼者就是易語言
有了易語言,製作程序就降低了門檻。很多輔助程序就是用易語言編譯的,還有木馬之類的,雖然效率不是很高,但是總體用起來可以滿足最初接觸編程的人。不過從某個方面來講,你精通了易語言,大部分其他語言都可以觸類旁通。知不知道答主當初玩的是Pasca.
最後,上幾張圖。
感覺大家是在回答是假設「編程」或者"編程語言「是由中國人發明的。。如何如何。
如題主所問,假設『計算機』是中國人發明的,我覺得問題要複雜的多。
現代計算機是建立在邏輯代數和開關電子器件基礎上的馮諾依曼結構圖靈機。
如果是有中國人採用不同理論發明計算機,也就是說,使用完全不同的計算機體系技術,當前的編程模式和理論基本就沒有了物理支撐,對此,個人感覺毫無想像的餘地,因為無法跳出現有的體系和理論。
如果是中國人採用相同的理論發明的計算機,那在使用打卡紙帶編程階段,應該是一致的,在彙編語言階段可能會類似——助記符會不同, 而後因為不同的助記符系統,從而導致不同的語法系統,和不同的編輯器,從而在c語言階段產生較大的差別,進而在更高級語言的進化上產生巨大的分歧,
比如我們現在可能使用的是由右向左的豎排輸入,而鍵盤是八卦型,用陰陽爻符號取代ascii表,老外每天為英法文字型檔折騰,操作系統自帶的遊戲是麻將,象棋,牌九==。 但可以肯定的是,不只是在現有的基礎上替換中文而已,而是全方位的差別。。。
-------------------------------------多謝點贊諸君青眼的分割線------------------------------
-------------------------------------回答修改後問題的分割線---------------------------------
問題修改了,補充回答。
其實這個問題歷史已經告訴我們了:只有當計算機上能夠輸入輸出中文的時候才有可能使用中文編程。如果由中國發明的計算機依然是按照當前的技術路線添加的技能點,那麼至少在彙編之前是不會有中文編程的,紙帶靠打孔,機器碼是數字。彙編之後,才有可能使用中文,但是有一個問題,在內存以位元組計算的年代,中文字型檔所需要大量存儲空間是要花很多錢的,是否願意為了中文顯示而花費巨大的代價是值得商榷的。要知道,到了90年代,C已經出現很久了,在DOS上漢字的顯示編輯依然是大問題,而計算機還需要漢卡這種額外硬體來解決漢字問題。而漢字跨平台的正確顯示和快速編輯,也不過是2000年以後的事情(大概印象,沒查資料),此時編程技術及程序語言已經成熟了。以這個順序來看,全中文編程不太可能出現在計算機發展的技能樹上。
呵呵長這樣,估計打字速度要很快才能提的上速度啊
怒答一記,說中文編程還在說易語言的弱爆了,那根本就是替了關鍵字好么,掃一眼就知道什麼意思,看這個,功能是篩法求質數,編程語言是PerlYuyan,沒錯,不是Perl是PerlYuyan,這才是中文編程好么,朗朗上口深得我三千年文化精髓:
用籌兮用嚴 井涸兮無礙。
印曰最高矣 又道數然哉。截起吾純風 賦小入大合。習予吾陣地 並二至純風。當起段賦取 加陣地合始。陣地賦篩始 繫繫此雜段。終陣地兮印 正道次標哉。輸空接段點 列終註泰來。感覺背下來可以驅鬼(功能是把不能分裂成其他鬼的鬼篩出來,是謂質鬼或素鬼),編程時再加一記硃砂咒符可以驅bug我不會告訴你,我C#就是用中文寫的.
優點:1.簡單明了,讀代碼速度快了N倍.2.團隊協作更簡單,英文差的同學,寫出來的東西真是沒法看.3.防破解能力加強,就算被反編譯,出來的函數名都是method_1,method_2,看到你吐血.破解者時間成本,人力成本大大增加.附上代碼一段.計算機由中國發明的話,我國多一個企業「中國計算機公司」,一台電腦八百萬。
知道飛行員執照嗎?
考個電腦操作證要花500萬,考到以後年薪有100萬。
學編程?沒大夥什麼事。熟背十六進位乘法表小己己:一一得一 一二得二 二二得四 一三得三 二三得六 三三得九 一四得四 二四得八 三四得丙 四四一零 一五得五 二五得甲 三五得己 四五一四 五五一九 一六得六 二六得丙 三六一二 四六一八 五六一戊 六六二四 一七得七 二七得戊 三七一五 四七一丙 五七二三 六七二甲 七七三一 一八得八 二八一零 三八一八 四八二零 五八二八 六八三零 七八三八 八八四零 一九得九 二九一二 三九一乙 四九二四 五九二丁 六九三六 七九三己 八九四八 九九五一 一甲得甲 二甲一四 三甲一戊 四甲二八 五甲三二 六甲三丙 七甲四六 八甲五零 九甲五甲 甲甲六四 一乙得乙 二乙一六 三乙二一 四乙二丙 五乙三七 六乙四二 七乙四丁 八乙五八 九乙六三 甲乙六戊 乙乙七九 一丙得丙 二丙一八 三丙二四 四丙三零 五丙三丙 六丙四八 七丙五四 八丙六零 九丙六丙 甲丙七八 乙丙八四 丙丙九零 一丁得丁 二丁一甲 三丁二七 四丁三四 五丁四一 六丁四戊 七丁五乙 八丁六八 九丁七五 甲丁八二 乙丁八己 丙丁九丙 丁丁甲九 一戊得戊 二戊一丙 三戊二甲 四戊三八 五戊四六 六戊五四 七戊六二 八戊七零 九戊七戊 甲戊八丙 乙戊九甲 丙戊甲八 丁戊乙六 戊戊丙四 一己得己 二己一戊 三己二丁 四己三丙 五己四乙 六己五甲 七己六九 八己七八 九己八七 甲己九六 乙己甲五 丙己乙四 丁己丙三 戊己丁二 己己戊一
這個得有文化底蘊吧, 西方人的邏輯學的起源是與神交流的語言, 更多強調完整性, 本身是足以接受質疑的, 而東方人的老莊孫子文化強調的是變化吧
另外英語相對中文, 確定性和符號化也是關鍵因素. 東方在數學方面沒能從微積分更向前一步發展, 也是因為沒有確定性和符號化(可能還有實用性導向),不能支撐深度的計算這種符號系統這樣的幾何圖形再做演算與推導很麻煩吧.
數學算不好, 怎麼搞系統.看了排第一的答案,我就說一句話。古人會用算籌的。可以百度下南宋正籌碼。一想到二進位就是陰陽。代表0和1的外觀和現在的阿拉伯數字外觀很相似。
而且算籌是可以用於代數的。不用純漢字寫。初中學過一個玩意兒叫「易語言」,坑爹到死,不要說我黑國產,√(6)必須打
求平方根(6)
但是打
sqrt(6)
都不行。
感覺易語言的編譯器是這樣的:
...
read user"s code
...
if input="求平方根" then output "sqrt"
...
compile with other compiler
推薦閱讀:
※有哪些講編程範式的好書或好文?
※Lua 的 table 索引默認從 1 開始,這樣做有什麼好處?
※intel x86系列CPU既然是strong order的,不會出現loadload亂序,為什麼還需要lfence指令?
※說說你使用Elixir/phoenix的實戰項目心得,以及對該語言/框架的前景的看法?
※C++中有变量a,b,c,d,e,f作为条件表达式:如果其中任意2个及以上相同则表达式为假。怎样写?
TAG:編程語言 |