py-1 語言介紹

1、編程與編程語言

一、編程的目的

計算機的發明,是爲了用機器取代並解放人力。
而編程的目的則是將人類的思想流程按照某種可以被計算機識別的表達方式傳遞給計算機,從而達到讓計算機可以像人腦、電腦同樣自動執行的效果。

二、什麼是編程語言

可以被計算機所識別的表達方式即編程語言,語言是溝通的介質,而編程語言是程序員與計算機溝通的介質。
在編程的世界裏,計算機更像是人的奴隸,人類編程的目的就命令奴隸去工做。

 三、什麼是編程

編程即程序員根據需求把本身的思想流程按照某種編程語言的語法風格編寫下來,產出的結果就是包含一堆字符的文件。
強調:程序在未運行前跟普通文件無異,只有程序在運行時,文件內所寫的字符纔有特定的語法意義。

二 編程語言分類

一、語言分類

1)機器語言:站在計算機(奴隸)的角度,說計算機能聽懂的語言,那就是直接用二進制編程,直接操做硬件。
        
優勢:是最底層,執行速度最快。
        缺點:是最複雜,開發效率最低。
2)彙編語言:站在計算機(奴隸)的角度,簡寫的英文標識符取代二進制去編寫程序,本質仍然是直接操做硬件。
        優勢:是比較底層,執行速度最快。
        缺點:是複雜,開發效率最低
3)高級語言:站在人(奴隸主)的角度,說人話,即用人類的字符去編寫程序,屏蔽了硬件操做。
        編譯型語言:
            優勢:執行速度快,不依賴語言環境運行。
            缺點:跨平臺差。
        解釋型語言:
            優勢:跨平臺好,一份代碼,處處使用。
            缺點:執行速度慢,依賴解釋器運行。

二、高級語言按翻譯方式分類

高級語言更貼近人類語言,於是形成了:它必須被翻譯成計算機能讀懂二進制後,才能被執行。python

1)編譯型(須要編譯器,至關於用谷歌翻譯):如C,執行速度快,調試麻煩。
2)解釋型(須要解釋器,至關於同聲傳譯):如python,執行速度慢,調試方便。

編譯型與解釋型的原理圖

PS:

學習難度:從高到低
執行效率:從高到低
開發效率:從低到高
速度不是關鍵(瓶頸理論),開發效率高才是王道

附錄:

1、機器語言
    因爲計算機內部只能接受二進制代碼,所以,用二進制代碼0和1描述的指令稱爲機器指令,所有機器指令的集合構成計算機的機器語言,用機器語言編程的程序稱爲目標程序。只有目標程序才能被計算機直接識別和執行。可是機器語言編寫的程序無明顯特徵,難以記憶,不便閱讀和書寫,且依賴於具體機種,侷限性很大,機器語言屬於低級語言。
    用機器語言編寫程序,編程人員要首先熟記所用計算機的所有指令代碼和代碼的涵義。手編程序時,程序員得本身處理每條指令和每一數據的存儲分配和輸入輸出,還得記住編程過程當中每步所使用的工做單元處在何種狀態。這是一件十分繁瑣的工做。編寫程序花費的時間每每是實際運行時間的幾十倍或幾百倍。並且,編出的程序全是些0和1的指令代碼,直觀性差,還容易出錯。除了計算機生產廠家的專業人員外,絕大多數的程序員已經再也不去學習機器語言了。
    機器語言是微處理器理解和使用的,用於控制它的操做二進制代碼。
    儘管機器語言好像是很複雜的,然而它是有規律的。
    存在着多至100000種機器語言的指令。這意味着不能把這些種類所有列出來。
