zoukankan      html  css  js  c++  java
  • 【编译器】斯坦福公开课学习1

    课程地址:https://class.coursera.org/compilers-004/lecture

    01-01:

    1.实现一门程序设计语言有两种方式:编译器解释器

    2.解释器是在线的,输入程序和数据,解释器给出结果。

    3.编译器是离线的,输入程序,编译器生成可执行文件,可执行文件根据数据生成结果。

    4.编译器包括五个部分:词法分析、语法分析、语义分析(类型作用域检查等)、代码优化(减少时间内存)、代码生成(源程序翻译为目标代码)

    01-02:

    词法分析:将代码拆分成一个个token(标记)

           This is a sentence.

    语法分析:分析代码的组成结构,用语法树的结构把token抽象成一个个部分。 类似于将句子划分为主谓宾结构。

    语义分析:编译器难以理解程序的语义,但是会做代码不一致检查。对于变量指代不清,前后矛盾等情况会报错。

    01-03:

    1.为什么存在这么多语言?

      因为在不同的应用领域,对语言的需求是不同的。在科学计算领域,需要能够很好的支持浮点数、矩阵等(FORTAN)。在bussiness领域,需要很好的支持和保存数据(SQL)。在系统领域需要对数据在底层有较好的控制(C/C++)。

    2.为什么要设计新的语言?

      语言教学需要花费大量的时间。

      越是广泛使用的语言,其迭代速度越慢,因为少量的修改需要大量的使用者来学习。

      新语言可以快速迭代,因为只有少量使用者。

      当出现一个新的应用领域时,老的语言难以覆盖其应用场景,这时新的语言可以通过快速迭代来实现对新场景的支持。

    3.什么是一个好的语言?

         没定论。

  • 相关阅读:
    random模块学习笔记
    python3 控制结构知识及范例
    eclipse运行python 安装pydev 版本匹配问题
    接口自动化CSV文件生成超长随机字符串--java接口方法
    lucene 3.0 + 盘古分词 + 关键字高亮 + 分页的实现与demo
    Loading a Different jQuery Version for IE6-8
    选择排序和冒泡排序
    Bootstrap Tabs with AJAX snippet
    jquery.qrcode.js
    validator.w3.org for html5
  • 原文地址:https://www.cnblogs.com/dplearning/p/5370210.html
Copyright © 2011-2022 走看看