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.什么是一个好的语言?

         没定论。

  • 相关阅读:
    Django-模板系统、session、web框架、内置分页
    Django-中间件、csrf(跨站请求伪造)、auth认证模块
    Django-orm数据库查询语句
    Django视图函数
    Django-URL路由配置
    Django基础介绍
    JavaScript、jQuery操作页面
    JavaScript基础
    css属性设置-显示与隐藏、盒子阴影、固定定位
    css高级选择器
  • 原文地址:https://www.cnblogs.com/dplearning/p/5370210.html
Copyright © 2011-2022 走看看