1. 程式人生 > >python的一些思考

python的一些思考

一。計算機程式語言與cpu的指令集之間有什麼樣的一種聯絡

CPU指令系統中的指令就是機器碼,也就是二進位制表示的

不同的cpu型號有著不同的指令集。

        python程式之所以可以在不同的作業系統上執行,就是因為有不同作業系統的python虛擬機器的存在。我們在編寫python程式碼的時候需要配置環境,而這的python執行環境就是指windos/mac/linux的python版本。通過虛擬機器解碼器將相同的python原始碼解碼為本作業系統的能識別的位元組碼。cpu不能讀取位元組碼,而需要將位元組碼轉換成機器碼,所以這個相對會慢。

機器語言:機器語言是一種指令集的體系。這種指令集,稱為機器碼(machine code),是電腦的cpu可直接解讀的資料。

特點:計算機直接識別的二進位制程式碼

機器語言是用二進位制程式碼表示的計算機能直接識別和執行的一種機器指令的集合。他是計算機額設計這通過計算機的硬體結構賦予計算機的操作功能。機器語言具有靈活,直接執行和速度快等特點。不同型號的計算機(一般只有品牌機才有型號,如IBMDELL,蘋果等電腦,通常情況下位於電腦的後面標籤或包裝箱上。而組裝的計算機則沒有型號可言。)及其機器語言是不相通的,按著一種計算機的機器指令編制的程式,不能在另一種計算機上執行。

       一條指令就是機器語言的一個語句,他是一組有意義的二進位制程式碼,指令的基本格式,如,操作碼欄位和地址碼欄位,其中操作碼指明瞭指令的操作性質及功能,地址碼則給出了操作書和運算元的地址。

二。編譯和解釋性語言的區別

編譯型語言:編譯器把源程式的每一條語句都編譯成機器語言,並儲存為二進位制檔案,這樣執行時計算機可以直接以機器語言來執行此程式,速度很快。就好比,你跟一個日本人聊天,中間有一個翻譯官,你一次性說了5分鐘,翻譯把你5分鐘說的話翻譯給日本人。

直譯器語言:直譯器在執行程式時,才一條一條的解釋成機器語言給計算機來執行,所以裕興速度是不如編譯後的程式執行的快的。就好比,你還是跟一個日本人聊天,中間還是有一個翻譯官,你說一句,它翻譯一句。

那麼,為何要編譯器呢?

因為計算機不能直接認識並執行我們寫的語句,它呢只認識機器語言(二進位制的形式)。

接下來,就說說編譯型語言和解釋型語言有哪些?

常見的編譯型有c和c++等

舉個栗子:

把c語言程式碼編譯成機器碼0和1,就需要編譯器gcc來實現,編譯之後就可以直接交給機器來執行,這個呢是在Linux下編譯使用的,如果換了一個平臺,比如說換到Windows上面呢,那麼就需要另外一個編譯器來編譯,然後執行。

那麼,問題來了。

很明顯,在可移植性這方面,就比較差了。讓人很不愉快。但是呢,由於是直接編譯成機器碼所以執行速度快。

常見的解釋型語言有Python,ruby,PHP(世界上最牛逼的語言,沒有之一),Java等

它的特點就是邊執行邊解釋,速度慢(相對而言),直譯器優秀支援跨平臺,一處編譯呢,到處執行。

 

最早的程式設計使用的是機器語言,就是一串串0和1。後來為了記憶方便,把一些特定的10序列用容易記憶的字母表示,比如MOV,AND之類的,這就是組合語言,其實組合語言和機器語言是完全對應的。由於組合語言太底層,程式設計師把大部分時間花在了與自己要解決的問題 無關的細節上(比如把資料從CPU暫存器中移來移去),所以人們又發明了高階語言(比如Fortan,Lisp,C……),他們更接近人的思考方式,程式設計師就能夠把更多的時間花在問題本身上。這個時候就需要編譯器把高階語言翻譯成底層的組合語言。也就是,所有的程式語言必須要翻譯成機器語言,也就是CPU的指令,計算機才能夠執行。