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