您當前的位置:首頁 > 文化

中文表達比英文簡潔,中文程式設計能否做到比英文程式設計更高效?

作者:由 陳超 發表于 文化時間:2012-04-18

中文表達比英文簡潔,中文程式設計能否做到比英文程式設計更高效?羅駿飛2012-04-18 15:39:26

沒有意義吧。。程式與其說是英文,不如說是數學,區別一種語言與另一種語言,不是看它語法的表皮是“let a =10” 還是“a=10” 還是 “SHORT A =10” 還是 “ a等於十”還是“(=,a,10)”,語言根本的區別在於語言提供的資料結構和演算法表現力,以及編譯的方式,是否提供了面向物件的類、物件等資料結構?是否提供了繼承、多型等處理方法?是否支援模板以及函式的過載?是強型別還是弱型別?是解釋執行還是編譯執行?是靜態編譯還是動態編譯?

中文程式語言,如果只是把SHORT A=10變為 整型資料A等於十,那麼不過是對詞法處理器進行了一定的變更,對於整個語言完全沒有影響,就相當於給你的臉換了一層皮,不可能你就從中國人變成了外國人。。。基本屬於騙錢的東西。

至於深入的,從頭到尾的, 對整個編譯器前後端的完全漢化,乃至創造符合漢語言思維方式的語言,個人覺得因為語言的核心都是數學,而數學都是不分國界的,基本也毫無意義。。

中文表達比英文簡潔,中文程式設計能否做到比英文程式設計更高效?Hu Xin2014-05-12 11:42:26

誠如第一條答案所言,通常認為程式語言的區別不在於語法表皮,而在於功能與工作方式。甚至說,語言的功能性通常會被誇大,以至於其實語法上的規定很多時候會顯得過於隨意。

我記得看過某google group討論串,是關於python/ruby/R這種以縮排表示語句塊的語言的。沒有多少人會喜歡打大括號(特別是js使用者),但也有人堅持一門語言的語法應當要求程式設計師打大括號而不是縮排,因為對於lexer來說從一門基於大括號的語言來生成AST,其實現可以非常非常簡潔可靠,而基於縮排的話則產生一些不必要的歧義,比如python和R對於換行的處理即不同。

也就是說,歸根結底,設計語言這件事情是面向編譯器而不是面向程式設計師的。如果設計者可以在語言使用者的便捷性和編譯器的可靠性上做出選擇的話,應當選擇編譯器的可靠性。遇到任何問題時,語法是最先被妥協的。

然而,隨著虛擬機器技術的發展,如今一門帶有成熟jit的虛擬機器語言與原生程式碼已經劣勢不明顯了。如果面向某個虛擬機器設計語言,是可以在自定義語法表現力的前提下,支援該虛擬機器上其他語言,並且享受該虛擬機器的效能最佳化的,比如groovy/scala之於java。

就中文程式語言來說,也未嘗不能基於某種大牌虛擬機器之上。在功能與效能上不必自己開發且與其他語言相容的情況下,發展一下面向程式設計師的一面,而這裡尚有許多可以挖掘的地方。中文天生行文不帶空格,也許應當另行設計分詞演算法規則。中文比英文的字符集大上許多倍,以其表現力來說,表達語法並不需要堆砌過多字詞或符號。在不犧牲功能效能的基礎上,讓程式設計對程式設計師來說更加自然,這至少會是很有意義的探索。

中文表達比英文簡潔,中文程式設計能否做到比英文程式設計更高效?知乎使用者2014-10-16 06:27:50

怎麼沒人提這個

https://

code。google。com/p/chtml

/

CHTML 專案組和草泥馬程式語言已經達成諒解備忘, 互相推動彼此發展, 推進馬勒戈壁資訊化產業的發展, 三年內開創戈壁上的新矽谷。

CHTML 是國際網際網路組織 W3C 超文字標記語言 4。0 的一個實現。 是在漢語程式設計光輝思想的指導下, 網際網路普遍協議與中國國情相結合的產物。 和漢語程式設計一樣, 原來使用英文的標籤現在可以

全部使用中文

; 除此之外, 還額外擴充套件了兩個標籤, 即 <反功夫網> 和 <勾>。 除此以外, 該協議和現有 HTML 標準完全相容。 目前 CHTML 的版本是零點零一。

<勾> 是和中國國情結合的產物。 有時候我們需要建立只有一個答案的投票, 此標籤即可用於及時丟棄使用者投票, 節省伺服器資源, 彰顯社會主義優越性。

