軟考總結---(二)程式設計語言基礎知識
前言:下面和大家分享一下第二章的知識點,希望對大家有幫助。
(一)程式設計語言概述
1.編譯程式和解釋程式
基本方式:彙編、解釋、編譯
【1】
①用某種高階語言或組合語言編寫的程式稱為【源程式】,不能直接在計算機上執行。
②如果源程式是用【組合語言】編寫的,則需要一個【彙編程式】將其【翻譯】成目標程式後才能執行。
如果源程式是用某種【高階語言】編寫的,則需要對應的【解釋程式和編譯程式對其進行翻譯】,然後在機器上執行。
【2】
解釋程式(直譯器)或者直接解釋執行源程式,或者將源程式翻譯成某種中間程式碼後再加以執行。
編譯程式(編譯器)則是將源程式翻譯成目標語言程式,然後再計算機上執行目標程式。
根本區別:
【編譯】方式下,機器上執行的是與源程式等價的目標程式,源程式和編譯程式都【不能】再參與目標程式的執行過程。(效率更高)
【解釋】方式下,解釋程式和源程式都要【參與】到程式的執行過程。
(解釋方式下,翻譯源程式時不生成獨立的目標程式,而編譯器則將源程式翻譯成獨立儲存的目標程式。)
2.語法、語義、語用
【1】語法:由程式設計語言的基本符號組成程式的各個語法成分的一組【規則】
【2】語義:按照語法規則構成的各個語法成分的含義,包含靜態語義(編譯時確定)和動態語義(執行時刻取得含義)
【3】語用:構成語言的各個記號和使用者的關係,設計符號的來源、使用和影響。(語境:編譯&執行環境)
3.程式設計語言分類
【1】命令式和結構化程式設計語言
結構特徵:自頂向下逐步精華的程式設計方法;按模組組織的方法;程式只包含順序、判定及迴圈構造
典型:【Fortran,PASCAL和C語言】
【2】面向物件的程式設計語言
支援程式設計的技術,如資料隱藏、資料抽象、使用者定義型別、繼承、多型
典型:【C++、JAVA、Smalltalk】
【3】函式式程式設計語言
典型:【LISP(遞迴)、Haskell、Scala、Scheme、APL】
【4】邏輯型程式設計語言
典型:建立在謂詞基礎上的【PROLOG(Programming in Logic)】
4.函式
函式定義:函式的【首部】和函式【體】
函式宣告:先聲明後引用
函式呼叫:值呼叫(實參的值傳遞給形參);引用呼叫
(二)語言處理程式基礎
1.組合語言
指令語句(機器指令語句):將其彙編後生成相應的機器程式碼,能被CPU直接識別並執行的操作。
偽指令語句:彙編後不產生機器程式碼
巨集指令語句:允許使用者多次重複使用
2.編譯過程:
源程式→詞法分析→語法分析→語義分析→中間程式碼生成→程式碼優化→目的碼生成
(中間程式碼生成、程式碼優化:可省略)(邏輯上前端:詞法分析→中間程式碼生成)
3.文法
定義:描述語言語法結構的規則
分類:0型(短語文法,功能相當於圖靈機)、1型(上下文有關文法)
2型(上下文無關文法)、3型(正規式)
4.自頂向下語法分析方法
消除文法的左遞迴、提取公共左因子、LL(1)文法、遞迴下降分析法、預測分析法
5.自底向上語法分析方法
移近-歸約分析法(一步一規約),採用算符優先分析表,稱為算符優先分析器;LR(核心:分析表的構造)成為LR分析器。
6.中間程式碼
常用的有:字尾式(逆波蘭式)、三元式、四元式、樹
(樹和字尾適用於直譯器,四元式編譯器)
7.高階語言與解釋方式比較
【效率】編譯更高
【靈活性】解釋程式更靈活
【可移植性】直譯器更好
總結:軟考的學習也是一個不斷重複不斷總結的過程,越重複越總結越清晰。在總結中不斷地完善和提高。