Focusshell
他日若遂凌云志,敢笑黄巢不丈夫;
FRIENDS
BabyLego

Day-1-初识代码

2018/08/13 Python

Python介绍


 Python的创始人为吉多·范罗苏姆(龟叔)在1989年的圣诞节期间吉多·范罗苏姆为了在阿姆斯丹特打发时间(O__O “…),决心开发一个新的脚本解释程序,作为ABC语言的一种继承,在今年最新的TIOBE排行榜,Python赶超C#占据第五,Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言;
tiobe
 上图可以看出,Python整体呈现上升的趋势,也可以看出Python得到了整个业界的一致认可;
 Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域,目前业内几乎所有的中大型互联网企业都在用Python;


目前Python主要应用的领域:

  1. 云计算:云计算最火的语言,典型应用Openstack;
  2. WEB开发:众多优秀的WEB框架,众多大型网站均为Python开发;
  3. 科学运算、人工智能;
  4. 金融:量化交易,金融分析,在金融工程领域,Python不但在用,而且用的最多,而且重要性逐年提高。
  5. 图形GUI;

原因:作为动态语言,语言结构清晰、简单、库丰富、成熟稳定,可选计算和统计分析都很优秀。


Python是一门什么样的语言

 编程语言主要从以下几个角度进行分类,编译型和解释型、静态和动态、强类定义型和弱类定义型语言。每个分类代表什么意思呢?


编译型语言和解释型语言的区别

编译型语言

编译性的语言指使用专门的编译器、针对特定平台(操作系统)将某种高级语言源代码一次性“翻译”成该平台硬件执行的机器码(包括机器指令和操作数),并包装成该平台所能识别的可执行性程序的格式,这个转换过程称为编译(Compile)。编译生成的可执行程序可以脱离开发环境,在特定的平台上独立运行。

有些程序在编译结束之后,还可能需要对其他编译好的目标代码进行链接,即组装两个以上的目标代码模块生成最终的可执行程序,通过这种方式实现低层次的代码复用。

因为编译型语言是一次性的编译成机器码,所以可以脱离开发环境独立运行,而且通常运行效率较高;但因为编译性语言的程序被编译成特定平台上的机器码,因此编译生成的可执行程序通常无法移植到其他平台上运行;如果需要移植,则必须将源代码复制到特定的平台上,针对特定的平台进行修改,至少也需要采用特定平台上的编译器重新编译。

比如我们现在的C、C++、Objective-C、Pasca等高级语言都属于编译型语言。

解释型语言

解释型语言是指使用专门的解释器对源程序进行逐行解释成特定平台的机器码并立即执行的语言。解释型语言通常不会进行整体的编译和链接处理,解释型语言相当于把编译型语言中的编译和解释过程混合在一起同时完成。

可以这样认为:每次执行解释型语言的程序都需要进行一次编译,因此解释型语言的程序运行效率通常较低,而且它不能脱离解释器独立运行。

但解释性语言有一个优势:跨平台比较容易,只需提供特定平台的解释器即可,每个特定平台上的解释器负责将源程序解释成特定平台的机器指令即可。解释性语言可以方便的实现源程序的移植,但这是以牺牲程序执行效率为代价的。

比如我们现在的Java、Ruby、Python等高级语言都属于解释型语言。

Python是怎样的语言


编译型和解释型语言的优缺点

编译型语言

  1. 编译型语言最大的优势之一就是其执行速度。用C/C++编写的程序运行速度要比用Java编写的相同程序快30%-70%。
  2. 编译型程序比解释型程序消耗的内存更少。
  3. 不利的一面——编译器比解释器要难写得多。
  4. 编译器在调试程序时提供不了多少帮助——有多少次在你的C语言代码中遇到一个“空指针异常”时,需要花费好几个小时来明确错误到底在代码中的什么位置。
  5. 可执行的编译型代码要比相同的解释型代码大许多。例如,C/C++的.exe文件要比同样功能的Java的.class文件大很多。
  6. 编译型程序是面向特定平台的因而是平台依赖的。
  7. 编译型程序不支持代码中实现安全性——例如,一个编译型的程序可以访问内存的任何区域,并且可以对你的PC做它想做的任何事情(大部分病毒是使用编译型语言编写的)
  8. 由于松散的安全性和平台依赖性,编译型语言不太适合开发因特网或者基于Web的应用

