漫谈计算机语言

简介:

面对需求人员不断提出的变态需求,软件开发人员的主要工作就是将需求人员口中或文档中的自然语言翻译成计算机能够理解的形式语言自然语言指的是人类的语言,比如汉语、英语等,它具有多义性(在不同的上下文中,意义是不同的),冗余性(语法错了一点 并不会让人引起误解)。而形式语言是用精确的数学或机器可处理的公式定义的语言,例如计算机编程语言,它的特点就是语法非常严格,并不具有多义性和冗余性。

计算机编程语言可以分为高级语言低级语言高级语言编程更加容易、维护容易,具备可移植性(一份代码可以运行在多个平台上),典型代表 :Java、Python、C、C++、Ruby、C#等。低级语言只能在某个平台上运行,不具备可移植性,比如说我们在Intel x86编写的代码,无法在PowerPC或ARM上运行,它的典型代表有机器语言和汇编语言。

高级语言中又可以分为解释型语言(interpreting)编译型语言(compiling)。解释型语言通过解释器读入高级语言写的指令,然后解释执行,Ruby、Python、PHP都是解释型语言。编译型语言使用编译器把高级语言变成目标代码。下面举个例子来介绍解释型语言和编译型语言的区别。

sum = x*4  - y

针对上面这行代码,计算机首先要做词法分析,将代码变成一个个token。下图中的每一行表示一个token。
image.png

再获得token之后,进行语法分析 构建抽象语法树(AST)。
image.png

解释型语言会对抽象语法树进行解释执行,而编译型语言会继续进行语义分析中间代码生成 代码优化目标代码生成

目前很多语言都是混合了解释和编译,例如Java,如下图所示,Java编译器先把Java编译成Class文件,然后在各个JVM上解释执行,由于每个平台对应一个JVM,因此Java是跨平台的。由于2-8原则的存在,JVM发现一段代码经常执行,那么,JVM将这段代码编译成本地代码,即如果有热点代码,就编译成本地代码(Native Code)。

image.png

计算机高级语言还可以分为静态语言动态语言。静态语言是代码经过编译之后,类型就确定了,典型代表就是Java。静态语言可以通过IDE来进行类型错误检查。而动态语言类型错误无法在编译期检查出来,会在运行期出现。为了帮助大家更好的理解,直接上代码。当执行test(new Women()),IDEA会报告编译出错。为了消除这个错误,我们可以抽象出一个对象Person,然后让ManWomen都继承于这个Person,而且void test(Person p),这样一来既消除了错误,又维护了原有的功能。

class Man {
  public void eat(){
    System.out.println(" man eat!");
  }
}
class Women {
  public void eat(){
    System.out.println(" Women eat!");
  }
}

void test(Man m){
  m.eat();
}

如何定义一门语言

通过上述内容的介绍,我们知道了计算机语言的分类,那么,我们该如何
定义一门语言呢?首选我们需要定义BNF。通过BNF来判定源代码是否符合该规范。下面,以Java的Class的BNF为例。

  • 修饰符(modifier)是“public、private、protected、static等”关键字(keyword)之一;
  • 修饰符之后是class关键字,class之后是标识符(identifier),标识符是有“a...z $..”组成
  • 可选的extends
  • 可选的implements

具体实例


public class Employee extend Person{
    ...
    略
    ...

}

编译器首先读取public这个token,同时,由于编译器事先知道BNF,那么 它知道public是modifier是符合语法的。

然后,编译器读入class,同BNF进行比较,符合语法的。直到编译器读入extend,发现和BNF规定的不相符,提示错误。

如果源代码符合BNF规则,则继续进行词法分析、语法分析、语义分析等等,这里就不做过多介绍了,我会在后续文章中详细介绍的。

所有语言的基本逻辑

  • 顺序
  • 分支(if else,switch)
  • 循环(while 、for)

相关文章
|
6月前
|
人工智能 前端开发 Java
程序设计语言
一、程序设计语言 程序设计语言是一种用于描述计算机程序的形式化语言。它包括一套语法规则和语义规则,用于定义计算机程序的结构和行为。程序设计语言可以用来编写各种类型的程序,包括应用程序、系统软件和嵌入式系统。 常见的程序设计语言包括: 1. C语言:一种通用的高级程序设计语言,广泛用于系统软件和嵌入式系统的开发。 2. C++语言:C语言的扩展,支持面向对象编程,被广泛应用于应用程序和游戏开发。 3. Java语言:一种跨平台的高级程序设计语言,广泛用于企业级应用程序和移动应用程序的开发。 4. Python语言:一种简单易学的高级程序设计语言,被广泛应用于数据分析、人工智能和Web开发等领域。
67 0
|
1月前
|
人工智能 数据挖掘 程序员
什么是计算机语言
计算机语言,又称为程序设计语言,是人与计算机之间交互的桥梁,它使得人类能够以一定的规则和结构向计算机发出指令,从而使计算机完成特定的任务。计算机语言的发展经历了多个阶段,从最初的机器语言、汇编语言,到后来的高级语言,再到现代的面向对象编程语言和脚本语言,不断适应着计算机技术的快速发展和人类需求的多样化。
9 0
|
1月前
|
自然语言处理 算法 搜索推荐
用计算机语言表示算法
在计算机科学中,算法是解决问题的核心步骤和方法的描述。然而,算法本身并不直接执行;它们需要被转换成计算机可以理解和执行的指令,这通常是通过编写代码来实现的。不同的计算机语言提供了不同的方式来表示和实现算法。本文将讨论如何使用计算机语言来表示算法,并通过一个具体示例来展示这个过程。
14 0
|
8月前
|
XML Java 编译器
浅谈计算机语言
计算机语言分类
48 0
|
5月前
|
小程序 开发者
计算机语言如何学习
计算机语言如何学习
49 2
|
5月前
如何更好的学习一门计算机语言
如何更好的学习一门计算机语言
30 1
|
6月前
|
存储 程序员
程序设计语言基础知识
程序设计语言是计算机程序员用来编写计算机程序的语言。它们是由计算机科学家和工程师开发的,用于描述计算机程序的结构、语法和语义。程序设计语言是计算机科学中的核心概念之一,因为它们允许程序员使用抽象概念来描述计算机程序,从而使程序员能够更容易地编写、理解和维护程序。本文将介绍程序设计语言的基础知识,包括语法、语义、数据类型和控制结构等。 1. 语法 程序设计语言的语法是描述程序结构的规则集合。语法规则定义了程序中的元素,如变量、常量、运算符、函数和语句等,并规定了这些元素如何组合成程序。语法规则通常由一组文法规则来描述,这些规则用于指定程序中的符号、终止符号和非终止符号等。例如,下面是一个简单
78 0
|
7月前
|
JavaScript 前端开发 Java
编程语言常识
编程语言常识
|
存储 自然语言处理 编译器
【程序设计语言】基础知识
【程序设计语言】基础知识
198 0
|
Java 程序员 编译器
Yin 语言:学习设计和实现一门编程语言
大多数语言没能吸取历史教训 大多数语言受到宗教性的推崇,拥有一个过于狂热的社区,因此难以改正自己的错误 有些语言为程序员做得太少,有些语言为程序员做得太多 有些语言提供了太少的抽象,有些语言提供了太多的抽象 有些语言太不顾及可用性,游戏语言过于重视可用性而忽视了可用性之外的东西 有些语言从数学和逻辑那里学得太少,有些语言学得太多 有些语言太不顾及类型,有些语言对类型考虑过多
514 0
Yin 语言:学习设计和实现一门编程语言

热门文章

最新文章