编程语言设计原理小结

  • 了解编程语言设计原理有什么用?
  1. 增强表达想法的能力
  2. 增强选择合适语言的能力
  3. 增强学习新语言的能力
  4. 更好地理解语言的实现
  • 编程领域
  1. 科学研究应用 如 Fortran 计算大量的浮点数
  2. 商业应用 如 COBOL 处理会计报告
  3. 人工智能领域 如 LISP Prolog
  4. 计算机系统编程 如 C/C++ 对性能要求非常高
  5. Web软件应用 如 HTML, PHP , JAVA 等
  • 对一个语言评测的标准

    • Readability 可读性
      • 这个比较好理解,指的是这个语言的代码是否足够好理解,是否存在歧义(比如 不必要的操作符重载? e.g. C的指针与乘法符号),控制语句,数据类型,结构,语法(臭名昭著的 a++ 和 ++a)等。
    • Writability 表达性
      • 代码写起来是否简易,支持抽象的能力,表达能力(prolog 可以用5行代码写一个prolog的interpreter)
    • Reliability 稳定性
      • 类型检查,异常处理,别名问题(aliasing),可读性表达性不足也会导致稳定性差。
    • Cost 整体代价
      • 学习成本,写代码的效率,编译效率,执行效率,维护等
  • 编程语言设计的两大影响因素

    1. 计算机架构

      • 即 von Neumann architecture,数据和程序都存在内存中, CPU与内存分开,靠bus传递信息
      • von Neumann architecture
      • 因此,多数语言都有 变量,赋值 这些概念
      • CPU和内存直接的信息通道传递速度远比CPU处理速度慢,这成了最大的瓶颈。
    2. 编程方法论

      • 如面向过程,面向对象,函数式编程等
  • 编程语言的三种实现

    1. 编译型
      • 程序被编译转换成机器代码
      • 优点:程序运行速度快,效率高
      • 缺点:编译时间相对较长
    2. 解释型
      • 程序运行在解释器中,解释器对于这种语言相当于一个虚拟的计算机。
      • 优点:非常易于debug,因为错误信息可以即时显示
      • 缺点:执行效率低;无论之前执行过多少次,每个语句都需要被decode后才能执行; 通常需要更多的内存空间
    3. 混合实现
      • 先编译成一个中间语言,再运行在解释器中
      • 优点:效率比纯解释型高,因为高级语言被编译成了中间语言,也就是只decode一次 ; 可移植性高 portability,只要有各平台的解释器,程序只需要编译一次,就能在各平台中执行(比如Java)。
      • JIT (just-in-time)系统,可以将按需将代码编译成机器码,以便之后反复使用,提高执行效率。

转载于:https://my.oschina.net/Bruce370/blog/887892

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值