Computer Languages

1. Types of Computer Languages

1.1. ADL(架构描述语言)

在软件工程团体,架构描述语言(ADL)是一种计算机语言,用来描述软件或系统架构。这意味着如果是技术性架构,该架构必须被清楚的传达给软件开发者。功能架构下,该软件架构必须被清楚的传达给利益相关者和企业工程师。一些软件工程团体开发了若干ADL,如ACME(CMU开发),AADL(SAE标准化),C2(UCI开发),Darwin(英国伦敦帝国学院开发)和Wright(CMU开发) 。

目前还没有足够权威的工业标准,而且UML在逐渐渗入ADL领域。

1.2. HDL(硬件描述语言)

在电子学中,硬件描述语言(HDL)是用来描述电子电路(特别是数字电路)功能、行为的语言,可以在寄存器传输级、行为级、逻辑门级等对数字电路系统进行描述。随着自动化逻辑综合工具的发展,硬件描述语言可以被这些工具识别,并自动转换到逻辑门级网表,使得硬件描述语言可以被用来进行电路系统设计,并能通过逻辑仿真的形式验证电路功能。设计完成后,可以使用逻辑综合工具生成低抽象级别(门级)的网表(即连线表)。

硬件描述语言在很多地方可能和传统的软件编程语言类似,但是最大的区别是,前者能够对于硬件电路的时序特性进行描述。硬件描述语言是构成电子设计自动化体系的重要部分。小到简单的触发器,大到复杂的超大规模集成电路(如微处理器),都可以利用硬件描述语言来描述。常见的硬件描述语言包括Verilog、VHDL等。

1.3. Markup Languages(标记语言)

Markup Languages是一种将文本(Text)以及文本相关的其他信息结合起来,展现出关于文档结构和数据处理细节的计算机文字编码。与文本相关的其他信息(包括例如文本的结构和表示信息等)与原来的文本结合在一起,但是使用标记(markup)进行标识。

1.3.1. 标志语言的分类

标志语言通常可以分为三类:表示性的、过程性的以及描述性的。

1.4. Modeling Languages(建模语言)

建模语言是用一组一致性的规则来表达结构中的信息、知识或系统的结构,可以是任何人工语言。这些规则用来解释结构中组件的意义。

1.5. Programming Languages

编程语言是用来定义计算机程序的形式语言。它是一种被标准化的交流技巧,用来向计算机发出指令。一种计算机语言让程序员能够准确地定义计算机所需要使用的数据,并精确地定义在不同情况下所应当采取的行动。

编程语言的描述一般可以分为语法及语义。语法是说明编程语言中,哪些符号或文字的组合方式是正确的,语义则是对于编程的解释。语言的实现一般都要包含类库和运行环境。

1.5.1. Syntax

语法

1.5.2. Semantics

语义是指语言的意义,而不是他们的形式(语法)。

1.5.2.1. Static semantics(静态语义)

静态语义所定义的结构及文本的限制,很难或不可能在语法形式上进行表达。对于编译语言,静态语义本质上包括需要在编译时进行检查的那些语义规则。举例来说,需要检查每个标识符在使用之前是否进行了声明。

其他形式的静态分析,如数据流分析等也是静态语义的一部分。如Java和c#等语言有明确分配分析(definite assignment analysis,数据流分析的一种形式),作为他们静态语义的一部分。

1.5.2.2. Dynamic semantics(动态语义或执行语义)

一个动态语义(也称为执行语义)的语言定义了语言中各种结构何时以及如何产生一个程序的行为。一旦数据被指定,机器根据要求对数据执行操作。

1.5.2.3. Type system(类型系统)

类型系统定义了一个编程语言如何对值和表达式进行分类类型、如何操纵这些类型以及它们如何相互作用。

1.5.3. Library & Run time(类库)

大多数编程语言都有一个相关联的核心库(有时称为“标准库”,尤其是如果它是包括作为出版语言标准)的一部分,这是传统语言实现都包括的内容。核心库通常包括定义常用的算法、数据结构、输入和输出机制。

针对语言的具体应用场景和流行度不同,有些语言拥有海量的第三方类库。

1.5.4. Usage(用法)

电脑程序可能执行一个不需要人工交互的批处理过程,也可以通过命令解释器在交互式模式下处理用户输入的命令。在这里的“命令”仅仅是简单的脚本程序,在运行的过程依次执行。

当一种语言无须编译即可通过解释器(比如Unix shell或其他命令行界面)来执行命令,它被称为是脚本语言

有一类脚本语言被称作胶水语言(Glue languages),例如Shell ScriptPythonPHPJavaScriptXSLT等。

1.6. Query Languages(查询语言)

查询语言泛指向数据库或信息系统查询的各种编程语言。查询语言必须要能表达所有关系代数所能表达的查询,这样才被称为关系完整的(Relational complete)。

1.7. Specification Languages(规约语言)

规约语言是在计算机科学领域的使用的一种形式语言。编程语言是用于系统实现的、可以直接运行的形式语言。与之不同,规约语言主要用于系统分析和设计的过程中。

规约语言通常是不能直接运行的,虽然有人在进行这方面的研究。规约语言在比编程语言高的多的层次上描述系统,因此,在规约语言被实际实现之前,必须经过一个精化(不断添加实现细节)的过程。

规约语言的一个重要应用是允许创建程序正确性的证明(参见自动定理证明)。

1.8. Style sheet Languages(样式表语言)

1.9. Transformation Languages

There are a number of XML transformation languages. These include XSLT, XQuery, STX, FXT, XDuce, CDuce, HaXml, XMLambda, and FleXML.

2. 语言学习记录

TIOBE Index: 语言流行度排行

2.1. C

2.2. Java

2.3. Python

2.3.1. Tools

2.3.2. Services

2.4. Shell Script

2.5. JavaScript

2.5.1. Tools & Others

2.6. Modeling Languages

建模语言是用一组一致性的规则来表达结构中的信息、知识或系统的结构,可以是任何人工语言。这些规则用来解释结构中组件的意义。

2.7. W3C Recommandations(W3C推荐标准)

W3C颁布的互联网技术标准,例如

2.8. Query Languages

查询语言泛指向数据库或信息系统查询的各种编程语言。查询语言必须要能表达所有关系代数所能表达的查询,这样才被称为关系完整的(Relational complete)。

3. Reference


CategoryDev

MainWiki: Computer_Languages (last edited 2013-07-11 15:01:15 by twotwo)