zoukankan      html  css  js  c++  java
  • 编程语言和python介绍及安装

    1. 编程语言的分类

    1.1 机器语言

    机器语言是站在计算机(奴隶)的角度,说计算机能听懂/理解的语言,而计算机能直接理解的就是二进制指令,所

    以机器语言就是直接用二进制编程,这意味着机器语言是直接操作硬件的,因此机器语言属于低级语言,此处的低

    级指的是底层、贴近计算机硬件(贴近代指需要详细了解计算机硬件细节、直接控制硬件),详解如下

    #机器语言
        用二进制代码0和1描述的指令称为机器指令,由于计算机内部是基于二进制指令工作的,所以机器语言是直接控制计算机硬件。
    
        用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码以及代码的含义,然后在编写程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,
    还得记住编程过程中每步所使用的工作单元处在何种状态。这是一件十分繁琐的工作。编写程序花费的时间往往是实际运行时间的几十倍或几百倍。而且,编出的程序全是些0和1的指令代码,
    直观性差,不便阅读和书写,还容易出错,且依赖于具体的计算机硬件型号,局限性很大。除了计算机生产厂家的专业人员外,绝大多数的程序员已经不再去学习机器语言了。
    
        机器语言是被微处理器理解和使用的,存在有多至100000种机器语言的指令,下述是一些简单示例
    
        #指令部份的示例
        0000 代表 加载(LOAD)
        0001 代表 存储(STORE)
        ...
    
        #暂存器部份的示例
        0000 代表暂存器 A
        0001 代表暂存器 B
        ...
    
        #存储器部份的示例
        000000000000 代表地址为 0 的存储器
        000000000001 代表地址为 1 的存储器
        000000010000 代表地址为 16 的存储器
        100000000000 代表地址为 2^11 的存储器
    
        #集成示例
        0000,0000,000000010000 代表 LOAD A, 16
        0000,0001,000000000001 代表 LOAD B, 1
        0001,0001,000000010000 代表 STORE B, 16
        0001,0001,000000000001 代表 STORE B, 1[1]
    

    机器语言的特点 :

    # 1、执行效率最高
    编写的程序可以被计算机无障碍理解、直接运行,执行效率高 。
    
    # 2、开发效率最低
    复杂,开发效率低
    
    # 3、跨平台性差
    贴近/依赖具体的硬件,跨平台性差,他是直接控制cpu执行,
    那么不同平台上的计算机硬件中的cpu型号可能不同
    

    1.2 汇编语言

    汇编语言仅仅是用一个英文标签代表一组二进制指令( 之间是映射关系),毫无疑问,比起机器语言,汇编语言是

    一种进步,但汇编语言的本质仍然是直接操作硬件,因此汇编语言仍是比较低级/底层的语言、贴近计算机硬件 。

    #汇编语言
    汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。它同样需要编程者将每一步具体的操作用命令的形式写出来。汇编程序的每一句指令只能对应实际操作过程中的一个很细微的动作。例如移动、自增,因此汇编源程序一般比较冗长、复杂、容易出错,而且使用汇编语言编程需要有更多的计算机专业知识,但汇编语言的优点也是显而易见的,用汇编语言所能完成的操作不是一般高级语言所能够实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。
    
    汇编的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       ; 参数一:文件描述符(stdout) 
            mov eax, 4       ; 系统调用号(sys_write) 
            int 0x80         ; 调用内核功能
                             ; 退出程序
            mov ebx, 0       ; 参数一:退出代码
            mov eax, 1       ; 系统调用号(sys_exit) 
            int 0x80         ; 调用内核功能
    

    汇编语言的特点

    # 1、执行效率高
    相对于机器语言,使用英文标签编写程序相对简单,执行效率高,
    但较之机器语言稍低,
    
    # 2、开发效率低:
    仍然是直接操作硬件,比起机器语言来说,复杂度稍低,
    但依旧居高不下,所以开发效率依旧较低
    
    # 3、跨平台性差
    同样依赖具体的硬件,跨平台性差
    

    1.3 高级语言

    1.3.1 编译型语言

    编译型语言是指程序在执行之前需要一个专门的编译过程,把程序源文件编译为机器语言的文件,运行时不需要重

    新编译,执行效率高,但缺点是,编译型语言依赖编译器,跨平台性差。

    # 1、执行效率高
    编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(即机器语言),
    因此其目标程序可以脱离其语言环境独立执行,使用比较方便,执行效率较高。
    
    # 2、开发效率低:
    应用程序一旦需要修改,必须先修改源代码,然后重新编译、生成新的目标文件才能执行,
    而在只有目标文件而没有源代码,修改会很不方便。所以开发效率低于解释型
    
    # 3、跨平台性差
    编译型代码是针对某一个平台翻译的,当前平台翻译的结果无法拿到不同的平台使用,
    针对不同的平台必须重新编译,即跨平台性差
    
    # 其他
    现在大多数的编程语言都是编译型的。
    编译程序将源程序翻译成目标程序后保存在另一个文件中,
    该目标程序可脱离编译程序直接在计算机上多次运行。
    大多数软件产品都是以目标程序形式发行给用户的,
    不仅便于直接运行,同时又使他人难于盗用其中的技术。
    C、C++、Ada、Pascal都是编译实现的
    

    1.3.2 解释型语言

    解释型语言不能直接翻译成机器语言,而是先翻译成中间代码 (只与解释器有关,和平台无关),再由解释器对

    中间代码进行解释运行 ,而且代码的每次运行,都要有解释器的参与,而且是逐行解释,相对于编译性语言执行

    效率偏慢。

    # 1、执行效率低
    解释型语言的实现中,解释器并不产生目标机器代码,而是产生易于执行的中间代码。
    这种中间代码与机器代码是不同的,中间代码的解释是由软件支持的,不能直接使用硬件,
    软件解释器通常会导致执行效率较低。
    
    # 2、开发效率高
    用解释型语言编写的程序是由另一个可以理解中间代码的解释程序执行的,与编译程序不同的是,
    解释程序的任务是逐一将源程序的语句解释成可执行的机器指令,不需要将源程序翻译成目标代码再执行。
    解释程序的优点是当语句出现语法错误时,可以立即引起程序员的注意,而程序员在程序开发期间就能进行校正。
    
    
    # 3、跨平台性强
    代码运行是依赖于解释器,不同平台有对应版本的解释器,所以解释型的跨平台性强
    
    # 其他
    对于解释型Basic语言,需要一个专门的解释器解释执行Basic程序,每条语句只有在执行时才被翻译,
    这种解释型语言每执行一次就翻译一次,因而效率低下。一般地,动态语言都是解释型的,
    例如:Tcl、Perl、Ruby、VBScript、JavaScript,php等
    

    总结:

    #1、执行效率:机器语言>汇编语言>高级语言(编译型>解释型)
    
    #2、开发效率:机器语言<汇编语言<高级语言(编译型<解释型)
    
    #3、跨平台性:解释型具有极强的跨平台型
    

    2. python语言

    先看一下现在python语言的流行程度,排名还是不错的。

    谈及python,涉及两层意思,一层代表的是python这门语言的语法风格,另外一层代表的则是专门用来解释该语

    法风格的应用程序:python解释器。

    python的创始人为吉多·范罗苏姆(Guido van Rossum)。Python这个名字,来自Guido所挚爱的电视剧

    Monty Python’s Flying Circus,他希望这个新的叫做Python的语言,能符合他的理想:创造一种C和shell之

    间,语法够像shell一样简洁,易学易用、可拓展性强,同时兼顾C的强大功能。于是Guido在1989年的圣诞节期

    间,开始写能够解释Python语言语法的解释器,最终用了一两周用c语言编写出了python解释器,也cpython。

    所以你现在在官网下载的就是这个解释器。

    2.1 python发展史

    1989年,Guido开始写Python语言的编译器。 1991年,第一个Python编译器诞生。它是用C语言实现的,并能够调用C语言的库文件。从一出生,Python已经具有了:类,函数,异常处理,包含表和词典在内的核心数据类型,以及模块为基础的拓展系统。

    Granddaddy of Python web frameworks, Zope 1 was released in 1999

    Python 1.0 - January 1994 增加了 lambda, map, filter and reduce.

    Python 2.0 - October 16, 2000,加入了内存回收机制,构成了现在Python语言框架的基础

    Python 2.4 - November 30, 2004, 同年目前最流行的WEB框架Django 诞生

    Python 2.5 - September 19, 2006

    Python 2.6 - October 1, 2008

    Python 2.7 - July 3, 2010

    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版本的软件,我们在遇到两种版本的差异时会专门指出来)

    Python 3.1 - June 27, 2009

    Python 3.2 - February 20, 2011

    Python 3.3 - September 29, 2012

    Python 3.4 - March 16, 2014

    Python 3.5 - September 13, 2015

    Python 3.6 - 2016-12-23 发布python3.6.0版

    2.2 python解释器的种类

    官方的Python解释器本质就是基于C语言开发的一个软件,该软件的功能就是读取以.py结尾的文件内容,然后按

    照Guido定义好的语法和规则去翻译并执行相应的代码。这种用C实现的解释器称为CPython,它是python领域

    性能最好,应用最广泛的一款解释器,我们在后面提到的解释器指的都是Cpython解释器。但其实解释器作为一

    款应用软件,完全可以采用其他语言来开发,只要能解释python这门语言的语法即可。Python解释器的一些种类

    如下,简单了解即可。

    2.2.1 CPython

    当从Python官方网站下载并安装好Python3.8后,就直接获得了一个官方版本的解释器:Cpython,这个解释器

    是用C语言开发的,所以叫CPython,在命名行下运行python,就是启动CPython解释器,CPython是使用最广

    的Python解释器。

    2.2.2 IPython

    IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行

    Python代码的功能和CPython是完全一样的,好比很多国产浏览器虽然外观不同,但内核其实是调用了IE。

    2.2.3 PyPy

    PyPy是另一个Python解释器,它的目标是执行速度,PyPy采用JIT技术,对Python代码进行动态编译,所以可以

    显著提高Python代码的执行速度。

    2.2.4 Jython

    Jython是运行在Java平台上的Python解释器,可以直接把Python代码编译成Java字节码执行。

    2.2.5 IronPython

    IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代

    码编译成.Net的字节码。

    在Python的解释器中,使用广泛的是CPython,对于Python的编译,除了可以采用以上解释器进行编译外,技术高超的开发者还可以按照自己的需求自行编写Python解释器来执行Python代码,十分的方便!

    2.3 python解释器的安装

    python官网

    2.3.1 windows系统安装python

    下载完成后双击安装,这里我用的是python3.7.4做安装演示

    完成以上步骤,你在windows系统下的python解释器就安装完成了。

    2.3.2 linux/mac下载安装python解释器

    linux

    这个下载的python解释器的源码包。

    mac

    详情请见: egon老师的视频

    2.3.2 环境变量的配置

    1. 找到你python的安装路径,如果你的计算机上有好几个python解释器的版本,建议copy并重命名一份。

    2. 右击此电脑,点击属性,点击高级系统设置

    然后一路 确定 ---》确定 ----》确定,

    win+r,回车,输入python,如果出现下图,即为环境变量配置成功(忽略这里我的电脑装的是python3.6.5)。

    这里解释一下环境变量,如果你想运行python解释器,那是不是先要找到python解释器的安装目录,然后进入到

    该目录下,输入python,即可运行python.exe这个可执行文件,但是如果我们每次都这样运行的话,岂不是很费

    事,先找目录,然后才能运行。但是如果你在环境变量中配置了python.exe的路径,那么你就可以在任意目录

    下,直接输入python,然后就能执行python.exe文件了。这就是为什么要安装环境变量。

    2.4 运行python程序的两种方式

    2.4.1 交互式

    即时得到程序的运行结果,但是代码没有永久保存,多用于调试,可以拿来当计算器用。

    打开命令行,输入python,然后就可以编写代码了(注意编写用的符号全是英文的)

    2.4.2 脚本的方式

    把程序写到一个文件中(约定俗称文件后缀名为.py), 然后用python解释器,解释执行里面的内容。

    python解释器 + 空格 + 文件路径(注意命令路径中不能有空格),虽然这样可以将代码永久保存了,但是每次

    执行都要来命令行,而且默认到的文本编辑器,写代码无任何提示。(后面会介绍到集成开发环境)

    2.5 一个python程序运行的三个步骤

    • python D:桌面demo.py 执行python程序经历的三个步骤

      - 1.先启动python解释器,相当于启动了一个文本编辑器
      - 2.解释器会发送系统调用,把demo.py的内容,从硬盘中读取出来,
          并加载到内存,此时demo.py中的内容全部为普通字符,没有任何意义
      - 3.按下回车,解释器开始解释执行刚刚读到内存的demo.py的代码,开始识别python语法
      
    • 对比文本编辑器读取 C:ac.py文件 内容也经历了三个步骤

      1、先启动文本编辑器
      2、文本编辑器会发送系统调用,把c.py的内容从硬盘读入内存
      3、文本编辑会将刚刚读入内存的内容控制输出到屏幕上,让用户看到结果
      
    • 总结:

      二者在前两个阶段做的事情完全一致
      唯一不同的就是第三个阶段对读入内存的python代码的处理方式不同,
      一个检测语法是否正确,一个不检测。
      
  • 相关阅读:
    Hbase shell基本操作
    Spring Caching集成Ehcache
    统一认证授权及单点登录的技术选择
    详谈再论JAVA获取本机IP地址
    Spark基础脚本入门实践3:Pair RDD开发
    Spark基础脚本入门实践2:基础开发
    Spark基础脚本入门实践1
    必须熟练的基础linux命令
    Swing中的线程并发处理
    源码分享!!!world文档转换为JPG图片
  • 原文地址:https://www.cnblogs.com/xcymn/p/13427420.html
Copyright © 2011-2022 走看看