这里有一个老套的惯例和貌似约定俗成的现象:几乎所有的Python编程书,甚至大多数计算机程序设计语言的书,在介绍完编程语言的历史和特点后,都无一例外地开始讲解语法!这似乎形成了一种标准的模式,甚至没有人去深究这样做到底对不对。但对于所有初学编程的人来说,应该都有共同的体会,就是一到讲语法的环节就觉得看不进去这些书了。所以这一节我们先来简单探讨下这到底是为什么,一门语言是否应该按照这种枯燥的模式来学习。
既然编程语言也是一门语言,那么我们先来回顾一下儿童学习语言的过程。我们每个人从小是如何学会说话的呢?首先是爸爸妈妈每天跟孩子说话,不管孩子听不听得懂,反复听大人说话,孩子就会慢慢明白每个字的意思,然后学着大人说话,从简单的词语逐渐到复杂的句子,最后可以流利地说话和交流。直到孩子完全学会说话,他都没有接触到语法,也不可能有人从语法开始教自己的孩子说话。然后孩子继续长大,开始上学之后,需要进一步学习知识的时候,再跟着老师系统地学习语文,才开始学习语言的语法和结构等。简单总结来说,学习人类的语言,是先学会说学会用,然后通过学习语法来提高和升华。
上面的过程是儿童学习母语的情况,但编程语言不算母语。那人们学习外语的时候又是怎样的呢?没错,传统学习外语的过程一般就是从语法开始的。绝大多数学习英语的书,都是从单词和语法开始,然后再接触语句和文章的,这个过程跟传统编程图书的学习思路是基本一致的。也就是说传统编程语言的图书和学习方法,其实就是借鉴了传统学习外语的方法。但我们在学习外语的过程中,是不是也有这样深刻的体会:从小学初中到大学,学了十几年的外语,通过了无数的考试,但感觉还是没有完全学精通,特别是在实际生活中要跟外国人交流的时候,听说方面还是有比较大的困难。反而是有些到国外学习和生活的人,哪怕他之前没有外语基础,在跟当地人的接触和交流过程中,可能几个月就熟练地掌握了外语。这可能就是传统外语学习方法跟实际语言的应用脱节的原因。
我们再举个外语应用的简单例子来说明:你跟一个完全不会英语的朋友一起出国旅游,有一天他想自己去商店买点东西,但是语言不通,不知道该怎么询问价格。这个时候你需要简单教他点英语的应用,你会怎么办呢?肯定不会从语法讲起,而是直接告诉他询问价格该怎么说“How much?”这样店员就知道什么意思了。在这个朋友初次接触英语的过程中,你不会单独告诉他“how”和“much”这两个单词的意义和用法,也不会给他讲解“how much”这个组合的语法结构。等他以后熟悉和需要深入使用英语的时候,才有必要回过头认真学习单词和语法等。所有的语言都是这样,核心是如何解决问题,而不是语言本身的语法。对于初衷就是被设计用来解决实际问题的计算机编程语言,也是这样。对于以简单易学著称的Python语言的学习,就更应该这样。
就像学习人类语言自然而正确的方法一样,我们在本书中,不按传统编程图书的套路模式先讲语法、变量、数据类型等内容。本书的重点,是把程序设计和Python编程的思想传递给读者,是把Python使用和开发的方法教授给大家,是要落脚到Python语言的实践和应用。在大家掌握了Python开发的基本方法和步骤,甚至已经能够开发出基础的应用程序之后,我们再通过系统的语法学习来细化和提高编程知识。
在实际上手Python开发的安装和使用之前,我们先来学习计算机编程的思维和理念,以及这些编程思维在Python语言中的应用。对于任何程序员来说,学会正确的编程思维,比掌握一门语言的语法要重要得多!编程的思维是通用的,而编程的语法每门语言各不相同。就像我们说话,先要学会说话的方法,不同国家的语言只是单词和语法不同。没有正确的编程思维,学习任何编程语言和程序开发都困难重重。而具备了正确高效的编程思维的程序员,去学习和掌握任何一门编程语言都手到擒来。对于程序开发来说,不同的语言只是程序代码的表达方式不同,其背后解决问题和实现程序功能的思维及方法都是一致的。
具体到Python语言,正如我们上文所介绍的,它的特点就是语法简单高效,它的出发点就是程序员无须特别关心编程语言本身的语法和格式,可以把更多的精力聚焦到程序的实现逻辑和解决问题的方法上。所以对于Python语言的学习,相对别的编程语言,就更应该减少对语言本身语法等内容的学习时间,更多地去关注Python编程开发的思路。因此,我们根据Python语言自身的特点和优势,在本书中先学习Python编程的思维,重点是学会如何编写Python代码、调试程序、查找程序错误,掌握Python案例实现、项目实施、程序发布和代码维护的方法理念。对于熟悉计算机程序开发流程的专业程序员,或者对编程思维已经有深刻理解的读者,也可以跳过这一章,直接从第3章继续。