首页 > 编程语言 >编程语言分类

编程语言分类

时间:2023-11-23 15:57:46浏览次数:49  
标签:解释器 语言 编程语言 Python 分类 编译 机器语言 执行

【一】编程语言分类

【1】机器语言

①什么是机器语言

  • 机器语言是计算机可以理解的语言,可以直接操作硬件的语言。
  • 由于计算机基于电工作,电有高低电频之分,即高电频与低电频(0和1)。
    • 计算机能直接理解的就是二进制指令(0/1),所以机器语言就是直接用二进制编程,这意味着机器语言是直接操作硬件的

②什么是机器指令

  • 机器指令是用二进制代码0和1描述的指令,直接控制计算机硬件。
  • 由于计算机内部是基于二进制指令工作的,这使得机器语言成为直接与硬件交互的基础。

③如何用机器语言编写程序

  • 编程人员要首先熟记所用计算机的全部指令代码以及代码的含义
  • 然后在编写程序时,程序员得自己处理每条指令和每一数据的存储分配和输入输出,还得记住编程过程中每步所使用的工作单元处在何种状态。
  • 这是一件十分繁琐的工作。编写程序花费的时间往往是实际运行时间的几十倍或几百倍。
  • 而且,编出的程序全是些0和1的指令代码,直观性差,不便阅读和书写,还容易出错,且依赖于具体的计算机硬件型号,局限性很大。
  • 除了计算机生产厂家的专业人员外,绝大多数的程序员已经不再去学习机器语言了。

④机器语言的示例

  • 机器语言是被微处理器理解和使用的,存在有多至100000种机器语言的指令
'''指令部份的示例'''
 0000 代表 加载(LOAD)
 0001 代表 存储(STORE)
 ...
 
LOAD 0000  # 加载寄存器A
STORE 0001 # 存储到寄存器B

'''暂存器部份的示例'''
0000 代表暂存器 A 
0001 代表暂存器 B 
...

'''存储器部份的示例'''
000000000000 代表地址为 0 的存储器
000000000001 代表地址为 1 的存储器 
000000010000 代表地址为 16 的存储器
100000000000 代表地址为 2^11 的存储器

⑤机器语言的优缺点

[1]优点
  • 执行效率最高
    • 编写的程序可以被计算机无障碍理解、直接运行,执行效率高。
[2]缺点
  • 开发效率最低
    • 复杂,开发效率低
  • 跨平台性差
    • 贴近/依赖具体的硬件,跨平台性差
  • 学习成本大
    • 编出的程序都是0/1代码,数量多还易出错
    • 同时还要理解原码、反码、补码、位运算( & | )等一系列相关的专业知识

补充:存储单位

  • 程序员在进行交流沟通时,我们说的位数其实就是二进制的位数

  • 00000001 表示1字节,有256种排列方式,从0到255。

  • 00000001 -----> 1bytes -----> 256种排列方式 -----> 从0开始计数就是0-255

  • 单位换算公式

    - 1024 bytes = 1 KB
    - 1024 KB = 1 MB
    - 1024 MB = 1 GB
    - 1024 GB = 1 TB
    - 1024 TB = 1 ZB
    

【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】高级语言

①什么是高级语言

  • 从人的角度出发,以人类可读的字符编写程序
    • 而人类的字符是在向操作系统发送指令,而非直接操作硬件,所以高级语言是与操作系统打交道的
    • 此处的高级指的是高层、开发者无需考虑硬件细节
  • 与低级语言相比,高级语言更贴近人类语言,使开发者无需考虑硬件细节,提高了开发效率。
  • 但正因为高级语言离硬件较远,更贴近人类语言,执行效率相对较低。
    • 人类可以理解,而计算机则需要通过翻译才能理解,所以执行效率会低于低级语言。

②高级语言的分类

  • 按照翻译方式的不同,高级语言又被分为:
    • 编译型语言
      • C、C++、C#、JAVA等
    • 解释型语言
      • Python、Ruby、PHP等

