编译原理几乎是计算机专业中最晦涩难懂的课程。很多学生学这门课只不过是为了通过考试,学完后对编译原理之精妙仍然是摸不着头脑。而很多教这门课的老师,也只不过是混口饭吃,他自己未必对编译原理有多少深入的了解和把握,于是与其昏昏,使人昭昭。毕业多年后,回过头来反省我所承受的教育,我发现我们的教育总是流于表面的肤浅,给学生展示的始终是冰山的一角,对冰山下的巨大形体置若罔闻,于是整个系统虽然培养出大量的计算机专业人员,但有能力对计算机知识具备深入见解的人凤毛麟角,很多人其实是走上工作岗位后,通过大量的生产实践才开始对计算机知识有了一定程度的深入窥探的,我就是其中之一。
计算机始终是一门理论结合实践的科学。光有理论却不能实践,那么理论看起来晦涩难懂,听起来虚儿巴脑,于是美妙的智慧结晶在应试教育体制下变成了虚张声势的怪兽,让学习它的人惊恐不慌,以为自己要被这只巨大的怪兽所吞灭。我是过来人,知道这种关说不练假把式的巨大危害,那种理论讲起来头头是道,搞得我晕头转向,处处受挫的煎熬感真是不忍回忆,我真心希望通过动手实践,能够让那些有志于在科技行业大展身手的年轻人不要再走我的老路。
如果人类只会谈情说爱,那么早就灭绝了。因此爱的核心在做不在说,科学技术的理解和掌握更是如此。虽然我们处于技术大爆炸的时代,各种黑科技看似漫天飞舞,但无论外表如何变化,知识的底层逻辑都是一样的,对于自然科技而言,它的底层逻辑是数学,而计算机科学它的底层逻辑是算法。你看当下最火热的区块链,人工智能,量子计算,其核心无一不是算法。当前很多人在技术领域碰到天花板,无法更上一层楼,说到底是因为自己热衷于肤浅花哨的表面技术,不敢深入到更加复杂的技术内核去笃实自己的根基,致使后期乏力,很快就偃旗息鼓了。
编译原理作为计算机科学的核心支柱,它集结了算法,架构设计,计算机硬件,形式语言等计算理论的核心要义,是计算机科学的集大成者,你看那些计算机的奠基性大牛,很多都是从编译器的开发上打响名头的,例如比尔盖茨早期自己开发的basci编译器,C++之父Bjarne Stroustrup,C语言之父丹尼斯.里奇,java之父James Gosling。当你听到某个人是做编译器的,你无需多想就知道这哥们肯定是个技术大牛,据说直到现在,能做出一个专业编译器的人估计也就只能坐满一间会议室大小的房间,我希望通过我的努力,能帮你在这个房间里挤出一个属于你的座位!
我曾经花两年的时间在网易云课堂上完成了一个编译器的开发课程,我用java制作了一个C语言编译器,这个编译器不但能解释执行C语言,同时还能把C语言编译成java字节码,使得C语言也能运行到java虚拟机上。视频用java开发C语言编译器。
通过这个项目的开发,我获取了不少经验和教训。一是原来课程过于纠结算法细节,这使得课程过度理论化,这使得不少人觉得门槛太高,学起来很吃力。第二,代码运行在控制台界面,缺乏图形界面使得程序看起来很死板,缺乏活力。第三,代码量过大,体系结构过于复杂,容易引发受众的畏难情绪,因此课程加入的人多,能够坚持的人很少。
为了弥补这些缺陷,我打算重新用Reactjs+BootStrap的方式开发一门新编程语言的编译器,这么语言叫Monkey,它有点类似于javascript这种脚步语言,由于语法简单,实现它的编译器比实现C语言的编译器要容易很多。Monkey语言具备编程语言的所有要素:
1, 有类似C语言的语法结构
2, 支持变量绑定
3, 支持整形和布尔型数据类型
4, 支持算术表达式的解析
5, 一级类定义(first-class)和高阶函数(higher order functions)
6, 支持闭包,这点像javascript
7, 支持字符串数据类型
8,支持数组型数据类型
9, 支持哈希表型数据类型
之所以想到用Reactjs 和 Bootstrap 来开发,一来是前端开发能够支持丰富多彩的用户界面,这样使得整个项目始终保持在生动活泼的状态之下。而来当今前端开发,特别是基于Reactjs的前端开发炙手可热,掌握该前端框架的工程师能够在行业内获取高薪就业机会。所以这么课程学下来能够收获一箭双雕的效果,既能增加内在实力,又能增强外在的实践技巧。金庸在《笑傲江湖》中,为令狐冲所在的华山派设置了两个老死不相往来的分支,一支叫气宗,以岳不群为首,气宗讲究内力心法,另一支叫剑宗,以马云最喜欢的风清扬为首,剑宗讲究运剑技巧的登峰造极。我们这么课程相当于把两宗结合为一体,编译原理的理解和掌握相当于气宗,让你内力深厚,具备稳若泰山之势。Reactjs+Bootstrap的掌握相当于剑宗,技术的运用如行云流水,无往而不利。
自古华山一线天,成为高手没有捷径,只能是扎扎实实打基础,勤学苦练增技能。消耗大量的心血和汗水必不可少,但我们完全可以让这个过程有趣而又生动,没有任何成就的取得是不用付出代价的,走捷径将让职业生涯是付出难以承受的代价,就如同你翻开葵花宝典后第一页看到的那样:欲练此功,必先自宫!
如果您点击链接后还没有看到课程,那表明视频还在审批中,尽情期待!
更多技术信息,包括操作系统,编译器,面试算法,机器学习,人工智能,请关照我的公众号: