云学python (第一章用编程改造世界)《vamei-从Python开始学编程》 笔记

1.1历史简介

冯•诺 依曼设计计算机采用二进制运算,包括控制器、运算器、存储器、 输入设备和输出设备五个部分

  1. 控制器:计算机的指挥部,管理计算机其他部分的工作,决定执行指 令的顺序,控制不同部件之间的数据交流。
  2. 运算器:顾名思义,这是计算机中进行运算的部件。除加减乘除之类 的算数运算外,还能进行与、或、非之类的逻辑运算。运算器与控制 器一起构成了 中央处理器(CPUCentral Processing Unit)
  3. 存储器:存储信息的部件。冯•诺依曼根据自己在曼哈顿工程中的经 验,提出了存储器不但要记录数据,还要记录所要执行的程序。
  4. 输入设备:向计算机输入信息的设备,如键盘、鼠标、摄像头等。
  5. 输出设备:计算机向外输出信息的设备,如显示屏、打印机、音响等。

操作系统是运行在计算机上的一套软件,负责管理计算机的软硬件资源。操作系统提供了一套系统调用 (System Call)系统调用提供的功能非常基础, 有时调用起来很麻烦。操作系统因此定义一些库函数(LibraryRoutine)将系统调用组合成特定的功能,如同几个音律组成的和弦。所谓的编程, 就是用这些音律和和弦,来组成一首美妙的音乐

1.2所谓的编程,是做什么的

编程中总是在调用计算机的基本指令。如果完全用基础指令来说明所有的操作,代码将超乎想象的冗长复用代码的关键是封装(Packaging)即把执行特殊功能的指令打包成一个程序块,给这个程序块起个容易查询的名字。如果需要重复使用这个程序块,简单地通过名字调用

操作系统就是将一些底层的硬件操作组合封装起来,供上层的应用程序调用。当然,封装是有代价的,它会消耗计算机资源。如果使用的是早期的计算机的话,封装和调用的过程会非常耗时,最终得不偿失。

封装代码的方式也有很多种。根据不同的方式,程序员写程序时要遵循特定的编程风格,如面向过程编程、面向对象编程和函数式编程。用更严格的术语来说,每种编程风格都是一种编程范式(Programming Paradigm)面向过程的C语言、 面向对象的Java语言、面向函数的Lisp语言等。

对于一个程序员来说,如果他熟悉了某一种编程范式,那么他就能很容易地上手同一范式的其他编程语言。Python这样的多范式语言提供了一个对比学习多种编程范式的机会。在同一语言框架下,如果程序员能清晰地区分出不同的编程范式,并了解各自的利弊,将起到事半功倍的效果。这也是本书中想要做到的,从面向过程、面向对象、函数式三种主流范式出发为未来学习其他语言打好基础。

1.3为什么学Python

在编写Python之前,罗苏姆接触并使用过诸如PascalCFortran 等语言。这些语言的关注点是让程序更快运行相对于C语言,罗苏姆更喜欢Shell实现功能的方 式。UNIX系统的管理员们常常用Shell去写一些简单的脚本,以进行一 些系统维护的工作,比如定期备份、文件系统管理,等等。Shell可以像胶水一样,UNIX下的许多功能连接在一起。许多C语言下数百行的程序,在Shell只用几行就可以完成。然而,Shell的本质是调用命令, 它并不是一个真正的语言。比如说,Shell数据类型单一、运算复杂等。 总之,Shell不是一个合格的通用程序语言。

尽管已经具备了良好的可读性和易用性,但ABC语言并未流行起来。 在当时,ABC语言编译器需要比较高配置的电脑才能运行。除了性能,ABC语言的设计还存在一些致 命的问题:

可拓展性差。ABC语言不是模块化语言。如果想在ABC语言中增加功能,比如对图形化的支持,就必须改动很多地方。

不能直接进行输入输出。ABC语言不能直接操纵文件系统。尽管你可以通过诸如文本流的方式导入数据,但ABC语言无法直接读写文件。输入输出的困难对于计算机语言来说是致命的。你能想像一个打不开车门的跑车么?

·过度革新 ·传播困难

1991年,第一个Python编译/解释器诞生。它是用C语言实现的, 能够调C语言生成的动态链接库。从一出生,Python就已经具有了一 直保持到现在的基本语法:类(class)函数(fimction)异常处理(exception)包括表(list)和词典(dictionary)在内的核心数据类型, 以及模块(module)为基础的拓展系统。

python用缩进代替花括号从而保证程序更易读(readability)o 罗苏姆认为,程序员读代码的时间要远远多于写代码的时间。强制缩进能让代码更清晰易读,应该予以保留。但与ABC语言不同的是,罗苏姆同样重视实用性(practicality)在保证易读性的前提下,Python会乖巧 地服从其他语言中已有的一些语法惯例。Python用等号赋值,与多数语言保持一致。它使用def来定义函数,而不是像ABC语言那样使用生僻 的HOW TO

Python还特别在意可拓展性(extensibility),这是罗苏姆实用主义原则的又一体现。Python可以在多个层次上拓展。从高层上,你可以引入其他人编写的Python文件,来为自己的代码拓展功能。如果出于性能考虑,你还可以直接引入CC++语言编译出的库。由于CC++语言在代码方面的多年储备,Python相当于站在了巨人的肩膀上。Python就像是使用钢构建房一样,先规定好大的框架,再借着模块系统给程序员以 自由发挥的空间。

Python的流行与计算机性能的大幅提高密不可分。那些能快速生产出软件的语言成为新的明星,比如运行在虚拟机上的Java完全基于面向对象的编程范式,能在牺牲性能的代价下,提高程序的产量。Python的步伐落 后于Java,但它的易用性同样符合时代潮流。

另一个悄然发生的改变是互联网。开源 (Open Source)的软件开发模式变得流行。程序员利用业余时间进行软件开发,并开放源代码。LinuxGNU相互合作,最终构成了一个充满活力的开源平台。

Python的一个理念是自带电池(Battery Included)也就是说,Python 已经有了功能丰富的模块。所谓模块,就是别人已经编写好的Python程序,能实现一定的功能。一个程序员在编程时不需要重复造轮子,只需 引用已有的模块即可。这些模块既包括Python自带的标准库,也包括了 标准库之外的第三方库。这些“电池”同样是整个社区的贡献。

当然,由于很多现存的代码是Python 2编写的, 所以从版本2到版本3的过渡并不容易。Python的性能也不时被人诟病。Python的运算性能低 于CC++,我们会在本书中提及其原因。尽管Python也在提高自身的性能,但性能的差距会一直存在。

1.4 最简单的 Hello World 

命令行 (Command Line)来运行Python你输入的Python 语句会被Python的解释器(interpreter)转化成计算机指令。

使用Python的第二种方式是写一个程序文件(Program File)Python 的程序文件以.py为后缀,它可以用任何文本编辑器来创建和编写。

一模一样与命令行相比, 程序文件适用于编写和保存量比较大的程序。

程序文件的另一个好处是可以加入注释(comments)#行注释(multiline comments 连续三个引号

无论是想要打印的字符,还是用于注释的文字,都可以是中文如 果Python 2中使用中文,则需要在程序开始之前加上一行编码信息, 以说明程序文件中使用了支持中文的utf-8编码。在Python 3中不需要这 一行信息。

# coding: utf-8

print("你好,世界! ”) #在屏幕上显示文字

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值