程序语言的分类
来源:互联网 发布:小女孩手表小猫淘宝 编辑:程序博客网 时间: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
下的.
- 程序语言的分类
- 程序语言的分类 和 汇编型、编译型、解释型语言的区别
- 程序语言的分类 和 汇编型、编译型、解释型语言的区别
- 程序语言的感想
- 程序语言的战争
- 我的程序语言实践
- 我的程序语言实践
- 我的程序语言实践
- 我的程序语言实践
- 我的程序语言实践
- 我的程序语言实践
- 我的程序语言实践
- 我的程序语言实践
- 我的程序语言实践
- 对程序语言的认识
- 我的程序语言实践
- 我的程序语言实践
- 我的程序语言实践
- 笑话
- Hibernate映射导致的几个异常
- repeater控件实现 编辑 删除等 操作
- 怎样将SQL SERVER表里的数据插入到Access表的指定列中?
- 逝去的岁月,回忆的青春
- 程序语言的分类
- 根据改变员工状态删除员工与组织机构关系表中的记录
- eboot 笔记
- 自定义标签的简单实现
- Effective C++笔记: 构造/析构/赋值运算(二)
- [API学习]文件系统驱动器信息
- rose7破解
- Java使用JNI调用dll
- Blueprint:一个Flash Builder代码示例的扩展