如下是一些示例:
    指令部份的示例
        0000 表明 加載(LOAD)
        0001 表明 存儲(STORE)
        ...

    暫存器部份的示例
        0000 表明暫存器 A
        0001 表明暫存器 B
        ...

    存儲器部份的示例
        000000000000 表明地址爲 0 的存儲器
        000000000001 表明地址爲 1 的存儲器
        000000010000 表明地址爲 16 的存儲器
        100000000000 表明地址爲 2^11 的存儲器

    集成示例
        0000,0000,000000010000 表明 LOAD A, 16
        0000,0001,000000000001 表明 LOAD B, 1
        0001,0001,000000010000 表明 STORE B, 16
        0001,0001,000000000001 表明 STORE B, 1[1]

#彙編語言
    彙編語言的實質和機器語言是相同的,都是直接對硬件操做,只不過指令採用了英文縮寫的標識符,更容易識別和記憶。它一樣須要編程者將每一步具體的操做用命令的形式寫出來。彙編程序的每一句指令只能對應實際操做過程當中的一個很細微的動做。例如移動、自增,所以彙編源程序通常比較冗長、複雜、容易出錯,並且使用匯編語言編程須要有更多的計算機專業知識,但彙編語言的優勢也是顯而易見的,用匯編語言所能完成的操做不是通常高級語言所可以實現的,並且源程序經彙編生成的可執行文件不只比較小,並且執行速度很快。
    彙編的hello world,打印一句hello world, 須要寫十多行,也是醉了。
    ; hello.asm 
        section .data                            ; 數據段聲明
        msg db "Hello, wor    ld!", 0xA   ; 要輸出的字符串
        len equ $ - msg                        ; 字串長度
        section .text                             ; 代碼段聲明
        global _start                             ; 指定入口函數
_start:                                             ; 在屏幕上顯示一個字符串
        mov edx, len                            ; 參數三:字符串長度
        mov ecx, msg                           ; 參數二:要顯示的字符串
        mov ebx, 1                               ; 參數一:文件描述符(stdout) 
        mov eax, 4                               ; 系統調用號(sys_write) 
        int 0x80                                   ; 調用內核功能
                                                       ; 退出程序
        mov ebx, 0                               ; 參數一:退出代碼
        mov eax, 1                               ; 系統調用號(sys_exit) 
        int 0x80                                   ; 調用內核功能

2、高級語言
    高級語言是大多數編程者的選擇。和彙編語言相比,它不但將許多相關的機器指令合成爲單條指令,而且去掉了與具體操做有關但與完成工做無關的細節,例如使用堆棧、寄存器等,這樣就大大簡化了程序中的指令。同時,因爲省略了不少細節,編程者也就不須要有太多的專業知識。
    高級語言主要是相對於彙編語言而言,它並非特指某一種具體的語言,而是包括了不少編程語言,像最簡單的編程語言PASCAL語言也屬於高級語言。
    高級語言所編制的程序不能直接被計算機識別,必須通過轉換才能被執行,按轉換方式可將它們分爲兩類:
1) 編譯類:
    編譯是指在應用源程序執行以前,就將程序源代碼「翻譯」成目標代碼(機器語言),所以其目標程序能夠脫離其語言環境獨立執行(編譯後生成的可執行文件,是cpu能夠理解的2進制的機器碼組成的),使用比較方便、效率較高。但應用程序一旦須要修改,必須先修改源代碼,再從新編譯生成新的目標文件(* .obj,也就是OBJ文件)才能執行,只有目標文件而沒有源代碼,修改很不方便。
    編譯後程序運行時不須要從新翻譯,直接使用編譯的結果就好了。程序執行效率高,依賴編譯器,跨平臺性差些。如C、C++、Delphi等
2)解釋類:
    執行方式相似於咱們平常生活中的「同聲翻譯」,應用程序源代碼一邊由相應語言的解釋器「翻譯」成目標代碼(機器語言),一邊執行,所以效率比較低,並且不能生成可獨立執行的可執行文件,應用程序不能脫離其解釋器(想運行,必須先裝上解釋器,就像跟老外說話,必須有翻譯在場),但這種方式比較靈活,能夠動態地調整、修改應用程序。如Python、Java、PHP、Ruby等語言。
