為什麼都瞧不起易語言(易語言真的那麼不堪嗎)

一、中文編程真的存在嗎?

要回答這個問題,首先就要闡述中國有自己的編程語言嗎?其實這個問題極難回答,如果我說真話,就要揭露很多真相。

會引來無數人的謾罵和嘲諷。如果我說假話吧,那我談中文編程還有什麼意義?既然要談這個問題,就不要怕被罵。

可能我在講述客觀事實的時候,會讓你的虛榮心受損。但我不是有意打擊國人信心,而是讓更多人看清中文編程的現狀和意義。

實際上我國最早的中文編程語言,可以追溯到上個世紀60年代初期,它是由中科院計算機所設計的BCY語言,

同時這也是我國最早的實用高級程序語言。BCY語言長什麼樣呢?

為什麼都瞧不起易語言(易語言真的那麼不堪嗎)

初看會感覺跟現代的編程語言差別很大。上來就像是單片機才會使用的二進位開關位。

因為它就是是應用於電子管計算機上的。(現代計算機最小的數據單位就是位元組,一位元組8位。

也只有單片機或者更早的數字晶元,才會需要對某一個二進位位進行開關量操作。)

但是仔細看,這種代碼依然有VB和VC的語法特徵。

若 M>0 或者 M<10 則

放到VB里就是:

If M>0 Or M<10 Then

放到易語言里就是:

如果 M>0 或者 M<10 則

(好像大於小於得用中文,我這輸入法實在打不出來)

放到其它語言里就是:

if(M>0 || M<10)

再看後面的代碼:

對於 I=1 到 80 步長 1

執行…

終否則;

終;

放到VB里就是:

For I=1 To 80 Step 1

Else

End IF

顯然這個代碼幾乎就是BASIC語言的直接翻譯。

For翻譯成「對於」

To翻譯成「到」

Step翻譯成「步長」

Else翻譯成「否則」

End翻譯成「終」

雖然BCY語言在進入微機時代后被迅速淘汰,但不得不說,中國的第一代計算機科學家,

就已經意識到了中文在編程語言中的價值,「中文培基」就是朱邦復於80年代初期發明的入門編程語言,

它的語法和BASIC語言基本相同,進行了簡單漢化。

為什麼都瞧不起易語言(易語言真的那麼不堪嗎)

現在已經找不到「中文培基」編程的具體資料了,單從圖片上的信息,感覺比BCY語言更難懂(^o^)。

中文編程如果上網去查,一定能查到很多。

如:「周蟒」和「中蟒」,就是漢化了Python語言;「易樂谷」是漢化了的LOGO語言;「丙正正」是漢化了的C++

O語言基於彙編語言開發;中文培基基於BASIC語言開發;習語言基於C語言開發;中文小海龜基於Logo語言開發;

以上的中文編程大家可能有些陌生,國人使用最多的中文編程,肯定非「易語言」莫屬了。

易語言一直被稱為「國產自主研發語言」,擁有自主研發了漢語內核,漢語可被直接編譯為機器碼;

這句話出自百度百科的原文,事實真的如此嗎?

眾所周知,易語言使用了C++的鏈接器,用戶還可以下載替換不同版本的「鏈接器」。

那麼什麼是鏈接器呢?要講明白它的含義,相對於我的表達能力來說,確實有些困難。

那我就直說吧,(可能使用易語言的人都不愛聽。)使用鏈接器,最終目的就是把你的代碼,生成CPU能讀懂的機器語言程序。

(當然現在很多編程使用解釋器了,非機器語言。易語言也要把中文「轉換」成英文,才能交給「鏈接器」)

正常編程時,鏈接器也只有少數「編程高手」會使用到,所謂的「高級編程」都不會讓你接觸到這個層面。

經常有人說記事本就是萬能的編程軟體,它可以寫任何語言的代碼,如果你對該語言的編程構造足夠了解。

就可以把記事本寫的代碼,交給鏈接器去「編譯」。{實際上最終交給鏈接器的代碼,跟你寫的代碼是有差別的)

那麼大家認可記事本是「萬能的編程軟體」這個說法嗎?既然記事本都不算,那麼其他所謂的「中文編程」,

調用別的編程語言的鏈接器,「生成程序」的軟體,能算真正的國產編程嗎?好,我這是強詞奪理,歪曲事實。

那你覺得什麼是「編程」?如果編程可以理解為編譯程序,是不是該理解為把用戶代碼,「生成」CPU能執行的機器語言。

可是現在大多數所謂的編程語言,都不是自己生成的程序,而是交給「第三方」完成。(這個第三方不在國內)

當然大多數編程者都會說,不管用什麼生成的,反正我能達到目的,能寫出有用的東西不就行了。管它是自己生成的還是別人替你生成的。行業內有一句著名的話「何必要重複造輪子」,別人的造的輪子又圓又便宜,為什麼要自己造?

我先聲明,我並不反對你用國外的東西,人家確實好用且免費。而且真正意義上的國產編程有嗎?我們有的選嗎?

確實沒有。抑或是有,但是不夠完善。我要討論的並不是對待是否國產的問題,我是要說中文編程的意義在哪裡。

二、中文編程的意義

我這裡所說的中文編程,不是指漢化或者使用其它語言的鏈接器之類的編程語言。也不是說只要能把中文生成機器語言就算中文編程。我也研究過所謂的中文彙編,那其實還是對英文彙編的漢化。我也不是想說,搞編程就一定不能使用或借鑒國外現有的編程體系。而是說中文編程相對於中國的國情,其意義是什麼。

據說目前全球有幾千種編程語言,而一個程序員能熟練掌握的編程語言通常不過一兩種,因此目前真正流行的編程語言也就十來種而已。剩下的有一小部分在圈子裡使用,用於解決特定場景下的問題,絕大多數的語言都沒機會長大就會中途夭折。也就是說,在現代中國軟體行業整體衰弱的大環境下,這幾個中文編程語言,死掉是常態,活下來才是偶然。

而在今日,唯一活下來的中文編程語言,正在程序員社區語言鄙視鏈的底端艱難生存,垃圾、騙子、病毒、從入門到入獄是它的代名詞,顯然我說的就是「易語言」。我並沒有鄙視易語言的意思,易語言的開發者吳濤,既不是科班出身,也沒有名校或留學經歷,在中文編程極度冷落的情況下,他也沒有停下腳步,繼續在做火山編程,號稱是「語言之上的語言」,我在這裡除了欽佩之外,也不作任何評價。

而我想說的是,中國經過幾代人的努力奮鬥,在計算機領域,無論是硬體還是軟體,都沒一樣真正自主研發自己創造的東西。(我此時是站在講台上說這話,估計早就被雞蛋和石頭砸死了。)那我為什麼要說這麼欠打的話呢?吃飽了撐的嗎?

雖然我說的話極其難聽,但是這是事實。這一現狀也深深刺痛了很多中國人的內心。

華為的鴻蒙系統和倉頡編程是真正的自主研發嗎?憑良心說「不是」!

我可真不是要黑華為,華為隨便一個技術員都比我強百倍,我有什麼資格黑人家。

當年鴻蒙系統在作宣傳的時候,我就一直在等他的編程軟體,第一時間下載研究。

無論是安裝過程,還是最後打開「編程器」,沒看到一個漢字。現在一年多過去了,

仍然沒有對外開放,「漢化」一個軟體真就那麼難嗎?

其實編程軟體根本不是漢化那麼簡單,假如你拿到國外一個編程軟體,你自己都對它的編程語法沒有通透的了解,你好意思說這個編程是你寫的嗎?簡單漢化一下發布出來就是你的了?裡面要做的事情遠比你想像的要複雜很多。真正要「拿得出手」,華為人一定會慎之又慎的。

那我憑什麼敢說鴻蒙系統也不是自主研發的。請注意我這裡不是要給華為「判刑」,也不是要爭論什麼是自主權,我只是想闡明編程和操作系統的意義。想跟我吵架的,為華為鳴不平的「專家」請靠邊站。還有我的立場是支持華為的,我買手機一定是華為等國產品牌,絕不買國外的。

