编程语言中的概念辨析

ActiveX控件:理解为一类控件,或者迷你程序。需要安装在某一容器中,比如IE或者offic,不能够独立运行。可以使用一些语言比如C或者VB编写。ActiveX控件的表现形式有可能是exe,也有可能是dll或者ocx。

Windows中的信息交换

*剪切板

*动态数据交换DDE

*对象链接与嵌入OLE

显示声明和隐式暗示

ActiveX使用的核心技术是OLE,而ActiveX这一术语实际上是MicroSoft为了把OLE技术拓展到Internet而推出的新名称。

在VB环境下,程序员可以使用内部控件和VBX组装应用程序,随后MicroSoft又引进了两项技术淘汰了原来的VBX模式,并用OLE控件对象(OCX)取代。OLE的优点是实现了不同程序设计语言组件的共享,缺点是臃肿笨拙。为了将此数据传输技术应用到Internet上,MicroSoft对其进行了精简,因此OLE别改名为ActiveX。

dll组件与exe组件的区别在于,前者是运行在进程内,后者运行在进程外。ActiveXocx或称为控件,可以图形拖动。

OLE 对象链接与嵌入

COM组建对象模型

Grid32.ocxMicrosoftGridControl


jsp

JSP是ServletAPI的一个扩展,它实现静态的HTML和动态的HTML混合编码。在被编译成Servlet之前,也是可以使用的。在JSP页面可以写Java代码,所以某种意义上讲,JSP也是Servlet。JSP把内容显示和内容生成分开,有些像asp.net。生成内容的逻辑代码被封装在JSP标识和JavaBeans组件中。编译JSP页面时,JSP页面被编译成JavaServlet。

JavaServlet

用Java语言编写的Java应用程序,可以直接嵌入到网页当中,当用户加载JSP页面时,JavaApplet会被西再到用户的计算机上执行。

asp(activeserverpage)

严格意义上说,ASP本身不能称为语言。ASP只是提供了6个对象和一个Global.asa文件,并对脚本语言(VBScript或JavaScript)进行了扩充。所以,ASP强大功能的实现,在一定程度上依赖于脚本语言的功能。只能运行在微软的IIS中。

.net

包含了一种是用开放标准的XML格式交换信息的标准化格式,XML不需要请求者具备任何有关数据存储如何保存信息的专门知识——数据都以自描述的XML格式取出。

asp.net

是一种用于创建基于Web的应用程序的编程模型,不是语言。与asp的区别:

1.语言独立性,可以使用C#,VB或J#,而典型的asp则仅限于JScript或者VBScript。

2.编译而不是解释,asp在每次页面请求时都解释编程结构,而asp.net动态地将页面编译成可以运行得非常快的本机编程指令。

3.事件驱动编程模式,asp总是自顶向下线性执行,并且HTML标记常常与程序指令混合在一起。asp.net引入了事件驱动模型,允许将代码与标记内容分离。

4.服务器控件,asp需要动态地将HTML片段代码结合在一起呈现,asp.net则可以将公共的呈现和行为封装成服务器控件。

C,B,C++,C#,J#语言

VB,VC++编译环境,在编译环境中对语言进行了一些改动,比如提供类库等。最初VB没有.net环境。

VC#,VJ#生长在.net平台上,VB也有在.net环境下的版本,所以说VB则需要指明是否是在.net平台上。在.net平台上对软件与网站的开发似乎差不多,可以利用.net下的VB或者C#,按照asp.net模型做出页面来。

以下内容参照wiki百科中的类型系统。

编译型语言 & 解释型语言

运行时要不要作翻译。编译型编译之后就不会再编译了,而解释型每次在执行的时候,都会再翻译一次。编译之后的程序有时候就不能跨平台了,但是解释型的程序,一般保存成文本文件,很容易跨平台。Java有一个中间过程文件。

强类型定义语言 & 弱类型定义语言

强类型定义语言:要求变量的使用要严格符合定义,在类型基础上构建的操作是严格定义的,如果没有定义则会报错;基本定义即为,禁止错误类型的参数继续运算;类型之间的转换不允许丢失信息(除非自定义转换或者强制类型转换)。

弱类型定义语言,指一个语言可以隐式的转换类型(或直接转型)。

**动态类型语言 &**静态类型语言

判断数据类型的时期。动态类型语言是在运行的时候才知道数据的类型,“类型”信息是保留在变量值中的,而静态类型语言在编译的时候获取数据类型,保存在“变量”中。

动态类型语言;动态语言,是指程序在运行时可以改变其结构:新的函数可以被引进,已有的函数可以被删除等(函数本身也是一种类型);PHP、Ruby、Python、Javascript

函数型语言:泛函编程,是一种编程范型,它将电脑运算视为数学上的函数计算,并且避免状态以及可变数据。函数编程语言最重要的基础是λ演算,值得注意的是函数式语言并不一定要是动态语言(dynamiclanguage)。

其实很多语言都能够函数式编程,但是可能比较费劲;而lisp就是专门为函数式编程而出现的。

类型系统的安全性

类型运算和转换的安全性。如果它不允许导致不正确的情况的运算或转换,计算机科学就认为该语言是“类型安全”的。Java与C都是强类型语言,但是Java是安全的,C是不安全的,因为c的数组可以越界。

结构化语言 & 非结构化语言

结构化语言:结构化语言就是将自然语言加上程序设计语言的控制结构就成了结构化语言

非结构化语言:一个使用非结构化语言的程序经常包含按顺序排列的命令或声明,通常每个都占用一行。每一行都有编号或者标签:这样程序中的任意行都可以被执行。GoTo相关

过程化查询 & 非过程化查询

过程化查询语言:关系代数

非过程化查询语言:关系演算

过程话的语言是CfortranpascalQbasicbasic

非过程的(面向对象的)VBVCC#delphiJava

过程语言

非过程语言

VisualStudio中的莱姆达算式是函数式语言

上面列出的很多术语也许只是一种思想,很多语言可能都能实现这种思想;但是有些语言是专门为这种思想而建立的,所以我们称这样的语言为XX语言。

在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象。(这是当今较常见的定义)在程序编码中一些包含参数的类。其参数可以代表类或对象等等。(现在人们大多把这称作模板)不论使用哪个定义,泛型的参数在真正使用泛型时都必须作出指明。

高级语言,脚本语言。

没有严格的界限,通常高级语言可以针对各种任务,而脚本语言通常(至少是设计初阶段)针对具体的任务。

Python是动态语言,是强类型定义语言(类型安全的语言);VBScript是动态语言,是弱类型定义语言(类型不安全的语言);JAVA是静态语言,是强类型定义语言(类型安全的语言)。

http://zh.wikipedia.org/wiki/%E9%A1%9E%E5%9E%8B%E7%B3%BB%E7%B5%B1

附录——语言速度对比

compare2|-|---25%median75%---|-|
Cgcc1111.011.31.741.98
C++g++111.171.281.421.71.7
FortranIntel111.241.321.862.795.74
Ada2005GNAT111.131.441.762.74.63
ATS1.11.11.341.692.073.167.14
Java7111.512.042.453.8610.81
HaskellGHC1.221.221.52.463.76.998.22
Scala1.31.322.62.874.179.5
PascalFreePascal1.521.522.512.753.314.525.63
C#Mono1.361.361.983.25.4410.6423.29
Clean2.012.012.543.535.169.0912.53
JavaScriptV8112.233.5712.6128.1829.76
LispSBCL1.141.142.073.595.6210.9311.68
OCaml1.861.862.43.784.796.146.14
F#Mono1.61.62.863.94.948.0725.64
Racket1.31.394.095.465.98.621.55
Go2.62.63.197.358.919.239.23
Clojure2.282.285.728.6914.9517.0417.04
ErlangHiPE3.123.127.917.5525.9833.433.4
SmalltalkVisualWorks5.225.2215.0621.2231.3955.982.68
RubyJRuby10.3910.3920.2828.5854.3471.2371.23
Lua1120.5230.3345.6554.0454.04
PHP1.131.139.7339.3567.7198.3298.32
Ruby1.96.916.9110.5155.199.45232.87272.18
Python31.241.247.9155.45109.44165.38165.38
Perl2.162.1614.8269.33110.72231.46231.46
Mozart/Oz7.397.3941.6274.77105.06154.92154.92

数据来源:http://shootout.alioth.debian.org/u32/benchmark.php?test=all&lang=all