㈠ 学编程需要物理知识吗
可能有的领域需要.....
下面的经验很重要 高手们肺腑之言
软件在国内热了起来,程序员也强手了,越来越多的人加入了程序员行列。程序员的经历也是很多编程爱好者急于想知道的,本文介绍了一个”过来人的经验和感悟,或许对准程序员们有一定的启发。
不知不觉做软件已经做了十年了,有成功的喜悦,也有失败的痛苦
单不敢称自己是高手,因为和我心目中的高手们比起来,还差的远。世界上并没有成为高手的捷径,但一些基本原则好似可以遵循的。
1 扎实的基础
数据结构,离散数学,编译原理,这些是所有的计算机科学的基础,如果不掌握它们,很难写写出高水平的程序。程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。不要一开始就去学OOP,即使你在精通OOP,遇到一些基本的算法的时候可能也会束手无策。因此多读一些计算机基础理论方面的书籍是非常有必要的。
2 丰富的想象力
不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决的方案,试试别人从没有想过的方法。丰富的想象力是建立在丰富的知识的基础
上,除了计算机以外,多涉猎到其他的学科,比如天文,物理,数学等等。开阔的思维是对程序员来说是很重要的。
3 最简单的是最好的
这也许是所有的学科都遵循的一条准则,复杂的质能转换原理在爱因斯坦眼里不过是简单的不能在简单的公式:E=mc^2.简单的方法更容易被人理解,更容易实现,也更容易维护。遇到问题优先考虑最简单的方案只有简单的方案不能满足要求时在考虑复杂的方案。
4 不钻牛角尖
当你遇到障碍时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊天。当我遇到难题的时候回去玩游戏,当负责游戏的那部分时间细胞极度亢奋的时候,负责编程的那部分细胞就得到的充分的休息。当重新开始的时候,我会发现难题竟然还可以迎刃而解。
5 对答案的渴求
人类自然科学的发展史就是一个渴求得到答案的过程,即使只能知道答案的一小部分也值得我们去付出。只要你坚定信念,一定要找到问题的答案,你才会付出精力去探索,即使最后没有答案,在过程中你也回会学到很多的东西。
6 多与别人交流
三人行必有我师,也许在一次和别人不经意的 谈话中,就可以迸出灵感的火花。多上上网看看别人对同一问题的看法,会有很大的启发。
7 良好的编程风格
注意养成良好的习惯,代码的缩进编排,变量的命名规则始终要保持一致。大家都知道如何排除代码中的错误,却往往忽视了对注释的排列。注释是程序的一个重要的组成部分,它可以使你的代码更容易理解,而如果代码已经清楚的表达了你的思想,就不必在加注释了,如果注释和代码不一样,那就更糟糕了。
8 韧性和毅力
这也许是“高手”和一般程序员的最大的区别。高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。成功能给我们带来无比的喜悦,但是过程确实无比的枯燥无味。你不妨做个测验,找个10000以内的素数表,把他们全都抄下来,然后在检查三遍,如果能够不间断的完成这一工作,你就可以满足这一条。
给广大梦想成为程序员的----忠告!
㈡ 怎样为“逗号分隔的左结合的标志符列表”构建无二义性的上下文无关文法
这段话时龙书上的原话:
依照惯例,9+5+2等价于(9+5)+2,9-5-2等价于(9-5)-2.当一个运算分量(比如上式中的5)的左右两侧都优于氨酸时,我们需要一些规则来决定哪个运算符被应用于该运算分量。我们说运算符”+“是左结合(associate)的,因为当一个运算分量左右两侧都有”+“号时,它属于其左边的运算符。在大多数程序设计语言中,加减乘除四种算术运算符都是左结合的。
某些常用的运算符是右结合偶的,比如指数运算符。作为另一个例子,C语言中的赋值运算符”=“及其后裔(即+=,-=等译者注)也是右结合的。对表达式a=b=c的处理和对表达式a=(b=c)的处理相同。带有右结合运算符的串,比如a=b=c,可以由如下文法产生;
right=letter=right|letter
letter=a|...........|z
这是右结合的分析树,它向右下方延伸。
所以你的答案为 list——>list,a|a.
㈢ V8 编译浅谈
V8 编译浅谈的答案如下:
1. 解释器与编译器的区别: 解释器:将程序逐行转换为机器语言并执行,逐行解释执行代码。 编译器:将整个程序转换为机器语言或中间表示形式,生成目标代码时可以进行优化处理,提升程序执行效率。
2. JIT 编译技术: JIT编译器动态编译代码,在运行时进行优化。 V8 引入 JIT 技术,结合混合动态编译策略,优化 JavaScript 代码执行速度。
3. V8 编译原理: Ignition 解释器:将抽象语法树转换为字节码,跟踪热点代码。 TurboFan 优化编译器:接收 Ignition 解释器传递的热点代码,利用 JIT 技术结合反馈向量对代码进行优化。
4. 运行时表现与调试: 使用调试工具 D8 可以查看编译和运行时信息。 D8 调试工具可以显示 AST、中间代码、优化和反优化代码等详细信息,有助于深入理解 V8 的编译机制。
5. 总结与建议: V8 编译原理概述了解释器与编译器的区别、JIT 技术的应用、V8 的编译框架以及运行时表现。 建议在开发中使用 TypeScript 进行类型声明,以提升代码性能。
㈣ 编译原理及编译程序构造课后习题答案 薛联凤
您好,《普通高校计算机专业精品教材系列:编译原理及编译程序构造(第2版)》介绍编译理论基础及其实现方法,强调语言的形式化定义、编译技术的各种概念及实现过程的具体方法。介绍过程以算法为核心,力求简单明了地反映编译的基础知识。从形式语言理论角度讨论词法分析和语法分析技术,为计算机软件工作者开发大型软件打下良好基础。《普通高校计算机专业精品教材系列:编译原理及编译程序构造(第2版)》以理论联系实际为宗旨,内容深入浅出,重点突出,并结合构造el语言的编译程序介绍一种常用而又简单的编译方法。