跳至主要內容

Python

大约 6 分钟

Python

这是一个免费的、可交互的,面向完全零基础小白的 python 网页教程。

目的是让人能够入门,去看懂其它的教程,或者能去刷题。

基于 pyscriptopen in new window 提供支持,只要有浏览器就能运行。

我也没什么写教程的经验,不过我会参考其它的教程,让学习曲线尽可能平缓一点。

这样的内容表示引用,或者一些题外话

这样隐藏的内容表示一些深入的解读,了解它们会非常有帮助,但对于初学者可能过于复杂

就是这样,让我们开始吧!

python 是什么

Python 是一门现代的编程语言,在这之前,让我先解释编程语言是什么:

最早的计算机之一,ENIAC(电子数字积分计算机),是在二战期间由美国军方资助开发的,目的是为了快速计算弹道表和其他军事相关的数学问题。这种机器能够迅速、准确地完成大量计算任务,显著提高了计算效率,为后来计算机技术的发展奠定了基础。

计算机发明的初衷,是为了将人从重复、明确的步骤中解放出来,让人能够将精力投入到更加重要的事项中:

既然步骤都是确定的,手算又困难,为什么不让精确而不知疲倦的机器帮我去做呢?

只要我知道步骤,那就不用亲自去执行它了。

——记住这一点,这将是驱动我们进行编程的源动力。(懒果然是人类进步的阶梯)

这个步骤的描述方法,就是编程语言;具体代码就是具体步骤的一种表示。

最开始的编程语言都是指令式的,每一行表示一个指令,这很好理解:

假如我做了一个打印机,打印机有很多的机械部件需要控制运动,那么最简单的编程方式,就是给每个部件的运动设置指令,这样就能通过一连串的指令来控制打印机运行的流程:

打开上盖
滚动滚轴1
滚动滚轴2
读取内容
打印内容
滚动滚轴3
打开出口
滚动滚轴4

于是,我只需要让机器能够一行一行地读取,并且按照事先设定好的规则来执行(这通常是语言编写者的工作),

那么我就可以不考虑具体怎么执行的细节,而是集中于具体的运行逻辑上面

例如,上面那些东西,就可以算是最简单的代码了。

更进一步,一串代码当然也可以当成要执行的细节,这需要设定更复杂的代码读取方式,例如:

读取纸张 = {
打开上盖
滚动滚轴1
滚动滚轴2
读取内容
}

打印纸张 = {
打印内容
滚动滚轴3
打开出口
滚动滚轴4
}
读取代码的步骤也是可编程的吗?

答案是肯定的!

对于计算机来说,能够直接执行的,只有 0 和 1 组成的机器码,例如,用特定的0101的组合来表示,在内存或者 cpu 上进行的特定操作

这里的终点是电路的设计,事实上,不同的 cpu 架构有着不同的指令集,这就是指最基本的0101能做到哪些操作

将代码文本转换为机器码( 010101 这样的形式),需要用到编译器,然而,早期的编译器本身就是用某种编程语言编写的

这就引出了一个问题:第一个编译器是怎么被编写的?

这个问题的答案在于“自举”(bootstrapping)过程。这是一个逐步的过程,其中:

  1. 手工编码:在最早期,编译器的最基础版本或其它关键软件工具是通过手工编写机器码或使用非常低级的汇编语言编写的。这是一个繁琐且容易出错的过程,但它是必需的起点。

  2. 自编译:一旦有了最基本的编译器或解释器,就可以用这个工具来编写更复杂的版本。例如,一个简单的C语言编译器最初可能是用汇编语言编写的。但一旦它足够成熟,就可以用C语言来编写一个更先进的C语言编译器。

  3. 迭代改进:随着时间的推移,这些工具可以不断地用它们自己的语言来重写和优化,不断提高它们的能力和效率。

因此,尽管最初的编译器是直接用低级语言编写的,但现代编译器通常是用它们要编译的高级语言编写的,这是一个通过早期工具逐步发展起来的过程。这就像是一个工具自我复制和自我改进的过程,是计算机科学和软件工程中一个非常有趣和重要的领域。

那么前面的步骤就可以直接表示为

读取纸张
打印纸张

如果我想要读一次,打印3次,就可以直接写

读取纸张
打印纸张
打印纸张
打印纸张

是不是感觉更“简单”了?

这种隐去细节,关注更高层级关系的手段,叫作抽象,也是编程语言之所以强大和灵活的核心。

任何代码都没有本质的不同,一部分工作是编程语言设计者做的,规定代码应该被怎么解读,并且去调用更加底层的代码或者机器的运作

这叫作接口或者API,通常以函数的形式出现。

而另一部分工作交给我们——组织代码,去构建我们想要的东西。

我们也可以在代码中实现功能,并抽象成 API ,这样我们只需要考虑当前的部分,而假设其他部分已经完成

这叫做分而治之,是相当有用的思想

python 作为一门现代的、高级的、解释性的编程语言,它隐去了大量的不相关的细节,具有代码简洁、可读性强的特点,并且有着极为丰富的第三方库(其他人写好的代码,可以直接使用)

这让我们能够更好地聚焦于我们想要实现的东西,很快地搓出东西来,对初学者十分友好。

评论
  • 按正序
  • 按倒序
  • 按热度
Powered by Waline v3.0.0-alpha.10