Atitit.編程語言and 自然語言的比較and 編程語言未來的發展 1. 單詞的間隔靠空格,編程的單詞的間隔靠分界符..1 2. 語句分界符:自然語言使用逗號,編程語言使用分號1 3. 換行1 4. 段落and fun method2 5. 上下文相關2 6. 操作泛型化2 7. 動詞和名詞之間
Atitit.編程語言and 自然語言的比較and 編程語言未來的發展
8.1.2. 自然語言中的指代詞(你、我、他、它等等)好比編程語言中的“指針(point)”。4
8.2. 這類疑問句似乎在編程語言 是包括函數在內的“表達式”。4
11. 一個類型系統。 自然語言中常用’token',編程語言常用‘instance’。5
1. 單詞的間隔靠空格,編程的單詞的間隔靠分界符..
括弧 逗號 stop 句號
2. 語句分界符:自然語言使用逗號,編程語言使用分號
3. 換行
自然語言很少的中間做..編程語言很多中個..
作者:: 綽號:老哇的爪子 ( 全名::Attilax Akbar Al Rapanui 阿提拉克斯 阿克巴 阿爾 拉帕努伊 ) 漢字名:艾龍, EMAIL:[email protected]
轉載請註明來源: http://www.cnblogs.com/attilax/
4. 段落and fun method
編程靠fun method來定義段落..
5. 上下文相關
編程語言跟個自然語言都是上下文相關的..業務角度...
技術上的ast絕大部分還是上下文無相關的.
6. 操作泛型化
自然語言中存在一些“ 泛義動詞 ” ,例如漢語中的“打” , “搞” , “乾”„„, 英語中的“ get ” , “ take ”等。它們的進一步的具體含義要由這些動詞所涉及 的對象來確定。例如: “打毛衣”中的“打”應理解為“編織” , “打籃球” 中的“打”應理解為“玩” , “打開水”中的“打”應理解為“取得” ,等 等。
l
在面向對
在面向對象的編程語言中,也有類似的“動態綁定(Dynamic Binding)”機 制:一個函數名或者子程式名字的具體含義要在“運行時”依據所涉及對象在當時的指的類型來決定
數據:常數、變數名。它們對應於自然語言中的名詞。
l 其他:起連接作用、用來表述token 之間的關係的符號,例如if, then等等。 它們對應於自然語言中的連接詞、感嘆詞等等
7. 動詞和名詞之間的互換性
在自然語言中,有一個引人矚目的現象,那就是“名詞和動詞之間的呼喚性”。這是因為,“詞”或者token是用來表達“概念”的,而一個概念往往有多種側面。所以自然語言中常常出現用同一個“符號”來表達不同的側面的現象。舉例來說: “釘”本來是名詞,但是可以轉化,作為動詞來使用:我把畫釘在牆上
函數十編程走十中個.不個fun trans as data..
8. 詞類的判斷
從語法分析的角度看,對詞或 token 進行分類的依據是它的語法功能。從語言使用者的角度看,則是他們的使用方式。因此如何對詞或 token所屬類別進行判斷乃是一件至關重要的事情。
不管在自然語言中,還是在編程語言中,判斷一個詞或者 token 的類別的辦法基本上是兩種:詞典 和 詞本身所攜帶的形態標誌。
詞典中提供的信息
在編程語言中,為判斷一個 token 的類別而提供的“詞典”有兩種:
1. 一種是語言中“先驗地”規定好了的外部詞典。例如關鍵字和一些保留字。
2. 另外一種是編程人員(用戶)臨時定義的內部詞典,這就是程式中的 declaration.
8.1.1. 詞類劃分的形式標誌
如果能夠從詞或 token的外形(形式上的)特征就能判斷出他是屬於哪一類,那麼無論從“書寫者撰寫”的角度,還是從“閱讀者理解”的角度,都能夠大大減少出錯的機會。
在某些編程語言(例如Visual Basic)中,如果一個變數沒有在任何地方加以聲明,也可以從變數名字的外形上看出它的類型。例如:名字以%結尾的變數是?整數?, 名字以&結尾的變數是?字元串?,名字以&結尾的變數是?浮點數?等等。
英語中,在某種程度上也有類似的機制,例如:以tion, ing 結尾的基本上是名詞。以-lize 結尾的基本上是名詞。以-ful 結尾的基本上是形容詞。以-ly 結尾的大概是副詞。
漢語使用方塊字,沒有辦法添加尾綴,所以沒有這樣的形態標誌。因此大家認為,這一現象給漢語的電腦處理增加了困難。不過話不能說得太絕對。在某些情況下,漢語還是有“形態標誌”的。例如,在名詞的前面加“很”“還”之類一般用來修飾形容詞的副詞,就是在“形態”上指出:後面的這個名詞已經轉化為“形容詞”了。例子如:“同學們說我穿這條裙子很青春。”,“我們排演的這套節目還是很生活的。”,
8.1.2. 自然語言中的指代詞(你、我、他、它等等)好比編程語言中的“指針(point)”。
但是自然語言中從不明顯地交待:從現在起,“他”表示“張三”,直到遇見新的聲明為止。每一個具體的代詞指向何方要根據句子域句子之間的前後語義來聯繫來判斷
8.1. 這類疑問句似乎在編程語言 是包括函數在內的“表達式”。
8.2. 語句分析的“終極”在哪裡?
電腦語言的編譯器在分析電腦程式中的語句時,最終總是要分析到語法規則中所規定的“終極符(terminator)”為止。
9. 詞法檢查
從詞法的角度,語素和語素合成單詞是有一定規則的。例如中文的‘碧’字,作為一個語素,和其它語素結合成單詞時有一個限制條件,必須是單音語素。如:碧空,碧藍,碧綠;但是,碧天空,碧寶藍等就不合法了。程式設計語言的單詞(稱作identifier,標識詞)也有著類似的嚴格規定。例如,任何identifier必須以字母或下劃線開頭,像 bilan、 _blian等就是合法的identifier,而23bilan、@bilan就屬於非法的。任何一個identifier中間不能有空格,否則非法
10. 句法檢查
從句法的角度,有類似自然語言的條從句:if x < y then print x +y;
意思是,如果兩個identifier所代表的數不相等且x小於y,那麼,將x所代表的數和y所代表的數相加,然後將結果列印出來。
從語義的角度,任何一個identifier都可以定義為不同的類型。例如 name可以代表‘張三’,age可以代表25
String name = ‘張三’;
程式設計語言中關於語法和語義的定義是非常嚴格、明確的,不能模棱兩可。例如,單複數的定義,
在漢語中,根本就是殘缺的,只有在指人類實體是可以‘可選地’用‘們’,而且用法非常複雜。英語簡單一些,用加s的方式表達。但有些單詞單複數一樣,如equipment,有些單詞只有複數沒有單數,如alms。無法只從形態上判斷是單複數。
而程式設計語言就沒有這樣的問題:
任何定義了品詞的identifier都是單數名詞。而複數名詞則需要一個特定的詞類,通常叫做數組,或者叫做’表‘。例如
11. 一個類型系統。 自然語言中常用’token',編程語言常用‘instance’。
這些只是編程語言和自然語言的錶面的異同。更本質的共通點,我覺得是二者之間都有一個類型系統。
談到類型,就要引入另一個術語,自然語言中常用’token',編程語言常用‘instance’。我們經常重覆已經說過的話
當然,我們有時需要區分類型和實例。自然語言的辦法是加限定詞。你的朋友剛想拿一塊糖,你說,不是叫你吃這塊糖,而是那塊(當然在這種情景下必須有身體語言輔助:你得指著某一特定的糖塊)。‘這’和‘那’還是很模糊,一定要明確,恐怕就要加更多的限定、形容
12. ref
自然語言與機器語言的比較 南京廖華.htm
自然語言和程式設計語言的某些共通點.htm