从零开始的自我提升计划:计算机科学(三)

编程入门 行业动态 更新时间:2024-10-26 00:30:17

从零开始的自我提升计划:<a href=https://www.elefans.com/category/jswz/34/1767571.html style=计算机科学(三)"/>

从零开始的自我提升计划:计算机科学(三)

本系列为作者学习记录
感谢Jack-Cui视频的启发
视频地址:【计算机科学速成课】[40集全/精校] - Crash Course Computer Science

系列文章目录

从零开始的自我提升计划:计算机科学(一)
从零开始的自我提升计划:计算机科学(二)


文章目录

  • 系列文章目录
  • 前言
  • 一、早期的编程方式
  • 二、编程语言发展史
  • 三、编程基础:语句和函数
  • 总结


前言

本文内容包括:

  1. 早期的编程方式-Early Programming
  2. 编程语言发展史-The First Programming Languages
  3. 编程基础:语句和函数-Programming Basics: Statements & Functions

一、早期的编程方式


给机器编程的需求实际上在计算机出现之前就有了,1801年出现了可编程纺织机,利用可穿孔纸卡来形成图案。穿孔纸卡也用于早期的计算机,在第1节中有提到。为了执行不同的运算,程序员需要某种控制面板,“插线板”应运而生,通过连接不同的电线,执行不同的功能,但是这意味着运行不同的程序需要重新接线,因此后面将其优化为可插拔的控制面板,让编程更方便。
随着技术进步,内存的价格下降容量上升,将程序存在内存变得可行。当内存足够时,不仅可以存储要运行的程序,还可存储程序需要的数据,包括程序运行产生的新数据,它们都存在一个结构中——“冯诺依曼结构”。

我在思考比炸弹重要得多的东西——计算机。
                                    ——冯·诺依曼

冯诺依曼计算机的标志是,包含算术逻辑单元的处理器+数据寄存器+指令寄存器+指令地址寄存器+负责存储数据和指令的内存,第7节中的结构即为一个冯诺依曼计算机。
直到20世纪80年代,几乎所有计算机都使用穿孔纸卡读取、存储、输出数据。除了插线板和穿孔纸卡,还有一种编程方式——面板编程,即使用一堆开关和按钮替代插线板中的电线,并用指示灯来代表各种函数的状态和内存中的值。

二、编程语言发展史


在计算机早期阶段,使用二进制编写程序:需要先对程序进行高层次描述,即伪代码,然后用操作码表将其转换为二进制码。接着程序员开发出一种更可读、更高层次的语言,给每个操作码分配一个名字,成为“助记符”,其后紧跟数据,形成完整指令。后来程序员开发了一个程序,可以将文字指令自动转换为机器码,这就是“汇编器”,使编程更加容易。
汇编语言与机器指令是一一对应的,但是这样会带来很多麻烦,假设你需要增加一个变量,可能需要更改许多代码。因此世界上第一名程序员Grace Hopper设计了一个高级编程语言,名为“Arithmetic Language Version 0”,简称“A-0”。一行高级编程语言可能会转化为几十条二进制指令,为了实现这种转换,她创造了第一个编译器**,将高级语言转为CPU可以直接执行的低级语言。
可惜的是,没有任何关于A-0的代码留下,所以使用Python举例。假设我们需要将两个数字相加并保存结果,如果用汇编语言,需要从内存取值,写入寄存器等很多操作,但是使用Python语言则只需要简单的加法,不需要考虑寄存器或者内存位置,编译器会处理细节。程序员只需要创建代表内存地址的抽象,即“变量”。
FORTRAN主宰了早期计算机的编程,用其写的程序比汇编代码短20倍,它的编译器会把代码转化为机器码。但是在那时,大多数编程语言和编译器都只能在一种计算机上运行,因此计算机专家在1959年成立了一个联盟,“Committee on Data Systems Languages”,Hopper担任顾问,目的是开发一种通用的编程语言,可在不同机器上通用,最后诞生了COBOL语言,它为每个计算架构都设计了一种编译器。如今,大多数编程语言都是这种“一次编写,到处运行”的模式,不需要接触CPU特有的汇编码和机器码,降低了使用门槛,使得很多职业都可将计算机用于工作,让计算机成为大众化的工具。
在此之后,计算机编程语言迎来了发展的“黄金时期”,诞生了LISP、BASIC、C、C++、Python、Java等编程语言。

三、编程基础:语句和函数


就像口语一样,编程语言也有“语句”。例如:

a = 5

是一个编程语言语句,意为创建一个名为“a”的变量,它的值是5,这叫“赋值语句”。为了表达更复杂的含义,需要更多的语句,例如:

a = 5
b = 10
c = a + b

变量名可以随意取。
假设我们要编写一个游戏,Grace Hopper拍虫子,阻止虫子飞进计算机造成故障。关卡越高,虫子越多,需要在虫子进入继电器之前拍死虫子,且还有几个备用继电器。当开始编写这个游戏时,我们需要一些值来保存游戏数据,例如当前关卡数、分数等,所以我们需要“初始化(Initialize)”变量。
为了使游戏具有交互性,我们需要用一些“控制流语句”,例如if语句,即“条件语句”。如果希望多次执行,就需要“条件循环”,例如while循环,for循环。
为了隐藏复杂度,可把代码打包为“函数(Functions)”,有些编程语言也将其称为“方法”或者“子程序”,函数包含函数名,需要从外部传入的变量名以及返回值。在使用时直接调用函数名,传入变量,就可得到返回值。在使用时,函数之间可以相互调用,不需要知道函数内部是如何运行的,只关心其得到的结果,从而复杂度就隐藏起来了。
使用函数进行模块化编程,有许多优势。现代编程语言有许多预先写好的函数集合,称为“”,效率更高。


总结

本文介绍了早期的编程方式、编程语言发展历史,以及一些编程基础,包括几种常见的语句。

更多推荐

从零开始的自我提升计划:计算机科学(三)

本文发布于:2024-03-08 07:59:55,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1720281.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:计算机科学   从零开始   自我   计划

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!