【总结】编程语言的分类

article/2025/8/20 11:42:18

                                   

一、计算机编程语言的分类

1、低级语言 
           

机器语言二进制代码)、汇编语言面向机器的程序设计语言)和符号语言。汇编语言源程序必须经过汇编,生成目

标文件,然后执行。

机器语言优缺点如下:

缺点:可读性、可移植性差,编程繁杂;
       优点:直接执行,速度快,资源占用少。

汇编语言优缺点如下:

优点:能够保持机器语言的一致性,直接、简捷,并能像机器指令一样访问、控制计算机的各种硬件设备,如磁盘、存储器、CPU、I/O端口等。使用汇编语言,可以访问所有能够被访问的软、硬件资源,目标代码简短,占用内存少,执行速度快。

缺点:不同的处理器有不同的汇编语言语法和编译器,编译的程序无法在不同的处理器上执行,缺乏可移植性,难于从汇编语言代码上理解程序设计意图,可维护性差,即使是完成简单的工作也需要大量的汇编语言代码,很容易产生bug,难于调试,使用汇编语言必须对某种处理器非常了解,而且只能针对特定的体系结构和处理器进行优化,开发效率很低,周期长且单调。
           
2、高级语言 


      BASIC(True basic、Qbasic、Virtual Basic)、C、C++、PASCAL、FORTRAN、智能化语言(LISP、Prolog)、动态  语言(Python、PHP、Ruby、Lua)等等。高级语言源程序可以用解释、编译两种方式执行。通常用后一种。 我们使用的C语言就是使用的后者。 

高级语言的优缺点如下:

优点:高级语言接近算法语言,易学、易掌握,级语言为程序员提供了结构化程序设计的环境和工具,使得设计出来的程序可读性好,可维护性强,可靠性高;高级语言远离机器语言,与具体的计算机硬件关系不大,可移植性好,重用率高;由于把繁杂琐碎的事务交给了编译程序去做,所以自动化程度高,开发周期短,且程序员得到解脱,可以集中时间和精力去从事对于他们来说更为重要的创造性劳动,以提高程序的质量。

缺点:运行速度基本上比直接用汇编写的慢,速度和程序大小与编译软件有关。

3、专用语言 

CAD系统中的绘图语言和DBMS的数据库查询语言。

 
4、脚本语言 
         

(Script language,scripting language,scripting programming language)是为了缩短传统的编写-编译-链接-运行(edit-  compile-link-run)过程而创建的计算机编程语言。脚本语言一般都 有相应的脚本引擎来解释执行。 他们一般需要解释器才能运行。一个脚本通常是解释运行而非编译。脚本语言通常 都有简单、易学、易用的特性,目的就是希望能让程序员快速完成程序的编写工 作。 

 

二、高级语言的分类

1、按转换方式可分为三类:① 编译型语言;  ② 解释型语言;③ 混合型语言。

计算机不能直接的理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能执行高级语言的编写的程序。翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。

① 编译型语言

                                       

需通过编译器(compiler)将源代码编译成机器码,之后才能执行的语言。一般需经过编译(compile)、链接(linker)这两个步骤。编译是把源代码编译成机器码,链接是把各个模块的机器码和依赖库串连起来生成可执行文件。编译和执行是分开的,但是不能跨平台。
       优点:编译器一般会有预编译的过程对代码进行优化。因为编译只做一次,运行时不需要编译,所以编译型语言的程序执行效率高。可以脱离语言环境独立运行。
       缺点:编译之后如果需要修改就需要整个模块重新编译。编译的时候根据对应的运行环境生成机器码,不同的操作系统之间移植就会有问题,需要根据运行的操作系统环境编译不同的可执行文件。
      代表语言C、C++、Pascal、Object-C、swift等。

② 解释型语言

                                            

解释性语言的程序不需要编译,相比编译型语言省了道工序,解释性语言在运行程序的时候才逐行翻译。每一个语句都是执行的时候才能翻译。这样解释性语言每执行一次要翻译一次,效率表较低。
       优点:有良好的平台兼容性,在任何环境中都可以运行,前提是安装了解释器(虚拟机)。灵活,修改代码的时候直接修改就可以,可以快速部署,不用停机维护。
      缺点:每次运行的时候都要解释一遍,性能上不如编译型语言。
      代表语言JavaScript、Python、Erlang、PHP、Perl、Ruby等。

③ 混合型语言

                                            

混合型语言也叫半编译型语言。比如java、C#,C#在编译的时候不是直接编译成机器码而是中间码,.NET平台提供了  中间语言运行库运行中间码,中间语言运行库类似于Java虚拟机。.net在编译成IL代码后,保存在dll中,首次运行时由JIT在编译成机器码缓存在内存中,下次直接执行。
       java解释器采用生成与系统无关的字节代码指令技术。也就是说,在任何不同的操作系统上,只要正确安装了java运行系统,就有了编写调试java程序的平台,在分布式应用中,java的这个特点使同一个java程序能在不同的系统上运行,从而提高了软件生产效率。可移植性是跨平台特性的一个延伸,即具有了跨平台性,就保证了可移植性。java程序、java类库、java编译器、java系统都具有可移植性。
       另外有一个特殊的情况,正常情况下JavaScript属于解释性语言,V8引擎是被设计用来提高网页浏览器内部JavaScript执行的性能,为了提高性能,v8会把js代码转换为高效的机器码,而不在是依赖于解释器去执行。v8引入了JIT在运行 时把js代码进行转换为机器码。这里的主要区别在于V8不生成字节码或任何中间代码。这里的特殊之处在于JIT做代码优化(同时生成编译版本);解释型语言无法做到这些。

2. 按照客观系统的描述可分为两类:① 面向过程语言; ② 面向对象语言。

       ① 面向过程语言

面向过程语言是以过程或函数为基础的,这种语言对底层硬件,内存等操作比较方便,但是写代码和调试维护等会很麻烦。例如:c语言。

       ② 面向对象语言

面向对象语言(Object-Oriented Language)是一类以对象作为基本程序结构单位的程序设计语言,指用于描述的设计是以对象为核心,而对象是程序运行时刻的基本成分。语言中提供了类、继承等成分。
       面向对象语言的发展有两个方向:一种是纯面向对象语言,如Smalltalk、EIFFEL等;另一种是混合型面向对象语言,即在过程式语言及其它语言中加入类、继承等成分,如C++、Objective-C等。

3. 按照运行时结构是否改变可分为两类:① 动态结构语言;② 静态结构语言。
      主要针对点是:运行是是否能够改变代码结构。动态类型语言和静态类型语言主要针对数据类型检查的时间问题。
       ① 动态结构语言

      是一类在运行时可以改变其结构的语言:例如新的函数、对象、甚至代码可以被引进,已有的函数可以被删除或是其他结构上的变化。通俗点说就是在运行时代码可以根据某些条件改变自身结构。动态语言是在运行时确定数据类型的语言。变量使用之前不需要类型声明,通常变量的类型是被赋值的那个值的类型。

    主要语言Python、Ruby、Erlang、JavaScript、swift、PHP、SQL、Perl、Object-C、C#

      ② 静态结构语言

     与动态语言相对应的,运行时结构不可变的语言就是静态语言。静态语言是在编译时变量的数据类型即可确定的语言,多数静态类型语言要求在使用变量之前必须声明数据类型。 

     主要语言C、C++、C#、Java、Object-C

    注意:

     通常情况下解释型语言是动态类型语言,编译型语言是静态类型语言。但也不全是,swift是编译型语言但是它也是动态类型语言。C#和Java是解释型语言也是静态类型语言。

