听说大三的编译原理很难很难,请问各位师兄师姐有没有什么编译原理的学习资源,能在大二下的暑假提前学一学呢?或者说,如果想在大二下的暑假提前学一学,各位师兄师姐有什么建议吗?非常感谢!

    pytho跟着撸一个,参考https://ruslanspivak.com/lsbasi-part1/

    zwrong 说大三的编译原理很难很难,这件事情值得分析。我理解是,“编译原理很难”这个问题不出在编译原理课程本身,而是之前的很多基础课没学好,包括:数据结构与算法、编程、离散数学等等。特别是,如果在大一大二没有建立起正常的学习观念,没有建设好自己的开发平台,没有独立阅读、独立做项目的经验等等,都会使得这门需要考察综合实力的课程显得很难。

    我建议反而是在暑假时候好好反省一下自己的学习,查漏补缺。当然,预习也不失为一种好的方法。但是,具体到预习什么,这其实就是一个大问题了。以前编译原理动辄龙书,可是现在选择很多很多。可能需要某同学专门开个帖子讨论一下目前在网络上可以获取的资源。 @MingLLuo 大佬可以做吗?

      Bintou 我理一下吧,暑假是有这方面的学习安排,之前也整理了一部分🥲
      看过学院的编译原理PPT,内容偏基础,压缩了很多内容,难的原因可能是作业/考试以及实践环境之类的原因吧,可以呼几个师兄师姐出来~

        龙书的话可以看这个,还蛮不错的,解释的很清晰。视频可能略有些枯燥,但可能也是因为这门课的视角相对要抽象一些,老师也在努力去解释一些相对难的概念。几年过去到现在只记得个大概了,不过编译器语法转换的视角潜移默化有帮到我不少(比如最近在研究的 论坛帖子解析模块)。

        哈工大的编译原理课程 - 0xFFFF

        ps: 我当时看这个的时候在期末速成,后面被 hyl 老师挂了,年底又重新速成了一次

        要说前车之鉴的话,就是一定要注意预留好学习时间,有个比较稳定学习节奏(像 Bintou 老师楼上说的,正确的学习观念),难不难不过是时间和精力或方法问题,也是个磨练心性的过程。

        那段时间我在 高数重修 + 鹅厂实习 + 大三下五门大课,编译原理就只能先战略放弃了。

        19 天 后

        zwrong
        下面分享的信息用作一个个人学习情况阶段信息记录(谨慎阅读)

        个人情况
        (平时不怎么听老师讲课 小测前集中精力学一段时间 一共是三次小测 课后测有两次 最后一个期末考试)
        (广外计科讲的很基础 只讲到了中间代码生成这部分而且比较简单 考点也不多)
        大题考了应该两趴(忘记差不多了)
        一个文法 消除左递归 一个自顶向下的文法分析表(忘了名字是啥了) 手写项目规范族DFA 手写SLR文法分析表
        最后写一个包含布尔表达式的程序控制语句的文法翻译的程序控制表

        入门方法
        (负到零的过程)
        学习动机:
        可以利用实打实卷编译原理课程绩点当作一个自学动机 中间会发现一些非常有趣有用的理论工具(自己目前技术太菜 没怎么用到 悲伤 但是缓解了自己学习编程语言的方法依赖 就是不那么恐惧一下子要接触那么多编程语言了)
        (实践证明过把学习编译原理中有用的东西作为目标在自己技术能力很菜的时候效率是很低的)

        学习方法:
        (没有顺序)(想怎么学就怎么学)
        先紧着自己学校的样卷去找相关题刷
        时间充足刷B站各种大学的期末速成题
        边刷题边查ppt边查各种教材 每道题都清楚怎么搞
        刷题目的是一步一步理解课本上的抽象理论直到完全能看懂 能使用抽象理论刷题
        (尽量少做辅助记忆的笔记 有些符号手写容易错 自己手敲latex效益也没那么高 最后手敲笔记被用频率很低)
        借助各种工具来简化手动创建文法DFA(项目集规范族?) 各种文法分析表 程序控制表的过程

        深入巩固
        (个人想法)
        (一定要做要做 我自己没做 抽象理论差不多都忘记了 不过有方法的话 到时候拾起来可能也比较容易)
        如果时间更充足的话 估计可以做出一些有趣的东西
        (我时间不够了 没做)(应该可以参考一下南大甜品专家的课程 资源比较丰富)

        学习习惯
        (也是自己的目标)(感受比较碎 没什么体系)
        减少笔记依赖
        减少各种依赖(包括方法, 老师, 同学, 环境, 资源)(上述刷题方法可能只能作为平时学习的借鉴 准备期末和准备平时学习的压力和动机水平都不一样 除非自己能造一个类似的场景出来 上述方法作为一个手段参考吧)
        利用起来老师提供的各种资源
        忌打时间战术 一天有一天的结果(暑假两个月完全能把编译原理学得很熟练了)(开学时间四个月 去头去尾就两个月)
        碎片时间解决别人的提问继续深入巩固(感觉会比较自由一些)

        学习收获
        学习能力提升了不少 裂开 学完编译原理 后面速成其他课程就很容易了(也不算速成 刷题也算是一种快速理解掌握理论的途径)(就是学完之后很爽就是了)

        5 天 后

        龙书挑着看,很多东西比教材直观;教材(Compiler Construction Principles and Practice)翻到最下下载不要看中文版,翻译错误特别特别多;前面tover师兄贴的视频倍速过一遍

        1 个月 后

        现在(学了一点micro-architecture和VLSI设计以后)感觉其实编译器非常重要,因为编译器是否和硬件匹配非常影响实际的性能,所以设计与硬件设计相关的编译器非常重要。

        以前就是觉得这个东西很好玩,如何用YACC搞完就算了,但是现在看来,非常值得深入学习,因为提升编译性能,以及是最终机器码执行效率,非常重要。

        过了好几年才觉得,没有需求的学习就是白搭,全都会忘掉。但是学过总比没有学过好,学过会开始欣赏某个东西,而没学过就是不知道存在这样的东西。

        © 2018-2025 0xFFFF