機器語言、彙編語言、高級語言詳解

三 、主流編程語言介紹

  世界上的編程語言有600多種,但真正你們主流在使用的最多二三十種,不一樣的語言有本身的特色和擅長領域,隨着計算機的不斷髮展,新語言在不斷誕生,也同時有不少老舊的語言慢慢無人用了。有個權威的語言排名網站,能夠看到主流的編程語言是哪些程序員

一、2017年5月數據(https://www.tiobe.com/tiobe-index/ )

二、長期語言排名

1、C語言:
    C語言是一種計算機程序設計語言,它既具備高級語言的特色,又具備彙編語言的特色。它由美國貝爾研究所的D.M.Ritchie於1972年推出,1978年後,C語言已前後被移植到大、中、小及微型機上,它能夠做爲工做系統設計語言,編寫系統應用程序,也能夠做爲應用程序設計語言,編寫不依賴計算機硬件的應用程序。它的應用範圍普遍,具有很強的數據處理能力,不只僅是在軟件開發上,並且各種科研都須要用到C語言,適於編寫系統軟件,三維,二維圖形和動畫,具體應用好比單片機以及嵌入式系統開發。

2、C++:
    C++是C語言的繼承的擴展,它既能夠進行C語言的過程化程序設計,又能夠進行以抽象數據類型爲特色的基於對象的程序設計,還能夠進行以繼承和多態爲特色的面向對象的程序設計。C++擅長面向對象程序設計的同時,還能夠進行基於過程的程序設計,於是C++就適應的問題規模而論,大小由之。
    C++不只擁有計算機高效運行的實用性特徵,同時還致力於提升大規模程序的編程質量與程序設計語言的問題描述能力。

3、JAVA:
    Java是一種能夠撰寫跨平臺應用軟件的面向對象的程序設計語言,是由Sun Microsystems公司於1995年5月推出的Java程序設計語言和Java平臺(即JavaSE, JavaEE, JavaME)的總稱。Java 技術具備卓越的通用性、高效性、平臺移植性和安全性,普遍應用於我的PC、數據中心、遊戲控制檯、科學超級計算機、移動電話和互聯網,同時擁有全球最大的開發者專業社羣。在全球雲計算和移動互聯網的產業環境下,Java更具有了顯著優點和廣闊前景。

4、PHP:
    PHP(外文名:PHP: Hypertext Preprocessor,中文名:「超文本預處理器」)是一種通用開源腳本語言。語法吸取了C語言、Java和Perl的特色,利於學習,使用普遍,主要適用於Web開發領域。

5、Ruby:
    Ruby 是開源的,在Web 上免費提供,但須要一個許可證。[4]
    Ruby 是一種通用的、解釋的編程語言。
    Ruby 是一種真正的面向對象編程語言。
    Ruby 是一種相似於 Python 和 Perl 的服務器端腳本語言。
    Ruby 能夠用來編寫通用網關接口(CGI)腳本。
    Ruby 能夠被嵌入到超文本標記語言(HTML)。
    Ruby 語法簡單,這使得新的開發人員可以快速輕鬆地學習 Ruby

6、GO:
    Go 是一個開源的編程語言,它能讓構造簡單、可靠且高效的軟件變得容易。
    Go是從2007年底由Robert Griesemer, Rob Pike, Ken Thompson主持開發,後來還加入了Ian Lance Taylor, Russ Cox等人,並最終於2009年11月開源,在2012年早些時候發佈了Go 1穩定版本。如今Go的開發已是徹底開放的,而且擁有一個活躍的社區。
由其擅長併發編程

7、Python:
    Python是一門優秀的綜合語言, Python的宗旨是簡明、優雅、強大,在人工智能、雲計算、金融分析、大數據開發、WEB開發、自動化運維、測試等方向應用普遍,已經是全球第4大最流行的語言。
幾個主流編程語言介紹
相關文章
相關標籤/搜索