首先說編程軟體,本身就是為系統服務的。不恰當的說,一個編程語言的語法,十幾種就夠了。為什麼會是幾百種都不止呢?如果編程軟體不在系統下運行,它的語法也根本沒多少,無非就是判斷語句、跳轉語句、賦值數據等,(循環語句是判斷加跳轉)

但是一個操作系統有多複雜,就不用我多說了吧。並沒有一個操作系統,有底層核心使用說明書的。操作系統的無數功能介面,沒有「說明書」又如何充分利用呢?這就要靠編程軟體來實現了,編程軟體就是把操作系統那些極其複雜的功能介面,「做」成很多類似於函數庫、API擴展、對象庫等等形式的東西。(不同系統開放的這些東西定義不同,我只是籠統的表達個大概意思)

總之編程軟體就是提供了很多很多五花八門的「功能模塊」,編程人員只用學習如何應用就行了。

完成編譯為機器語言最為核心的是「鏈接器」或稱「編譯器」吧,(不是所有編程軟體都叫這個,也不是全部都有這個東西)。

系統最底層的「功能模塊」肯定是用最底層的「編程軟體」完成的,「鏈接器」也是由軟體「編譯」成的。自主開發編程軟體,要對系統底層知識有足夠的了解。因為你從網上查到的資料,都是用什麼語言如何寫,問題是不用別的語言,你怎麼寫程序?

說這麼多,意思還是說要實現不用現有的編程語言,去「自創」一種編程語言,實在是太難了。我們能見到的程序,不都是由別的「程序」編譯出來的嗎?那最初、最原始那個「編程」軟體是怎麼出來的?這跟問地球上第一個生物是怎麼來的差不多,說來話太長。

總之一句話,操作系統一定是先有一個不依賴於其它任何語言的「編程器」,寫出最底層的那些文件。然後逐步發展出更高級的編程軟體,才會讓讓編程變得更簡單,也可以說是更容易的對操作系統進行合理運用。

所以說編程軟體都是基於操作系統的,我們用現有的編程軟體,只能開發操作系統已經具備的功能,或者說編程軟體本身已經定義好的功能。

開發的軟體也只能在對應的操作系統下使用。如果沒有不依賴於其它任何語言的「原始編程器」,怎麼可能開發出屬於自己的操作系統?

我們目前設計晶元的軟體全是國外的,指令標準也是由國外授權的。有人說為什麼我們不自己設定標準,不自己制定編程方案,然後做自己的晶元?

還是一言難盡啊!就算你弄個全新的指令集,現有的所有編程都無法應用到它,沒有一種軟體能使用它,有用嗎?同樣道理,為什麼我們不自己做操作系統?

如果不能跟現在的系統體系兼容,或者說進行「交集」,你的底層通訊、IO控制,甚至是圖像視頻文字等數據都無法交換。那還有用嗎?

那麼我最終要表達意思,就是說我們無論是要開發自己的操作系統也好,做自己的編程也罷,並不是說一定要拋開國外的所有東西。我們可以借鑒和接納現有的編程體系。但是想做屬於自己的東西,單純學習別人是遠遠不夠的。就像編程軟體使用別人的「鏈接器」,並不算真正意義上的編程。雖然形式上全是中文,但是最終還是把中文代碼,替換成英文的,然後讓別的編程器去「生成」程序,別人的編程器是不可能拿來開發操作系統的。

總結來說,如果我們只是為了寫軟體,那永遠用國外的或者漢化的編程軟體,是完全可以的。國外的已經足夠好了,為什麼還要「自創」呢?因為就算全體中國人都不需要國產,但是也會有人堅持去做屬於自己的東西,儘管他做出來的東西遠沒有國外的好。你這輩子不去用就行了,也沒必要進行諷刺、挖苦、嘲笑、譏諷、謾罵、羞辱、以及人身攻擊了。你喜不喜歡國產是你的自由,但別人想做真正國產的東西,也是他的權利和自由,你管不著吧!

三、中文編程該如何崛起

至今唯一倖存的中文編程「易語言」,他的興衰史相信很多人已有了解。在2004年之後,易語言就再沒有重大更新,各種問題也沒有去解決。

易語言雖然提供了全面的中文支持,但畢竟它不是真正自主完成編程的,而且它的界面又和Visual Basic高度類似。在那個時代,以模仿起家在中國本屬常事,但此後易語言卻沒有走上逐步創新發展的道路,沒有找到最貼近中文習慣的編程表達方式,一直背著抄襲、騙子、綁架的罵名。

還有大量易語言用戶使用它開發遊戲外掛、電腦病毒、黑客軟體,使得易語言負面新聞不斷,語言本身的特點又導致它極易被殺毒軟體誤殺,使得許多愛好者不得不改換門庭。

在易語言之後,中國又出現了其它一些個人主導的中文編程語言,但都寂寂無名。現如今,各種通用軟體、遊戲、電影紛紛推出官方中文版,但在各種專業領域,英語卻有大一統的趨勢。

比如2017年,國內航空管制開始強制使用英語交流,而在學術上,發表英語論文似乎已經是許多專業的科研人員成為學術大牛的唯一選擇。

如此說來,中文編程真的就沒有發展前景了嗎?當然不是,中文編程之所以發展不起來,是因為並沒有國人真正去做過「核心編程」,很少有人認識到從底層開發的重要性。

我可不是在否定前輩們的成就,他們的技術遠在我之上,我沒有資格去否定他們。在DOS時代的FREEDOS、天匯漢字、WPS等,我都一直崇敬的放在電腦硬碟中,保存至今。

還有windows時代,相當崇拜開發Foxmail張小龍(後來為騰訊開發了微信)、windows優化大師的開發者魯錦(現在被360收購,改名為魯大師)等等,我就不再列舉了。

那麼怎樣才能從底層開發編程軟體呢?正如我前面說過的,編程軟體也是由其它編程軟體開發的,其它編程軟體是由更底層的編程軟體開發的。更底層的編程軟體是為開發操作系統做「鋪墊」的,操作系統本身的那些程序是由更更底層的編程軟體開發的,系統本身就是用最最底層的編程軟體開發的。那最最底層、最最原始的軟體又是怎麼來的?(這個問題先留給你自己思考)

首先操作系統本身就是為英文而生的。上世紀末,我們急需要發展計算機產業,面對最大的難題就是中文信息化。比如,如何用鍵盤輸入中文;如何讓計算機處理中文;如何在操作系統界面顯示中文;如何通過軟體編輯中文文檔等。當時外國專家曾斷言:「只有拼音文字才能救中國,因為漢字無法進入電腦。」國內某知名刊物也稱,「方塊漢字在電子計算機上遇到的困難,好像一個行將就木的衰老病人。歷史將證明,電子計算機是方塊漢字的掘墓人,也是漢語拼音文字的助產士。」

但是事實上這些預言並沒有應驗。1983年,王永民發明了五筆輸入法,真正解決了漢字的鍵盤輸入問題;同年,嚴援朝研發了第一款漢字磁碟操作系統CCDOS,有了中文操作系統;1985年,倪光南發明的聯想漢卡開始銷售,奠定了這家國際品牌之名;1988年,求伯君研發了中國大陸第一套文字處理軟體WPS,至今仍被廣泛使用。

然而所有編程軟體都是基於操作系統而開發的,如果沒有系統這個框架,編程軟體也就不會應用的這麼廣泛。而操作系統的底層知識,是從來不對外開放的,Linux說是完全開源,但是開源的那一部分只能說是冰山一角,在「水下」的那部分你永遠也看不到全貌。所以說限制中文編程和自主研發中文操作系統,最大的阻礙還是「技術封鎖」。我們最多只能查到現有編程軟體的代碼怎麼寫,很難查到不用現有的編程該怎麼做。

