《 Python树莓派编程》——第3章 Python介绍 3.1 脚本语言与程序设计语言

简介:

本节书摘来自华章出版社《Python树莓派编程》一书中的第3章,第3.1节,作者[美]沃尔弗拉姆·多纳特(Wolfram Donat)著 韩德强 等译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。


第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语言便预装在了树莓派内。

相关文章
|
15天前
|
存储 人工智能 数据处理
Python:编程的艺术与科学的完美交融
Python:编程的艺术与科学的完美交融
19 1
|
2天前
|
JSON 数据格式 开发者
pip和requests在Python编程中各自扮演着不同的角色
`pip`是Python的包管理器,用于安装、升级和管理PyPI上的包;`requests`是一个HTTP库,简化了HTTP通信,支持各种HTTP请求类型及数据交互。两者在Python环境中分别负责包管理和网络请求。
13 5
|
4天前
|
存储 Python 容器
Python高级编程
Python集合包括可变的set和不可变的frozenset,用于存储无序、不重复的哈希元素。创建集合可使用{}或set(),如`my_set = {1, 2, 3, 4, 5}`。通过add()添加元素,remove()或discard()删除元素,如`my_set.remove(3)`。
|
5天前
|
测试技术 Python
Python模块化方式编程实践
Python模块化编程提升代码质量,包括:定义专注单一任务的模块;使用`import`导入模块;封装函数和类,明确命名便于重用;避免全局变量降低耦合;使用文档字符串增强可读性;为每个模块写单元测试确保正确性;重用模块作为库;定期维护更新以适应Python新版本。遵循这些实践,可提高代码可读性、重用性和可维护性。
25 2
|
11天前
|
测试技术 调度 索引
python编程中常见的问题
【4月更文挑战第23天】
31 2
|
11天前
|
网络协议 算法 网络架构
Python网络编程之udp编程、黏包以及解决方案、tcpserver
Python网络编程之udp编程、黏包以及解决方案、tcpserver
|
12天前
|
机器学习/深度学习 数据挖掘 算法框架/工具
Python:编程的艺术与魅力
Python:编程的艺术与魅力
24 3
|
12天前
|
机器学习/深度学习 数据可视化 数据挖掘
实用技巧:提高 Python 编程效率的五个方法
本文介绍了五个提高 Python 编程效率的实用技巧,包括使用虚拟环境管理依赖、掌握列表推导式、使用生成器提升性能、利用装饰器简化代码结构以及使用 Jupyter Notebook 进行交互式开发。通过掌握这些技巧,可以让你的 Python 编程更加高效。
|
12天前
|
算法 Python
Python面向对象oop编程(二)
Python面向对象oop编程(二)
|
15天前
|
机器学习/深度学习 数据挖掘 API
pymc,一个灵活的的 Python 概率编程库!
pymc,一个灵活的的 Python 概率编程库!
21 1