1、第 1页程序设计语言原理侯振山 houzhenshan_13021187486第 2页程序设计语言原理一门理论性较强的提高型课程,从更高的层次来理解各种语言机制,指导对计算机语言的学习和程序设计 分析并理解各类高级程序设计语言范型与理论模型 掌握程序设计语言各主要成分设计中的关键问题、主要步骤、表示法的基本技能, 学会分析、选择、调合、折中、设计语言的特征。第 3页程序设计语言原理教材 :程序设计语言原理 麦中凡 北航出版社参考书 : 程序语言原理(第五版) , Robert W.Sebesta,机械工业出版社。 程序设计语言:原理与实践(第二版) ,Kenneth C. Louden,电子工
2、业出版社。 程序设计语言:设计与实现(第四版) ,Terrence W. Pratt, Marvin V. Zelkowitz,电子工业出版社。 程序设计语言:概念和结构(第二版) , Ravi Sethi,机械工业出版社第 4页课程内容 第 0章 绪论 第 1章 程序设计语言发展与分类 第 2章 程序设计语言设计概述 第 3章 过程式程序设计语言 第 4章 面向对象程序设计语言 第 5章 函数式程序设计语言 第 6章 逻辑式程序设计语言 第 7章 并发程序设计语言 第 8章 平台无关程序设计语言 第 9章 描述性程序设计语言 第 10章 指称语义的原理与应用 第 11章 代数语义学第 5页第
3、 0章 导 论 什么是程序设计语言 (PL) 为什么研究 PL 语言规范与处理器 本课程内容与要求第 6页0.1 什么是程序设计语言( PL) ? 人机通信媒体 (介 ),软件的载体 人工语言 机器识别,方便人使用 形式语言 无二义性 必须可执行 它是计算机科学与计算机工程的交汇点 计算机科学是在符号学、集合论、离散数学、组合数学基础上发展的 以符号语言表达的软件还要满足正确性、可靠性、安全性、可扩充、可移植、方便性第 7页1900193019401950196019701980199019101920 自动数学 POSTAlfred North Whitehead BertrandRusse
4、ll 符号逻辑 (1910)不完全理论 , Goedel(1931)Giuseppe Peano集合论 (1895)POST系统 递归函数论Church,Rosser(1930s)可计算理论Turing(1936)信息论 Shannon形式语法定义Backus 和 Naur随机算法形式语言理论 Chomsky自动化理论电子学开关理论复杂性理论计算机密码学 (1976)Diffie,Hellman公共密钥系统 (1978)Rivest,Shamir,AdelmanKnuth:词法分析方法编译理论编译的编译EL/1:可扩展式语法第 8页1930194019501960197019801990POS
5、T 系统 递归函数理论 Church,Rosser(1930s)可计算理论Turing(1936) 演算 Church(1941)程序正确性和验证 (1960s)引用透明 ,Strachey形式语义定义SECD机 ,Landin(1964)PL/1的 Vienna定义 (1967)指称语义学 (1971)Scott,Strachey)Milner:类型理论 (1978)函数式语言 :ML Miranda Haskell并发性 Dijkstra(1968)Hoare:CPS(1978)分布式计算 Lamport协作计算 1988第 9页重要性程序设计语言的研究和开发处于计算机科学技术发展的中心:
6、l 计算机理论和方法的研究,许多是由于语言发展的需求l 许多理论研究成果体现到程序语言的设计中l 实际应用中最本质的需要常反映到程序语言里,推动语言的演化和发展l 语言实现的需要是推动计算机体系结构演化的一个重要因素(如 RISC)l 计算机硬件的能力和特征也对程序语言的发展变化有着重要影响(今天和明天,并行性问题)l 理解程序设计语言,有助于提高对整个计算机科学技术领域的认识推动语言演化发展的要素 :实 际应用的需要,硬件的发展和变化,人们对于程序设计工作的认识发展,实现技术的开发,理论研究的成果第 10页重要性:图灵奖1966-2010, 45届图灵奖,有 15届由于与程序设计语言有关的工
7、作而获奖1966, Alan J.Perlis,早起语言和 Algol 60的贡献,图灵奖第一位获奖者1971, John McCarthy, LISP语言,程序语义,程序理论1972, E.W.Dijkstra, Algol编译,结构化程序设计,并发概念和原语,形式化推到,卫式命令等1977, John Backus,Fortran语言, FP语言, BNF等1978, Robert Floyd, Algol编译,编译技术,程序优化,归纳断言法和前后断言,程序正确性,编译生成1979, K.E.Iverson,APL语言1980, C.A.R.Hoare,结构化程序设计,case语句,公理语
8、义学,并发程序的理论, CSP等1983, Dennis Ritchie和 Thompson, C语言和 UNIX1984, Niklaus Wirth, Alogl W, PL360, Pascal, Modula-1/2, Oberon,逐步求精,结构化程序设计,语法图1991, Robin Milner, ML语言,并发理论, CCS2001, Ole-Johan Dahl和 Kristen Nygaard, Simula语言, OO概念2003, Alan Kay, Smaltalk语言, OO概念、语言和程序设计2005, Peter Naur, Algol 60语言的设计和定义,编译,程序设计的原理和实践2006, Frances Allen,优化编译和并行化2008, Barbara Liskov,数据抽象 /OO/容错 /分布式计算程序的基础和语言