《易学Python》——第1章 为何学习Python 1.1 学习编程

简介:

本节书摘来自异步社区《易学Python》一书中的第1章,第1.1节,作者[澳]Anthony Briggs,王威,袁国忠 译,更多章节内容可以访问云栖社区“异步社区”公众号查看。

第1章 为何学习Python

本章介绍如下内容:

  • 计算机和程序简介以及编写程序的原因;
  • Python简介及其如此杰出的原因;
  • 安装Python。

既然购买了本书,您很可能想学习编程技术。祝贺您!打算学编程的人不是很多,但编程很有趣,自学编程的回报也很高。编程是衡量您是不是文盲的新标准;如果不会编写简单程序(如批处理文件、邮件过滤器、电子表格公式),将在会这样做的人面前处于劣势。编程还是工具,可帮助您将点子付诸实施。

我10岁左右开始涉足编程,当时使用的是Commodore 64。在那个时候,除游戏和简单字处理软件外,现成的软件不多。Commodore等计算机自带了BASIC,编程很容易,无需学很多知识就能很快得到结果。


screenshot

然而,这样的情况一去不复返了。当前,要编写程序必须先安装软件;但学会编程后,就可创建各种神奇的程序,替您完成繁琐的工作,向您提供信息,供您娱乐。最重要的是,编程很有趣,每个人都应尝试。

您将发现,本书有一些卡通人物点缀其中。这旨在以有趣的方式提供一些背景知识,让您知道接下来要讲的内容,或指出一些常见问题。这些卡通人物都来自User Friendly,但内容都是我编写的,如果您不喜欢,就责怪我吧。

下面开始介绍有关编程的基本知识。

1.1 学习编程

这是一本编程书,在详细探讨编程之前,有必要介绍一些基本知识:什么是编程?如何编程?编程的定义很简单:

编程就是告诉计算机做什么。

但与大多数定义一样,这种定义太过简单。与国际象棋一样,学习编程的基本规则很容易,但要精通这些规则并结合使用它们要难得多。编程与人类活动的很多方面相关:从某种意义上说,如果不进行编程,就很难让计算机从事有意义的工作;编程不仅关乎数字和计算,还关乎设计、创意和个人表达。


screenshot

1.1.1 告诉计算机做什么

下面将前面的编程定义分解为几部分,并分别审视它们。要明白前面的编程定义,需要知道计算机是什么以及“告诉”和“做什么”的准确含义。

1.计算机

计算机是速度很快的计算器,可按您的指令做简单决策。计算机指令很简单,通常包含计算机要完成的任务,如相加和比较。然而,结合使用一系列指令可创建大型程序,让您能够完成复杂的工作,如撰写文档、玩游戏、计算账户余额以及控制核反应堆。

计算机看似很聪明,实际上很傻,一根筋且缺乏基本常识。计算机毕竟只是机器,您让它做什么,它就做什么,根本不考虑后果。就拿删除整个硬盘的命令来说吧,大多数人明白其后果很严重,可能在遵命行事前向您核实,但计算机什么都不问,直接将硬盘上所有的数据都删除。

注意:

您让它做什么它就做什么,这既是计算机的优点,也是计算机的缺点。

如果使用(或编写)的程序行为怪异或无缘无故地崩溃,这不是它的错——它只是按指令行事。

2.告诉

使用Python时,您通常这样向它发出命令:在文本文件中输入程序代码,再让程序Python运行该文件,这将在本章后面介绍。您输入的指令可复杂可简单,执行的任务各种各样:将数字相加、打开其他文件、在屏幕上显示内容等。简单的Python程序类似于下面这样:


screenshot

如果您不明白这个程序的含义,不用太担心;这个示例旨在提供一些背景知识。

3.做什么

现在事情开始变得有趣起来了。大多数现代计算机都是“图灵完备(Turing complete)”的,即什么都能做——您想得到的任何事情计算机都能做。至少从理论上说如此:所需的时间或复杂程度可能超乎预期,或者需要特殊硬件(如果您希望以特定方式交互),但只要编写的程序没有问题,并提供了足够的数据,计算机就什么都能做。下面是计算机用于完成的一些任务。

  • 控制有人或无人航天器和探测器,引导机器人进入其他星球,包括火星探索流浪者Spirit和Opportunity。
  • 通过计算机网络(互联网和万维网)将数据传输到世界各地。通过网络可向世界各地传输信息,还可接收来自世界各地的信息,且在一秒钟内就可搞定。
  • 打造机器人,从工业机械手到Roomba真空吸尘器,再到像人类一样能爬楼并具备基本感情的机器人。
  • 模拟现实世界的现象,如重力、光和天气。这包括科学模型及大多数游戏。


screenshot

您可能没有将机器人探测器送到其他星球所需的硬件,但至少从理论上说,您依然能够运行这些程序。例如,就拿用于控制Spirit和Opportunity的计算机来说吧,其计算能力根本无法与您的台式机、笔记本电脑和手机相媲美,真是难以置信。

1.1.2 编程是创意

大家很容易将重点放在计算机编程的具体方面,如指令、加法、网络、硬件等,但编程的核心是创意:具体地说就是在程序中实现创意,供他人使用。自人类使用长矛以来,工具被人们用来探索新事物的情况层出不穷,编程也不例外。计算机自面世以来帮助人们想出了很多新点子,其中包括互联网、电子表格、交互式游戏以及桌面出版。


screenshot

尽管我无法帮您想出新的创意,但我可以告诉您一些来自别人的创意,您可以用来激发自己的创意灵感。

1.1.3 编程是设计

本书涉及的大多数编程方面都与设计相关。设计通常指的是特定问题的常用解决方案。例如,建筑图描绘了建筑物及其占据的空间,解决了一些常见的建筑问题:如何进出建筑物以及如何在建筑物内移动;如何使用建筑物;建筑物如何巧妙利用材质让人感到愉悦等。

是否有效地解决了问题决定了设计的好坏,也决定了它是否优于其他设计。这意味着设计不可能面面俱到,总是存在其他更佳的问题解决方案。对于您的设计方案,别忘了提出如下问题:这种解决方案是否正确无误?它是否只解决了问题的一部分?将设计付诸实施有多容易?如果它只是好10%,但付诸实施的难度增加了一倍,就应选择更简单的设计方案。

既然编程是实现创意的方案,它解决了哪些问题呢?下面是您可能遇到的一些问题。

  • 创意不完整,还有一些细节有待解决。
  • 大多数创意都很复杂,一旦您着手将其记录下来,就将涉及大量的细节。
  • 创意必须清晰、易于理解,这样别人才能使用、理解和利用它们。

编程需要完成的重要工作是,以尽可能简单、清晰的方式将创意表达出来。开发计算机语言时,面临的一个常见主题是管理复杂性。即便编写的程序简单明了,一不小心就会只见树木不见森林。修改程序时,您可能错误地理解程序最初的意图,进而引入错误或不一致。优秀的编程语言提供了帮助处理细节的功能,让您在必要时能够深入或避开细节。

另一个重要因素是,使用特定语言编写的程序有多灵活。在实现创意方面,探索式编程是个很有用的工具,本书将大量采用这种方式;但如果编程语言没有管理复杂性和隐藏细节的强大工具,就很难修改程序,导致探索式编程的很多优点无法显现出来。

对编程有了基本认识后,该说说本书介绍的语言Python了。

相关文章
|
1天前
|
API Python
Python模块化编程:面试题深度解析
【4月更文挑战第14天】了解Python模块化编程对于构建大型项目至关重要,它涉及代码组织、复用和维护。本文深入探讨了模块、包、导入机制、命名空间和作用域等基础概念,并列举了面试中常见的模块导入混乱、不适当星号导入等问题,强调了避免循环依赖、合理使用`__init__.py`以及理解模块作用域的重要性。掌握这些知识将有助于在面试中自信应对模块化编程的相关挑战。
12 0
|
1天前
|
机器学习/深度学习 算法 Python
使用Python实现集成学习算法:Bagging与Boosting
使用Python实现集成学习算法:Bagging与Boosting
11 0
|
2天前
|
Python
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
python面型对象编程进阶(继承、多态、私有化、异常捕获、类属性和类方法)(上)
22 0
|
3天前
|
Python
python学习14-模块与包
python学习14-模块与包
|
3天前
|
Python
python学习12-类对象和实例对象
python学习12-类对象和实例对象
|
3天前
|
数据采集 Python
python学习9-字符串
python学习9-字符串
|
3天前
|
Python
python学习10-函数
python学习10-函数
|
3天前
|
存储 索引 Python
python学习7-元组
python学习7-元组
|
3天前
|
Python
python学习8-集合
python学习8-集合
|
3天前
|
Python
python学习4-内置函数range()、循环结构、循环控制语句、else语句、嵌套循环
python学习4-内置函数range()、循环结构、循环控制语句、else语句、嵌套循环

热门文章

最新文章