1、哈尔滨工业大学哈尔滨工业大学第第1章章程序设计的计算机基础程序设计的计算机基础计算机程序设计语言的精彩计算机程序设计语言的精彩 “我们的世界就是计算,就是一套简单的规则生成的复杂现象。很多时候人们说的随机性,只是证明你还没为这个系统建立完整的模型而已。”斯蒂芬沃尔弗拉姆宇宙的本质是计算计算无处不在!计算无时不在!计算的计算的“自动化自动化”梦想梦想3约瑟夫约瑟夫雅卡尔雅卡尔机械的传动下自动完成图案编织1804年年查尔斯查尔斯巴比奇巴比奇程序控制1822年年约翰约翰莫奇利莫奇利约翰约翰埃克特埃克特电子数字积分计算机1946年年阿兰阿兰图灵图灵图灵机1937年年布莱兹布莱兹帕斯卡帕斯卡巧妙的机械设
2、计实现自动进位1642年年计算的计算的“无止境无止境”现实现实4计算的计算的“再塑造再塑造”未来未来5通过解决基于分子的信息编码和处理的一系列数学和计算问题,分子信息学程序寻求数据存储、检索和处理的新范式分子信息学也将不再依赖传统计算机的二进制数字逻辑,而是利用分子的广泛结构特征和性质来实现数据编码和操纵数据分子信息学计划编程不只是编程不只是“coding”“计算机科学专业的教授应当为大学新生开一门名为怎么像计算机科学家一样思维的课,面向非专业的,而不仅仅是计算机科学专业的学生”“机器学习已经改变了统计学。计算生物学正改变着生物学家的思考方式。类似地,计算博弈理论正改变着经济学家的思考方式,纳
3、米计算正改变着化学家的思考方式,量子计算正改变着物理学家的思考方式”“计算思维代表着一种普遍的认识和一类普适的技能,每一个人,不仅仅是计算机科学家,都应热心于它的学习和运用”周以真6编程不只是编程不只是“coding”7拟人人脑思维功能和思维过程模拟拟机理解或模拟计算机所形成的工作方式(思维方式)计算技术栈与程序执行过程计算技术栈与程序执行过程8Physics(物理原材料)Transistors(晶体管)Gates/Registers(门/寄存器)Micro Architecture(微架构)Assembly Language(汇编语言)High-Level Language(高级编程语言)A
4、lgorithm(算法)Application(应用)Machine Code(二进制机器码)Instruction Set Architecture(指令集架构)Increasing order of ComplexityIncreasing order of AbstractionSoftwareHardware高级语言temp=v k;vk=vk+1;vk+1=temp;TEMP=VKVK=VK+1VK+1=TEMPlw$t0,0($2)lw$t1,4($2)sw$t1,0($2)sw$t0,4($2)汇编语言机器码C/C+编译器Fortran编译器汇编器计算技术栈程序执行过程指令集00
5、00 1001 1100 0110 1010 1111 0101 10001010 1111 0101 1000 0000 1001 1100 01101100 0110 1010 1111 0101 1000 0000 10010101 1000 0000 1001 1100 0110 1010 1111指令1数据1什么是什么是“编程编程”n 编译型语言:典型的如C/C+/Go语言,都属于编译型语言。编译型语言开发的程序必须经过编译成适配平台的版本才能运行(如华为鲲鹏)n 从源码到程序的过程:源码需要由编译器、汇编器翻译成机器指令,再通过链接器链接库函数生成机器语言程序。机器语言必须与CPU
6、的指令集匹配,在运行时通过加载器加载到内存,由CPU执行指令编译器编译器链接器链接器可执行代码:机器可执行代码:机器语言程序语言程序加载器加载器C/C+源源码码目标模块:目标模块:机器语言模块机器语言模块目标库:库函数(目标库:库函数(机器语言)机器语言)汇编语言程序汇编语言程序汇编器汇编器存储器预处理预处理器器C/C+源码源码9从源码到可执行程序从源码到可执行程序-编译型语言编译型语言n 解释型语言:典型的如Java/Python语言,都属于解释型语言,解释型语言开发的程序可以在不同平台部署(如华为鲲鹏等)n 解释型语言的源代码由编译器生成字节码,然后再由虚拟机解释执行。虚拟机将不同CPU指
7、令集的差异屏蔽,因此解释型语言的可移植性很好JVM类文件类文件(字节码)(字节码)Java库函数库函数(机器语言)(机器语言)Java语言程序语言程序编译器编译器PVM.pyc文件文件(字节码)(字节码)Python库函数(库函数(机器语言)机器语言)Python程序程序编译器编译器10从源码到可执行程序从源码到可执行程序-解释型语言解释型语言怎么学怎么学“编程编程”n 汉语和英语是人与人交流的工具,而程序设计语言是人与计算机交流的工具n 有着天生自学(汉语)的和后天训练(英语)的“语言学习”能力字母单词词性时态语态短语语气句子成分句型结构标识符数据类型常量函数控制结构变量数组字母指针“我我”
8、的故事的故事Ken ThompsonDennis M.Ritchie“我我”的故事的故事n 1969年,ken梦想能遨游宇宙,设计了一款模拟在太阳系航行的电子游戏“Space Travel”,1971年dmr加入n 游戏在PDP-7小型机上开发,因为这台机器免费,但免费的机器没有操作系统n 玩游戏前,先给PDP-7做个操作系统,命名为UNIX“我我”和和“我我”的舞台的舞台n 冯.诺依曼机n 运算器n 控制器n 存储器n 输入n 输出存储器存储器输入设备输入设备输出设备输出设备控制器控制器运算器运算器CPU“我我”和和“我我”的舞台的舞台源文件源文件目标目标文件文件库库文件文件可执行文件可执行文件