• 首頁 > 計算機 > 專業課程 > 軟件工程 > 中國科技大學編譯原理和技術
    中國科技大學編譯原理和技術
    • 用戶評分: 8 分 我要評分: 5 分 評分次數:31 次

    在線學習(手機視頻)

    在線學習Media

    批量下載(百度網盤)

    課程介紹

     

    • 課程介紹

      一、課程發展歷史概述

      編譯器產生于20世紀60年代,在計算機科學技術的發展過程中發揮著巨大的作用,是開發計算機應用系統不可缺少的重要工具。編譯器的原理和技術具有十分普遍的意義,在每一個計算機科技工作者的職業生涯中,這些原理和技術都被反復用到。編譯器的設計涉及到形式語言和自動機理論、編程語言和類型理論、計算機體系結構、算法設計和軟件工程等多個學科的知識。

      第一個編譯器誕生后不久,國外就開設了編譯原理課程,并且隨著相關理論和技術的不斷發展和完善,課程內容在不斷地更新、充實和深化。例如:

      • 語法分析從介紹遞歸下降和算符優先分析方法過渡到主要介紹LR語法分析方法及語法分析器的自動生成;

      • 語義分析從分離地介紹各個問題的解決辦法到系統地介紹基于屬性文法的語法制導定義及其實現方法;

      • 運行時存儲空間的組織和管理從靜態分配、棧式分配、堆分配一直發展到增加垃圾收集算法;

      • 代碼優化從孤立地介紹各種優化技術到突出介紹數據流分析的理論基礎,強調在數據流分析的一般框架下解決各個具體數據流問題。

      編譯原理課程自開設以來,一直是計算機科學技術專業學生的必修課程。

      中國科學技術大學計算機專業1958年由老一輩計算機科學家夏培肅院士等親自創辦。創辦之初就參與了中科院計算所自主設計并研制成功的我國第1臺通用計算機—107機的研制。1980年前后就開設了編譯原理課程,由中科院計算所研究人員主講,采用他們基于開發BCY語言(類ALGOL60語言)編譯器的經驗編寫的講義。1982年成立計算機科學技術系時,由王汝傳老師(現在是南京郵電大學博導)采用自編講義主講編譯原理,以介紹編譯器各邏輯階段的流程圖為課程的主要內容。

      1984年改由完成過Pascal語言編譯器開發的陳意云老師主講編譯原理,從那時起到目前為止,編譯原理課程的師資隊伍中,除個別人外,都從事編程語言的理論和實現技術方面的研究工作,從而都很好地具備從事編譯原理教學所需的理論和技術背景。

      中國科學技術大學計算機專業編譯原理課程1984年開始采用陳火旺、錢家驊和孫永強編寫的教材《程序設計語言編譯原理》(國防工業出版社,1984);1987年開始在教學中補充Compilers: principles, techniques, and toolsAlfred V. Aho, Ravi Sethi Jeffrey, D. Ullman. New York: Addison-Wesley, 1986)書上有關屬性文法和類型檢查等方面的內容;1990年開始采用陳意云根據上述經典教材編寫的教材。隨著教學經驗和相關科研工作的積累,對編譯原理課程講授內容和方法逐步形成自己的觀點。為此,教材內容也在不斷調整,現在采用的是陳意云和張昱編寫的《編譯原理》(高等教學出版社,第二版,2008)。

      編譯原理的課程實踐從1984年開始,以實現擴展PL/0語言到擴展PL/0抽象機的編譯器和實現擴展PL/0抽象機的解釋器為內容。這個實驗的內容經不斷充實,一直持續到2000年以后。2007年開始實施新的課程實踐,它以“源語言-抽象語法樹-低級中間表示-匯編代碼的內部表示-x86/MIPS匯編”為主線搭建的課程實踐體系,安排了各種循序漸進、規模適度、“綜觀全局、實現局部”、強調工程質量規范的課程設計,并提供配套的實驗支持庫和課程設計開發包。

       

      二、課程內容體系結構

      近十年來,我們基于下面觀點不斷進行教學內容更新、教學方法改革和教材編寫:

      1強調主線:讓學生在宏觀上理解和全局上把握編譯原理和技術比掌握一些細節算法重要得多。

      2、重視編程語言有關理論和形式方法:這對深刻理解和把握編譯原理和技術是必要的。

      3、鼓勵將所學理論和技術用于解決或解釋實際問題:這些問題源于學生編寫、編譯和運行程序的實踐,能激發學生學習本課程的興趣。

      4、跟蹤新技術:及時將新技術反映在教學中,利于學生了解技術的動態和發展趨勢。

      課程內容粗略地可以分成如下幾個板塊(板塊并非完全對應教材的章節):

      1、編譯器各邏輯階段的功能、接口和所采用的主要技術

      該部分包括詞法分析、語法分析、類型檢查(靜態語義分析)、中間代碼生成、代碼生成和獨立于機器的優化。此外,還有學習代碼生成部分必不可少的運行時存儲空間的組織和管理。該部分構成編譯原理課程的核心。

      2、和編譯技術相關的理論知識

      該部分包括形式語言和自動機理論、語法制導的定義和屬性文法、類型論和類型系統、數據流分析的理論基礎。這是深入把握編程語言及其實現技術的必備知識。

      3、和編譯及編程相關的一些實用知識

      該部分強調編譯知識與實際編寫、編譯和運行程序的聯系,它包括:

      • 用編譯原理的知識分析實際編寫、編譯和運行程序中碰到問題的例題或習題。

      • 編譯系統和運行系統(其中無用單元收集部分因課時壓縮到60學時而從未作為課堂教學內容)。

      • 依賴于機器的優化。依賴于體系結構的優化涉及一些復雜算法,不太可能作為本科生編譯原理課程的內容,但是簡要介紹現代計算機體系結構、指令調度、基本塊調度、全局調度、軟件流水、并行性和數據局部性優化等,會引導學生關注如何編寫高效的程序。

      4、其它范型paradigm的編程語言的編譯技術

      該部分簡要介紹面向對象語言和函數式語言的編譯(課時壓縮到60學時后,函數式語言的編譯未再繼續作為教學內容),以拓寬對編程語言和編譯技術的了解。

       

      三、教學內容組織方式與目的

      在教學內容的組織上有以下幾個特點。

      1、以編譯的各邏輯階段為主線,按照它們的邏輯次序逐個介紹,這和其他學校沒有什么區別。但是,我們把相關理論都穿插在這些邏輯階段的適當位置介紹,使學生及時體會到學習這些理論的必要性。

      2、把學生的注意力集中到對編譯原理和技術的宏觀理解和全局把握上。對于一些枝節的算法,如計算開始符號集合和后繼符號集合的算法、多態類型檢查的合一算法、控制流翻譯的回填技術等,僅介紹其思想而不講具體算法,避免學生過于關注這些枝節算法。

      3、及時把編譯理論和技術的發展,特別是計算機體系結構的發展對編譯技術的推動等新內容補充進入教學和教材,如安全語言和類型可靠性、數據流分析的理論基礎等。并及時刪除過時的內容,如實際編譯器已經不再使用的算符優先分析方法。目的是讓學生及時了解編譯理論和技術方面的最新熱點。

      4、幾乎每章都有理論聯系實際的例題和習題,使學生體會到編譯知識和日常編寫、編譯和運行程序是息息相關的。用編譯原理的知識把這些問題分析清楚,對激發學習編譯原理的熱情有出人意料的效果。

      5、介紹其它范型語言的編譯時,用已學技術和方法能解決的詞法和語法分析、靜態語義分析等都不介紹,只講語言特征的不同給編譯器設計帶來的問題和解決辦法。這樣,花的課時不多,但對理解編程語言和學習編譯技術都很有幫助。

       

      • 教學大綱

        課程名稱:并行計算
        預修課程:計算機體系結構、數據結構等
        開課學期:
        總 學 時:60
        學 分:
        大綱撰寫人:陳國良、徐云、孫廣中

        一、教學目標及要求

        本課程是為計算機科學與技術專業的高年級本科生開設的專業課,也可作為面向科學和工程計算的非計算機專業的高年級本科生和研究生的選修課程。通過此課程的學習,可使學生了解和掌握計算機學科中以及大型科學與工程問題中的基本的并行與分布計算方法及其軟硬基礎。

        二、教學重點和難點

        重點:并行計算機系統結構、模型、互連方式和性能評價,并行計算模型,并行算法設計策略、基本設計技術和PCAM設計方法學,典型的并行數值算法,并行程序設計等。
        難點:并行結構模型和計算模型的理解,并行算法基本設計技術,并行數值算法等。

        三、教材及主要參考書教材

        陳國良,《并行計算:結構,算法,編程》,北京:高教出版社,1999(初版),2003(修訂版)
        主要參考書:
        1.陳國良等,《并行計算機體系結構》,北京:高教出版社,2002
        2.陳國良,《并行算法的設計與分析》,北京:高教出版社,2002 (修訂版)
        3.陳國良等,《并行算法實踐》,北京:高教出版社,2003
        4.Barry Wilkinson等,陸鑫達等譯,《并行程序設計》,北京:機械工業出版社,2001

        四、課程章節及學時分配

        第一部分 并行計算硬件基礎
        1.并行計算機系統結構和模型 4課時
        (1)并行計算機系統結構(PVP、SMP、MPP、DSM、COW)。
        (2)并行計算機存儲器訪問模型(UMA、NUMA、COMA、NORMA)。
        2.并行計算機系統互連 4課時
        (1)系統互連技術(節點內的互連:總線,開關,Buses,switches;節點間的互連:SAN;系統間的互連:LAN,MAN,WAN)。
        (2)互連網絡拓撲(靜態互連網絡:LA,RC,MC,TC,HC,CCC;動態互連網絡:Buses,crossbar,MINI)。標準網絡(FDDI、ATM、SCI)。
        3.并行系統性能評價 4課時
        (1)加速比(Amdahl負載固定加速定律;Gustafson負載可擴放加速定律;Sun和Ni存儲受限加速定律)。
        (2)可擴放性(等效率;等速度;平均延遲)。
        (3)基準測試程序(數學庫;并行庫;商業庫;SPEC庫等)。
        第二部分 并行算法的設計
        1.并行計算模型(PRAM,APRAM,BSP,LogP,C3)。4課時
        2.并行算法的常用設計方法(串行算法的并行化,重新設計一個全新的并行算法,借用其它成熟算法來設計新的并行算法)。6課時
        3.并行算法的基本設計技術(劃分法,平衡樹法,倍增法,分治法,流水線法,破對稱法等)。6課時
        4.并行算法的一般設計過程(PCAM:劃分,通信,組合,映射)。4課時
        5.典型并行數值算法(稠密矩陣運算,稀疏線性方程組求解,快速富氏變換等)。10課時
        第三部分 并行程序設計
        1.并行程序設計模型(自動并行,數據并行,共享變量,消息傳遞)。2課時
        2.共享存儲編程(ANSIX3H5,Pthreads,OpenMP,π計算)。4課時
        3.消息傳遞編程(MPI,PVM,π計算)。6課時
        4.數據并行編程(HPF,高斯消去法)。4課時
        5.并行程序設計環境和工具(向量化的并行化編譯器,并行程序性能分析,計算可視化等)。 2課時

         

        參考文獻目錄

        一、并行計算系列叢書

        [1] 陳國良 編著. 并行計算-結構·算法·編程. 高等教育出版社(修訂版),2003


        [2] 陳國良 編著. 并行算法的設計與分析. 高等教育出版社(修訂版),2002


        [3] 陳國良 等編著. 并行計算機體系結構. 高等教育出版社,2002


        [4] 陳國良 等編著. 并行算法實踐. 高等教育出版社,2003

        二、并行算法系列叢書

        [5] 陳國良 編著. 并行算法:排序和選擇. 中國科大出版社,1990;臺灣儒林圖書公司,
        [6] 陳國良,陳崚 編著. VLSI計算理論與并行算法.中國科大出版社,1991;臺灣儒林圖書公司,1994
        [7] 陳國良 主編. 并行圖論算法. 中國科大出版社,1991;臺灣儒林圖書公司,1993

        三、國外相關教材

        [8] Andrews G R. Foundations of multithreaded parallel, and distributed programming,Pearson Education, 2002
        [9] Akl S G.. The design and analysis of parallel algorithms. Prentice-Hall, Inc, 1989
        [10] Buyya R. High performance cluster computing. Prentice-Hall, Inc, 1999
        [11] Cunha J C et al. Parallel program development for cluster computing:methodology, tools and integrated environments (In advances in computation: theory and practice), Nova Science Publishers Inc, 2001
        [12] Foster I. Designing and building parallel programs: concepts and tools for parallel software engineering, Addison-Wesley, 1995
        [13] Hwang K. Advanced computer architecture: parallelism, scalability, and programmability. McGraw-Hill, 1993
        [14] Hwang K, Xu Z. Scalable parallel computing: technology, architecture, programming. WCB/McGraw-Hill Companies, 1998
        [15] JaJa J. An introduction to parallel algorithm. Addison-Wesley Pub. Company, 1992
        [16] Kumar V et al. Introduction to parallel computing: design and analysis of parallel algorithms. Benjamin/Cummings Publishing Company, Inc. 1994
        [17] Quinn M J. Parallel computing: theory and practice, McGraw-Hill, 1994
        [18] Wilkinson B. Parallel programming: techniques and applications using networked workstations and parallel computers, Prentice-Hall, Inc, 1999

        四、國內相關教材

        [19] 李曉梅 等編著. 并行算法. 湖南科技出版社,1992
        [20] 沈志宇 等編著. 并行程序設計. 國防科大出版社,1997
        [21] 孫家昶 等編著. 網絡并行計算與分布式編程環境. 科學出版社,1996
        [22] 王鼎興,陳國良編著. 互聯網絡結構分析. 科學出版社,1990
        [23] 徐士良 編著. 計算機常用算法(第二版). 清華大學出版社,1996
        [24] 都志輝 編著. 高性能計算并行技術—MPI并行程序設計,清華大學出版社,2001

        五、其它參考文獻

    評論列表

    發表評論:
    用戶名:
    Email:
    伊人影视综合影院