現在很多編譯器就是把一種程式語言轉換成機器語言讓機器能過理解並且執行,只是程式語言和自然語言還是有一定的差距,也就是這樣的差距使得直接翻譯自然語言並不會提高程式設計效率。這個差距有幾個:
自然語言會有很多修飾詞,例如形容詞、副詞等等,這個型別的詞在自然語言中起到了非常重要的修飾作用,讓同樣意思的一句話多了不少變化。然而程式語言基本上沒有這類修飾詞,基本是動詞和名詞來組成的有限詞彙表,然後就是透過一些連線詞來實現邏輯關係。雖然現在自然語言處理技術已經非常成熟了,但是直接將自然語言翻譯成需要比較嚴謹的機器語言的話,就需要將修飾詞去掉,但是去掉後是否會改變語意還需要判斷,這樣就會大大降低效率。就算是沒有這些修飾詞,有時候還要處理一詞多義,或者同義詞的問題。例如“他是一個碼農”這樣一句簡單的話,可能就有多種不同的寫法,這樣對於翻譯的複雜程度也就高了很多。
自然語言的語法結構也遠遠比程式語言複雜,例如陳述句、問句或者感嘆句的架構都不同,那翻譯的時候要不就是全都處理,要不就是減少相應的結構。全部都處理的話,會有效率的問題,減少相應的結構那就和現在一些高階程式語言類似了。因此,自然語言複雜的語法結構讓翻譯變得不那麼實際了。
程式語言也好,編譯後的機器語言也好,因為要透過機器裝置完成一系列的運算或者處理來完成特定的任務,所以邏輯非常重要。但是自然語言在這點上比較欠缺,邏輯有時並不是非常清晰,而且可能出現反諷等等的和客觀邏輯違背的方式。所以也就需要很大的計算來理清自然語言中的邏輯,然後在翻譯成計算機語言,這樣的效率也不會高。
總之,因為這幾個差別,讓自然語言中有非常多對於機器語言沒有意義卻存在的部分,在訊號處理中,這些部分被稱為噪音。這些噪音如果過多的話,就使得翻譯過程變得非常低效,就像在一個非常吵雜的環境裡面,你需要非常專注才能聽清別人說什麼一樣。
所以,把自然語言翻譯成機器語言來執行的話,並不會提高程式設計效率。
不過,現在自然語言處理的技術提升,已經能讓機器完成簡單的命令了,那相信在一段時間之後,機器就可以直接處理一系列命令,這也可以類似將語言翻譯成機器語言的一種應用。
現在很多編譯器就是把一種程式語言轉換成機器語言讓機器能過理解並且執行,只是程式語言和自然語言還是有一定的差距,也就是這樣的差距使得直接翻譯自然語言並不會提高程式設計效率。這個差距有幾個:
修飾詞自然語言會有很多修飾詞,例如形容詞、副詞等等,這個型別的詞在自然語言中起到了非常重要的修飾作用,讓同樣意思的一句話多了不少變化。然而程式語言基本上沒有這類修飾詞,基本是動詞和名詞來組成的有限詞彙表,然後就是透過一些連線詞來實現邏輯關係。雖然現在自然語言處理技術已經非常成熟了,但是直接將自然語言翻譯成需要比較嚴謹的機器語言的話,就需要將修飾詞去掉,但是去掉後是否會改變語意還需要判斷,這樣就會大大降低效率。就算是沒有這些修飾詞,有時候還要處理一詞多義,或者同義詞的問題。例如“他是一個碼農”這樣一句簡單的話,可能就有多種不同的寫法,這樣對於翻譯的複雜程度也就高了很多。
語法結構自然語言的語法結構也遠遠比程式語言複雜,例如陳述句、問句或者感嘆句的架構都不同,那翻譯的時候要不就是全都處理,要不就是減少相應的結構。全部都處理的話,會有效率的問題,減少相應的結構那就和現在一些高階程式語言類似了。因此,自然語言複雜的語法結構讓翻譯變得不那麼實際了。
邏輯性程式語言也好,編譯後的機器語言也好,因為要透過機器裝置完成一系列的運算或者處理來完成特定的任務,所以邏輯非常重要。但是自然語言在這點上比較欠缺,邏輯有時並不是非常清晰,而且可能出現反諷等等的和客觀邏輯違背的方式。所以也就需要很大的計算來理清自然語言中的邏輯,然後在翻譯成計算機語言,這樣的效率也不會高。
總之,因為這幾個差別,讓自然語言中有非常多對於機器語言沒有意義卻存在的部分,在訊號處理中,這些部分被稱為噪音。這些噪音如果過多的話,就使得翻譯過程變得非常低效,就像在一個非常吵雜的環境裡面,你需要非常專注才能聽清別人說什麼一樣。
所以,把自然語言翻譯成機器語言來執行的話,並不會提高程式設計效率。
不過,現在自然語言處理的技術提升,已經能讓機器完成簡單的命令了,那相信在一段時間之後,機器就可以直接處理一系列命令,這也可以類似將語言翻譯成機器語言的一種應用。