也就是說只有拋開現有的編程體系,才能做自己的編程。可是屬於我們的第一個「編程軟體」用什麼來寫?難道用鍵盤距陣或者用開關在單片機上手動開發嗎?雖然這些是外國人走過的老路,我也曾經用數字電路開發過可編程的「煙花爆竹燃放控制器」。(我強調一下,沒有使用單片機,純邏輯電路實現的。)

有些懂行的朋友肯定會有疑問(不懂的請略過此段)。不用單片機純邏輯電路也能做編程?怎麼編?最初我也確實用了大量數碼管,編碼開關和按鈕。第二代電路只用兩個按鈕,一個用來選擇哪一路。另一個用來控制計數,數碼管循環顯示脈衝計數。到需要設定的數值時停下。脈衝計數就會鎖存。另一個開關選擇到「啟動」燈亮起,就會開始計數。掃描每一路鎖存數據,符合計數條件就自動觸發繼電器,燃放相應組煙花。

其實我說這些並不是要你能聽懂,也不是賣弄我的知識「淵博」。而是說學編程時,不要把編程看得太簡單了,也不要把編程看得過於複雜了。即便不用CPU的標準邏輯門,也能實現「編程」。再比方說編程里的定時器和延時函數。用兩、三個元件組成的振蕩電路和阻容延時電路也能夠實現。我也在做單片機上使用的微型系統,像基本的簡訊和通話功能、音視頻播放功能,無線網,文本編輯器這些都是有的。但是離真正的能廣泛應用,差的實在是太遠。這隻能算是我個人「興趣」罷了。

真正能實用的,還是要在現有操作系統的框架下,不藉助別人的編程組件,完全自主的實現軟體編程。當然這非常難,因為你根本找不到相關資料,網上確實有使用VC等如何做出自己的編程語言,那不還是使用VC嗎?既然原創編程這麼難,那能不能先借雞生蛋?

我開始也這麼做了,先做一個網站伺服器,然後解析腳本語言。能像ASP、PHP那樣的伺服器也會有用啊。於是我的初代產品,就是WWS網站伺服器,支持三種語言腳本:VBScriptJscript,Javascript。具體過程不展開說了,最終功能就是可以開發網站之外,還能開發網路遊戲,架設H5伺服器等。把遊戲開發需要的核心功能都寫成相應的對象,網站代碼不但可以處理各種二進位數據,還能和遊戲的內存數據(對象)交互。算是網站伺服器、遊戲伺服器、聊天伺服器、H5應用伺服器的集成產品。

但是這能算是真正的編程嗎?雖然說它可以媲美ASP、PHP、JSP等網站伺服器,甚至有很多它們不具備的遊戲開發「引擎」,但是這仍然是用現有的編程體系,並不是真正意義上直接生成CPU指令。

那麼該如何實現自己的編程?我是這麼做的,用VB和VC去寫一句代碼,用二進位工具看它們生成的程序文件是什麼樣的。然後不斷改代碼,不停的分析二進位數據。說實話,當時我連彙編都不懂,硬去看這些數據,真跟看天書一樣。但是我先不管這些,我也生成一樣的二進位數據,測試能不能運行。只有不斷的嘗試,才能慢慢的理解這是為什麼。持續研究了三年多,才基本掌握了彙編和操作系統核心的相關知識,並對內存管理有了更深的了解。

如今我開發的SEC中文編程,已經可以編寫中小型網路遊戲等初級的應用了。雖然是中文編程,但是也能兼容VC等語法,因為你在網上能找到的編程代碼,最多的還是C系列語言(形式上大同小異),而中文的代碼幾乎是找不到的。那麼你從網上複製的代碼,不用怎麼改,就能在SEC編程里直接使用。

我這並不是在模仿C語言,而是先學會兼容別人。只是兼容而已,並不代表我需要別的編程語言才能編程。因為在現有操作系統下使用,你肯定要使用系統的太多東西。如果你是開發單片機應用,那肯定不需要使用系統的功能了。我現在主要使用的是32位X86系列指令,但是也可以兼容8位和64位CPU的。

有人肯定會說我在胡說八道,8位那是單片機,64位CPU指令也不一樣,怎麼可能兼容?我覺得也沒必要爭論這個,我也不敢保證是100%兼容。只是我用SEC開發過的大量程序,是可以完美兼容的。ARM系列還在研究當中,指令上雖然有很多是一樣的,但是目前並沒有同一個操作系統可以同時在X86和ARM的不同CPU上運行的。所以它們能不能兼容也不敢妄下結論。

四、中國軟體產業和程序員的現狀

能看到此處的朋友,已經是給我莫大的榮耀了。剛才我的一通亂侃,涉及到太多領域的知識。本來還想說說模擬集成電路到數字集成電路以及邏輯門電路的,但是考慮到能理解的朋友不多,我的表達能力也實在堪憂。還是說說國內軟體業的一些情況吧。這個話題實在是太大,這是「國家統計局」該乾的事情,我怎麼能信口開河呢。所以我不談大的,只是從個人親身經歷,映射一下國內編程行業的一些情況。

我是臨床醫學專業,從醫很多年。02年學習組裝電腦,04年開始對醫療軟體感興趣,並開始學習編程。也和很多人一樣,買書自學VB和VC++。那張包含Visual Studio C++、Visual Basic、Visual Foxpro等眾多編程軟體的光碟,也被我安裝無數次,直到徹底讀不出來。最終結果也和很多人一樣,學了多少,忘了多少。沒有做出一個程序來,多年之後居然都忘記我曾經學過編程了。

從我這麼多年跟外界的交往的經歷來說,接觸到的程序員大多數是學VB和易語言的。C++的也都懂一些,但都沒敢說精通。C++被評為世界上最難學的語言,也是有某方面的原因吧。最難懂的語言不應該是彙編嗎?一方面是因為學彙編的人極少。另一方面是因為學彙編的人往往不是用來編程,而是用來破解別人的軟體。他們只要具備零星的彙編知識,能夠實現破解就足夠了。

關於破解、黑客、反彙編這些詞都算是敏感話題,越是不懂的人,越是感興趣。這並不是一個「難」字就能概括的。我在沒有任何資料的前提下,去反向研究如何「編程」,其實就是標準的「反彙編」,問題是我當時幾乎什麼都不懂。有些人不懂就去問,就去查,就去看書,但是我要「研究」的並沒有現成的資料啊。

我相信很多人對我「開發」中文編程軟體的經歷是持懷疑態度的。我這麼多年潛心研究,有時候走著路,甚至開家長會的時候,都在考慮如何定義中文編程的語法辭彙。肯定會跟別人說過,我在開發自己的編程語言。此話一說出口,無一例外的,都會引來別人的嘲笑和謾罵。反正沒人相信,我也是習慣了。當然被羞辱最為嚴重的,還是在精易火山交流群。

我完全能預料到他們會如何攻擊謾罵和羞辱我。這跟網上那些鍵盤俠罵人是一樣的。當你的談及的事物超出了他們的知識儲備範疇,他們就會認為你在胡說八道,顛倒黑白,搬弄是非,造謠生事。但是如果情況反過來,你表達的內容,是他們能夠理解的,他們仍然會認可你,附和你。那麼當你認清了使用易語言用戶群體的編程水平之後,不免會陷入深深的思考:「易語言」對於中國的軟體發展,究竟是利還是弊呢?

易語言在很大程序上降低了編程的難度,讓很多人輕鬆的學會了編程。顯然對於中國人學習編程來說,肯定是利益更多一些。但是弊端也是要提一下的。首先易語言不同於其它任何編程,代碼編輯器都採用「表格加箭頭指向」的特殊形式。那麼就造成它跟任何語言都不「相通」,甚至連「複製」代碼都很困難,更別提複製的代碼能不能在其它編程語言里使用了。

還有就是易語言讓很多人輕易的學會編程,他們就更容易自滿。而且想當然的認為這就是編程的本質,這就是經典。只要你談及的編程知識跟他們了解的不一樣。他們就會罵你,說你狗屁不通,還不懂裝懂。

