高階語言背後的秘密

2021-10-02 12:15:37 字數 996 閱讀 3159

什麼是高階語言?細心的人可能會發現,越是高階的語言它的實際執行語句就越少,框架就越多。比如c#裡面的類的繼承等,就算你繼承一萬個類的巢狀,表面上來看還是沒有執行任何**。那麼這些文字都用來做什麼了呢?其實這些結構**的背後是編譯器在給你自動的維護著乙個又乙個的**。這些**將來會指導著編譯器將那些實際執行的**按照一定的順序編排起來。然後這些**可能就沒用了,也就是說哪些沒有明確寫明(硬編碼,不是指哪些抽象的類,機器不能理解抽象的指令)執行順序的程式語言的背後一定有乙個勤勞的編譯器在幫你維護乙個又乙個的**,並根據這些**結合自己的硬編碼來自動的生成實際指令的編排順序與內容。

不過從另乙個角度來說,對於乙個沒有bug的編譯器,只要用這些抽象的邏輯組成乙個順序分明的執行順序,那麼這些高階語言再經過編譯之後生成的實際執行的命令的順序也一定是分明的。所以只要掌握了抽象的順序,高階語言也可以實現明確的指令的表達。

其實程式設計的本質也不過如此,用一些方法來維護某些資料,並根據這些資料做進一步的處理,直到得到想要的結果,表現在**上就是維護乙個又乙個的**。但是隨著一些特殊資料的出現(高階語言中的種種的資料型別例如map)我們在維護他們的時候一定要注意使用特定的對應的方法去處理,否者可能報錯。再高階一些我們要維護的資料可能是幾個物件組成的列表,這個時候更要使用相應的方法來進行處理,但是本質上來說,我們維護的仍然只是資料列表而已。

但是並非低階的資料型別就可以隨意的維護,恰恰相反,低階的資料型別組成的資料具有很大的隨意性,同樣是乙個陣列,你寫乙個二叉樹的訪問方法來訪問它,它就會變成一顆二叉樹,你寫乙個氣泡排序來維護它,那麼它就會變成乙個普通的有序陣列而已。如果你通過氣泡排序來組織了乙個陣列,然後又試圖通過二叉樹的方式來讀取它,那麼得到的一定是一堆無用的數字而已。所以低階資料型別組成的資料也要用相應的操作方法來操作,否則就會出錯,它只是不會報錯而已,並不是說可以隨意為之。

而且低階資料組成的結構還有乙個特點那就是用什麼方法組織起來的資料就要用什麼方法來解釋,來使用,所以有點類似於加密與解密。是的所謂的資訊處理不過就是將一堆資料按照一定的排列起來,方便以後讀取與處理而已,本質上來說,與結繩記事沒有太大的區別。

揭秘 高薪背後的秘密

冒著十二月的嚴寒,大公尺時代的全體在校生參加了一場別開生面的面試活動。現場可真的是非常的熱鬧,至少有兩百多家的企業。冒著酷寒我逐一的將兩百對家的企業全部看了一遍,並且還跟現場的很多招聘人員進行了交流。由於之前自己有在社會上有過求職經歷,讓我不經的感慨,現場的兩百多家企業招聘的職位幾乎都是非常初級的職...

setSatate背後的秘密 一

區別於vue的資料變化導致頁面及時變更,而react的這種現象則是通過setstate手動控制,setsate在react的生命週期如何變化以及setstate的批量處理是怎樣的神秘,以下一一解答。1 初始化過程 construct componentwillmount 此刻未掛載 render 掛...

虛函式背後的秘密

include using namespace std class base void show class drive public base int main drive fun drive fun 這個程式清楚地示範了基類的函式是如何呼叫派生類的虛函式的。這一技術被用於不同的框架中,例如mfc...