1、编程与编程语言
1. 编程的目的
计算机的发明,是为了用机器取代/解放人力,而编程的目的则是将人类的思想流程按照某种可以被计算机识别的表达方式传递给计算机,从而达到让计算机可以像人脑/电脑同样自动执行的效果。 python
2. 什么是编程语言?
上面说起的可以被计算机所识别的表达方式即编程语言,语言是沟通的介质,而编程语言是程序员与计算机沟通的介质。在编程的世界里,计算机更像是人的奴隶,人类编程的目的就命令奴隶去工做。linux
3. 什么是编程?
编程即程序员根据需求把本身的思想流程按照某种编程语言的语法风格编写下来,产出的结果就是包含一堆字符的文件。 #强调:程序在未运行前跟普通文件无异,只有程序在运行时,文件内所写的字符才有特定的语法意义。程序员
2、编程语言分类
编程的语言的发展经历了web
- 机器语言:站在计算机(奴隶)的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操做硬件
- 汇编语言:站在计算机(奴隶)的角度,简写的英文标识符取代二进制去编写程序,本质仍然是直接操做硬件;
- 高级语言:站在人(奴隶主)的角度,说人话,即用人类的字符去编写程序,屏蔽了硬件操做
高级语言更贴近人类语言,于是形成了:它必须被翻译成计算机能读懂二进制后,才能被执行,按照翻译方式分为正则表达式
1. 编译型(须要编译器,至关于用谷歌翻译):如C,执行速度快,调试麻烦
算法
2. 解释型(须要解释器,至关于同声传译):如python,执行速度慢,调试方便shell
3、Python介绍
1. Python的前世此生
- Cpython
Python的官方版本,使用C语言实现,使用最为普遍,CPython实现会将源文件(py文件)转换成字节码文件(pyc文件),而后运行在Python虚拟机上。
- Jyhton
Python的Java实现,Jython会将Python代码动态编译成Java字节码,而后在JVM上运行。
- IronPython
Python的C#实现,IronPython将Python代码编译成C#字节码,而后在CLR上运行。(与Jython相似)
- PyPy(特殊)
Python实现的Python,将Python的字节码字节码再编译成机器码。
- RubyPython、Brython ...
以上除PyPy以外,其余的Python的对应关系和执行流程以下:flask

PyPy,在Python的基础上对Python的字节码进一步处理,从而提高执行速度!

