因为在课程中第十、十一、十二课联系较紧密,故在同一文档中梳理。
笔记结合课程、上网查询、个人理解整理,如有错误,恳请指正。

第十课 早期编程方式(程序如何进入计算机?)

一、插线编程

1.简单介绍

二十世纪时,计算机开始能够进行加减乘除等运算,甚至决定执行某指令的时间。此时,程序的正确执行需要程序员通过将插线板作为控制面板,通过对不同部分进行连线,互相穿数据和信号,世界上第一台电子计算机Eniac也是通过这种方式进行编程。

2.弊端

插线板编程很复杂,运行不同程序要重新接线,更换程序需要大量时间。

二、 冯诺依曼计算机

1.简单介绍

内存的出现与发展,出现了“存储程序计算机”,能在内存里存储程和数据。其标志是一个ALU+数据寄存器(寄存器组)+指令寄存器+指令地址寄存器+内存,也就是前几集学的基本的CPU+RAM。

2.弊端

那时写入程序和输出数据还是通过对穿孔纸卡进行打孔,相当于将数据放在纸卡上,如果弄乱了卡片需要大量时间来整理。(还很费纸)

三、面板编程

1.简单介绍

1980年代前,出现面板编程,即用一大堆开关进行控制。通过开关控制进行二进制代码的编写,然后就可以运行程序。

2.弊端(以上三个都有)

使用门槛较高,编程者需要非常了解底层硬件,比如操作码和寄存器等等。


第十一课 编程语言发展史(从硬件到软件)

  • 不同的语言可以只一种数据的多种表现方式。就像英语和摩斯密码,虽然二者的符号和表达不同,但是可以传达相同的信息

一、机器语言(是低级语言)

二进制是处理器能理解的语言,“机器语言”或者“机器码”。早期,人们会先用普通的语言表达出希望计算机进行的一步步程序(这叫做伪代码),然后根据“操作码表”将它一个个对应着转换为二进制机器码,再将其传递给计算机

二、汇编语言(也是低级语言)

1940-1950年代,程序员开发一种新语言,更可读更高层次。每一个操作码都会分配一个简单的名字,叫“助记符”。比如代表“将A中数据存入寄存器12”的一大串二进制数字,可以被写成LOAD_A 12,通过汇编器,计算机会识别汇编语言,再将其转化为机器语言。

  • 汇编器有很多好用的功能,其中一个就是自动分析JUMP地址,程序员写程序时,只需写入可跳转的标签,汇编器就会自己跳转分析。不会因为插入指令而改变指令的顺序而导致JUMP的目标位置发生变化。
    Lena
  • 这是图1 表现了跳转标签的使用

三、高级编程语言与编译器的出现

高级编程语言可以将原本的十几二十条指令转化为简单的一句话,使编程者不用再思考内存和寄存器位置这种底层细节。编译器就是专门把高级语言转成低级语言的工具。
Lena

  • 这是图2
    早期的高级编程语言有A-0语言和Fortran语言。这些语言的使用虽然会使运行速度稍稍变慢(计算机执行程序的步骤变多了),但大大提高了代码编写的速度。
    起初的语言和编译器并未统一,大部分编程语言和编译器只能运行在一种计算机上。后来成立的了数据系统语言委员会。开发了通用编程语言Cobol,可以在不同机器上通用,做到一次编写,万处运行。

第十二课 编程原理-语句和函数(大多数编程语言的基本元素)

  • 就像口语一样,编程语言有“语句(statement)”。语句表达单个完整思想,比如,“我想要茶”或者“在下雨”。规定句子结构的一系列规则叫做“语法(syntax)”,每个编程预压都有相应的语法。

一、基本的语句

1.赋值语句

2.控制流语句:

① if(和else)
② While(条件循环)
③ For循环(特定次数)

二、函数和库

我们可以将一段代码打包成“函数”(也可以叫方法或者子程序),这也是更新的一级抽象,这样我们就可以隐藏内部的复杂度。我们想要调用这个函数,可以直接写函数名。最后我们需要将运算结果返回给调用函数的位置,所以我们需要使用return语句来指明返回什么。可以用函数与其他结构结合构成复杂度更高的代码,然后一个函数还可以调用另外一个函数。
现代编程语言会有很多预先写好的函数集合,叫做“库”,库的存在让程序员免于写大量的函数。