<反功夫網> 是著名的 CAPTCHA 系統的瀏覽器實現。 所以在此標籤中的元素都變成 CAPTCHA 從而人可以順利閱讀, 而機器不能。 目前的實現有兩個, 一個是由 CMU 構建的 reCAPTCHA 文字自動轉系統, 另一種是由中國網民發起的豎起來的文字系統。 此標籤對人和搜尋引擎都無害, 但可以透明飛躍長城。 技術細節還在討論當中。

為便於中文開發者理解含義, 其他標籤也按照中文網際網路的特色做了相應的定義。 如, 變成 <含淚勸告>, 變成 <停頓鼓掌>,更多的細節可以參見這個

中文文件

我們的新版本也在緊鑼密鼓的開發中, 請各界群眾檢視我們新版本中部分標籤的 任前公示

中文表達比英文簡潔,中文程式設計能否做到比英文程式設計更高效?徐飛2014-11-28 09:26:27

說一些比較低端的事情吧。

03年我學C#的時候,發現一個好玩的東西,可以用很複雜的字元當變數名,比如說,一般的語言寫圓周率,都是寫一個pi,但是在C#裡面可以直接打一個π,除此之外,用中文也可以。當時我也就是這麼驚訝一下,沒覺得有什麼用處。

後來到04年,我聽人說,他在一個使用。net的小軟體公司,公司要求員工使用中文當類名,變數名,方法名,他很不開心,覺得非常2,我也這麼覺得。

後來,我參與過很多傳統管理軟體的專案,裡面人員的能力參差不齊,低端外包居多,有什麼頭疼問題呢,就是變數命名,我發現這些人多數英文特別渣,壓根沒法根據軟體所處的行業對變數進行合理的命名,而且到處都是拼寫錯誤,而且你也知道,這種行業人員流動很快,後一個人接手的時候,很多時候就不知道前一個人寫的是什麼了。如果說系統規模夠大,真的會有至少20%的時間花到這種破事上。

這時候我回顧之前那種東西,覺得還是能適用一些場景,解決一些問題的。我們說中文程式設計,並不是指要很變態地把運算子之類底層的東西都漢化,而是隻限於變數名,那麼,你就有可能看到這樣的程式碼:

定單 一個定單 = 定單工廠。建立定單(引數);

一個定單。校驗();

一個定單。提交();

儘管輸入的時候有些彆扭,但這個至少不會有人看不懂了……而且,如果是C#那麼好的東西,藉助強大的VS,一個點出來,後面列出一堆中文方法和變數名,對這個群體的生產力提升還是有幫助的。

不是所有軟體都是那麼高階,很低層的總要有人做,而且這些軟體一般都都是在處理業務邏輯,那些懂業務但是不懂程式碼的人想審閱他們的邏輯是不是正確,也很便利。可見,10年前那家公司的架構師並不是我們想象的那樣沒見識。

中文表達比英文簡潔,中文程式設計能否做到比英文程式設計更高效?RednaxelaFX2014-11-29 08:44:10

每次看到這種討論我都忍不住想拿一些現成的例子出來看。中文的程式語言大家討論的可能比較多,所以拿CJK大家庭中的J,日語來考察看看。

日語程式語言幾例:

なでしこ:

なでしこ:日本語プログラミング言語

以及其前身的ひまわり

ひまわり:

ひまわり-日本語プログラミング言語

這倆的特點都是:它們比較像

AppleScript

,本身的語言風格就是比較接近自然語言的語序和結構的,主要用於批處理指令碼的場景,這樣可以充分發揮其“本地語言”的優勢。

如果是更hard-core的程式設計的話“本地語言”就沒啥優勢了,要麼羅嗦要麼彆扭。

Wiki列表裡的一堆:

Non-English-based programming languages

其中像丙正正這麼歡樂的概念大家歡樂完之後還是得用C++⋯

另外⋯想起以前在淘寶的某業務組輪崗時的體會:

那邊某些程式碼充斥著英文、拼錯的英文、漢語拼音、拼錯的漢語拼音,全部混在一起看得我頭昏腦脹。我實在受不了了,於是給他們寫的單元測試一概用了

漢語方法名

,例如:

@Test

void

測試提交訂單

()

{

// 。。。

}

這樣JUnit跑出來的結果就都是

正統漢字

了。再見,噁心的拼寫錯誤(逃

(不過我輪崗結束後那些漢語方法名應該又都被幹掉了哈哈哈哈)