认识编程:以Python语言讲透编程的本质经典语录

简介: 本书带你推开编程世界的大门,领略科技的奇妙和程序的精髓。

如果你不能给我诗,那你可以给我诗意的科学吗?

——Ada Byron

前言

欢迎来到程序的世界。

使用一门编程语言,最主要的目的是用它来解决各种实际问题。本书的重点就是如何用Python语言来解决问题。因此本书会用很多篇幅讲解编程技术本身,同时也将会有大量的代码演示。

在用计算机进行编程时,会处理各种数据,使用各种算法,所以,本书将涉及计算机基础原理、数据结构、算法等方面的知识。由浅入深,一步步讲解如何编写程序。本书讲解的知识绝不仅限于Python,这里的知识是通用的,读者可以不费劲地用另一门语言替代书中的Python程序。

本书将按照章节由浅入深地讲解编程的基本内容。最初会介绍计算机的发展历史以及原理,让读者了解到程序的思维是如何起源的,一段程序代码在计算机内部是如何执行的;然后从初等数学题目开始,用程序来解决初等数学的常见问题,如找素数、列数列、算面积以及解方程;之后再扩展到用程序来处理字符,处理文件;接着会介绍常见的数据结构,如线性序列、树,以及图,并讲解基本的排序与查找算法,现实中常用的动态规划方法;最后,会介绍数理统计以及人工智能中的神经网络。

有了这些知识,相信大家会对编程的本质有一个初步的了解。

本书面向具有中等教育文化程度以上,且对编程感兴趣的读者,行文风格兼具趣味性和严谨性。

由于作者水平有限,疏漏之处在所难免,恳请广大读者批评指正。

作者

第1章

程序、数字与进制

1.1

概述

人是好奇而有创造力的物种,从远古的祖先发明石器起,人类就开始了漫长的发明之旅。

人类为了生存,发明了棍棒、长矛,点燃了火种,出现了采集者、猎人和渔夫;后来又发明了语言,开始歌舞、绘画,出现了讲故事的人和艺人;发明了数字,发明了陶器、人工栽培和轮子,出现了数学家和农民;发明冶炼、锻造,出现了手工业者;数百年前蒸汽机出现,开始工业革命;最后,出现了计算机。

现在人们使用的计算机与历史上发明的其他工具都不相同:它需要编程。

1.2

何谓程序?

来看历史上几个典型的发明,斧子、轮子、蒸汽机,它们的目的单一,结构一旦确定下来,功能也就确定下来了,不能用于其他用途。

但是计算机可以通信、播放音乐、写作、记账等。它是通用的,其具体的功能取决于程序。

为了理解程序的概念,先来看看没有程序的计算机是什么样子。

人类很早就知道计数,有了数字,就需要有对数字的操作,最典型的就是加法和减法。最早通过手指计数,这种计数方式很方便,不过有一个问题就是不易存储这些数。于是人们就想到了用石子或者绳结来长期存储这些数。可能是在5000年前出现了计数方法,这意味着人类已经把“数”这个概念抽象出来了,然后用了更久的时间才发明了0,至此人们习惯的十进制才成形。

十进制方便了计算,促进了生产和贸易,也就有人专门从事这个职业,计数和计算。这是当时的新兴行业,受过教育的年轻人拿着小刀和泥板,一笔一画地诚实记录、用心计算,日复一日年复一年。这不仅仅是一个脑力劳动还是一个体力活儿,虽然后来出现了算筹和算盘,但是这种手工式的计算本身仍然费时费力。

1642年,19岁的法国人Pascal(历史上著名的数学家、物理学家)发明了加法器,它由齿轮构造而成,通过转动齿轮实现加法,用连杆实现进位。这个发明也影响了Pascal的哲学观,他认为人的思维活动与机械运动没什么差别。

三十多年后,学术巨人Leibniz发明四则运算器,影响了上百年。但是这些机器都受机械结构的影响,功能与性能都不怎么好。

到这个时候,用于计算的工具与历史上其他的发明仍然没有什么差别,依然只是完成某件事情的单一工具。只不过这些机器完成的工作是加减乘除。

真正的突破是19世纪英国的数学家Babbage发明的分析机。Babbage意识到计算的工作是多种多样的,如果为某一个特定的工作单独发明一台机器,那就太烦琐了,能不能有一种通用的机器,可以完成所有这些计算工作?于是Babbage想到了将一个任务的计算工作分解成原子步骤(加减),把这些步骤记录下来,让一台机器从某个地方获取这些步骤,然后顺序执行并可以跳转执行。这就是“程序”的萌芽。

版权:机械工业出版社