{eval=Array;=+count(Array);}
謝邀。
程序員編程時,C語言的確可以看做一門“外語”——一門我們人類與計算機交流的語言,編程就是將人類的意圖通過這門“外語”翻譯給計算機,計算機理解我們的意圖后,就知道該做什么了。
不過,編程語言這門“外語”與我們人類之間交流的語言(漢語,英語等)還是有一些不同的,這里將嘗試說說我認為的二者的區別。
在開始看 C 語言代碼之前,我們先來說說“自然語言”和“形式語言”。“自然語言”就是我們人類說的語言,比如漢語,英語,日語,法語等等,自然語言并不算是人為設計的,更多的是在人類進化過程中逐步形成的。
“形式語言”則是人們為了一些特定的應用人為設計的,一般包括符號和結構的設計,比如數學算式的數字和運算符號,化學家的化學式等等。
當我們閱讀一條語句時,不論它是“自然語言”還是“形式語言”,不僅要理解符號的意義,也要讀懂結構的含義。例如“我想打你”這句話,不僅要知道每個字的意思,還要知道這句話的結構,“我”和“你”的位置不同,表達的意思是截然相反的。
如今,自然語言也有語言學家研究,并且加了一些加強規則,比如主謂賓的語法等。但是自然語言的規則嚴格性,遠遠沒有形式語言那么苛刻。
相對于“自然語言”,“形式語言”對規則要嚴格的多,我們說病句,例如“我跑得快比你”和“我比你跑得快”這兩句話,一般人也能懂。但是形式語言就不可以了,無論是符號錯誤,還是結構錯誤,都不能正確表示原本期望表達的含義。
構成算術式:1 + 8 = 9
構成水分子化學符號:H2O
存在非法符號:1 + 8@ = 9
腳標不對:HO2
編程語言自然是屬于形式語言,我們來看看 C 語言版本的 hello world:
雖然這只是非常簡單的程序,但是卻能說明 C 語言的很多規則。
使用printf函數之前,要首先包含它的頭文件stdio.h。包含頭文件要使用#+include符號,而且這條語句要獨自占一行。
main是C語言默認的入口,程序從入口開始執行,它是int類型的,int 要與 main 用空格,tab或換行符隔開,函數要有括號和大括號,函數內的語句要用分號結尾。另外,上面的代碼中有很多縮進,不過這是可選的,恰當的縮進只是為了我們人類看著方便而已。
以上都是 C 這門形式語言定義的符號和結構,要嚴格遵守規則,才能寫出正確的 C 語言代碼。如今,其他編程語言也是類似的,都必須嚴格設計好的規則進行。
計算機編程語言和我們人類使用的自然語言有很多共同之處,但是也有很多不一樣的地方。
自然語言充滿歧義,人們通過上下文的線索和其它一些信息來解決這個問題。但是編程語言就不能有這樣的歧義,計算機不會自己主動理解人類的意圖。
為了消除歧義減少誤解,自然語言引入了相當多的冗余,比如很多語氣詞感嘆詞。結果是自然語言經常變得啰里啰嗦,而形式語言則更加緊湊,極少有冗余。
自然語言充斥著成語和隱喻,我在不同場合說的相同一句話,意義卻可能不同。而編程語言就永遠都是一個意思,語義不會隨著場合,時間變化。
說自然語言長大的人,往往有一個適應編程員(形式語言)的困難過程,這也往往是入門編程的一個小難點。
歡迎在評論區一起討論,質疑。文章都是手打原創,每天最淺顯的介紹C語言、linux等嵌入式開發,喜歡我的文章就關注一波吧,可以看到最新更新和之前的文章哦。
單純的從語言層面來算的話,其實也沒啥區別,只是漢語和英語是需要翻譯給人的,C語言是翻譯給計算機的。
比如C語言的翻譯流程,寫代碼,交給編譯器,編譯器翻譯成匯編語言,匯編語言在翻譯成二進制,這樣計算機就懂了可以執行了。
漢語和英語,說話交給耳朵或者眼睛,然后在由大腦接收后翻譯成人類可以理解的電信號。
簡單來說C語音做的使把人類的想法傳遞給機器。機器只能識別“0”或者“1”,C語音能夠把人的想法附著在機器上,讓機器什么時候該“0”,什么時候該“1”。
C語言等編程語言
1 單詞很少,也就幾十個。
2 詞義明確,沒有一詞多義現象,很容易理解。
3 沒有時態語態變化,容易掌握。
4 沒有詞法語法修辭,談不上是語言吧,就是個符號系統。
請不要把編程語言看做什么語言了,就是簡單的符號!
6
回答2
回答1
回答7
回答10
回答0
回答10
回答10
回答10
回答0
回答