解释型语言

  1. 解释型语言提供了极佳的调试支持。一名Java程序员只需要几分钟就可以定位并修复一个“空指针异常”,因为Java运行环境不仅指明了异常的性质,而且给出了异常发生位置具体的行号和函数调用顺序(著名的堆栈跟踪信息)。这样的便利是编译型语言所无法提供的。
  2. 另一个优势是解释器比编译器容易实现
  3. 解释型语言最大的优势之一是其平台独立性
  4. 解释型语言也可以保证高度的安全性——这是互联网应用迫切需要的
  5. 中间语言代码的大小比编译型可执行代码小很多
  6. 平台独立性,以及严密的安全性是使解释型语言成为适合互联网和Web应用的理想语言的2个最重要的因素。
  7. 解释型语言存在一些严重的缺点。解释型应用占用更多的内存和CPU资源。这是由于,为了运行解释型语言编写的程序,相关的解释器必须首先运行。解释器是复杂的,智能的,大量消耗资源的程序并且它们会占用很多CPU周期和内存。
  8. 由于解释型应用的decode-fetch-execute(解码-抓取-执行)的周期,它们比编译型程序慢很多。
  9. 解释器也会做很多代码优化,运行时安全性检查;这些额外的步骤占用了更多的资源并进一步降低了应用的运行速度。

动态语言和静态语言

动态语言

动态语言是一类运行时可以改变其结构的语言,例如:新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其它结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构;

主要的动态语言:Object-C、C#、JavaScript、PHP、Python、Erlang

静态语言

与动态语言相对应的,运行时不可变的语言就是静态语言。

主要语言:Java、C、C++;


强类型语言和弱类型语言

强类型语言

强类型语言,一旦一个变量被置顶了某个数据类型,如果不经过强制类型转换,那么它就永远是这个数据类型。你不能把一个整形变量当成一个字符串来处理。

主要语言:Java、C#、Python、Object-C、Ruby

弱类型语言

数据类型可以被忽略,一个变量可以赋不同的数据类型的值。一旦给一个整型变量a赋一个字符串值。那么a就成了字符类型;

主要语言:JavaScript、PHP、C、C++(C和C++有争议,但是确实可以给一个字符变量赋整型值,可能初衷是强类型,形态上接近弱类型)

混合型语言

 既然编译型和解释型各有全店就会有人想到吧两种类型整合起来,取其精华去其糟粕;就出现了半编译型语言。比如C#、C#在编译的时候不是直接编译成机器码而是中间码,.NET平台提供了中间语言运行库运行中间码,中间语言运行库类似Java虚拟机。.NET在编译成IL代码后,板寸在dll中,首次运行时由JIT在编译成机器码缓存到内存中,下次直接执行。
 Java先生成字节码,再到Java虚拟机中解释执行,严格来说混合型语言属于解释语言。C#更接近编译型语言;
语言分类


小结

综上所述:Python是一门动态、解释型、强类型语言

Author: focusshell

Link: http://focusshell.github.io/2018/08/13/Day-1-初识代码/

Copyright: All articles in this blog are licensed under CC BY-NC-SA 3.0 unless stating additionally.

< PreviousPost
Day-2-Python解释器
NextPost >
记AWS峰会-北京站
CATALOG
  1. 1. Python介绍
    1. 1.1. 目前Python主要应用的领域:
  2. 2. Python是一门什么样的语言
    1. 2.1. 编译型语言和解释型语言的区别
      1. 2.1.1. 编译型和解释型语言的优缺点
    2. 2.2. 动态语言和静态语言
    3. 2.3. 强类型语言和弱类型语言
    4. 2.4. 混合型语言
  3. 3. 小结