计算机语言基础概念理解

编译型语言和解释型语言

计算机程序设计语言及编译

从计算机的视角来看有:机器语言 → \rightarrow 汇编语言 → \rightarrow 高级语言.

  1. 机器语言要点: 可以直接被计算机理解,但与人类的表达习惯相去甚远,特别难以记忆理解和编写
  2. 汇编语言要点:针对机器语言难以理解,引入助记符;但是其依赖于特定的机器,非计算机专业的人使用受到限制
  3. 高级语言要点:接近人类的表达习惯且不依赖于特定的机器,编写效率高

而高级语言需要经过编译这个过程才能转换为汇编或者机器语言,从而执行命令.

编译型语言和解释型语言的概念区分

编译型语言:使用专门的编译器,针对特定的平台,将高级语言源代码一次性的编译成可被该平台硬件执行的机器码,并包装成该平台所能识别的可执行性程序的格式.
代表语言:C、C++、Pascal、Object-C、swift

解释型语言:使用专门的解释器对源程序逐行翻译为一段与平台无关的中间代码,然后被解释成特定平台的机器码并立即执行.
代表语言:JavaScript、Python、Erlang、PHP、Perl、Ruby

虚拟机:虚拟机的任务是在运行过程中将中间代码翻译成目标平台的指令,起到解释器的作用

二者特点对比

编译型语言解释型语言
被直接翻译成机器语言被翻译成一段不针对任何平台的中间代码后,再被解释为可以被执行的机器的目标指令
跨平台能力较差,如果跨平台则需要被重新编译能够在不同的平台上执行
效率较高,运行的已经是完全的二进制内容效率较低,不一定是完全的二进制内容一边解释成二进制一边运行
保密性较好,一般不用提供相关的源代码就可以为用户提供相关的服务保密性较差,一般必须提供源码才能运行

动态类型语言和静态类型语言

概念梳理

静态类型语言:
①变量的类型在编译之前就需要确定,在编译的时候需要先编译,将源码转换成目标代码,然后需要运行目标代码程序才能运行.
②变量的数据类型在编译期声明以后,不能再改变其数据类型,即变量在使用前必须先声明类型.
③主要代表:Python、Ruby、Erlang、JavaScript、swift、PHP、Perl

动态类型语言:
①不需要直接指定变量类型,在解释的时候,转换为目标代码和运行程序一步到位
②在运行期检查变量类型的语言,也就是在编写代码的时候可以不指定变量的数据类型
③主要代表:C、C++、C#、Java、Object-C

主要分类误区:

  1. 解释型语言都是动态类型语言,编译型语言都是静态类型语言.例如:swift是编译型语言但是它也是动态类型语言;C#和Java是解释型语言也是静态类型语言
  2. 动态类型语言和动态语言是一个概念.动态类型语言和动态语言是完全不同的两个概念.动态类型语言是指在运行期间才去做数据类型检查的语言,说的是数据类型,动态语言说的是运行是改变结构,说的是代码结构.

主要特点

从发展历程上看:动态类型的语言主要是为了应对相对而言较少的硬盘空间而准备的.首先由于动态语言的语法简洁,可以有效节省磁盘空间,因此在那个储存空间非常紧张的年代,是有较大的优势,处于统治地位.但后来随着计算机进入图形化时代,程序就开始变得越来越庞大.动态语言越来越难以编写出合格的程序.
从优缺点看: 动态和静态类型语言最大的特点在于可读性、可维护性的不同.动态类型的语言的最大的特点是可读性较强,涉及的代码量较少,即使数据类型错误也不会报错.但是一旦涉及大型的项目,如果中间出现错误,那么就很难对其进行维护,同时,动态类型语言所需要的代码注释量也是极大的.

强类型语言和弱类型语言

概念区分

强类型语言: 一旦一个变量被指定了某个数据类型,如果不经过强制类型转换,那么它就永远是这个数据类型.不能把一个整形变量当成一个字符串来处理.
代表语言: Java、C#、Python、Object-C、Ruby

弱类型语言: 数据类型可以被忽略,一个变量可以赋不同数据类型的值.一旦给一个整型变量 a a a 赋一个字符串值,那么 a a a 就变成字符类型.
代表语言: JavaScript、PHP

主要分类误区 : 一个语言是不是强类型语言和是不是动态类型语言也没有必然联系.Python是动态类型语言,是强类型语言.JavaScript是动态类型语言,是弱类型语言.Java是静态类型语言,是强类型语言.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值