五种常见的计算机⾼级语⾔,[转]计算机语⾔的种类总结
计算机语⾔的种类总结内容导读: 今天来总结⼀下语⾔的种类,语⾔的种类从不同的⾓度会有不同的划分,⽐如机器语⾔、汇编语⾔、⾼级语⾔、低级语⾔(机器语⾔及汇编语⾔)、编译语⾔、解释型语⾔、脚本语⾔、动态语⾔、静态语⾔、函数式语⾔(⽐如f#及scala)、命令式语⾔、⾯向对象语⾔(⽐如c++...
今天来总结⼀下语⾔的种类,语⾔的种类从不同的⾓度会有不同的划分,⽐如机器语⾔、汇编语⾔、⾼级语⾔、低级语⾔(机器语⾔及汇编语⾔)、编译语⾔、解释型语⾔、脚本语⾔、动态语⾔、静态语⾔、函数式语⾔(⽐如f#及scala)、命令式语⾔、⾯向对象语⾔(⽐如c++及java)、过程式语⾔、混合型语⾔(介于编译型语⾔与解释型语⾔之间,⽐如java与c#)等等,语⾔的种类繁多,五花⼋门什么都有,真正的全部总结全⾯不是⼀件容易的事情,这⾥我只是起个抛砖引⽟的作⽤,希望对⼤家有所帮助。
另外关于机器语⾔、汇编语⾔及⾼级语⾔的资料,我以前写过⼀篇⽂章,在这⾥就不说很详细了。
1.动态语⾔及静态语⾔
动态语⾔,是指程序在运⾏时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等在结构上的变化。⽐如众所周知的ecmascript(javascript)便是⼀个动态语⾔。除此之外如ruby、python等也都属于动态语⾔,⽽c、c++等语⾔则不属于动态语⾔。
所谓的动态类型语⾔,意思就是类型的检查是在运⾏时做的,⽐如如下代码是不是合法的要到运⾏时才判断(注意是运⾏时的类型判断):
defsum(a,b):
returna+b
via:
可以简单的理解为直接被解释执⾏的语⾔称为动态语⾔。⽽需要编译环境将程序转换为其它的编码再执⾏的语⾔称为静态语⾔。
当前静态语⾔有:java、c/c++、c#、delphi、vb等。
网页设计html代码翻译动态语⾔有:asp、php、cgi、lisp、perl、python,smalltalk、ruby等。
via:
2.函数式编程语⾔
f#是微软平台上⼀门新兴的函数式编程(fp,functionalprogramming)语⾔,作为微软唯⼀的fp语⾔,
其位置的特殊性引起了很多⼈的关注,⽽微软也致⼒于将f#打造成为平台的顶峰语⾔,我们也期待着f#能够给函数式编程语⾔带来⼀次重⼤⾰命。
via:
scala是⼀种基于java的通⽤编程语⾔,旨在推⼴函数式编程,它编译成java字节码,在java虚拟机(jvm)上运⾏。虽然scala本质上是⼀个函数式编程语⾔,但它也体现了⾯向对象语⾔的所有必要元素,这⼀点使函数式编程特性对编程社区的吸引⼒更⼤。
f#是由微软主持开发的⼀个通⽤编程语⾔,它是通⽤运⾏时(clr)的⼀部分,它是以另⼀个正统的函数式编程语⾔ocaml为基础的,微软在平台中引⼊f#除了⼈们对函数编程的兴趣不断上升外,另⼀个重要的原因是函数编程⾮常适合⾼性能和并⾏计算。虽然它的语法清晰,但f#实际上混合了函数式编程语⾔,命令式语⾔和⾯向对象语⾔的语法特性,它的⾯向对象和命令式特性⼤部分都与平台兼容,f#的三重性质也很实⽤,它允许程序员使⽤任意结合这三个编程语⾔的特性使⽤。
via:
pyton及ruby也可以进⾏函数式编程
python函数式编程到底有什么⽤呢?我想实际的好处就是可以将更好的描述问题本⾝,⽽不是描述解
决问题的操作步骤。
via:
3.命令式程序设计语⾔
命令式程序设计语⾔是基于动作的语⾔,以冯诺依曼计算机体系结构为背景。机器语⾔及汇编语⾔是最早的命令式语⾔。在这种语⾔中,计算机被看做是动作的序列,程序就是⽤语⾔提供的操作命令书写的⼀个操作序列。⽤命令式程序设计语⾔编写程序,就是描述解题过程中每⼀步的过程,程序的运⾏过程就是问题的求解过程,因此也称为过程式语⾔。fortran、algol、cobol、c、ada、pascal等都是命令式程序设计语⾔。
via:
4.⾯向对象语⾔
⾯向对象语⾔(object-orientedlanguage)是⼀类以对象作为基本程序结构单位的程序设计语⾔,指⽤于描述的设计是以对象为核⼼,⽽对象是程序运⾏时刻的基本成分。语⾔中提供了类、继承等成分。
⾯向对象语⾔借鉴了20世纪50年代的⼈⼯智能语⾔lisp,引⼊了动态绑定的概念和交互式开发环境的
思想;始于20世纪60年代的离散事件模拟语⾔simula67,引⼊了类的要领和继承,成形于20世纪70年代的smalltalk。
⾯向对象语⾔的发展有两个⽅向:⼀种是纯⾯向对象语⾔,如smalltalk、eiffel等;另⼀种是混合型⾯向对象语⾔,即在过程式语⾔及其它语⾔中加⼊类、继承等成分,如c++、objective-c等。
⾯向对象语⾔刻画客观系统较为⾃然,便于软件扩充与复⽤。有四个主要特点:
⑴识认性,系统中的基本构件可识认为⼀组可识别的离散对象;
(2)类别性,系统具有相同数据结构与⾏为的所有对象可组成⼀类;
(3)多态性,对象具有惟⼀的静态类型和多个可能的动态类型;
(4)继承性,在基本层次关系的不同类中共享数据和操作。
其中,前三者为基础,继承是特⾊。四者(有时再加上动态绑定)结合使⽤,体现出⾯向对象语⾔的表达能⼒。
⼀般认为,较典型的⾯向对象语⾔有:
simula67,⽀持单继承和⼀定含义的多态和部分动态绑定;
smalltalk⽀持单继承、多态和动态绑定;
eiffel,⽀持多继承、多态和动态绑定;
c++,⽀持多继承、多态和部分动态绑定。
java,⽀持单继承、多态和部分动态绑定
五种语⾔涉及概念的含义虽基本相同,但所⽤术语有别。
基于类的⾯向对象语⾔是⾯向对象世界⾥的主流。它包括:
simula,第⼀个⾯向对象语⾔
smalltalk,第⼀个⽀持动态类型的语⾔
c++,它的⼤部分基于类的特性继承⾃simula.等等等等。
与基于类的语⾔相对应的是基于对象的⾯向对象语⾔。这⾥“基于对象”的概念和把visualbasic叫做基于对象的概念是不同的。这⾥
的“基于对象”是指⼀个只以对象为中⼼,没有类的概念的语⾔,类似python之类的语⾔。
via:
5.过程式语⾔
过程式语⾔与⾯向对象语⾔,到底有什么区别?可能是初学者常碰到的问题。简单来说,过程式语⾔整个是构建在动词上的语⾔。⽐如,最常见的经典过程式语⾔-c语⾔,打印⼀条语句的语法是printf(),这个⽅法的名字本⾝就是⼀个动词,这个动词强调了⼀个动作的过程,所谓过程式就是这个意思。
同样的⽅法在⾯向对象的java中就是这样写:system.out.println();前⾯说过⾯向对象语⾔就是构建在名词基础上的系统,对象就是⼀个名词。⼤家都知道对象封装了操作和属性,所以system是⼀个对象,后⾯跟上分类在out⽬录下的⽅法println。这就是⾯向对象的写法。
via:
6.解释型语⾔
计算机不能直接理解⾼级语⾔,只能直接理解机器语⾔,所以必须要把⾼级语⾔翻译成机器语⾔,计算机才能执⾏⾼级语⾔编写的程序。
翻译的⽅式有两种,⼀个是编译,⼀个是解释。两种⽅式只是翻译的时间不同。编译型语⾔写的程序执⾏之前,需要⼀个专门的编译过程,把程序编译成为机器语⾔的⽂件,⽐如exe⽂件,以后要运⾏的话就不⽤重新翻译了,直接使⽤编译的结果就⾏了(exe⽂件),因为翻译只做了⼀次,运⾏时不需要翻译,所以编译型语⾔的程序执⾏效率⾼。
解释则不同,解释性语⾔的程序不需要编译,省了道⼯序,解释性语⾔在运⾏程序的时候才翻译,⽐如解释性basic语⾔,专门有⼀个解释器能够直接执⾏basic程序,每个语句都是执⾏的时候才翻译。这样解释性语⾔每执⾏⼀次就要翻译⼀次,效率⽐较低。
via:
7.脚本语⾔
1).脚本语⾔(javascript,vbscript等)介于html和c,c++,java,c#等编程语⾔之间。
html通常⽤于格式化和链结⽂本。⽽编程语⾔通常⽤于向机器发出⼀系列复杂的指令。
2).脚本语⾔与编程语⾔也有很多相似地⽅,其函数与编程语⾔⽐较相象⼀些,其也涉及到变量。与编程语⾔之间最⼤的区别是编程语⾔的语法和规则更为严格和复杂⼀些.
3).与程序代码的关系:脚本也是⼀种语⾔,其同样由程序代码组成。
注:脚本语⾔⼀般都有相应的脚本引擎来解释执⾏。他们⼀般需要解释器才能运⾏。python、javascript,asp,php,perl,nuva都是脚本语⾔。c/c++编译、链接后,可形成独⽴执⾏的exe⽂件。
4).脚本语⾔是⼀种解释性的语⾔,例如python、vbscript,javascript,installshieldscript,actionscript等等,它不象c\c++等可以编译成⼆进制代码,以可执⾏⽂件的形式存在.
脚本语⾔不需要编译,可以直接⽤,由解释器来负责解释。
5).脚本语⾔⼀般都是以⽂本形式存在,类似于⼀种命令.
举个例⼦说,如果你建⽴了⼀个程序,叫,可以打开.aa为扩展名的⽂件.
你为.aa⽂件的编写指定了⼀套规则(语法),当别⼈编写了.aa⽂件后,你的程序⽤这种规则来理解编写⼈的意图,并作出回应.那么,这⼀套规则就是脚本语⾔.
via:
8.编译型语⾔
编译型语⾔写的程序执⾏之前,需要⼀个专门的编译过程,把程序编译成为机器语⾔的⽂件,⽐如exe
⽂件,以后要运⾏的话就不⽤重新翻译了,直接使⽤编译的结果就⾏了(exe⽂件),因为翻译只做了⼀次,运⾏时不需要翻译,所以编译型语⾔的程序执⾏效率⾼。
这⾥提⼀下编译型语⾔和解释型语⾔的区别:解释性语⾔在运⾏程序的时候才翻译,⽐如解释性basic语⾔,专门有⼀个解释器能够直接执⾏basic程序,每个语句都是执⾏的时候才翻译。这样解释性语⾔每执⾏⼀次就要翻译⼀次,效率⽐较低。
via:
9.以另⼀个⾓度将程序语⾔分为5类
1)、webpagescriptlanguages
就是⽹页代码,⽐如html、javascript、css、asp、php、xml都应该属于此类(照蔡的意思,html不应该属于anguages的,可能他觉得太简单了吧,不过我觉得html也应该算的,⼤家爱听谁的就听谁的好了,这个不重要)
2)、interpretedlanguages(解释型语⾔)
包括perl、python、rebol、ruby等,也常被称作script语⾔,通常被⽤于和底下的操作系统沟通。照蔡
的意思,每个⼈⾄少应该学会⼀套这类的语⾔。这类语⾔的缺点是效率差、源代码外露——所以不适合⽤来开发软件产品,⼀般⽤于⽹页服务器。
3)、hybridlaguages(混合型语⾔)
代表是java和c#。介于解释型和编译型之间。蔡认为c#是最重要的语⾔,值得期待其后续发展;⾄于java,蔡叫看他的《sleeplessinjava》——我倒!
4)、compilinglanguages(编译型语⾔)
c/c++,java都是编译型语⾔。蔡说c++很复杂,要成为⾼⼿没三五年是不⾏的(就凭这句话,我决定向java投降),虽然如此,但真正要成为⾼⼿的都应该懂c/c++。
关于delphi,蔡说如果想要跨linux和windows平台的语⾔,则delphi似乎是最好的选择。
5)、assemblylanguages(汇编语⾔)
汇编语⾔是最接近于硬件的语⾔,不过现在⼏乎没多少⼈⽤了。
程序语⾔学习顺序建议
如果完全没有程序经验,可照这个顺序:javascript——解释型语⾔——混合型语⾔——编译型语⾔——汇编(如果需要的话)
⽤业界流⾏⼀句话做结尾“真正的程序员⽤c++,聪明的程序员⽤delphi”,那么,什么样的程序员⽤java呢?
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论