- 简单————Python是一种表明简单主义思想的语言。阅读一个良好的Python程序就感受像是在读英语同样,尽管这个英语的要求很是严格!Python的这种伪代码本质是它最大的优势之一。它使你可以专一于解决问题而不是去搞明白语言自己。
- 易学————就如同你即将看到的同样,Python极其容易上手。前面已经提到了,Python有极其简单的语法。
- 免费、开源————Python是FLOSS(自由/开放源码软件)之一。简单地说,你能够自由地发布这个软件的拷贝、阅读它的源代码、对它作改动、把它的一部分用于新的自由软件中。FLOSS是基于一个团体分享知识的概念。这是为何Python如此优秀的缘由之一——它是由一群但愿看到一个更加优秀的Python的人创造并常常改进着的。
- 高层语言————当你用Python语言编写程序的时候,你无需考虑诸如如何管理你的程序使用的内存一类的底层细节。
- 可移植性————因为它的开源本质,Python已经被移植在许多平台上(通过改动使它可以工做在不一样平台上)。若是你当心地避免使用依赖于系统的特性,那么你的全部Python程序无需修改就能够在下述任何平台上面运行。这些平台包括Linux、Windows、FreeBSD、Macintosh、Solaris、OS/二、Amiga、AROS、AS/400、BeOS、OS/390、z/OS、Palm OS、QNX、VMS、Psion、Acom RISC OS、VxWorks、PlayStation、Sharp Zaurus、Windows CE甚至还有PocketPC、Symbian以及Google基于linux开发的Android平台!
- 解释性————这一点须要一些解释。一个用编译性语言好比C或C++写的程序能够从源文件(即C或C++语言)转换到一个你的计算机使用的语言(二进制代码,即0和1)。这个过程经过编译器和不一样的标记、选项完成。当你运行你的程序的时候,链接/转载器软件把你的程序从硬盘复制到内存中而且运行。而Python语言写的程序不须要编译成二进制代码。你能够直接从源代码运行程序。在计算机内部,Python解释器把源代码转换成称为字节码的中间形式,而后再把它翻译成计算机使用的机器语言并运行。事实上,因为你再也不须要担忧如何编译程序,如何确保链接转载正确的库等等,全部这一切使得使用Python更加简单。因为你只须要把你的Python程序拷贝到另一台计算机上,它就能够工做了,这也使得你的Python程序更加易于移植。
- 面向对象————Python既支持面向过程的编程也支持面向对象的编程。在“面向过程”的语言中,程序是由过程或仅仅是可重用代码的函数构建起来的。在“面向对象”的语言中,程序是由数据和功能组合而成的对象构建起来的。与其余主要的语言如C++和Java相比,Python以一种很是强大又简单的方式实现面向对象编程。
- 可扩展性————若是你须要你的一段关键代码运行得更快或者但愿某些算法不公开,你能够把你的部分程序用C或C++编写,而后在你的Python程序中使用它们。
- 丰富的库————Python标准库确实很庞大。它能够帮助你处理各类工做,包括正则表达式、文档生成、单元测试、线程、数据库、网页浏览器、CGI、FTP、电子邮件、XML、XML-RPC、HTML、WAV文件、密码系统、GUI(图形用户界面)、Tk和其余与系统有关的操做。记住,只要安装了Python,全部这些功能都是可用的。这被称做Python的“功能齐全”理念。除了标准库之外,还有许多其余高质量的库,如wxPython、Twisted和Python图像库等等。
- 规范的代码————Python采用强制缩进的方式使得代码具备极佳的可读性。
4. Python的应用领域
- WEB开发——最火的Python web框架Django, 支持异步高并发的Tornado框架,短小精悍的flask,bottle, Django官方的标语把Django定义为the framework for perfectionist with deadlines(大意是一个为彻底主义者开发的高效率web框架)。
- 网络编程——支持高并发的Twisted网络框架, py3引入的asyncio使异步编程变的很是简单。
- 爬虫——爬虫领域,Python几乎是霸主地位,Scrapy\Request\BeautifuSoap\urllib等,想爬啥就爬啥。
- 云计算——目前最火最知名的云计算框架就是OpenStack,Python如今的火,很大一部分就是由于云计算。
- 人工智能——谁会成为AI 和大数据时代的第一开发语言?这本已经是一个不须要争论的问题。若是说三年前,Matlab、Scala、R、Java 和 Python还各有机会,局面尚且不清楚,那么三年以后,趋势已经很是明确了,特别是前两天 Facebook 开源了 PyTorch 以后,Python 做为 AI 时代头牌语言的位置基本确立,将来的悬念仅仅是谁能坐稳第二把交椅。
- 自动化运维——问问中国的每一个运维人员,运维人员必须会的语言是什么?10我的相信会给你一个相同的答案,它的名字叫Python。
- 金融分析——我我的以前在金融行业,10年的时候,咱们公司写的好多分析程序、高频交易软件就是用的Python,到目前,Python是金融分析、量化交易领域里用的最多的语言
- 科学运算—— 你知道么,97年开始,NASA就在大量使用Python在进行各类复杂的科学运算,随着NumPy, SciPy, Matplotlib, Enthought librarys等众多程序库的开发,使的Python愈来愈适合于作科学计算、绘制高质量的2D和3D图像。和科学计算领域最流行的商业软件Matlab相比,Python是一门通用的程序设计语言,比Matlab所采用的脚本语言的应用范围更普遍。
- 游戏开发——在网络游戏开发中Python也有不少应用。相比Lua or C++,Python 比 Lua 有更高阶的抽象能力,能够用更少的代码描述游戏业务逻辑,与 Lua 相比,Python 更适合做为一种 Host 语言,即程序的入口点是在 Python 那一端会比较好,而后用 C/C++ 在很是必要的时候写一些扩展。Python 很是适合编写 1 万行以上的项目,并且可以很好地把网游项目的规模控制在 10 万行代码之内。另外据我所知,知名的游戏<文明> 就是用Python写的。