前几天看Python视频教程,老师学编程一定要做笔记发博客,这样可以提高你的兴趣和成就感。想了想也对!就打算发布51CTO上
在课上老师讲了一大堆Python术语。什么面向对象、面向过程、’类、包、库、模块等等听了一脸懵逼!!
晕 晕 晕 
我觉得对初学者来说最先理解的应该是这些概念!这是百度上整理编辑的一些我觉得最“友好”的解释.


1.面向对象语言的来历

短脚爸爸学Python入门 1.1_第1张图片

面向对象2位创始人!

面向对象范式可以追溯到Simula语言。·克利斯登·奈加特是这门语言的两位作者之一。他被挪威国防部征召入伍,然后服务于挪威防务科学研究所。作为一名训练有素的数学家,克利斯登·奈加特一直在用电脑解决国防中的计算问题,例如核反应堆建设、舰队补给、后勤供应等。在解决这些问的过程中,奈加特需要用电脑来模拟出真实世界的状况。比如说,如果发生一次核泄漏,会造成怎样的影响。奈加特发现,按照之前过程式的、指令式的编程方式,他很难用程序来表示真实世界中的个体。就拿一艘船来说,我们知道它会有一些数据,如高度、宽度、马力、吃水量等。它还会有一些动作,如移动、加速、加油、停泊等。这艘船就是一个个体。有些个体可以划为一类,如战列舰和航母都是军舰。有些个体之间有着包含关系,如一条船有船锚。当人们讲故事时,会自然而然地描述来自真实世界的个体。但对于只懂0/1序列的计算机来说,它只会机械地执行一条条指令。奈加特希望,当他想多用计算机床模拟时,能像讲故事一样简单。他凭着自己在军和民用方面的经验,知道这样的一种编程语言有着巨大的潜力、最终,他遇到了计算机专家奥利一约翰达尔。达尔帮助奈加特把他的想法变成一门新颖的语言——simula。这门语言的名字,正是奈加特朝思暮想的。模拟。我们可以把面向对象看作是故事和指令之间的桥梁。程序员用一种故事式的编程语言描述问题,随后编译器会把这些程序翻译成机器指令

但在计算机发展的早期,这些额外的翻译工作会消耗太多的计算机资源、因此面向对象的编程范式并不流行。一些纯粹的面向对象语言,也经常因为效率低下而受到诟病。随着计算机性能的提高,效率问题不再是瓶颈。人们转而关注程序在面向对象领域最先取得辉煌成功的是C++语言。比雅尼·斯特劳斯特鲁普在C语言的基础上增加面向对象的语法结构,创造出C++语言。C++杂揉了C语言特征,所以显得异常复杂。后来的java语言向着更纯粹的面向对象范式靠拢,很快获得了商业上的成功。C++和Java一度成为最流行的编程语言。后来微软推出的C#语言,以及苹果一直在支持的Objective-C语言,也都是典型的面向对象语言.

                                                         ----摘之《从Python开始编程》


面向对象和面向过程!


问:经常听到有人说,计算机语言可以归为面向过程语言和面向对象语言,那么到底什么是面向对象,什么是面向过程呢?

答:面向过程就是分析出解决问题所需要的步骤,然后用函数把这些步骤一步一步实现,使用的时候一个一个依次调用就可以了;面向对象是把构成问题事务分解成各个对象,建立对象的目的不是为了完成一个步骤,而是为了描叙某个事物在整个解决问题的步骤中的行为。


可以拿生活中的实例来理解面向过程与面向对象,例如五子棋,面向过程的设计思路就是首先分析问题的步骤:1、开始游戏,2、黑子先走,3、绘制画面,4、判断输赢,5、轮到白子,6、绘制画面,7、判断输赢,8、返回步骤2,9、输出最后结果。把上面每个步骤用不同的方法来实现。


如果是面向对象的设计思想来解决问题。面向对象的设计则是从另外的思路来解决问题。整个五子棋可以分为1、黑白双方,这两方的行为是一模一样的,2、棋盘系统,负责绘制画面,3、规则系统,负责判定诸如犯规、输赢等。第一类对象(玩家对象)负责接受用户输入,并告知第二类对象(棋盘对象)棋子布局的变化,棋盘对象接收到了棋子的变化就要负责在屏幕上面显示出这种变化,同时利用第三类对象(规则系统)来对棋局进行判定。


可以明显地看出,面向对象是以功能来划分问题,而不是步骤。同样是绘制棋局,这样的行为在面向过程的设计中分散在了多个步骤中,很可能出现不同的绘制版本,因为通常设计人员会考虑到实际情况进行各种各样的简化。而面向对象的设计中,绘图只可能在棋盘对象中出现,从而保证了绘图的统一。


                                                                      —摘自《C#编程词典》