{eval=Array;=+count(Array);}
當(dāng)然能!我能,你也能。
下面是原創(chuàng)的中文語(yǔ)法的類似LOGO語(yǔ)言的編程環(huán)境,用JavaScript實(shí)現(xiàn):
全部業(yè)余完成。先做了一個(gè)月,出了雛形之后擱置了一年,又拿起來(lái)斷續(xù)做了一個(gè)月做些性能優(yōu)化。
實(shí)現(xiàn)時(shí),在JavaScript代碼中盡量用了中文命名標(biāo)識(shí)符,因?yàn)镴avaScript本身支持:
市面上也有不少?gòu)牧汩_(kāi)始實(shí)現(xiàn)編程語(yǔ)言的書(shū),我參考了之后用Java實(shí)現(xiàn)了一個(gè)通用中文編程語(yǔ)言,效果如下:
當(dāng)然Java源碼里也盡量用了中文命名標(biāo)識(shí)符:
這是在那本書(shū)自帶的現(xiàn)成代碼上修改后實(shí)現(xiàn)的,前后大概用了十天。
你當(dāng)然也可以,如果愿意學(xué)的話。
先給出結(jié)論:中文編程一定能開(kāi)發(fā)出來(lái),而且會(huì)逐步在國(guó)內(nèi)達(dá)到普及程度,但是一定不會(huì)是專業(yè)程序員的首選,而是成為其他人員在生活、學(xué)習(xí)、研究、工作上的強(qiáng)有力輔助工具。
習(xí)慣限制了我們的想象力。全世界主流編程語(yǔ)言都是用的英語(yǔ),才讓我們認(rèn)為英語(yǔ)過(guò)去、現(xiàn)在、未來(lái)都是編程語(yǔ)言的不二選擇。
以前,人們認(rèn)為操作系統(tǒng)不可能用中文,直到簡(jiǎn)體中文版的Windows出現(xiàn),甚至連主板界面都是中文的。以前,人們認(rèn)為打字就是英文世界的強(qiáng)項(xiàng),認(rèn)為中文天生不適合計(jì)算機(jī),永遠(yuǎn)沒(méi)有英文速度快,直到五筆的出現(xiàn)以及后來(lái)的智能拼音、中文語(yǔ)音輸入法的普及。以前,人們認(rèn)為計(jì)算機(jī)只有高級(jí)知識(shí)分子才能玩,直到智能手機(jī)的普及,連老太太都玩的不亦樂(lè)乎,甚至不用鍵盤和鼠標(biāo),就用手指劃來(lái)劃去。以前,人們認(rèn)為只有學(xué)會(huì)了Photoshop才能處理、美化照片,直到美圖秀秀、大眼瘦臉軟件的出現(xiàn),隨便一個(gè)人都可以輕松美化手機(jī)拍的照片。以前,安卓系統(tǒng)剛出來(lái)時(shí),人們認(rèn)為國(guó)外的APP(特別是游戲)比國(guó)內(nèi)的好用太多,而后來(lái),大家發(fā)現(xiàn)手機(jī)上竟然95%以上的APP(包括游戲)都是國(guó)產(chǎn)的。
例子舉得有點(diǎn)多,但都與本問(wèn)題有相通之處。中國(guó)文化的影響力逐步提高,國(guó)人在各方面的水平也在逐年提升,很多高端玩法逐步平民化、大眾化。
我們?cè)倩氐街形木幊踢@個(gè)專業(yè)技術(shù)上來(lái)。計(jì)算機(jī)高級(jí)語(yǔ)言大致分為兩大類。一種叫編譯型語(yǔ)言,一種叫解釋型語(yǔ)言。
編譯型語(yǔ)言,最終都會(huì)編譯成計(jì)算機(jī)能理解的二進(jìn)制形式,機(jī)器指令。也就是說(shuō),編譯是將人類能看懂的語(yǔ)言翻譯成計(jì)算機(jī)能看懂的指令。不論計(jì)算機(jī)語(yǔ)言是什么,最后編譯出來(lái)的東西都是幾乎無(wú)差別的。這個(gè)計(jì)算機(jī)語(yǔ)言,可以是英文形式的,也可以中文形式的,可以是語(yǔ)音形式的,也可以是框圖形式的。形式不重要,因?yàn)橛辛司幾g過(guò)程,最終都會(huì)變成機(jī)器語(yǔ)言。
解釋型語(yǔ)言是將計(jì)算機(jī)高級(jí)語(yǔ)言就地解釋執(zhí)行,由宿主程序負(fù)責(zé)運(yùn)行。腳本語(yǔ)言通常就是解釋型語(yǔ)言。大家見(jiàn)得最多的就是網(wǎng)頁(yè)上的JavaScript腳本了,這個(gè)腳本必須依賴于瀏覽器這個(gè)宿主才能運(yùn)行。瀏覽器負(fù)責(zé)解釋JavaScript腳本。宿主(解釋器)即可以解釋英文形式的腳本,也可以解釋中文形式的,哪怕是語(yǔ)音也照樣可解釋。解釋很多時(shí)候都是一句一句地解釋。你對(duì)著一個(gè)機(jī)器人用普通話或粵語(yǔ)說(shuō)“過(guò)來(lái)”,它就乖乖地過(guò)來(lái),這就是最簡(jiǎn)單的腳本解釋。你還可以對(duì)著一個(gè)空調(diào),按一堆按鈕,讓它解釋成“如果凌晨3點(diǎn)室外溫度低于25度,就關(guān)空調(diào),否則凌晨5點(diǎn)再關(guān)空調(diào)”。連說(shuō)話和按按鈕都能編程,還擔(dān)心中文文字編不了程序?
有的人說(shuō),中文一個(gè)漢字占用2字節(jié),英文只占用1字節(jié),所以中文極端低效。這里姑且不討論到底漢字占用2個(gè)還是3個(gè)字節(jié),也別考慮聯(lián)合國(guó)的文件到底是中文的薄還是英文的薄。就算中文打字更多、更長(zhǎng),又有什么關(guān)系呢?很多業(yè)內(nèi)人士都明白,語(yǔ)言不是重點(diǎn),重點(diǎn)是算法、思想。寫過(guò)C++或JAVA的人,去寫Python,就會(huì)覺(jué)得同樣一個(gè)功能,Python的代碼真的好短很短。JAVA這樣寫
Map<String, String> map = new HashMap<String, String>();
map.put("key1", "value1");
Python這樣寫
map={}
map["key1"]="value1"
但仔細(xì)想想,這個(gè)簡(jiǎn)單或復(fù)雜的形式真的那么重要嗎?這個(gè)差別,難道比中英文的差別還要大嗎?如果能忍受C++和JAVA等冗長(zhǎng)語(yǔ)法,難道就忍受不了中文?
我們還可以借助先進(jìn)的IDE自動(dòng)補(bǔ)全,借助先進(jìn)的輸入法。所以別再糾結(jié)來(lái)回切換輸入法這些細(xì)節(jié)問(wèn)題了。 習(xí)慣限制了我們的想象力。以前,我們用慣了鼠標(biāo)和鍵盤,誰(shuí)能想到會(huì)有手機(jī)上的多點(diǎn)觸控和手勢(shì)輸入呢?同樣,我們也無(wú)法想象未來(lái)的輸入法會(huì)進(jìn)化到什么程度。所以不要用輸入法的暫時(shí)的局限性,去限制中文編程的可能性。
而至于認(rèn)為編譯出來(lái)的代碼,中文占用更多的硬盤空間,更多的內(nèi)存,那就完全是外行了,完全是大錯(cuò)特錯(cuò)。之前已經(jīng)說(shuō)過(guò)了,如果是編譯型語(yǔ)言,編譯出來(lái)的東西都是無(wú)差別的,代碼里的中文私有函數(shù),中文注釋,中文局部變量名統(tǒng)統(tǒng)都消失了,最后全部成為了機(jī)器指令,內(nèi)存地址,堆棧操作。
總結(jié)一下,中文編程,在技術(shù)上沒(méi)有任何問(wèn)題,不論是開(kāi)發(fā)效率,還是執(zhí)行效率,都沒(méi)有明顯弱于英語(yǔ)編程的地方。
技術(shù)上的可能性說(shuō)完,再討論一個(gè)繞不開(kāi)的話題,叫做“生態(tài)”。目前中文編程一直沒(méi)有火起來(lái),主要就是生態(tài)問(wèn)題。也就是說(shuō)使用中文的國(guó)家很少,很多編程大牛都來(lái)自歐美、日本、印度等非中文國(guó)家。而使用的人少,大家貢獻(xiàn)的庫(kù)函數(shù),框架,攻略,教材等就少。這就稱為生態(tài)差。生態(tài)差,意味著寫個(gè)程序,找不到現(xiàn)成的代碼庫(kù),得自己從頭開(kāi)始寫。生態(tài)好,則網(wǎng)上一堆現(xiàn)成的,開(kāi)箱即用。比如像訓(xùn)練個(gè)神經(jīng)網(wǎng)絡(luò),如果用Python,直接就有類似tensorflow這類成熟穩(wěn)定久經(jīng)考驗(yàn)的開(kāi)源庫(kù),而如果是中文編程,若生態(tài)差,那沒(méi)辦法,自己寫。這工作量…………
中文編程的生態(tài)差,意味著,中文編程短期之內(nèi)不可能成為職業(yè)程序員的首選語(yǔ)言。職業(yè)程序員是靠編程吃飯的,代碼復(fù)雜性很高,體量大,效率、穩(wěn)定性非常重要。所以會(huì)盡量選擇成熟的,生態(tài)環(huán)境好的語(yǔ)言。
但是,除了職業(yè)程序員,還有其他的人群。正如同,除了職業(yè)翻譯,還有更多的人要學(xué)外語(yǔ)用外語(yǔ),除了職業(yè)攝影師,還有更多的人要照相、發(fā)朋友圈發(fā)微博。
絕大多數(shù)人學(xué)英語(yǔ)不是為了當(dāng)職業(yè)翻譯,學(xué)籃球不是為了進(jìn)職業(yè)球隊(duì),學(xué)office辦公軟件不是為了當(dāng)文員。
很好理解了,未來(lái),更多的人學(xué)編程,不是為了當(dāng)職業(yè)程序員。編程就像是英語(yǔ)、office辦公軟件一樣屬于必備技能。
可以預(yù)測(cè),非職業(yè)玩家,會(huì)更喜歡用腳本語(yǔ)言。腳本語(yǔ)言會(huì)在大眾中大量普及。比方說(shuō)未來(lái),在公有云上購(gòu)買一個(gè)服務(wù),需要使用一段簡(jiǎn)單腳本進(jìn)行高度定制化,從而可以快速實(shí)現(xiàn)一個(gè)個(gè)人網(wǎng)站,可以實(shí)現(xiàn)一個(gè)深度學(xué)習(xí)的訓(xùn)練任務(wù)。
那么,這些非職業(yè)程序玩家,就會(huì)更多地選擇中文編程語(yǔ)言。對(duì)于他們來(lái)說(shuō),不需要高深的,最新的技術(shù),只要夠用就行。這一條規(guī)律,對(duì)于職業(yè)程序員同樣適用。行業(yè)分工只會(huì)越來(lái)越細(xì),比如現(xiàn)代的多數(shù)程序員已經(jīng)不像過(guò)去那樣去關(guān)注算法,關(guān)注匯編了,他們比過(guò)去更關(guān)注的是選擇什么框架以及學(xué)會(huì)該框架,更加關(guān)注需求。因?yàn)楦呱畹募夹g(shù)細(xì)節(jié)有更專業(yè)的人員去實(shí)現(xiàn)。再?gòu)?qiáng)調(diào)一下,這是由社會(huì)分工引起的。分工沒(méi)有高低貴賤之分。做算法的,做芯片的,做基礎(chǔ)框架的不見(jiàn)得就比做業(yè)務(wù)編程的更厲害。再比如在很多游戲公司,寫程序看似難度最高,實(shí)際上工資不一定有做美工和做策劃的高。而美工和策劃甚至完全不會(huì)編程。同樣,只會(huì)中文編程,只會(huì)調(diào)用現(xiàn)成框架(可能是英語(yǔ)寫的)的人,也絕對(duì)不會(huì)低人一等。
牛逼的思維 不是靠語(yǔ)言來(lái)承載的
語(yǔ)言只是個(gè)工具 哪個(gè)方便 哪個(gè)好用 用哪個(gè)
不是漢語(yǔ)不好
也不是英語(yǔ)牛逼
編程只是需要一套符號(hào)系統(tǒng),再加上相應(yīng)的語(yǔ)法。
發(fā)明者套系統(tǒng)的人們,他們大多是拉丁語(yǔ)系的,而且還有幾百年的數(shù)學(xué)物理里面用到的符號(hào)代數(shù)系統(tǒng),用的是拉丁字母和阿拉伯?dāng)?shù)字。
他們只能用他們自己的語(yǔ)言,挑了幾十個(gè)英文單詞來(lái)作為語(yǔ)法的關(guān)鍵字,設(shè)計(jì)了用拉丁字母加數(shù)字加符號(hào)的方式來(lái)命名,剛好他們有了ascii這套東西可以用。
題主是只針對(duì)這幾個(gè)英文單詞和命名用的字母嗎?
那簡(jiǎn)單替換很容易的。
但是如果一定要出一套自己的編程系統(tǒng)(不只是編程語(yǔ)言),可以參考一下現(xiàn)在的少兒編程吧,圖形界面的,比這種簡(jiǎn)單替換的,意義更大。
有可能,但是沒(méi)有意義,主要兩點(diǎn),第一,中文是表意文字,適合于寫文章等,中文可以極大提高閱讀速度和易于理解文字含義,認(rèn)識(shí)中文的人,相信看到的文字一定是含義,而不是一個(gè)符號(hào),而英文是符號(hào)化的表音語(yǔ)言,而計(jì)算機(jī)正好是符號(hào)化,所以英文更適合計(jì)算機(jī)程序。
不能...
你有這種想法...
是因?yàn)槟阏`以為0123456789是中文...
其實(shí)中文是零一二三四五六七八九...
0123456789是古印度文...
...
所以...
中文有其劣勢(shì)...也有一定的優(yōu)勢(shì)...
不是什么場(chǎng)合都適用的...
...
先要回答一個(gè)問(wèn)題:開(kāi)發(fā)以以中文為基礎(chǔ)的編程語(yǔ)言,有什么必要性?以中文為基礎(chǔ)的編程語(yǔ)言,與現(xiàn)有的編程語(yǔ)言相比有什么優(yōu)越性?
如果僅僅是以中文為基礎(chǔ)的編程語(yǔ)言,中國(guó)人看起來(lái)方便,或者可以昭顯中國(guó)文化的博大精深。那就免談。因?yàn)檫@個(gè)建議昭顯了一小部分人的沒(méi)出息,又暴露了他們太小看中國(guó)的理科生。
哪種語(yǔ)言不重要,實(shí)現(xiàn)目的,都需要的邏輯思維等不變的。那種效率高用哪個(gè),何必糾結(jié)?
10
回答10
回答9
回答10
回答0
回答8
回答9
回答10
回答4
回答6
回答