說真的,愛因斯坦也有錯的時候。比如說他跟玻爾為代表的哥本哈根學派的多次「較量」中,也都是愛因斯坦「錯」了。當然科學的道路上沒有絕對的對與錯,也沒有絕對的真理。我還曾經用四條充足的「理由」,來證明相對論是錯的。現在看來只是個笑話,當時我也是在不夠了解相對論的情況下,提出的一些質疑罷了。

那麼我想說的是,易語言雖然很大程度上推動了中文編程的發展。但由於它本身過於封閉,又基於VC鏈接器編程的,自然擺脫不了C語言的所有框架束縛。畢竟是建立在別人框架之上的,編程的代碼就更加抽象化,離編程的本質也就越來越遠,編程用戶極難了解到更深層次的東西。

我也並不是說,學編程就一定要了解編程的本質,這畢竟太難了。但是能學會更深層次的知識,顯然對於編程的幫助是很大的。當你知其然又懂所以然的時候,自然可以有更多層面的應用。了解本質也並不是要你懂每一個電子元件是如何工作的,你只用在有能力的情況下,稍微思考一下為什麼代碼要這麼寫,這麼寫的好處和意義在哪裡。能弄明白更好,弄不明白也多試幾次,是不是不這樣就一定會出錯。當然這是在你有充足時間和精力的情況下。

關於易語言對於國人的影響到底有多大,我也無需再多說什麼。仁者見仁,智者見智吧。沒有人拿易語言跟其他編程語言相提並論,也沒有人把易語言編程者和其他程序員進行類比。我並不是說易語言編程者的能力比別人差,而是看到他們的思維過於「僵化」,可能這就是「中文編程」帶來的負面影響吧。同等情況下,初學其它語言的程序員思維也很局限,但是他們仍然保留著虛心學習的態度。也許就是因為英文編程學的時候一直都難,總感覺自己很多都沒學會。而易語言由於停滯不前,加上本身的局限性,極容易讓人產生「學到盡頭」的感覺,也就難免的驕傲自大。

易語言發展到現在的狀況,的確不是偶然。「語言之上的語言」,的確沒有瞎說。為什麼是凌駕於別的語言之上的?老外的編程體系是很龐大,我們用中文的代碼,最後替換「關鍵字」變成英文,你還不是「乖乖的」給我生成程序了?……那麼我也想反問一下,你把別人踩在腳下,還美其名曰「站在巨人的肩膀之上」,你就沒有想過巨人會一直願意被你踩嗎?

無論我們在晶元產業上受到多麼嚴重的制裁,國內的程序員永遠不會相信軟體會有被制裁的那一天。他們可以信誓旦旦的保證,別的軟體可能收費。編程軟體絕不可能收費。這就是使用破解版易語言的用戶,普遍這麼說的。沒錯啊,任何收費的軟體,都會有人破解的。沒有人思考「軟體保護法」的意義何在,也沒有人會去想為什麼老外會如此對我們,反正都是別人的錯。

總體來說,中文編程想要普及,幾乎是「難比登天」。至少我看到的這部分初學編程的人,他們幾乎都學過易語言。就算你跟他們關係很好,想讓他們學習新的語言,那是絕對不可能的事。有位接觸過易語言的朋友,道出了真相:因為他們的水平已經被限制到了初學階段,離開了易語言,他們什麼也不會。

我的一位鐵哥們也曾經勸我,不要嘗試讓那些學過編程的人,去接受你的編程語言,你去跟他們交流,也就降低了你的層次,變得跟他們一樣了嗎?你應該嘗試讓那些沒學過編程的人,能學會你的編程。

我當然也明白這個道理,但是沒學過編程的人,又想學編程的人,我一個也不認識啊。我哪來機會跟他們交流。再者說,受易語言熏陶變得思維僵化的這一部分人,也需要有人改變他們的思維啊。由此我就想到,在魯迅時代那種「俯首甘為孺子牛」的精神。編程也是一種「文化」,文化的發展離不開教育的進步。

近代以來教育最大的改革,當然是漢字的簡化了,當然也包含有漢字的拼音化鬥爭。結果總體來說還是好的,中國也並沒有放棄漢字和漢語。有很多人認為,印度之所以軟體業遠超中國,是因為他們使用的是英語,使用英語為母語,才更容易學會編程。那麼事實真的如此嗎?

五、英文真的適合編程嗎

編程語言之所以稱為語言,就是因為它跟我們說話的語言一樣,能夠形成龐大的「文化體系」。計算機軟體已經在各種行業起到重要的作用,而操作系統更是把繁如星海的應用程序,組成了我們不可或缺的生態體系。

我們中華的文化博大精深,輕易不會被西方的文化淹沒。雖然我們也學習他國語言,甚至用外語進行溝通交流、寫日記、寫小說和學術論文,但是我們絕不可能用外語來創造或者改變我們的文化。

然而電腦和手機卻在不斷的刷新我們的認知,改變我們的習慣,影響我們的生活。我們在這一領域備受制裁的同時,卻對目前的現狀無可奈何,計算機編程仍然是限制我們發展的重要因素之一,所以說開發中文編程並形成中國的編程文化,意義依然十分重要。我自己也是時刻關注著國內CPU產業,看到有國產晶元能兼容x86和ARM指令架構,支持指令多達兩千多條。可是真正在編程時,常用的CPU指令,連二十條都不會超過。那我們國家為什麼要生產這麼多指令的CPU呢?是因為國人不懂編程?

當然不是國人不懂編程,我國也不乏編程界的大神。但是很多會編程的朋友,會認為中文不適合編程,存在輸入困難等問題。但是實際情況並不是這樣,因為程序員在學習編程的時候,並沒有適合的中文語言可供選擇。一旦學會了英文編程,就會受到英文編程的邏輯思維限制,而不會去質疑英文編程是否合理。因為一旦寫錯一個字,就可能導致嚴重錯誤,所以不會去思考我這樣寫代碼到底好不好。

我前前後後研究和開發編程語言也將近十年,深知開發編程語言,並不是簡單的模仿和漢化,能實現程序的基本功能就行,而是要做到更易懂的同時,也要更效率穩定、更加人性化。

編程代碼也不是越通俗越好,程序代碼最終都是要編譯成CPU能讀懂的語言,也就是機器語言。

對於計算機來說,顯然是代碼越精鍊,執行效率就越高,程序也就更不容易出錯。

與機器語言最接近的,也就是彙編語言了,它是由英文字母組成的「助詞符」,而並非英文單詞。

因此並不能認為你熟悉英文,就能看懂彙編,那怕是英美的程序員,也是只有少數人懂彙編的。

那麼「高級語言」,就是由更易懂的英文單詞來編寫嗎?也不是。由於英文想要精確表達一個意思,需要很長的辭彙。書寫起來也是非常的不方便,所以高級語言為了書寫方便,仍然使用更簡短的英文字元組合。比如編程語言里

最常用的循環語句:for、do、while等,直面意思分別是:為、做、雖然。感覺都跟循環沒有關係,你也許會說是我翻譯的太片面,沒有表達出它們的原意。那麼我想請教英文好的國人,如果你沒學過編程,能一眼看出來這些個單詞就是循環的意思嗎?那麼編程這樣書寫,是為了計算機更好編譯嗎?然而並不是!

編程里使用最多的就是判斷語句、循環語句,它們的原理都是由條件跳轉構成。那麼我就舉例說明一下,英文編程有多麼的反人類和反電腦。在機器語言里的跳轉分為條件跳轉和無條件跳轉。雖然也有幾個循環指令,但是這些指令都是自循環,並不適合對用戶編寫的代碼進行循環。所以高級語言的循環,大多是用跳轉實現。

for循環通常是這樣寫的,for(i=0;i<10;i++){…用戶代碼}意思也就是對大括弧里的用戶代碼循環10次,

首先讓i這個變數等於0,(彙編就是mov 0到i的內存地址)這是循環前要做的,第二句i<10是根據第三句i++

這是讓i每次增加1,然後第二句的條件是i增加只能小於10。編譯成機器語言就是,如果i大於等於10,就跳轉到

用戶代碼之後。我們姑且的認為,意思就是先詢問一個「執行官」,我要跳到這一段代碼之後嗎?他說不用跳,

我就開始執行這一段用戶代碼,執行完怎麼辦,把i增加1啊,然後再跳回之前的地方,再把i增加之後,問我要跳過這段代碼嗎?當你執行這段代碼10次,i每次增加1。這時i等於10了,他就判斷i大於等於10,就直接跳走,不再循環。

不管是會不會編程的朋友,上面的話不要去深究其中的意思,不用試圖去理解看明白。總之是for循環小括弧里有三句代碼,在編譯為機器語言時候,要把這三句「拆開」,分別放在循環之前,「循環代碼」開始和「循環代碼」結束。

那麼你再試試看SEC中文編程語言的代碼,也看不懂沒關係,是不是感覺簡單了?

示例1:

循環(10){信息框(0,”朋友們大家好”,”中文編程真簡便”,信息圖標);}

示例2:

行號=1;

循環{信息框(0,成員表(行號).名字,成員表(行號).職位,信息圖標);行號++;}(行號=成員表.行數 或者 成員表(行號).名字=0)

小括弧里就是要循環的條件,大括弧里是要循環的代碼。條件可以放在循環之前,就是提前聲明要循環10次,循環內並不需要使用這個次數。條件也可以放到循環之後,也可以是單個或多個條件,示例2條件的意思是一直循環到行號等於表的行數為止,或者讀取的名字為空截止。編譯成機器語言,就是設置循環「{」處為A點,執行完用戶代碼,判斷不符合設置的條件就跳回去繼續循環,直到符合條件就結束循環。所以這樣編譯出來的機器語言,只用一個標記點,一個執行跳轉,這樣的編程語句不僅寫法簡單,編譯起來也更容易。

如果懂編程的朋友,可能會發現示例2的代碼有個明顯的錯誤。成員表裡的名字應該是文字吧,在編程里文本怎麼可能和數字進行比較(名字=0)?

我可以這麼回答,不僅文本可以跟數字比較,文本也能直接進行數學運算,SEC編程能「預測」到你是要把多個文本拼接,還是對文本進行加減乘除運算。

估計學習易語言的朋友一下就懵了。沒聽錯吧,文本還能進行數學運算?如果用戶寫的代碼,不是讓文本運算,讓二進位十六進位數據進行運算,那不就崩潰了嗎?那我這麼說吧,程序運行時候,在內存里全都是二進位(或稱十六進位)數據,並沒有整數、位元組、文本、小數等等類型的區分。

之所以學過編程的會有如此疑問,是因為易語言就是「轉換」之後的C語言。在C語言里,不止是數據類型有嚴格的規定,語法代碼限制極其死板。當你調用函數庫之類的操作時,所用的「對象」類型也是有嚴格的規定,我這裡說的「對象」是對所有東東的統稱,包括句柄、實例等等成千上萬種東西。就我說的兩個翻譯過來的名詞:「句柄」和「實例」就有點難理解了吧。何況還有數千種更難表達的英文術語,而且寫代碼時候你還不能弄錯。這也許就是C++被稱為最難懂的編程語言的原因之一吧。而漢語編程大多都是在「套用」或「漢化」國外現有的編程語言。這麼多生搬硬套的專業術語,都要翻譯成相應的漢語辭彙,翻譯過來也是超級難懂的漢字。

而我開發的編程語言,不依賴任何其它的語言,自然不受任何框架限制。所以才會有前面所說的數據類型之間,無需特殊的「轉換」,就可以自由使用。

這裡說的轉換也是其它編程必要的操作。在一堆二進位數據里,截取特定位置和長度的二進位數據,用轉換函數或者「複製數據」到變數地址進行轉換。

後面這種轉換是VB里常用的操作,那麼既然是把那裡的數據,複製到這裡,就完全了「轉換」,其意義何在?估計學編程的也不會去思考這個問題。

所以編程語言不再規定這麼多意義不大的死板定義時,寫代碼就變得特別簡單容易,管它什麼對象不對象,一切皆可整數。二進位數據也不用去特定位置截取特定長度,然後再去轉換,直接去這裡「拿」數據,就可以進行運算。你如果是跟整數運算,我就按整數,你跟小數運算,就按小數。說到「對象」,這也是計算機專業術語,就因為這個我還被易語言用戶罵的體無完膚。「你懂不懂什麼是對象」、「對象豈能跟什麼什麼混為一談」、「不懂不要裝懂,滾回去搞你的垃圾編程去吧,這裡不需要你來胡說八道」

由此我們不難看出,所謂的中文編程採用生硬的翻譯之後,讓很多漢語辭彙失去了原本的意思。就算你絞盡腦汁更換「適合」的漢語,依然擺脫不了毀中文的結局。所以這也是中文編程始終沒有發展起來的原因。一直都是在拿國外現有的編程語言,「改成」自己的語言,只會讓中文更難懂,把很多漢語賦予極不和諧的意義。

這也是易語言給中文帶來的負面影響,讓這些「用戶」無法正常和中國人使用漢語進行交流了。還好我沒學習易語言,而我也會英文編程,怎麼思維沒被固化呢?

首先我之前學過編程不假,但是我是學了多少,忘了多少。現在我又想起一件事。在我沒有電腦的時候,買過學習機啊,也正是用它學會了五筆打字。

當時那張「學習卡」上居然有個QBASIC編程,這我怎麼可能懂。湊巧的是我有一本93年的電子報合訂本,上面就有一個QBASIC的編程代碼,是叫什麼EEG腦電生物反饋儀器的一部分。電子報上的所有電子儀器我全都自製過,唯獨這個還帶編程的,一直沒研究。於是我就拿這段代碼在學習機上練習,還真給編寫成了。運行之後,出來一個「滑動條」和一個「滑塊」……

扯得太遠了,我們回到正題。我後來真正懂編程,並不是「學」會的。當年在論壇發帖子時候,還不能上傳圖片,但是可以把網路上的圖片地址,加到帖子里發出來。為了找圖片地址,就需要查看網頁源代碼,後來網頁代碼看的多了。我就嘗試修改本地網頁,慢慢的我就摸索懂了ASP代碼。這個過程就是想學沒學會,沒想學反倒會了。

但是因為沒學過基礎,都是改了之後刷新測試看結果。當時看到比較多的就是a=a+1,這是VB里最常用的遞增了,等同於C語言的a++。

會編程的一定覺得這多常見啊,可是我當時就不明白,為什麼a能等於a加1?按照數學公式,這一定是錯的。但是編程的邏輯就是如此,從沒有一個程序員覺得這不合理。

剛才只是說了,我雖然懂編程,但不是專業程序員,完全不會受英文編程框架的影響。下面我再舉個例子,說說英文怎麼就不適合編程了。

比如編程代碼里最常用的數據類型int,實際上是Integer的縮寫,也就是整數的意思。而int的直譯卻是智力。

我們在C語言的代碼里,看到大量的int,程序員一眼就知道這是整數類型,而普通人卻會看到很多「智力」

那麼我們再來說說Integer這個整數類型,在VB里的範圍是-32768到32767,而在C語言里卻是-21億到21億。

編程語言不應該是精準表達嗎?為什麼會這樣混亂?其實吧整數這個詞,在漢語體系里,也沒規定數值範圍。

漢語的計數單位有:個十百千萬十萬百萬千萬億,以及兆、京、垓、杼、穰、溝、澗、無量。確實也找不到

42億這樣的計量單位用詞,但是漢語很喜歡造量詞,比如一打等於十二個,一提是6罐啤酒,一紮是三升。

哈哈,怎麼跟啤酒杠上了。我是想說,英文在編程的時候,也仍然需要造詞,可是英文想表達的片語都太長了,需要簡化。而且英文單詞之間要有空格。可在編程時候的任何名稱都不允許用空格,空格是把名稱分割開來的重要標誌。而中文就可以用很簡短的幾個字,精準的表達意思,且不需要空格。

六、為什麼說中文更適合編程。

我再來舉個實例。在寫網路編程的時候,最為常見的參數 FD_READ | FD_WRITE | FD_CONNECT | FD_CLOSE

這是幾個參數組合使用的情況,豎線其實是「或」運算,在這裡等同於相加。它們相加之後就是一個數,直接用數字肯定更好啊。

那英文之所以這樣寫,也許是為了便於老外理解吧。那麼把這些換用中文表達,就會更加簡潔。

常量 讀寫斷開=[FD_READ | FD_WRITE | FD_CLOSE];

常量 讀寫連斷=[FD_READ | FD_WRITE | FD_CONNECT | FD_CLOSE];

常量 監聽斷開=[FD_ACCEPT | FD_CLOSE];

這段代碼是什麼意思呢?這一堆英文都是常數,也叫常量。編程時候經常會使用大量的數字,可是太多不好記呀,老外們就給這些數字起了相應名字起名太多又不能重名,前面就加什麼什麼下划杠。那麼我用中文起名,讀寫斷開就可以表示「FD_READ | FD_WRITE | FD_CLOSE」

讀寫連斷就可以代表「FD_READ | FD_WRITE | FD_CONNECT | FD_CLOSE」。有人問我這是翻譯嗎,有你這麼翻譯的嗎?

當然不是,我是藉此來說明,當我們需要用一個名稱來代表某一個或某一組合數字時,用中文不僅簡煉,而且意思清楚,又不容易重複。

那你有沒有想到,計算機編程的時候,其實很多時候是數字,為了好記,外國人才用英文符號代替。你這麼想就對了,不是很多時候是數字,而是全是數字。

變數是數字,常量是數字,字元串(文本)也是多個數字的組合。對象、子類、小程序、函數等等所有老外定義的東西,全是數字。

數字是你「看不見」的,比如我現在打的字「0123456789」是文字,它們對應的數字是48到57。那0怎麼不是對應數字0,卻是48?

因為數字0是空字元,1是正文開始,2是標題開始,3是正文結束,4是傳輸結束,5是請求,6是收到通知,7是響鈴,8是退格,9是水平製表符(Tab)

這什麼亂七八糟的?先別著急,我繼續再說幾個你也許就懂了:10是換行,11是垂直製表符,12是換頁符,13是回車鍵

回車鍵總算明白了吧,這些定義是早期機械打字機時代就已經定好了,到32開始才是空格和其它英文標點符號,空格鍵也知道吧。

一直排列到127是DEL刪除鍵,至此所有英文字母和標點符號全部包含了。至於漢字和其他國家的字,就是後來的事情了。總之每個字都對應一個數字。

數字不就是數學上的嗎?阿拉伯數字又不是英文,全球通用啊。計算機既然是「處理數字」的,憑什麼就不適合用中文?那麼這就涉及到計算機的歷史了。

學過計算機的朋友一定知道二進位和邏輯門的關係。在數學界有一位大神叫萊布尼茨,他是讀了易經之後,才發明了二進位。後來被計算機直接採用。

這個二進位比較容易理解,計算機就是由0和1組成的。而CPU的運算是由最原始的門電路發展而來。基礎的門電路有三種,與門、或門、非門。它們可以相互組合就能得到更多更複雜的邏輯門。像剛才說的豎線是或運算,用或門就可以實現。

而加減乘除等運算就需要多個門組合使用才能實現,具體怎麼實現就不討論了。就連這些個術語,我理解起來也覺得困難,可能是翻譯的不夠好吧。

還有門電路有一個重要的環節,就是要組合成三態門,才能實現複雜的運算。也就是高電位、低電位和高阻態,分別對應1、0和無效。

1和0是參與運算的,高阻態不參與運算。準確來說,計算機不是0和1組成,還包括無效。(我不敢稱之為空,空是編程里的術語)

見過河圖洛書的朋友,一定更容易明白。為什麼計算機會採用二進位,河圖洛書就是用黑點和白點組成的。然而你又會發現,只有0和1又不能進行「運算」,需要三態才可以,還有CPU是由三個基本的邏輯門組成,是因為「三生萬物」啊。八卦符號不就是有三爻嗎,三組陰和陽,組合出來是八卦。八位二進位就是一位元組。

一說到易經八卦,很多中國人的印象都是「晦澀難懂」,可是老外怎麼「懂」了,還利用它發明了計算機。可能我說的有些牽強了,而我真正想表達的意思是:

有時候看上去很複雜的東西,其實原理都很簡單,「大道至簡」呀。當你現在看到操作系統如此龐大,編程如此複雜的時候,會感覺這些也太難學了吧。

可是再複雜的操作系統也是由最初很基礎很簡單的編程軟體開發出來的啊,又回到了之前的那個問題,世界上第一個「軟體」是怎麼誕生的?

如果你知道了計算機的原理,這個問題自然不難回答。第一個「軟體」肯定是用硬體開發出來的,更複雜的軟體也都是由簡單的軟體給編譯出來的。如果你能把問題簡單化,那麼你就具備了編程的思維,而軟體並不一定要用「代碼」才能創造出來,而是由你的智慧創造出來的。但是程序員則認為程序就是用代碼寫出來的呀,如果你這麼想的話,那你學編程就學不到精髓,學到的只是技術,而不是一種技能。

技術和技能的區別,一般程序員是不會明白的。那麼我開發編程的意義是讓你學會這門技能,而不是讓你學會編程的技術。技術就相當於你學會易語言之後,離開它你就什麼也不會了。

而你又學會了一門別的語言,但是這門語言被新的語言淘汰之後,你又沒法編程了。而技能就是你學會了之後,即使沒有編程軟體,你也照樣能編程。當然這個例子說的太極端了些,不用編程軟體難道用硬體編程嗎,那學編程還有什麼意義?其實你可以換一種理解方式,技能和技術的區別就好比生存技能和生活技巧的區別。技能在任何條件下都能適用,技術就不一定。

好,不扯別的了,這一章節是討論中文的優勢的。我又想起來貼吧里一位網友的帖子,他說中文打字不方便,可以首拼取代,像循環可以用XH,整數可以用ZS等。其實這種辦法並不實用,因為首拼太容易重複了,我用中文寫代碼,也經常遇到這個漢語名稱已經用過了,或者就是嫌漢字輸入慢,那就用首拼代替。結果造成多次起名衝突的情況。

還有一點我要明確一下,拼音也是英文字母。它最早的起源就是古代來中國學習的外國人(利瑪竇),為了快速掌握漢語,就用西文發音來註解漢字。而中國的漢語拼音其實長這樣:

聲母:ㄅ玻 ㄆ坡 ㄇ摸 ㄈ佛 ㄉ得 ㄊ特 ㄋ訥 ㄌ勒 ㄍ歌 ㄎ科 ㄏ喝 ㄐ基 ㄑ欺 ㄒ希 ㄓ知 ㄔ蚩 ㄕ詩 ㄖ日 ㄗ資 ㄘ雌 ㄙ思

韻母:ㄚ啊 ㄛ喔 ㄜ鵝 ㄝ耶 ㄞ哀 ㄟ(ei)誒 ㄠ熬 ㄡ歐 ㄢ安 ㄣ恩 ㄤ昴 ㄥ(eng)嗯 ㄦ耳 ㄧ衣 ㄨ烏 ㄩ迂

有人說這漢語拼音的符號太難記了吧,所以現在都不再學漢語拼音,而改學英文字母。那麼你可以問家裡上年經的老人,他們反而是認識漢語拼音,英文字母很多不會讀不會寫。你之所以覺得英文更好記,是因為你從幼兒園,到小學、初中、高中、大學都一直在學習英語。還有為什麼這些漢語拼音的符號,可以在電腦上打出來,是因為台灣和日本一直在用。以後看到這些字,就算不認識,也別說這是日語了。

還有習慣用拼音打字的朋友,不要想當然的認為,英文拼音是中國的。有拼音的書籍,除了幼兒園的教材,還有哪些報刊文章新聞媒體使用過?英文字母的拼音,其實是給國外人看的。他們看到漢字不會讀,但是一看到拼音就能讀出來,而且人家還不用學「拼音」。其實中國古代也有拼音,只是沒有注音符號。上面那些注音符號是1918年才開始使用,如果仔細對比拉丁拼音和西文字母:

啊 α A 是不是這三個字前音很像啊。再看 玻 β B 發音也很像。得 δ D 又很像。如果拼音是中國原生的,怎麼會跟希臘、羅馬、拉丁語這麼接近?

然後你不妨再看看趙元任先生寫的兩篇文章,如果全用拉丁拼音,你還能看懂意思嗎?

《施氏食獅史》石室詩士施氏,嗜獅,誓食十獅。施氏時時適市視獅。十時,適十獅適市。是時,適施氏適市。施氏視是十獅,恃矢勢,使是十獅逝世。氏拾是十獅屍,適石室。石室濕,氏使侍拭石室。石室拭,施氏始試食是十獅屍。食時,始識是十獅屍,實十石獅屍。試釋是事。

《季姬擊雞記》季姬寂,集雞,雞即棘雞。棘雞飢嘰,季姬及箕稷濟雞。雞既濟,躋姬笈,季姬忌,急咭雞,雞急,繼圾幾,季姬急,即籍箕擊雞,箕疾擊幾伎,伎即齏,雞嘰集幾基,季姬急極屐擊雞,雞既殛,季姬激,即記《季姬擊雞記》。

唧唧雞,雞唧唧。幾雞擠擠集磯脊。機極疾,雞飢極,雞冀己技擊及鯽。機既濟薊畿,雞計疾機激幾鯽。機疾極,鯽極悸,急急擠集磯級際。繼即鯽跡極寂寂,繼即幾雞既飢,即唧唧。

上面的文章都是用文言文寫的,也確實有人用文言文寫過代碼,也在網上火了一段時間,那也只是看著爽爽而已。現代社會還用文言文的話,交流起來就十分困難,更何況是編程了。但是漢字的優點是什麼?

漢字是形、音、意俱全的文字,它既是文字,又是圖畫,又包含很多故事。中國人只要看到漢字,就能明白其中意思。雖然很多漢字簡化之後,失去字義了,好在台灣和某島國還有保留啊。

而如今很多人連五筆都不會打,還能記得漢字怎麼寫嗎?最近還特別流行用首拼來代替漢字,比如「YYDS」之類的,還是片語的首拼。而有很多短視頻的字幕都喜歡用英文字母代替單個漢字,還說那不是英文字母是拼音。有區別嗎?看著不覺得費勁嗎?那既然漢字里偶爾夾雜幾個拉丁拼音都這麼難讀。那編程代碼里全用英文,其難以理解的程度就可想而知了。

而我開發中文編程時,當然也想全部使用漢字,不用一個英文字母。但是這樣太過封閉了,英文編程體系這麼龐大,系統本身就都是英文的(我們看到的只是漢化了界面上的一些文字)。是不可能不用英文的。畢竟編程軟體不是用來寫小說詩詞的,就算全用漢字也不一定能看懂。就比如我看到易語言的那些表格和箭頭關係,也是一臉問號。跟我是相同情況的人也不在少數。如果你是真心支持中文編程發展的話,那麼首先你得明白你為什麼要學習編程,學習編程的意義是什麼?

七、學習編程的意義

如果我問你為什麼要學編程,你說學編程可以賺錢呀,等你學會了編程,就有人花錢找你寫軟體。那我還是奉勸你一句,幹什麼都能賺錢,為什麼非要學編程?你還是干點別的吧。

那你說「我喜歡編程呀,學會編程我就比別人多一項本領。別人就會用崇拜的眼光看著我。」那你還是反問一下自己,為什麼喜歡編程,為的就是讓別人崇拜你嗎?

當然更多的人都是有個明確目標的,就是為了編程而學編程。比方說有一個很好的想法,需要用編程去實現。或者說手動去完成某項工件特別累,想用編程自動化實現等等。

這種「為了編程而學編程」的人占絕大多數,但是這並不是學習編程的意義。我之前特彆強調說,我開發編程軟體目的,並不是單純的讓中國人更容易學會編程這門技術,而是讓你掌握一門技能。當然對於還沒有掌握編程技術的你來說,你是不會明白這裡面有什麼區別的。但是我現在還是有義務讓你明白,什麼是學習編程的意義。

這裡說的編程,是指在計算機領域使用編程軟體編寫代碼並生成可執行文件。這句話很拗口也不專業,我又不是專業人士,湊和著看吧。因為在有些領域,編程也就是調一些參數,改一些數字。你也許會說,改一些數字就能叫編程,這也太簡單了吧。那好,發射火箭時「點火時間」也是個數字,你會調嗎?雖然說這只是個玩笑,但是「電腦編程」從本質上來說,也是在「調」數字啊,你代碼不管怎麼寫,最終也是生成了一堆你自己都看不懂的「數字」。

如果說電腦編程也就是在「調數字」,你是不是瞬間覺得沒那麼高大上了。雖然說你在熒幕上看到別人用數字0和1,創造出無比神奇的東西,你也會萬分羨慕。但是編程真要你這麼寫,你還會學嗎?我之所以說這一段話,是讓你思考一下,編程最終目的,也只是生成了一堆「數字」,那它的意義究竟是什麼?

也許你會問我,「你是設計編程語言的,你設計編程語言的意義是什麼?」。全球上千種編程軟體,有免費的也有收費的,總體來說是免費的居多。如果說微軟等公司推出的編程軟體,是為他們的系統做服務。那別的公司也沒有自己的操作系統,做那些免費編程軟體是為了什麼?當然這不是我所關心的領域,他們的目的是什麼我不清楚。我做編程軟體的目的也是為未來開發操作系統用的。

顯然這個牛皮吹的實在是大了些。肯定一堆質疑的聲音:你什麼背景,什麼學歷,什麼資格。就敢大言不慚的說要研發操作系統,你知道啥是系統嗎?

啥是「操作系統」,我知道啊,這是四個漢字啊,我不但會念,還會寫這四個字。你就是說破了天,這也是四個漢字。

行了,不貧了。我在這兜扯半天,其實就是讓你明白一個道理:學習編程並不是我把所有知識都傳授給你,授之以魚,不如授之以漁。前面我也說過,編程可以說是一種文化。學習編程可以陶冶情操、啟迪心智、凈化思想、升華境界,實乃泡妞裝逼必備之技能也。(我去,又在這胡說八道了,能不能好好說話)

因為這是一個「不一般」的話題,自然要慢慢道來。我這裡所謂的「意義」,大概是指除了滿足和實現你的真實目的之外,能給你帶來什麼。你在編寫程序的時候,無論遇到多麼嚴重的BUG,都不是直接去摔電腦、砸桌子。無論面對多麼變態的老闆、刁鑽的客戶,你也沒有揮刀拔槍,拳腳相向對吧。無論面對多大的難題,你都會從容面對。那「陶冶情操」有木有?「啟迪心智」有木有?「凈化思想」有木有?

編程既然說是一種文化,那麼學習編程也是一種促進文化發展的「交流形式」。這種交流不僅是人與人,人與自然,也包括人與機器、人與虛擬世界的交流。很多「大人物」都說過,宇宙世界是真實存在的概率極低極低。編程作為一種獨特的思維交流方式,也是打開新世界大門的一把鑰匙。學習編程,不只是為了實現開發程序。而是你的思維方式變了,看待事物的態度也會改變。用更加宏大的格局去看待現實世界和虛擬世界,探索更多更大的未知世界,乃至與另一種文明進行交流和學習……

沒錯,我經常就是這麼說話,早已習慣了別人說我太能「裝」。別人更多是說我不把「錢」看在眼裡,從不考慮「利益」二字。這可能跟我的價值觀有關。從小開始讀書的時候,書上沒有講過賺錢有什麼用,更沒有講過該如何賺錢。反倒是能看到「錢乃身外之物,生不帶來,死不帶走」,「金錢如糞土」,「滿身的銅臭味」諸如此類的話。也沒有哪個學者、專家、權威或者法律條文說過,人活著就一定要賺錢。

那我現在問你賺錢的意義是什麼?為了生存!生存的意義是什麼?為了養家糊口,為了家庭幸福,其意義又是什麼?如果你連自己所作所為、所想所願的意義都沒搞清楚,那你是為什麼而賺錢?為什麼而工作?

有的人貧窮,有的人富有。有的人活的短暫,有的人活的長久。有些人活的洒脫自在,有些人活的累成了狗。終又有幾人明白生活的意義?家財萬貫、紙醉金迷又如何,百年之後最多留下一把灰……

人生的意義在於,你能為當前的文明留下什麼。一個發明創造也好,詩詞歌賦也罷,論文小說公理公式也行,都是人類文明的財富。然而這世上的一切都是財富,唯獨金錢不是。有錢只會讓你一無所有。

有些名人曾經說過:經驗是自我發展最大的障礙。只有不斷的學習,不斷的打破常規,挑戰自我,才是走向成功的正確路徑。學習不是讓你死記硬背,生搬硬套。學習編程也是一樣,機器是死的,代碼是活的。程序是死的,運用才是活的。編程只是一種方法,而不是一種技巧。「電腦」也只是一台機器而已,它沒有智慧,也沒有靈魂。如果沒有人類去使用電腦,它連存在的意義都沒有。雖然它「看」起來比人類還要聰明,還有近年來被炒的火熱的「人工智慧」,讓你誤以為電腦是有思維的,有靈魂的,有智慧的機器。那電腦到底是什麼樣的機器呢?

八、什麼是計算機

為什麼叫「計算機」,因為它是計算數字的機器啊。估計很多人看到這句話,都要笑掉大牙了。但是從本質上來說,這有錯嗎?

我前面也零星的講過,CPU就是由三個基本邏輯門電路組成的一個處理運算的集成電路,也叫晶元。「運算」的原理也不複雜,就是一大堆電子開關,可以控制哪些電路接入匯流排,哪些電路斷開匯流排,再去哪些電路取數據,或者把哪些電路的數據電位,「傳送」表現到到哪些電路上。可能我說的話很不嚴謹,但是大體上就是這麼個道理。計算機和計算器以及算盤,本質上是相同的。

那麼不同點在哪裡呢?計算能力和速度?存儲容量和傳輸效率?的確不好定義是哪個指標是最為重要的。但是有一點是可以確定的:如果計算機里不安裝操作系統和軟體的話,你根本不會去比較,因為你就沒法用啊。

計算機從本質上也是進行數學運算的,軟體編程從本質上也是修改編輯數字的。難道我們國家數學不行嗎?硬體軟體都不會自己做?

說到硬體吧,我們早就會做,只能說高端晶元,我們還有很大的差距。其中最為關鍵的是設計晶元的「軟體」——EDA,我們做不了。

你可能會有疑問,不就是一個軟體嗎?國內這麼多高級人才,怎麼會做不出一個軟體?電腦高手就不能破解它嗎?

在很多人看來,自主研發晶元最難的是國產光刻機,設計晶元反而相對簡單,這其實是一個錯誤的認知。由於EDA工具在晶元生產的過程中至關重要,是晶元領域皇冠上的明珠,所以它又被譽為「晶元之母」。顧名思義,沒有EDA工具,晶元就無法設計出來,自然也談不上生產了。

目前EDA工具全球占絕對主流地位的,都是來自美國公司的軟體,其中業界一哥是美國公司新思科技,它的EDA軟體也被很多晶元設計公司所採用。新思、益華、明導國際三家公司的EDA軟體佔據了全球95%的市場,很遺憾的是這三家都是美國公司,也就是說全球大多數設計出來的商用民用晶元,實際上都逃不開美國的科技。

那為什麼不用其他國家科技公司的EDA軟體呢?很簡單,美國EDA軟體好用唄!既然是用來設計晶元的,那麼EDA軟體越先進,就代表著晶元設計越容易,好的EDA工具不但可以讓晶元設計的周期縮短,同時也能大大節約晶元設計的成本。現在一顆先進工藝的晶元,比如CPU或者GPU,設計通常要花24個月的周期,成本超過2億美元。這還是用目前最先進的EDA工具設計的,如果用一些落後的EDA工具,設計的周期和成本都要大幅提升,同時晶元性能也無法達到預期,這對於現在的晶元公司而言無疑是得不償失的。

說這麼多,意思就是如果EDA軟體水平上不去,即使我們擁有了自己的光刻機,但要生產出高端複雜的晶元,還是得靠海外的EDA工具設計,這樣卡脖子的問題依然無法徹底解決,特別是採用先進工藝的晶元,國內EDA軟體幾乎無法勝任!當然我國現在還在努力實現28nm光刻機自主研發,談EDA軟體似乎早了點。

現在你能知道軟體的重要性了吧,EDA可不是一般的軟體。通常我們見到的軟體都是基於操作系統下的常規應用,像高精尖領域的那些軟體我們一個也做不出來。就是因為編程軟體能提供的也只有這些「功能」

程序員也只能寫那些能夠找到的或者你能學到的那些「代碼」。那些牽涉到核心機密的「功能」,是不會有資料對外公開的。而現在我們編程都還是用國外提供的編程軟體,這些軟體會願意讓你設計出比他們自己還要厲害的「軟體」嗎?師傅都不願意真心教你,徒弟怎麼可能超越師傅?

那你此時肯定想問我,前面我吹噓那麼多,「說什麼別人編程軟體都不是自己的核心,只有你才是完全自主實現的核心編程。那你咋不做EDA呢?合著你吹了半天,還是連一個軟體都不會寫」。

這話很多人都會說,又不是說我一個人。說就說唄,無論你刺痛的是誰,他「發憤圖強」開發出來比國外還牛的EDA軟體,都是值得全國人民高興慶祝的事情。

最後總結幾句吧,很多人以為在計算機方面我們被卡脖子,是硬體被卡,其實是軟體。硬體攻關對於中國來說並不算難事,最難的還是軟體。目前國內設計軟體全部依賴國外的提供的編程工具,功能就這麼多。或者說人家就公開這麼多資料,你也只能照著人家的教程或者參考別人開發的示例去寫。那我開發的編程軟體算什麼呢?我只能說還在模仿的道路上艱難前行。之前我們也照抄都不會,只能依賴於別人。其實模仿沒什麼可丟人的,總比一直用別人的好,因為人家並不樂意你用。那些自以為國外編程會永久免費的程序員,只是看不見人家的臉色而已。還有那些一直用盜版破解軟體的人,還理直氣壯的說「誰讓你技術這麼爛,被別人破解了,又不是我破解的。」,而破解別人的人還「自豪」地說看我多牛,為多少人做「貢獻」了。還有那些黑別人網站,盜人家數據的人,還厚顏無恥的說「我能入侵某國安全局,給他們網站插國旗,我是祖國的英雄。」我只想弱弱的問一下,你還能幹點別的不?還有那些整天說「不要重複造輪子」,「站在巨人的肩膀上」,反過來說可以不。「你不會造輪子對不對」,「你也只能踩著別人,被摔下來你還能站起來不」。

本文內容由互聯網用戶自發貢獻,該文觀點僅代表作者本人。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如發現本站有涉嫌抄襲侵權/違法違規的內容, 請發送郵件至 2557861106@qq.com 舉報,一經查實,本站將立刻刪除。如若轉載,請註明出處:https://acenms.com/3798.html