#『Python基础-1 』 编程语言Python的基础背景知识

目录:

1.编程语言
1.1 什么是编程语言
1.2 编程语言的种类
1.3 常见的编程语言
1.4 编译型语言和解释型语言的对比

2.Python背景知识
2.1 Python发展历程
2.2 Python的优缺点
2.3 Python的应用
2.4 Python解释器的种类
2.5 Python的执行过程
2.6 Python版本(2.x和3.x)


1.编程语言


1.1 什么是编程语言

编程语言(programming language),俗称“计算机语言”,是用来定义计算机程序的形式语言。让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。

1.2 编程语言的种类

编程语言的种类非常的多,总的来说可以分成机器语言、汇编语言、高级语言三大类。

机器语言:

机器语言(machine language)是用二进制代码表示的计算机能直接识别和执行的一种机器指令的集合.

这种指令集,称机器码(machine code),是电脑的CPU可直接解读的数据。

  • 机器语言具有灵活、直接执行和速度快等特点。
  • 用机器语言编写程序较为繁琐和费时,编出的程序全是些0和1的指令代码,直观性差,容易出错
  • 弱通用性: 各计算机公司设计生产的计算机,其指令的数量与功能、指令格式、寻址方式、数据格式都有差别
汇编语言:

汇编语言(assembly language)是一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。汇编语言是直接面向处理器(Processor)的程序设计语言。

汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。

  • 汇编语言源程序必须经过汇编,生成目标文件,然后执行。
  • 汇编语言所能完成的操作不是一般高级语言所能够实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。
  • 汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识
高级语言:

高级语言(High-level programming language)相对于机器语言和汇编语言而言,是高度封装了的编程语.

高级语言是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。

高级语言并不是特指的某一种具体的语言,而是包括很多编程语言,如流行的java,c,c++,C#,pascal,python等等.

  • 高级语言有更强的表达能力,可方便地表示数据的运算和程序的控制结构,能更好的描述各种算法,而且容易学习掌握
  • 高级语言编译生成的程序代码一般比用汇编程序语言设计的程序代码要长,执行的速度也慢

1.3 常见的编程语言

计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言编写的程序。
根据两种语言的翻译方式不同,我们又把常见的高级编程语言分为编译型语言和解释性语言:

  • 编译型语言:

    • C/C++、Pascal/Object Pascal(Delphi)等
  • 解释型语言:
    • JavaScript、VBScript、Perl、Python、Ruby、MATLAB 等


1.4 编译型语言和解释型语言的对比

一个是编译,一个是解释。两种方式只是翻译的时间不同:

编译型语言 解释型语言
程序在执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件 在运行程序的时候才翻译,每执行一次就要翻译一次
程序执行速度快,同等条件下对系统要求较低 执行速度略低,对不同系统平台间的兼容性有一定要求
可移植性差,在不同的OS平台上运行,需要重新编译 可移植性高,一套代码,只需要使用不同平台的解释器即可


2.Python背景知识


Python 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。

Python 的设计具有很强的可读性,相比其他语言经常使用英文关键字,其他语言的一些标点符号,它具有比其他语言更有特色语法结构。

2.1 Python发展历程

  • Python的作者,Guido von Rossum(吉多·范·罗苏姆,中国Python程序员都叫他 龟叔),荷兰人。

    • 1989年开始开发,最初目的为作为ABC语言的一种继承
    • 他对Python的期望是:介于C和shell之间,功能全面,易学易用,可拓展。
    • Python这个名字,来自Guido所挚爱的电视剧Monty Python’s Flying Circus。
  • 1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。Python创生之初便具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。
  • 2000年10月16日,发布Python 2.0,加入了内存回收机制,构成了现在Python语言框架的基础
  • 2008年12月3日,发布Python 3.0
  • 2014年11月,官方宣布:Python2.7将在2020年停止支持,且不再有2.8及以上的版本
  • 目前3.x版本的最近版本为3.7 (2018年6月27日发布)

2.2 Python的优缺点

  • Python的优点:

    • 简单易学
    • 开源,免费
    • 可以移植在不同平台 (意味着一套代码可以开发不同操作系统的软件)
    • 高层的解释型语言
    • 面向对象:比C和java简单,且功能强大
    • 丰富且功能齐全的Python标准库
  • Python的缺点:
    • 执行效率慢 (解释型语言和编译型语言相比较)

