[Python学习日记-1] 编程语言介绍与分类

[Python学习日记-1] 编程语言介绍与分类

编程语言介绍与分类

编程语言介绍与分类

一、编程语言介绍

        编程语言它本质上跟人类语言是一样的,是一种人类与计算机之间沟通的工具,人类的语言是为了人与人沟通,而编程语言是为了人与计算机沟通。计算机本质上就是电流和一堆硬件组成,而其中的信息是通过晶体管由高低电压来表示不通信号、字符、代码等等不同的信息的,即高电压代表1,低电压代表0。

01000001    65    A
01100001    97    a
# 中间都需要通过ASII编码表进行查询

        01000001就是机器语言,是直接跟硬件打交道的,但是这样对于人类来说太难接受了,正常人都无法读懂这是什么意思,然后人们就发明了汇编语言,就想下面所举的例子play_m代表的二进制码。

play_m指令的二进制码:1111

        在这里可以看得出,其实汇编语言就是给一些常用的二进制码进行了一些归类,并用一些人类看得懂的字符表达了出来。但是这种语言的便捷性和沟通效率还是不太高, 就像下面的代码一样,这么一大堆代码只是在屏幕打印一句“Hello, World!”。但是这种语言还是有人使用的,主要是硬件厂商、嵌入式开发这种需要和硬件直接打交道的在使用,普通程序员很少会接触到。普通程序员主要接触到的都是高级语言,而Python就是其中一种高级语言。

section .data                ; 数据段声明          
    message db 'Hello, World!',0xA        ; 要输出的字符串
    len equ $ - msg                       ; 字符串长度
section .text                ; 代码段声明
global _start                ; 指定入口函数
_start:                      ; 在屏幕上显示一个字符串
    mov edx, len             ; 参数三:字符串长度
    mov ecx, msg             ; 参数二:要显示的字符串。将字符串的地址保存到寄存器ebx中
    mov ebx, 1               ; 参数一:文件描述符(stdout)
    mov eax, 4               ; 系统调用号(sys_write)
    int 0x80                 ; 调用内核功能
                             ; 退出程序
    mov ebx, 0               ; 参数一:退出代码
    mov eax, 1               ; 系统调用号(sys_exit)
    int 0x80                 ; 调用内核功能

二、编程语言的分类 

         汇编语言和机器语言是一种低级语言,是与计算机硬件直接相关的语言。它们使用计算机指令的二进制代码表示,对程序员来说较为复杂和难以理解。高级语言是相对于低级语言而言的,它更接近于自然语言,更容易阅读和理解。高级语言提供了一系列的语法和结构,让程序员能够更方便地编写程序,如C、Java、Python等。总的来说高级语言是对底层硬件的各种指令做了封装。

        高级语言的构建可以说是在低级语言的基础上的,本质原理就是人类编写了代码(高级语言) ——> 翻译 ——> 翻译成机器语言,然后在让计算机执行。在这里根据翻译方式的不同就产生了两个流派,即编译型语言和解析型语言。

编译型语言:

人类代码 ————> 一次性把代码给翻译官(编译器)————> 汇编 ————> 机器语言

        编译型语言代表:C、C++、Golang

        编译型语言的优点:执行速度快

        编译型语言的缺点:跨平台可移植性差,编译型语言的执行依赖于底层的硬件和操作系统。因此要了解编译型语言的缺点要先了解硬件的分类,硬件我们通常指的是CPU,为什么呢,因为计算机的所有指令都是由CPU来发送的,所以我们想要计算机帮我们干活那就一定要和CPU沟通。CPU也分为两大阵营,一边是以Intel和AMD为代表的复杂指令集(例如一个动作,多个指令共同完成),他们拥有着高性能的同时也存在着高功耗;另一边是以ARM为代表的精简指令集(例如一个动作,只需要一个指令完成),主要用于手机、平板等设备,他们主要的特性就是低功耗。除了硬件还有软件,软件这里指的是操作系统,即Windows、Linux、Mac。所以说从硬件层面来看,编译型语言在Intel的电脑上能执行,而去到了ARM的设备上就无法执行了,因为他们不是同一套指令集,更像是人类所说的不同语种;从软件层面来看, Windows、Linux、Mac这三个系统都是使用C语言编写的,所以说你的C语言程序在这三大平台上同时运行是没有太大问题的,不过不同系统的一些细节语法需要调整,更像是人类所说的方言。

解析型语言:

人类代码 ————> 边执行边翻译,陪同翻译(解释器/虚拟机)————> 汇编 ————> 机器语言

        解析型语言代表:Python、PHP、Java、Ruby、C# 

        解析型语言的优点:跨平台好,人类程序员只需要和翻译打交道,而翻译精通多国语言

        解析型语言的缺点:解析型语言是一种边执行边翻译的语言,在这里翻译是需要时间的,这样会影响执行速度,相对于编译型语言来说速度会慢,由于计算机的发展这种慢人已经无法感知到了,而这种慢只是计算机理解的慢,例如1ms和10ms的差别,大多数情况下,语言的快慢使我们人类感知不到的,不过在一些数据量巨大的程序(百度搜索引擎)当中还是会优先使用编译型语言去写。

  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

JovaZou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值