20210222计算机科学速成课40集(11-15)

CrashCourse计算机科学速成课B站地址

  1. 编程语言发展史:(1)机器语言/机器码Machine language/machine code-01(二进制是机器的母语,机器只能识别01)。(2)汇编语言(汇编器ASSEMBLER将每条文字指令转换为01机器码/机器语言。因此汇编语言每条文字指令(助记符mnemonics+数据operands)与机器指令一一对应)。同时随着汇编器的发展,又具备了越来越多的功能,比如自动分析JUMP地址。但毋庸置疑的是,汇编码依然和底层硬件连接紧密,汇编器仍然强迫程序员思考用什么寄存器和内存地址,如果你突然要一个额外的数,可能要改很多代码。(3)高级语言。A-0。编译器,把高级语言转换成低级语言(汇编语言或机器码)。高级语言中程序员只需要创建变量,来抽象代表内存地址。COBOL普通面向商业语言,为了兼容不同底层硬件,每个计算架构需要一个COBOL编译器,最重要的是,这些编译器都可以接受相同COBOL代码,不管什么电脑,一次编写,到处运行。
  2. 编程基础-语句和函数:初始化变量initialize variables。赋值语句。控制流语句,if、while、for(循环语句)等。函数functions/方法methods/子程序subroutines,实际是一段具有一定功能的代码的打包。函数是现代编程语言的核心,实际就是模块化编程。每种编程语言都有函数库libraties。
  3. 算法入门Intro to Algorithms:用不同顺序写不同的语句,也能得到一样的结果,不同的是算法,算法的意思是解决问题的具体步骤,即使结果一致,有些算法会更好,一般来说所需步骤越少越好,不过有时也会关心其他因素,比如占用内存多少。记载最多的算法之一是排序sorting,排序算法非常多,比如冒泡排序bubble sort、意面排序spaghetti sort等。算法的输入大小和运行步骤之间的关系,叫做算法的复杂度,表示运行速度的量级,用O()表示。 经典算法——地图最优路径搜索Dijkstra算法。
  4. 数据结构:不同数据结构有不同的应用场景,选择正确数据结构会让工作更简单。(1)数组Array/列表List/向量Vector:a=j[0]+j[2],注意数组中第2个数和数组中编号为2的数,不是一个数。(2)字符串String是字母、数字、标点符号等组成的数组,在内存里每个地址存一个字母、符号的ASCAII码。(3)矩阵Matrix是数组的数组:a=j[2][1]。(4)结构体Struct:多个变量打包在一起叫结构体,现在多个不同类型数据,可以放在一起。(5)指针Pointer:指针是一种特殊变量,指向一个内存地址。(6)节点Node:节点也是一个结构体。(7)链表Linked List:链表是一种灵活的数据结构,能存很多节点,灵活性是通过每个节点指向下一个节点实现的。数组大小需要预先定好,链表大小可以动态增减。可以创建一个新节点,通过改变指针值,把新节点插入链表。链表也很容易重新排序、两端缩减、分割、倒序等,超级方便。因为灵活,很多复杂数据结构都用链表,最出名的是队列和栈。(8)队列Queue:队列就像邮局排队,谁先来就排在前面,遵循先进先出FIFO。(9)栈Stack:后进先出LIFO。入栈push,出站pop。(10)树Tree:树只能根-叶单向连接。(11)二叉树Binary Tree(12)图Graph:数据可以随意连接,包括循环。(13)红黑树red-black trees(14)堆heaps
  5. 阿兰图灵:图灵机,对于一个问题的输入A,问A能否推证出B,如果能够找到一个图灵机得出对应的符号序列B,那么A到B就是可计算的,否则该问题不可计算。图灵机的特点:简单、强大、可实现。图灵机给出了一个可实现的通用计算模型,引入了通过“读写符号”和“状态改变”进行运算的思想,实现了基于简单字母表完成复杂运算的能力,引入了存储区、程序、控制器等概念的原型。图灵证明了图灵机可以用于任何计算,“停机问题”证明了,不是所有问题都能用计算解决。图灵完备。图灵测试,验证码。

猜你喜欢

转载自blog.csdn.net/foundliving/article/details/113933245