第3章
Python介绍
你可能还记得我们在第1章中提到,制作树莓派的初衷是为了让每个人(尤其是孩子们)都拥有编程的环境。为了实现该目的,树莓派的创造者们想要推出一台价格相对便宜但性能十分强劲的计算机,每个人都可以将这台计算机连接至键盘、鼠标、显示器进行编程。
创造树莓派的另一个原因是希望简化编程。为此,Eben Upton和他的同伴决定将Python语言集成到树莓派的操作系统中。他们认为,Python是一种强大的编程语言,那些没有编程经验的人也可以轻松快速地学会。
在本章,我将对Python进行快速且全面的介绍。我们将练习创建一些脚本文件,然后运行,并在过程中学习这种强大的语言的一些基本操作。假设你至少对Python有了初步的了解,也许你还懂得一些编程知识,但仅此而已。因为—我们要介绍Python—这也是你购买本书的部分原因。
3.1 脚本语言与程序设计语言
Python是一种脚本语言。有些人可能会对它是程序设计语言还是脚本语言进行争论,但为了得到那些严格的技术专家的认可,我们仍称其为脚本语言。
脚本语言同一种真正的程序设计语言有几个方面的区别。在阅读以下的对比时,请注意楷体字部分。
不同于脚本语言,程序设计语言需要进行编译。像C、C++和Java这些常见的语言一定要通过编译器编译才可正常运行。编译最终会生成一个机器码的文件,人们看不懂这个文件,仅有计算机可以识别并执行。当你用C语言编写了一个程序,编译后会生成.o文件,这个文件就是计算机所识别的文件。这种程序设计语言的副作用(结果)可能会使得程序的运行速度更快—因为编译只发生一次,而且编译器通常会在编译过程中优化代码,使得其运行起来比最初时更快一些。
另一方面,脚本语言只在每次执行时才会被读入,解释并执行。它们不会产生编译好的文件,并且命令执行的顺序和你写入的顺序一致。如果你写入的代码质量不是很高,你得到的结果也不会很好。因此,用脚本语言编写的程序运行速度可能较慢。
程序设计(编译)语言经常在硬件的顶层执行,也就是它们被编写的地方。当你编写并编译一个C++程序后,得到的机器码文件由计算机处理器直接执行。
脚本语言运行在另一个程序“之中”—这个程序负责处理刚刚我们提到的编译工作。PHP,一种常见的脚本语言,运行在PHP脚本引擎中。bash脚本运行在bash shell中,这一点在上一章也有所介绍。
程序设计语言往往更加灵活,但学起来比较困难。
脚本语言可读性更高,语法不太严格,对于没有编程基础的人来说更易于上手。
仅仅因为这个原因,学校中入门级程序设计课程通常讲授脚本语言,直到学生掌握了基本知识后,才会学习C或Java这类程序设计语言。
然而,近几年,两种语言之间的界限越来越模糊,二者的差距几乎不复存在。让我们举例说明这个问题:
虽然严格的程序设计语言需要进行编译,而脚本语言不进行编译,但现如今计算机处理器速度大幅提升,内存管理日趋完善,几乎使得编译语言的速度优势消失殆尽。一个用C语言或Python语言编写的解决特定任务的程序在执行速度上几乎没有任何差别。虽然某些特定任务可能会存在一些速度差异,但并不是全部。
是的,脚本语言运行在另一个程序之中。然而,Java语言看作是一种“真正的”程序设计语言,因为它必须经过编译才可运行,但却运行在每台设备的Java虚拟机中。这就是为什么Java语言具有如此跨平台特性的原因:只要你特定设备上有正确版本的虚拟机,代码便可进行移植。C#也是一种编译语言,但它却运行在另一个程序环境中。
我认可程序设计语言往往更加复杂且难以学习,脚本语言确实易于理解和学习,因为其语法规则较少,而且很像英语。例如,我们就两种语言如何输出“Hello, world!”来进行讨论:
在C++中,你这样编写出程序:
#include<iostream>
using namespace std;
int main(){
cout<<"Hello, word!"<<endl;
return 0;
}
在Python中,你这样编写程序:
print "Hello,word!"
当然,存在一些特殊情况。我也见过看起来有些不合乎情理的Python脚本,以及一些可读性十分高的C语言程序。但通常来讲,脚本语言更适合编程初学者学习,而且功能十分强大。
是的,你可以在树莓派上使用C、C++甚至Java语言或者汇编语言(如果你热衷于此)进行编程。但既然你已经了解了程序设计语言和脚本语言的区别,为什么不试试Python呢?
在树莓派中,使用Python进行编程意味着那些大多数从未涉及过计算机编程的人可以不用学较难的语言就能利用树莓派进行编程,并做出一些十分有意思的东西,比如本书中介绍的所有项目。毕竟这就是树莓派存在的意义:让更多学生接触编程,故Python语言便预装在了树莓派内。