2.3 Python的应用

  • 技术领域:

    • 编程开发: WEB开发,GUI编程,游戏开发,运维开发
    • 工具脚本: 自动化控制,批量处置
    • 数据采集: 网络爬虫
    • 数据分析: 数据建模,数据挖掘,数据可视化,商业分析
    • 人工智能: 机器学习,计算机视觉,无人驾驶
  • 行业应用:
    • 豆瓣:公司几乎所有的业务均是通过Python开发的
    • 知乎:国内最大的问答社区,通过Python开发(国外Quora)
    • 春雨医生:国内知名的在线医疗网站是用Python开发的
    • 谷歌:Google App Engine 、code.google.com 、Google earth 、谷歌爬虫、Google广告等项目都在大量使用Python开发
    • YouTube:世界上最大的视频网站YouTube就是用Python开发的
    • Facebook:大量的基础库均通过Python实现的
    • Dropbox:美国最大的在线云存储网站,全部用Python实现,每天网站处理10亿个文件的上传和下载
    • Instagram:美国最大的图片分享社交网站,每天超过3千万张照片被分享,全部用python开发
    • Redhat:世界上最流行的Linux发行版本中的yum包管理工具就是用python开发的
    • CIA:美国中情局网站是用Python开发的
    • NASA:美国航天局(NASA)大量使用Python进行数据分析和运算
    • 搜狐、金山、腾讯、盛大、网易、百度、阿里、淘宝 、土豆、新浪、果壳等公司都在使用Python完成各种各样的任务。

2.4 Python解释器的种类

Python是一门跨平台的脚本语言,Python规定了一个Python语法规则,实现了Python语法的解释程序就成为了Python的解释器。

  • CPython(ClassicPython,也就是原始的Python实现,需要区别于其他实现的时候才以CPython称呼;或解作C语言实现的Python)。这是最常用的Python版本。
  • Jython(原名JPython;Java语言实现的Python,现已正式发布)。Jython可以直接调用Java的各种函数库。
  • PyPy(使用Python语言写的Python)
  • IronPython(面向.NET和ECMA CLI的Python实现)。- IronPython能够直接调用.net平台的各种函数库。可以将Python程序编译成.net程序。
  • ZhPy(周蟒)(支持使用繁/简中文语句编写程序的Python语言)

我们现在一般普遍使用的是CPython.

2.5 Python的执行过程

  • Python在执行时,首先会将.py文件中的源代码编译成Python的byte code(字节码),然后再由Python Virtual Machine(Python虚拟机)来执行这些编译好的byte code。
  • 基于C的Python编译出的字节码文件,通常是.pyc格式。

2.6 Python版本(2.x和3.x)

Python的版本,目前主要分为两大类:

  • Python 2.x的版本的,被称为Python2:是目前用的最广泛的,比如Python 2.7.3。

  • Python 3.x的版本的,被称为Python3,是最新的版本的,比如Python3.5.4。

Python 2 发布于 2000 年年底,意味着较之先前版本,这是一种更加清晰和更具包容性的语言开发过程。而先前版本的 Python 应用的是 PEP (Python 增强协议),这种技术规范能向 Python 社区成员提供信息或描述这种语言的新特性。

Python 3 被视为 Python 的未来,是目前正在开发中的语言版本。作为一项重大改革,Python 3 于 2008 年年末发布,以解决和修正以前语言版本的内在设计缺陷。Python 3 开发的重点是清理代码库并删除冗余,清晰地表明只能用一种方式来执行给定的任务。对 Python 3.0 的主要修改包括将 print 语句更改为内置函数,改进整数分割的方式,并对 Unicode 提供更多的支持。




这篇笔记的参考资料:

『Python基础-1 』 编程语言Python的基础背景知识的更多相关文章

  1. # 2017-2018-2 20155319 『网络对抗技术』Exp8:Web基础

    2017-2018-2 20155319 『网络对抗技术』Exp8:Web基础 一.原理与实践说明 1.实践具体要求 (1).Web前端HTML(0.5分) 能正常安装.启停Apache.理解HTML ...

  2. 2017-2018-2 20155303『网络对抗技术』Exp8:Web基础

    2017-2018-2 『网络对抗技术』Exp8:Web基础 --------CONTENTS-------- 一.原理与实践说明 1.实践具体要求 2.基础问题回答 二.实践过程记录 1.Web前端 ...

  3. 2017-2018-2 20155303『网络对抗技术』Exp5:MSF基础应用

    2017-2018-2 20155303『网络对抗技术』Exp5:MSF基础应用 --------CONTENTS-------- 一.原理与实践说明 1.实践内容 2.预备知识 3.基础问题 二.实 ...

  4. 2017-2018-2 20155310『网络对抗技术』Exp5:MSF基础应用

    2017-2018-2 20155310『网络对抗技术』Exp5:MSF基础应用 基础问题回答 用自己的话解释什么是exploit,payload,encode exploit:由攻击者或渗透测试者利 ...

  5. # 2017-2018-2 20155319『网络对抗技术』Exp5:MSF基础应用

    2017-2018-2 20155319『网络对抗技术』Exp5:MSF基础应用 基础问题回答 用自己的话解释什么是exploit,payload,encode exploit:使用者利用漏洞进行攻击 ...

  6. 2017-2018-2 20155327『网络对抗技术』Exp5:MSF基础应用

    2017-2018-2 20155327『网络对抗技术』Exp5:MSF基础应用 基础问题回答 用自己的话解释什么是exploit,payload,encode exploit:使用者利用漏洞进行攻击 ...

  7. 机器学习|线性回归三大评价指标实现『MAE, MSE, MAPE』(Python语言描述)

    原文地址 ?传送门 对于回归预测结果,通常会有平均绝对误差.平均绝对百分比误差.均方误差等多个指标进行评价.这里,我们先介绍最常用的3个: 平均绝对误差(MAE) 就是绝对误差的平均值,它的计算公式如 ...

  8. 2017-2018-2 20155224『网络对抗技术』Exp8:Web基础

    实践具体要求 Web前端HTML(0.5分) 能正常安装.启停Apache.理解HTML,理解表单,理解GET与POST方法,编写一个含有表单的HTML. Web前端javascipt(0.5分) 理 ...

  9. 2018-2019-2 20165314『网络对抗技术』Exp5:MSF基础应用

    一.原理与实践说明 1.实践内容 本实践目标是掌握metasploit的基本应用方式,重点常用的三种攻击方式的思路.具体需要完成: 一个主动攻击实践,如ms08-067; (1分) 一个针对浏览器的攻 ...

随机推荐

  1. Python学习---重点模块之xml

    xml是实现不同语言或程序之间进行数据交换的协议,跟json差不多,但json使用起来更简单 数据准备 <?xml version="1.0"?> <data&g ...

  2. python 面向对象:类,作用域

    类(Class)和实例(Instance) 定义类是通过class关键字:class Student(object): pass class后面紧接着是类名,即Student接着是(object),表 ...

  3. Java文件操作工具类

    import com.foriseland.fjf.lang.DateUtil;import org.apache.commons.io.FileUtils;import org.slf4j.Logg ...

  4. mysql多实例mysqld_multi方式

    mysql多实例应用,亲测直接执行脚本可使用,可快速部署多实例环境 #!/bin/bash set -e #定义mysql_multi多实例数据的配置,如需增加,在后面函数对应地方需要增加 mydir ...

  5. ZT————pull push mode

    谁能讲讲push和pull模式是什么意思?(参与有分) [问题点数:100分,结帖人mickeyfirst] 收藏 mickeyfirst mickeyfirst 等级: 结帖率:94.12% 楼主 ...

  6. Android Studio 独立引入(非友盟)微博分享和回调时问题

    最近同事在做一个小项目时,由于产品的要求,Wap页面的分享规定不能使用友盟的社会化组件.他则不得不手动一个一个渠道的引入分享,好在渠道不多就三个,但是第一微博分享引入的时候问题就出现了. 问题一:li ...

  7. 如何给Docker hub用户上传头像

    我第一次使用Docker hub时,觉得很奇怪,这个网站上面没有允许用户上传头像的地方. 后来经过研究才发现,需要用在Docker hub上注册用户的同一个邮箱到Gravatar这个网站上再注册一个账 ...

  8. ASN.1详解

    Chapter 4 ASN.1 4.1 网络数据表示及编码4.2 ASN.1的基本概念4.3 基本编码规则 4.1 网络数据表示及编码ASN.1(Abstract Syntax Notation 1) ...

  9. ADF中VO的删除操作初探

    在ADF的VO中,真实提交更改是在commit 方法执行之后,如以下增加操作 EntityDefImpl departmentEODef = DepartmentEOImpl. getDefiniti ...

  10. Html5的本地储存 Web Storage

      Html5 中的存储包括两种:sessionStorage 和 localStorage   sessionStorage 用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话 ...