③什么是编译型语言

[1]编译型
  • 编译型语言将整篇源程序一次性翻译成目标代码,然后生成可执行文件。
  • 修改源代码后,需要重新编译整个程序。虽然执行效率较高,但开发效率相对较低,跨平台性也较差。
[2]类比
  • 编译型语言就像是你拿到一篇文章,不是逐段翻译,而是交给翻译软件,整篇文章进行翻译
    • 如果中间某段话出错被修改,再次拿到文章也是进行整段文章翻译
[3]优点
  • 执行效率高
    • 编译是指在应用源程序执行之前,就将程序源代码“翻译”成目标代码(即机器语言)
    • 因此其目标程序可以脱离其语言环境独立执行,使用比较方便,执行效率较高。
[4]缺点
  • 开发效率低
    • 应用程序一旦需要修改,必须先修改源代码,然后重新编译、生成新的目标文件才能执行
    • 而在只有目标文件而没有源代码,修改会很不方便。
    • 所以开发效率低于解释型
  • 跨平台性差
    • 编译型代码是针对某一个平台翻译的,当前平台翻译的结果无法拿到不同的平台使用,针对不同的平台必须重新编译,即跨平台性差

现在大多数的编程语言都是编译型的。

编译程序将源程序翻译成目标程序后保存在另一个文件中,该目标程序可脱离编译程序直接在计算机上多次运行。

大多数软件产品都是以目标程序形式发行给用户的,不仅便于直接运行,同时又使他人难于盗用其中的技术。

C、C++、Ada、Pascal都是编译实现的

④什么是解释型语言

[1]解释型
  • 解释型语言逐句翻译源程序成中间代码,由解释器逐句执行。
  • 修改源代码后,不需要重新编译整个程序,直接执行即可。
  • 执行效率较低,但开发效率高,且具有较强的跨平台性。
[2]类比
  • 编译型语言就像是你拿到一篇文章,不是整篇文章翻译,而是交给翻译软件,逐句进行翻译
[3]优点
  • 开发效率高
    • 用解释型语言编写的程序是由另一个可以理解中间代码的解释程序执行的,与编译程序不同的是,解释程序的任务是逐一将源程序的语句解释成可执行的机器指令,不需要将源程序翻译成目标代码再执行。
    • 解释程序的优点是当语句出现语法错误时,可以立即引起程序员的注意,而程序员在程序开发期间就能进行校正。
  • 跨平台性强
    • 代码运行是依赖于解释器,不同平台有对应版本的解释器,所以解释型的跨平台性强
[4]缺点
  • 执行效率低
    • 解释型语言的实现中,翻译器并不产生目标机器代码,而是产生易于执行的中间代码。
    • 这种中间代码与机器代码是不同的,中间代码的解释是由软件支持的,不能直接使用硬件, 软件解释器通常会导致执行效率较低。
[5]其他
  • 对于解释型Basic语言,需要一个专门的解释器解释执行Basic程序,每条语句只有在执行时才被翻译,
  • 这种解释型语言每执行一次就翻译一次,因而效率低下。
  • 一般地,动态语言都是解释型的, 例如:Tcl、Perl、Ruby、VBScript、JavaScript等
[6]Java是一类特殊的编程语言
  • Java程序也需要编译,但是却没有直接编译为机器语言,而是编译为字节码
  • 然后在Java虚拟机上以解释方式执行字节码。

⑤小结

  • 综上选择不同编程语言来开发应用程序对比
    • 执行效率:机器语言>汇编语言>高级语言(编译型>解释型)
    • 开发效率:机器语言<汇编语言<高级语言(编译型<解释型)
    • 跨平台性:解释型具有极强的跨平台型
  • 由于我们开发是应用程序,而应用程序必须运行于某一个平台之上
  • 应用程序的快慢受限于平台(就好比F1赛车与宝马车同时跑在北京五环高速,都受限于道路环境,车速是差不多的)的快慢,并不是单从语言层面就可以提升整体执行效率的
  • 于是开发效率、跨平台性才是我们需要优先考虑的问题
  • 这就是我们首选Python的原因

【二】Python语言介绍

①python的引入

  • 谈及Python,涉及两层意思
    • 一层代表的是Python这门语言的语法风格
    • 另外一层代表的则是专门用来解释该语法风格的应用程序:python解释器。

②python的创始

  • Python的创始人为吉多·范罗苏姆(Guido van Rossum)。

image-20231123153037479

Python这个名字,来自Guido所挚爱的电视剧《Monty Python’s Flying Circus》,他希望这个新的叫做Python的语言,能符合他的理想:

创造一种C和shell之间,语法能够像shell一样简洁,易学易用、可拓展性强,同时兼顾C的强大功能。

于是Guido在1989年的圣诞节期间,开始编写能够解释Python语言语法的解释器。

Python崇尚优美、清晰、简单,是一个优秀并广泛使用的语言。

2023年11月的TIOBE排行榜https://www.tiobe.com/tiobe-index/,可以看出python是非常有前景的一款语言。

image-20231123153413621

  • Python可以应用于众多领域
    • 人工智能、数据分析、爬虫、金融量化、云计算、WEB开发、自动化运维/测试、游戏开发、网络服务、图像处理等众多领域。
    • Python可从事方向
  • 目前业内几乎所有大中型互联网企业都在使用Python
    • Youtube、Dropbox、BT、Quora(中国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。

③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版
  • 2020年: Python 2正式结束支持,用户被鼓励转向Python 3。
  • 2020年之后: Python社区继续推动Python 3的普及,许多库和框架逐渐停止对Python 2的支持。
  • 2020年: Python 3.8发布,带来了一些新的语言特性和性能改进。
  • 2021年: Python 3.9发布,引入了一些新的语法和模块。
  • 2022年: Python 3.10发布,继续改进语言的功能和性能。
  • 2023年: Python继续在各个领域取得成功,成为数据科学、人工智能和Web开发等领域的首选语言之一。社区和生态系统不断扩大,新的库和框架涌现。

④python解释器的种类

[1]CPython
  • 官方的Python解释器本质就是基于C语言开发的一个软件,该软件的功能就是读取以.py结尾的文件内容,然后按照Guido定义好的语法和规则去翻译并执行相应的代码。
  • 这种用C实现的解释器称为CPython,它是python领域性能最好,应用最广泛的一款解释器,我们在后面提到的解释器指的都是Cpython解释器。
  • 但其实解释器作为一款应用软件,完全可以采用其他语言来开发,只要能解释python这门语言的语法即可。
  • Python解释器的一些种类如下,简单了解即可
[2]Jython
  • JPython解释器是用JAVA编写的python解释器,可以直接把Python代码编译成Java字节码并执行,它不但使基于java的项目之上嵌入python脚本成为可能,同时也可以将java程序引入到python程序之中。
[3]IPython
  • IPython是基于CPython之上的一个交互式解释器,也就是说,IPython只是在交互方式上有所增强,但是执行Python代码的功能和CPython是完全一样的。
  • 这就好比很多国产浏览器虽然外观不同,但内核其实都是调用了IE。
  • CPython用>>>作为提示符,而IPython用In [序号]:作为提示符。
[4]PyPy
  • PyPy是Python开发者为了更好地Hack Python而用Python语言实现的Python解释器。
  • PyPy提供了JIT编译器和沙盒功能,对Python代码进行动态编译(注意不是解释),因此运行速度比CPython还要快。
[5]IronPython
  • IronPython和Jython类似,只不过IronPython是运行在微软.Net平台上的Python解释器,可以直接把Python代码编译成.Net的字节码。

通常情况下,我们只需要了解前三个就可以了

CPython 、Jython 、IPython

标签:解释器,语言,编程语言,Python,分类,编译,机器语言,执行
From: https://www.cnblogs.com/ccsvip/p/17851695.html

相关文章

  • 回归任务和分类任务,重要性度量的计算方式
    在随机森林中,对于回归任务和分类任务,重要性度量的计算方式是不同的。回归任务:使用的是 %IncMSE 和 IncNodePurity。%IncMSE:这是一个基于均方误差(MeanSquaredError,MSE)的度量。当我们对某个变量进行排列时,预测误差的增加程度被用作该变量的重要性度量。如果对预测结果影响......
  • 教你如何使用PyTorch解决多分类问题
    本文分享自华为云社区《使用PyTorch解决多分类问题:构建、训练和评估深度学习模型》,作者:小馒头学Python。引言当处理多分类问题时,PyTorch是一种非常有用的深度学习框架。在这篇博客中,我们将讨论如何使用PyTorch来解决多分类问题。我们将介绍多分类问题的基本概念,构建一个简单的......
  • 基于Intel Math Kernel Library的猫狗分类模型
    项目介绍猫狗分类的图像数据集是一个广泛用于计算机视觉任务的数据集,旨在训练机器学习模型来区分猫和狗的图像。这个数据集通常包括大量的猫和狗的图像,这些图像通常已经被标记为猫或狗。在这个项目中,我们要使用RNN也就是循环神经网络来对猫狗图像进行分类。而我为什么要采用这个......
  • 工业交换机的六种分类
    工业交换机可以按照不同的标准进行分类,具体有六种分类方法。我们今天就来简单了解一下这六种分类方法,它们分别是:工业交换机的管理标准、工业交换机的结构标准、工业交换机的网络位置、工业交换机的传输速率、工业交换机的工作协议以及工业交换机的端口速率。以下是对六种方法进行详......
  • 04-基础SQL-通用语法及分类
      ......
  • 遥感影像的监督分类与分类后处理:ENVI实现
      本文介绍基于ENVI软件,实现最小距离法、最大似然法与支持向量机三种遥感图像监督分类方法的具体操作,同时进行分类后处理操作,并对不同分类方法结果加以对比分析。()1分类需求  我们先来看一下本文需要实现的需求。现有一景北京部分地区高分一号遥感影像数据,空间分辨率为16......
  • 呼和浩特市工业企业数据分类分级技术专项精英特训营成功举办
    为深入贯彻国家关于网络安全和信息化工作的重要指示以及全国网络安全和信息化工作会议精神,提升企业数据安全意识,强化数据安全治理实施途径,推进全市工业企业产业升级高质量发展,11月12日至14日,由呼和浩特市工业和信息化局主办的“工业企业数据分类分级技术专项精英特训营”闭门课程,在......
  • 熟悉编程语言
    一、编程语言top50二、编程泛型1.命令式:详细的命令机器怎么(How)去处理一件事情以达到你想要的结果(What)C,Java,C++等。面向过程:C语言等。面向对象:python、Java、C++等。声明式:只告诉你想要的结果(What),机器自己摸索过程(How)SQL等。函数式:Scala、Scheme、lisp、logo、Haske......
  • Java是一种高级编程语言,
    Java是一种高级编程语言,由SunMicrosystems(后来被Oracle收购)的詹姆斯·高斯林(JamesGosling)等人开发。Java的设计目标是实现“一次编写,随处运行”的理念,即通过一次编写程序,可以在多个平台上运行,而无需对程序进行修改。Java的发展可以追溯到20世纪90年代初。在当时,Sun公司致力于开......
  • 熟悉编程语言
    最受欢迎top20编程语言编程泛型编程泛型是一种在编程语言中使用的技朋,它允许我们编写可以适用于多种不同类型的数据的代码。通过使用泛型,我们可以编写更加灵活和通用的代码,而不需要针对每种特定的数据类型编写不同的代码。在使用泛型时,我们可以定义一个通用的数据类型或函数,然......