20分钟通俗讲解编程的基本框架

python 的底层结构是C语言
可以理解成把C语言封装后,用python的语法来调度。
从1946年(第一台计算机问世),一共有超2500种的编程语言。但是无论哪种都没有超出冯诺伊曼所给定的框架。
冯诺依曼体系下的程序都遵循这样的原则。
硬件:提供基础指令
程序:自由组合这些指令来调度硬件事项具体功能。
封装和接口
封装:广义来说,现实世界中的任何一件工具都是一次封装
(手电筒里的电池,灯泡以及其他小零件对于程序来说都是封装好的。程序只用调用封装好的结构就行了)
接口:API,即应用程序编程接口
(手电筒的开关以及加上安装再开关上的辅助原件加在一起才算是一个完成的API接口)
手电筒向往提供了两个可以被调用的指令,一个是开关,一个是方向,开关与方向就是程序与手电筒之间的接口
所谓编程的本质就是程序暗战某种规律调用各种API
(Application Programming Inteerface)
以API为界,将程序分成以下两大部分:控制部分和具体功能。这两大部分是通过API对接的。

学编程先从控制部分开始,这部分是通用的,所有程序都可能用到,内容也比较固定,比较标准化
另一边的具体功能,则形式就比较多样,所有精彩基本上都来自这一边,我们称之为“库和模块”。
但凡是要实现一些比较复杂的功能,我们的程序都是要调用某某库,某某模块来实现的。
库和模块就是冯诺依曼体系中的所谓“硬件”
程序如何描述现实?
程序如何了解对象?
API里是什么样的信息?
上面的问题其实就是一个问题,即程序泽恩杨描述显示世界?
答案:通过属性和行为
计算机通过了解对象的属性和行为来认识对象,
总结:
编程的本质是条用封装后的API,API再被调用之前必须转换成属性代码和行为代码,计算机才能认识他,调用它。
对象的属性,即属性和属性值
对象的行为,即行为和行为值
计算机识别图片和声音也得依靠属性代码和行为代码,(即事项为图片和声音设计API,编写属性代码和代码这就是计算机描述现实的方式。
在此基础上,引入一个概念,就可以大大提高计算机描述现实的效率,这个概念就是类,它的作用是是管理计算机的属性和行为方面更简洁高效。
高效管理属性和行为
将同类按属性归类,再件属性和行为做初始化定义,有更改的时候,只要重新定义一个名称即可,没有定义饿属性和行贿,自动认定为默认值,这样这样效率就会大大提高,
类的定义:类是对具有相同属性和行为的类似对象的统称,他是对众多相似对象进行抽象后的结果
实例化对象:不一定是一个个体,也可以是一个类。

一般四个类就可以实现下图左边的控制部分:(其实可以算五个类,数值类有两种)
None, 空
布尔类(bool):只有两个值,(true,false)
数值类:整数类和浮点数类
字符串类:很多字符按照先后顺序连在一起
我们看到的所有,中文,英文,各种符号,数字,各种图案,各种语言的文字,都可以成为字符串中的字符,空格也是字符

数值类可以分为两类:整数类和浮点数类,

整数和小数
人的理解,差别不大,,但对于计算机来说,整数和小熟的物理实现难度存在巨大差别
计算机需要在一个标准长度或者硕士标准位数上表达一个数,所以小数点放在哪儿就是一个问题。整数不需要小数点,消暑的小数点又不确定,所以搞得左右为难,经过长期的实践和权衡之后,最后用浮点数来表示所有的数,不管是整数还是小数,我们都实现把它变成科学技术法的形式,然后在一个标准的位长上 ,用第一位表示数值的正负,用下面的绿色部分表示科学计数法的指数。用后边(粉色)这部分表示科学计数法的尾数,这种物理实现方式就是浮点数。显然,浮点数可以表示所有数,整数,小叔,分数都可以用浮点数的形式来表示。不过这种方式在表达上有些小数,分数的时候,还是存在一些问题。比如数据的精确度,精确到多少位都是问题。这些情况要么忽略,要么打补丁修补。
所以计算机种讲的整数和浮点数都是计算机对数值的物理实现方式。
整数既可以用浮点数表示,也可以用整数的形式表示。

这样可以看出python的底层就是五个最基本的类,或者说是5个最基本的数据类型。它们都有自己特有的属性和行为。
在python里,属性就叫属性attribute,而行为我们通常不叫行,叫方法methods,
有了这最基本的5个类,可以说其他的所有类,所有数据类型都可以用这5个最基本的类支撑起来,话句话说这5个类的属性和行为可以封装衍生出python的所有代码。

实例化过程
python简介
python 官网 www.python.org,
安装程序在官网可直接下载,(还有以往的版本,而且针对windows 平台,MAC平台,Linux 平台等都有相应的版本支持)
python的安装文件很小,基本不超过30M,安装成功后,会自带代码编辑器,但这个代码编辑器等同于操作系统里自带的那个最简单的文本编辑器,其实任何文本编辑器,都可以用来写程序代码(包括纸)。但是所有写好的代码都要去固定的地方去测试去执行。
对window系统来说:命令行
Mac系统:终端
直接在命令行或者终端里写程序代码也是可以的
但在命令行里写一行执行一行效率是非常低的
所以很多第三软件公司纷纷退出了专门用于编程的编辑器
比如:微软的visual studio code ,捷克的pycharm
特点:不仅能编写代码,而且还能再编写的过程中帮助我门语法纠正。格式提醒,代码提示,可以大大减少编程的难度,提高编程的效率。再不离开编辑界面的情况下把代码送到命令行或者终端去测试执行。这个就是IDE(intergrated Development Environment ,继承开发环境,
微软的VSCode是一款全球免费的集成开发环境(不管是python,所有主流的编程语言几乎都可以通过VSCode来写,
VSCode的安装程序在它的官网上可以自由下载,
code.visualstudio.com
VSCode提供了面向windows,Mac各种平台的版本。
接下来看一下Python的目录,下面的模块章节就是前面提到的库和模块。

所有的精彩都来自库和模块,库和模块的来源有三种不同的途径。

库和模块的来源:
1、python程序内置的标准库和标 准模块
2、第三方开发的库和模块(使用前需要下载安装)
3、自己写的程序。

这三种模块在使用前都要像这样用import导入,程序才能调用模块种的代码。

类,除了可以用系统已经定义好的类,比如整数,浮点数,也可以创建自己的类,

虽然我们初学是创建的类,虽没有系统中那么豪华,严密,但麻雀虽小却可以五脏俱全。

条件语句和循环语句和后面的程序调试,时间和日期,还有线程进程都关系到程序执行的流程和时间安排,程序的流程和时间安排很重要。

函数,高阶函数
Python里的函数比我们数学种的函数涵盖面要广,铺盖面要大,它不光像数学的函数那样能算数
比如
global()函数,
它连自变量参数都不要,这个函数写在程序的任何位置他都可以把我们当前程序中所有用到的资源都统计出来,也就是说把当前程序中所有的对象都列出来,这可以帮助我们了解程序的整体状况。

locals()函数,
这个函数也不需要自变量函数,它也是想globals()函数那样统计对象的,区别在于,它写在不同的位置会有不同的结果,它如果写在某个局部,就会只统计这个局部的全部对象,

dir( 某对象)函数这个函数是需要参数的,它的参数是某个具体的对象,这个对象可以是一个类,是一个函数,是一个整数,是一个浮点数都行,因为对于Python来说,一切都是对象,我们知道一个对象的全部价值就是它的所有属性和行为,或者说属性和方法,那么这个dir函数可以把某个对象的全部属性和方法都全部列出来,帮助我们了解这个对象可以调用的所有API,


以上三个函数都是python系统给我们定义的。我们也可以定义我们自己的函数,

上面的列表,元组,字典和集合和后面的collections都是属于容器性数据类型。
这个对象可以是一个数,一个类,甚至可以使包含了所有信息的一个数据库,没有大小,什么对象它都能装得下,反正是一个对象一个坑,这种往坑里装对象的思想极具有使用价值,

这种容器性结构,不光在容器性数据类型中被运用,我们的字符串本质上也在运用这种容器性结构,
如微信,一个坑里放一个字符,如果给每个坑进行编号的话可以进一步实现很多操作,
下面的程序调试,异常处理,日志记录,都是内置在python中的标准模块

程序调试
正常情况下程序是一口气执行完,但是程序调试可以让我们一行一行执行,也可以先执行一大片,在执行一大片,一堆一堆的执行,也可以让执行到某个位置就停下来,几乎我们能够想到的测试方法它都想到了,

异常处理模块是一个类,它将我们与计算机执行过程种的所有举动一网打尽,如果我们的举动正常,它就忽略,如果我们的举动不正常,这个类就会把这些不正常的举动分门别类,很有条理额展示给我们,

如意外关机,死记了,不小心按错键了,输入了不和语法的字符了,除数为零了,这些异常都会被这个类捕捉到,并反馈给我们,
异常处理向我们展示了类的高校逻辑和强大功能,

日志记录也是Python的一个内置标准模块,它有众多的属性和方法,帮助我们按照我们给定的格式生成字符串,
这些字符串多半实在说什么日期,什么时间发生了什么状况,这些字符串可以帮助我们了解程序的运行状况,

我们不仅要了解代码还要了解其背后的物理逻辑和物理实现,当我们能把Python种的各个环节,各个板块之间的内在联系弄明白,各个板块能在我们头脑种形成一个整体框架结构时,你会发现其实计算机程序相当把人类的思维,行为代码化了,把现实世界中的事物代码化了,(事物从现实状态到代码状态额转换细节,有人有兴趣,有人无感)Windows95前基本都是代码化的,之后才正式趋向视窗化的,十几年后又出现苹果话,又过十年,(当Python热门起来),所有计算机软件又都重新趋向于用代码来解决更细节,更复杂的问题,
























