首页 > 代码库 > 计算机科学及编程导论(1)绪论

计算机科学及编程导论(1)绪论

1. 课程介绍

这门课程适用于那些拥有很少或没有编程经验的学生,它致力于使学生理解计算机在解决问题中的作用,所用的编程语言为Python,共24个课时

2. 课程目标

计算思维。能够编写短小的代码
阅读代码。能够读懂他人的代码
理解计算。认识计算的能力与局限
具体应用。将科学的问题转化为具体的计算过程

3. 知识的种类

知识分为两大类:陈述性知识以及程序性知识

3.1 陈述性知识

陈述性知识,可以简单的理解为事实。

∵ √X = Y
∴ Y2 = X(当X ≥0 )

虽然上述描述是正确的,但是却无法帮助你计算一个数的平方根,只能验证一个数是否是另一个数的平方根。也就是说,陈述性知识通常用于检查。

3.2 程序性知识

程序性知识,可以简单的理解为一系列解题步骤。比如,要推测一个数大致的平方根,可以按照以下固定步骤来操作

  if G2  ≈ X,Stop;
else G = (G+X/G)/2
repeat

程序性知识是我们这门课的学习目标

4. 如何构建计算机

早期的计算机,只能解决特定的问题,比如Turing Bomb,用于破解德国的秘密代码

 

现在考虑的是如何构建计算机程序来实现不同的计算过程,比如3.2中的开根号问题

 

5. Program is a racipe

传统的烹饪只需要一些基本的原料以及一个好的厨师。同样的,杰出的程序猿只需要一些基本的指令就能够创造出不同的程序。对此,图灵曾经提出六种基本的指令类型,只需要这六种类型,就可以创造出不同的程序。比如,可以用C语言实现的程序,也可以用Fortran语言来实现,称作“图灵兼容”。

为了实现我们所设计的菜谱,就需要学习具体的编程语言。 可以从三个基本的方面比较不同的编程语言

高级 VS 低级
大众 VS 特定
编译 VS 解释

越低级的语言越接近底层,高级的语言意味着拥有更多的基本原型,比如,高级语言中,平方根可能作为基本的类型使用

特定的语言可能有专门的用途,比如Matlab主要面向于科学计算

编译性语言先将源码编译成目标代码,然后再运行,这样做有利于发现bug,解释型语言直接通过解释器来逐条读取指令,比如计算器,直接显示我们想要的结果

Python语言属于高级的、大众的、解释型语言

6. 语法与语义

语法定义了语言应该如何表示,比如下面这句话就不符合中文的语法规则,因为缺少了谓语

我们去篮球场篮球

语义分为两部分:Static和full语义

Static语义定义了那些语言是有意义的,比如下面这句话就不符合Static语义

我的桌子是迈克

也就是说,符合语法的不一定符合Static语义。

而full语义则定义了这段代码的实际意义,即运行效果

对于Python来说,它会提供语法上的帮助,也能够在运行过程中捕捉一些Static语义上的错误,但是无法在full语义上提供多少帮助。也就是说,有时候程序仍然会返回一个结果,尽管这个结果不是正确的。

因此,我们需要形成良好的编程风格