程序语言的分类

来源:互联网 发布:小女孩手表小猫淘宝 编辑:程序博客网 时间:2024/05/15 02:10

程序语言可分为5类(严格意义上分为2、4、5三类)
  1、web page script languages
    就是网页代码,比如Html、javascript、Css、Asp、Php、Xml都应该属于此类(Html不应该属于anguages的,可能他觉得太简单了吧,不过我觉得Html也应

该算的,大家爱听谁的就听谁的好了,这个不重要)
  2、Interpreted Languages(解释型语言)
    包括Perl、Python、REBOL、Ruby等,也常被称作Script语言,通常被用于和底下的操作系统沟通。这类语言的缺点是

效率差、源代码外露——所以不适合用来开发软件产品,一般用于网页服务器。
  3、Hybrid Laguages(混合型语言)
    代表是JAVA和C#。介于解释型和编译型之间。

  4、COMPILING Languages(编译型语言)
    C/C++,JAVA都是编译型语言。
    关于Delphi,蔡说如果想要跨Linux和Windows平台的语言,则Delphi似乎是最好的选择。
  5、Assembly Languages(汇编语言)
    汇编语言是最接近于硬件的语言,不过现在几乎没多少人用了。
  
---------------------------
汇编语言:
  汇编语言由于采用了助记符号来编写程序,比用机器语言的二进制代码编程要方便些,在一定程度上简化了编程过程。汇编语言的特点是用符号代替了机器指令代码,而且助记

符与指令代码一一对应,基本保留了机器语言的灵活性。使用汇编语言能面向机器并较好地发挥机器的特性,得到质量较高的程序。
  汇编语言是面向具体机型的,它离不开具体计算机的指令系统,因此,对于不同型号的计算机,有着不同的结构的汇编语言,而且,对于同一问题所编制的汇编语言程序在不同

种类的计算机间是互不相通的。
  汇编语言中由于使用了助记符号,用汇编语言编制的程序输入计算机,计算机不能象用机器语言编写的程序一样直接识别和执行,必须通过预先放入计算机的"汇编程序"的加工

和翻译,才能变成能够被计算机识别和处理的二进制代码程序。用汇编语言等非机器语言书写好的符号程序称为源程序,运行时汇编程序要将源程序翻译成目标程序。目标程序是

机器语言程序,它一经被安置在内存的预定位置上,就能被计算机的CPU处理和执行。
  汇编语言像机器指令一样,是硬件操作的控制信息,因而仍然是面向机器的语言,使用起来还是比较繁琐费时,通用性也差。但是,汇编语言用来编制系统软件和过程控制软件

,其目标程序占用内存空间少,运行速度快,有着高级语言不可替代的用途。
 
编译型和解释型语言:
计算机不能直接理解高级语言,只能直接理解机器语言,所以必须要把高级语言翻译成机器语言,计算机才能值型高级语言编写的程序。
翻译的方式有两种,一个是编译,一个是解释。两种方式只是翻译的时间不同。编译型语言写的程序执行之前,需要一个专门的编译过程,把程序编译成为机器语言的文件,比如

exe文件,以后要运行的话就不用重新翻译了,直接使用编译的结果就行了(exe文件),因为翻译只做了一次,运行时不需要翻译,所以编译型语言的程序执行效率高。
解释则不同,解释性语言的程序不需要编译,省了道工序,解释性语言在运行程序的时候才翻译,比如解释性basic语言,专门有一个解释器能够直接执行basic程序,每个语句都

是执行的时候才翻译。这样解释性语言每执行一次就要翻译一次,效率比较低。
java很特殊,java程序也需要编译,但是没有直接编译称为机器语言,而是编译称为字节码,然后用解释方式执行字节码。

 

高级语言与汇编语言:
高级语言编译好的程序可以在不同的机型但是同种操作系统上运行,为什么?汇编为什么不可以在不同的机型上运行?这是不是所谓的语言可移植性?
答:
1.在windows下生成的exe并不能在linux或手机上运行的。而如果都是windows的机器,则可以运行,因为windows操作系统对cpu等硬件特性进行了封装(难道不受cpu的构架和指令

集影响吗?为什么能够封装?操作系统对cpu等硬件是有要求的,就行要运行windows vista,必须具备某某某些硬件一样。),不论什么配置的cpu对应用程序的软件接口是一样的


2.汇编语言之所以不能再不同的机型上运行,是因为它都是针对特定的硬件编写的,没有经过操作系统的抽象,而不同的硬件具有不同的指令集。
3.但这并不是所谓的可移植性,高级语言的可移植性是指源代码可以移植到别的系统,让系统来编译语言让其可以在机器上运行,所以高级语言都是先将代码解析给操作系统,然

后操作系统再去做相应的编译,windos的exe文件和linux的.bin 文件同为2进制文件,但是这些代码是给不同系统去识别的。
系统(比如windows或linux下的c/c++编译器或者java虚拟机)能识别才能运行,才能让硬件支持,比如java它有一套自己的运行环境jvm虚拟机,它现将java文件解析为class文件
(jvm能之别的字节码,应该不是二进制吧︶︿︶),然后jvm解释这些字节码,然后交给系统,系统识别了再交给各个硬件去处理。
 所以高级语言的可移植性是基于平台的,没有平台这些高级语言是没有办法让硬件工作的,c#现在之所以不能在linux中跑,是因为他的解释其.net framework是不能安装到unix

下的.

 

原创粉丝点击