4. 按照变量是否需要制定类型可分为:① 强类型语言; ② 弱类型语言。

     ① 强类型语言

      强类型语言,一旦一个变量被指定了某个数据类型,如果不经过强制类型转换,那么它就永远是这个数据类型。你不能把一个整形变量当成一个字符串来处理。

     主要语言:Java、C#、Python、Object-C、Ruby等。

     ② 弱类型语言

      数据类型可被忽略,一个变量可以赋不同数据类型的值。一旦给一个整型变量a赋一个字符串值,那么a就成字符类型。

      主要语言:JavaScript、PHP、C、C++(C和C++有争议,但是确实可以给一个字符变量赋整形值,可能初衷是强类型,形态上接近弱类型)等。
 

                                               

三、脚本语言

       动态程序一般有两种实现方式,一是二进制方式,一是脚本方式。 二进制方式是先将我们编写的程序进行编译,变成机器可识别的指令代码(如.exe文件),然后再执行。这种编译好的程序我们只能执行、使用,却看不到他的程序内容。 
       脚本程序相对一般程序开发来说比较接近自然语言,可以不经编译而是解释执行,利于快速开发或一些轻量的控制。一般的脚本语言的执行只同具体的解释执行器有关,所以只要系统上有相应语言的解释程序就可以做到跨平台。 脚本script是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,又称作宏或批处理文件。脚本通常可以由应用程序临时调用并执行。各类脚本目前被广泛地应用于网页设计中,因为脚本不仅可以减小网页的规模和提高网页浏览速度,而且可以丰富网页的表现,如动画、声音等。 
       脚本简单地说就是一条条的文字命令,这些文字命令是我们可以看到的(如可以用记事本打开查看、编辑),脚本程序在执行时,是由系统的一个解释器,将其一条条的翻译成机器可识别的指令,并按程序顺序执行。因为脚本在执行时多了一道翻译的过程,所以它比二进制程序执行效率要稍低一些。 我们上面提到的各种动态语言,如ASP、PHP、CGI、JSP等,都是脚本语言。 按目前的服务规则,虚拟主机网站只能采用脚本语言来实现 脚本英文为Script。实际上脚本就是程序,一般都是有应用程序提供的编程语言。应用程序包括浏览器(javascript、VBScript)、多媒体创作工具,应用程序的宏和创作系统的批处理语言也可以归入脚本之类。脚本同我们平时使用的VB、C语言等的区别主要是: 
     1、脚本语法比较简单,比较容易掌握; 
     2、脚本与应用程序密切相关,所以包括相对应用程序自身的功能; 
     3、脚本一般不具备通用性,所能处理的问题范围有限。 
     4、脚本语言(JavaScript,VBscript等)介于HTML和C,C++,Java,C#等编程语言之间。 HTML通常用于格式化和链结文本。而编  程语言通常用于向机器发出一系列复杂的指令。 
     5、脚本语言与编程语言也有很多相似地方,其函数与编程语言比较相象一些,其也涉及到变量。与编程语言之间最大的区别是编程语言的语法和规则更为严格和复杂一些. 
    6、与程序代码的关系:脚本也是一种语言,其同样由程序代码组成。 注:脚本语言一般都有相应的脚本引擎来解释执行。 他们一般需解释器才能运行。JAVASCRIPT,ASP,PHP,PERL,Nuva都是脚本语言。C/C++编译、链接后,可形成独立执行的exe文件。 
    7、脚本语言是一种解释性的语言,例如vbscript,javascript,installshield script等等,它不象c/c++等可以编译成二进制代码,以可执行文件的形式存在. 脚本语言不需要编译,可以直接用,由解释器来负责解释。 
   8、脚本语言一般都是以文本形式存在,类似于一种命令. 举个例子说,如果你建立了一个程序,叫aaa.exe,可以打开.aa为扩展名的  文件. 你为.aa文件的编写指定了一套规则(语法),当别人编写了.aa文件后,你的程序用这种规则来理解编写人的意图,并作出回应.那么,这一套规则就是脚本语言. 脚本是批处理文件的延伸,是一种纯文本保存的程序,一般来说的计算机脚本程序是确定的一系列控制计算机进行运算操作动作的组合,在其中可以实现一定的逻辑分支等。

 
四、新兴编程语言 


        perl擅长文字处理,python擅长数值处理 Perl 设计之初就是为了方便编写复杂高效的系统脚本,它也是应该最为广泛的脚本  编程语言。它在编程方面相当于瑞士军刀,对字符、文本文件处理能力很强,以前要求 shell+sed+awk+C才能完成的任务,只需perl脚本就可以完成了。而且应用领域一直在拓宽,支持面向对象程序设计。Python 面向对象的动态公共语言,适于脚本编程和快速开发,它最显著的特点是作为编译语言(如C)和脚本语言(如perl)之间的桥接语言,它具有的强大功能,可扩充性及面向对象的特征使其成为大规模应用程序开发工具。

参考文章:【感谢一下作者的分享】

[1] 编程语言的分类与关系

[2] 计算机编程语言的分类

[3] 计算机编程语言的分类,解释型语言、编译型语言、脚本语言的关系

[4] 弱类型、强类型、动态类型、静态类型语言的区别是什么?编程语言类型划分


http://chatgpt.dhexx.cn/article/qAFNOkHa.shtml

相关文章

编程语言排行榜 - 2020年度最热门编程语言盘点!

如今,广大用户更喜欢利用移动应用程序,来获取他们所关心的产品与信息。而移动应用程序也成为了企业在市场竞争中,保持领先地位的成功关键。据某项调查预测:到2020年,全英国移动应用的用户下载数量将增加到200亿次。当然…

IT培训分享:11种热门编程语言的主要用途

IT行业发展前景广阔,想进去IT领域的小伙伴也是与日俱增。但编程语言的种类那么多,具体学习哪个好呢?建议刚开始学习就要明白自己的目的来进行有针对性的学习。今天小千就以自己了解到的知识,来给大家简单介绍一下时下热门编程语言…

最受欢迎的八种编程语言

DevJobsScanner公司分析了2022年超过1200万份开发者工作需求,其中舍弃了对语言要求比较模糊的工作,有明确编程语言要求的工作有700万份,最终得出了目前行业需求量最高的 8 种编程语言。 让我们一起看看在目前的市场需求中,哪些语…

软件测试用例编写方法

软件测试学习导图如下: 软件测试的宗旨就是尽早地和不断地进行测试,更早、更快、更多的发现错误。 编写测试用例主要用到五种方法:等价类划分、边界值分析、因果图法、场景法(用户故事法)、错误推测 等价类划分&#…

编写测试用例方法之正交表分析法

今天我们再来介绍另外一个编写测试用例的方法:正交表分析法,这个方法是一种比较方便的方法。话不多说,开始整干货,老规矩,首先全图镇楼。 之前我们在对产品进行测试用例设计的时候,都是针对单个输入框。如果…

测试用例的编写方法

测试用例 买手机、买电脑,要试用一下:开机、屏幕、运行速度、内存大小;这就是生活中的测试用例! 测试用例(Test Case)是为特定的目的而设计的一组测试输入、执行条件和预期的结果,以便测试是否满足某个特定需求。通过大量的测试用例来检验软件的运行效果,它是指导测试工…

编写测试用例的方法,这个是真的很好用

大家测试过程中经常用的等价类划分、边界值分析、场景法等,并不能覆盖所有的需求,我们之前讲过很少用到的因果图法,下面就来讲另一种不经常用到但又非常重要的测试用例编写方法——测试大纲法。 测试大纲法适用于有多个窗口,每个…

亲测快捷高效的编写测试用例方法

目录 一、什么是测试用例? 二、设计用例是否有必要? 三、设计用例的益处? 四、一定要写测试用例吗? 五、测试用例怎么写? 六、用例必备4个方面? 七、用例设计理念? 八、没有需求文档&am…

测试用例的特性以及编写测试用例的方法

测试用例的特性以及编写测试用例的方法 测试用例的定义:什么是测试用例?测试用例的特征: 编写测试用例的好处:测试用例的作用: 测试用例的4个特性测试用例通常包括以下几个组成元素:编写测试用例的基本方法…

【软件测试】编写测试用例的方法,这个是真的很好用

大家测试过程中经常用的等价类划分、边界值分析、场景法等,并不能覆盖所有的需求,我们之前讲过很少用到的因果图法,下面就来讲另一种不经常用到但又非常重要的测试用例编写方法——测试大纲法。 测试大纲法适用于有多个窗口,每个…

编写测试用例常用的七大方法

测试用例格式包括十大特点 用例编号 测试项 测试标题 用例属性 重要级别:高中低 预置条件 测试输入 操作步骤 预期结果 实际结果 第一:等价类 1,等价类定义 2,等价类划分 3,等价类划分规则 4,进行…

【测试】编写测试用例的思路和方法

文章目录 1)什么是测试用例?1.1 测试用例的定义测试用例的内容: *为什么需要测试用例?测试用例的作用: 1.2 测试用例的元素测试目标(Why):测试对象(What)&…

编写测试用例常用方法

一、等价类划分法 1.概念:等价类划分法是将所有程序的输入域划分成若干个子集合(等价类),然后从每一个子集合中选取少数具有代表性的数据作为测试的输入数据。在该子集合中,所有的输入数据对于揭露软件中的错误都是等效的。等价类划分有效等…

Java-高级技术(二)

9、多线程 什么是线程&#xff1f; 线程(thread)是一个程序内部的一条执行路径。 我们之前启动程序执行后&#xff0c;main方法的执行其实就是一条单独的执行路径。 public static void main(String[] args) {// 代码...for (int i 0; i < 10; i) {System.out.println(i);…

想面中高级java工程师,要怎么写简历?(附图)

大家好~ 小仙女又回来啦~ 经过了N天的面试&#xff0c;最终选择了一家最中意的~ 过几天就要入职啦~ 现在把经验分享给大家~ 想跳槽的小哥哥小姐姐们可以参考一下~ 写简历要遵循的原则&#xff1a;整齐、简洁、多从阅读者的角度考虑。 文档属性与命名 写完简历生成pdf版的这个…

如何才能更快速的成为一名高级Java开发人员?

对于从事Java开发的小伙伴来说&#xff0c;成为一名高级Java开发工程师是他们的职业目标。高级Java开发工程师除了有更高的薪资和待遇&#xff0c;还代表着他们在行业的实际技能、经验和能力。但如何才能更快速的成为一名高级Java开发人员&#xff1f;下面&#xff0c;小编就给…

2022高级JAVA开发面试题精选

面试过程是一个由浅入深的过程&#xff0c;面试官先给求职者抛出一个相对简单的问题&#xff0c;然后通过一环套一环的追问深入考察求职者对知识点的理解掌握程度。 如下是一个实际的关于redis知识点的面试场景&#xff1a; 面试官&#xff1a;你用过redis吗&#xff1f; 你&a…

如何成为高级Java工程师?Java怎么进阶?

所谓的Java高级程序员往往是经验和能力的结合&#xff0c;并不是说掌握了哪几个技术就是高级程序员了&#xff0c;能否把掌握的知识运用到实际的项目中&#xff0c;并且解决了具体的问题&#xff0c;这个才是衡量一个Java程序员的标准&#xff0c;如何成为高级Java工程师&#…

java高级编程

&#xff08;一&#xff09;课程描述 Java高级编程是一门面向计算机专业的专业任选课&#xff0c;其具有实践性强、应用广泛、功能强大等特点&#xff0c;对于学生职业发展和提高社会信息化水平&#xff0c;具有重要意义。Java Web开发是Java 开发技术中的一个重要的组成部分&…

面试题总结 —— JAVA高级工程师

面试题总结——JAVA高级工程师 近期考虑换工作的问题&#xff0c;于是投简历面试&#xff0c;面试5家公司的高级Java工程师&#xff0c;有4家给了我offer&#xff0c;想着总结一下面试经验&#xff0c;方便最近正在寻求机会的你们 一、无笔试题 不知道是不是职位原因还是没遇到…