Python学习之准备工作
编程语言历史在计算机硬件基础中我们大概介绍了一下计算机的发展历史。了解到在曾经有一段时期里计算机是不存在操作系统这一概念的,所有需要计算机完成的操作都需要当时的程序员来与计算机底层硬件进行直接对话,对话的方式就是通过二进制,故最早的编程语言即二进制语言,也被称为机器语言。 早期的操作人员是通过带有孔的纸带将程序输入电脑进行编译(对纸条打点),这使得开发人员的开发效率及其低下。而后为了解决这种问题则出现了汇编语言,汇编语言相较于机器语言来说稍微简洁了一些,实际上说白了汇编语言就是将机器语言的二进制指令用英文标识符做了一次封装,但它也是同底层硬件直接打交道的一种语言。 到了20世纪60年代,贝尔实验室的研究员Ken Thompson(肯·汤姆森)发明了B语言,而后又使用B语言编了个游戏 - Space Travel。他找了一台空闲的机器 PDP-7 想来玩这个游戏,但是这台机器并没有操作系统。所以顺带着 Thompson 又为 PDP-7 开发了一套操作系统,而后来这个OS(OS便是操作系统的意思)被命名为 UNIX。 1971年的时候 Ken Thompson 的同事 D.M.Ritchie(DM里奇)也想玩 Space Travel,所以和 Ken Thompson合作开发UNIX,并且在 1972年的时候改进了B语言且将新语言改名为C语言(取BCPL中的第二个字母,C)。 到了1973年的时候C语言主体完成。Ken Thompson 和 D.M.Ritchie 已然忘记了 Space Travel 这款游戏。并且全身心投入到了UNIX和C语言的开发,至此,UNIX和C语言相辅相成的一直发展道了今天。
CPL(Combined Programming Language) - 1963 ? CPL是1963年剑桥大学发明的 BCPL(Base Combined Programming Language) - 1967 ? 剑桥的Matin Richards 对CPL做了简化,推出了BCPL B(B Programming Language) - 1969 ? 贝尔实验室的Ken Thompson(肯·汤普森) 对BCPL又做了改进,设计出了简单的且接近硬件的B语言,并用B语言写了第一个UNIX OS C(C Programming Language) - 1972 ? 贝尔实验室的另外一个人Dennis MacAlistair Ritchie(D.M.Ritchie - DM里奇)在B语言的基础上设计出了C语言。C语言保持了B语言的优点(精炼、接近硬件),又克服了他的缺点(过于简单,数据无类型) C++(C plus plus Programming Language) - 1983 ? 还是贝尔实验室的人,Bjarne Stroustrup(本贾尼·斯特劳斯特卢普) 在C语言的基础上推出了C++,它扩充和完善了C语言,特别是在面向对象编程方面。一定程度上克服了C语言编写大型程序时的不足。 Java(Java Programming Language) - 1995 ? Sun公司的Patrick Naughton的工作小组研发了Java语言,主要成员是James Gosling(詹姆斯·高斯林) C#(C Sharp Programming Language) - 2000 ? Microsoft公司的Anders Hejlsberg(安德斯·海尔斯伯格)发明了C#,他也是Delphi语言之父。
1994年,网景公司( 但是这是一款名副其实的浏览器–只能浏览页面,浏览器无法与用户互动。比如你登录一个网站输入完用户名点击提交的时候。浏览器并不知道你是否输入了,也无法判断。只能传给服务器去判断。 ?
?
?
所以,Javascript语言实际上是两种语言风格的混合产物----(简化的)函数式编程+(简化的)面向对象编程。这是由Brendan Eich(函数式编程思想忠实拥护者)与网景公司(面向对象编程思想忠实用户群体)共同决定的。 编程语言分类之低级语言语言的高级和低级之分并不是说语言本身的层次高低,而是指的是与底层硬件的密切程度。就如同机器语言与汇编语言就是直接与底层硬件打交道的语言,故也被称为低级语言。 机器语言机器语言是不通过任何操作系统就可以直接与底层硬件打交道的语言,说白了就是计算机能读懂的二进制,想要使用机器语言就得充分的了解计算机底层硬件的各个知识。这可能会花上你半生的时间,但是机器语言的执行效率却是无与伦比的高,计算机不需要通过任何编译就能直接运行。但是它的开发效率却是慢到令人发指,除了你需要去学习底层硬件相关的知识外还需要对每一条二进制指令烂熟于心,更加恐怖的是面对满屏的010101如果敲错一个字符就全部推倒重来,显然这已经超出了普通人所能承受的极限。 #指令部份的示例 0000 代表 加载(LOAD) 0001 代表 存储(STORE) ... ? #暂存器部份的示例 代表暂存器 A 代表暂存器 B ... ? #存储器部份的示例 000000000000 代表地址为 0 的存储器 000000000001 代表地址为 1000000010000 代表地址为 16100000000000 代表地址为 2^11 的存储器 ? #集成示例 0000,000000010000 代表 LOAD A,1)">16 0001,1)">000000000001 代表 LOAD B,1)">1 000000010000 代表 STORE B,1)">000000000001 代表 STORE B,1)">1[1]
汇编语言汇编语言仅仅是用一个英文标签代表一组二进制指令,毫无疑问,比起机器语言,汇编语言是一种进步,但汇编语言的本质仍然是直接操作硬件,因此汇编语言仍是比较低级/底层的语言、因为它也是贴近计算机硬件。 汇编的hello world,打印一句hello world,需要写十多行,如下 ? ; hello.asm section .data 数据段声明 msg db "Hello,world!",0xA 要输出的字符串 len equ $ - msg 字串长度 section .text 代码段声明 global _start 指定入口函数 _start: 在屏幕上显示一个字符串 mov edx,len 参数三:字符串长度 mov ecx,msg 参数二:要显示的字符串 mov ebx,1)">1 参数一:文件描述符(stdout) mov eax,1)">4 系统调用号(sys_write) int 0x80 调用内核功能 退出程序 0 参数一:退出代码 系统调用号(sys_exit) 调用内核功能
编程语言分类之高级语言高级语言并不关心底层硬件到底怎么样,因为高级语言是在和操作系统打交道。而操作系统又是管控硬件的软件,所以高级语言相较于低级语言来说它的开发效率肯定是要快上不上,但是执行效率上却有所损失。那么对于语言的好坏一味的按照执行效率来区分并非是正确的,语言本身只是一种工具,使用语言的人才是真正的操纵者。并且语言只有场景的适不适用而已,没有什么强弱之分。比如要对底层硬件进行开发,那么无疑汇编语言是最佳的选择,它能与本机硬件打交道所以能充分发挥自己执行效率高的特性,再比如要做一款网络爬虫相关的软件,由于网络具有延迟性会拖慢程序整体的运行速度,故使用汇编语言来编写爬虫便成了弱势(开发周期长,网络环境让汇编语言的高执行效率也体现不出来)。 高级语言中按照翻译方式的不同又大体可分为两类,分别是编译性语言与解释性语言。 编译性语言(如C语言)编译性语言总结: 1.执行效率高, 2.开发效率低, 3.跨平台性差, 其他: 解释性语言(如Python)解释性语言总结: 1.执行效率低, 2.开发效率高, 3.跨平台性强, 其他: PS:混合型语言 最典型的就是Java语言,首先生成Java汇编,然后通过虚拟机进一步转换成计算机可以识别的二进制汇编语言。 Python语言介绍Python这门语言于1989年的圣诞节期间诞生,它的创始人为吉多·范罗苏姆(Guido van Rossum)。PS:江湖人称龟叔,而Python这个名称的由来居然是因为 Guido 所喜欢的一部电视剧叫做 Monty Python's Flying。 Guido希望这门语言能够符合他自己的理想:拥有C语言强大功能的同时并且拥有shell一般简洁的语法。所以Python是崇尚优美、清晰、简单的一门优秀的且广泛使用的语言。 C语言是非常重要的一门语言,同时也是编译性语言的代表,就是C语言奠定了后来风靡全球的Java以及目前势头大火的Python的基础。Java和Python是基于C语言而开发来的,所以他们在代码转换过程中会先将自身的代码转变为字节码,然后通过字节码再转换为机器可读的机器码。这样的话执行效率相较于C语言就没有那么快,但是他们的优点是开发效率特别高。 在Python中很容易写出来的一段程序,在C或者Java中你可能需要成百上千行的代码,Python有自带的垃圾回收机制,所以Python开发者并不用过分将注意力放在内存上面,但是C语言不同,开发人员选用C语言开发的话要时时刻刻注意内存的变化,而Python自问世以来,就已经继承了C语言中对垃圾处理的一套成熟的规则,这让使用Python开发的开发人员不用过分专注内存这个点,这也是Python的一大优势之一。 Python是一种跨平台语言。他的优点非常明显,简洁的设计,让人一目了然的语法以及赏心悦目式的缩进格式都使得Python成为新时代的宠儿,但是有一个致命的缺点就是Python的执行效率偏低。这显然不适合做很大的项目,那么是不是意味着Python没有很大的前途呢?当然不是,其实Python也分很多种类,下面会做一个大概的介绍。 Python的应用领域十分广泛,如:人工智能,数据处理,爬虫,金融量化,云计算,WEB开发,自动化运维/测试,游戏开发,网络服务,图像处理等众多领域。并且国内外很多知名的企业也都在使用Python,如:Youtube、DropBox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo、FaceBook、NASA、百度、腾讯、汽车之家、美团等等。 ?
Python解释器介绍Python也分很多种类,我们常说的Python其实就是指的CPython,另外还有JavaPython,lron Python等等不同的版本,那么他们其实就是基于Java和C#而开发而来的Python。相较于常用的Cpython多了一个转换环节所以执行效率降低,在这里并不考虑,但是有一个Python变种却是非常的特殊,它弥补了CPython执行效率低下与不支持并行的特点,它就是PyPy。 PyPy的第一部分:用Python实现的Python
PyPy的第二部分:编译器
由于我们平常讲的Python实际上都为CPython,故我们接下来的学习也是围绕CPython(以下简称Python)学习的。目前Python版本已经更迭到了3.8.2。 1989年,Guido开始写Python语言的编译器。 1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。
In November 2014,it was announced that Python 2.7 would be supported until 2020,and reaffirmed that there would be no 2.8 release as users were expected to move to Python 3.4+ as soon as possible Python 3.0 - December 3,2008
细心的读者会发现,08年时就推出了3.0,2010年反而又推出了2.7?是因为3.0不向下兼容2.0,而很多公司已经基于2.0版本开发出了大量程序,公司已然投入了大量的人财物力,这就导致大家都拒绝升级3.0,无奈官方只能推出2.7过渡版本,之后我们都应该采用3.0解释器开发程序,但为了方便读者维护2.0版本的软件,我们在遇到两种版本的差异时会专门指出来。 下载CPython解释器注意:这里没有收录MACOS系列的安装,故适用MACOS系统的朋友需自行搜索 全平台: 第一步:打开Python官网 https://www.python.org/ Wndows平台: 第二步:下载相应的版本(这里推荐2个版本都下载) 第三步:下载Python 3.8.2 第四步:下载Python 2.7.18 Linux平台 第二步:下载相应的版本(Linux一般自带Python2.x版本,所以只需要下载Python 3.x版本即可) Windows平台安装Python解释器?
?
?
不管是Python 2.x版本还是Python 3.x版本。它们的安装目录中结构都是一样的,我们来简单的看一下: 好了。现在我们的Python已经安装完毕了,我们试着进入Python解释器看看是否大功告成 Linux平台安装Python解释器那么至此,Linux平台的Python 3.x就配置完成了。 环境变量的配置在Windows平台进行安装Python解释器的时候我们发现一直会有一个提示添加到环境变量,那么环境变量到底是什么呢?别着急。我们来看图: Windows平台配置环境变量那么如何配置环境变量呢?实际上也非常简单。首先我们的Windows平台上安装了2个版本的Python解释器,所以需要对他们进行一些处理才能保证2个版本的Python解释器都能使用。 接下来开始设置环境变量了。 好了。接下来进入终端开始测试。 测试全部通过。都能够正常使用了。 Linux平台配置环境变量运行Python程序的2种方式现在。我们已经能够运行Python程序了,开始输入我们的第一条代码。 Python程序运行的底层三步骤一个Python程序被解释器解释并执行,其实大体上可以分为三个步骤:
集成开发环境Pycharm下载与安装上面介绍了运行Python程序的2种方式,并且提到后面基本都会使用第二种方式也就是脚本调用的方式来执行Python程序,那么如果单纯的用文本编辑器的话其实并不是一个很好的选择(大佬除外),所以这边推荐使用集成开发环境Pycharm,对于开发人员来说集成开发环境是必不可少的工具。那么关于它的强大这里也不多做赘述了,使用一段时间后你就能切身的体会到。 Pycharm官方链接:https://www.jetbrains.com/pycharm/
虚拟环境介绍在安装好Pycharm之后。我们试着新建一个项目并且为它配置解释器:
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |