学习编译原理的好处知乎
㈠ 编译原理与嵌入式的关系
总有一天你会想学的。现在不想学可以先放放,能过就行。兴趣最重要,别磨灭了。以后用到了自然就想学了。
编译原理主要讲的是如何去做个编译器。其中的很多概念对开发很有用,如有限状态自动机。编译器如何代码优化,优化了那些部分。做嵌入式应该知道怎么优化,毕竟资源是有限的。
㈡ 继续学习编译原理的意义是什么
对于学习一个什么的意义,就像跟人生有什么意义一样。这是一种很空泛的东西啊,非常的主观。你喜欢这样东西,你就觉得他做起来有意义,如果你不喜欢的话,那你就觉得做起来没有意义了。如果你的专业是学的编译原理。那你也对他非常的有兴趣,那么你继续学的意义当然就是因为你喜爱,所以说你继续,这就是意义啊。

所以说就学习的东西而言,你说的。所以说。就学习的东西而言,你学的越多,对你自己的好处就越多。这可不就是学习的意义了吗?让你自己懂得了更多的知识,这份支持还可以给你带来很多的经济效益。这是多么美好的一件事情啊。
㈢ 计算机基础知识对程序员来说有多重要
非常重要,必须认真学习。
学习基础知识从来都是枯燥的,而且很多时候会给我们一个错觉,就是基础知识没有用。这主要是因为,我们未来工作以后,更多的是面向应用,更直接的就是面向工具的使用,基础知识基本是不可能直接拿出来用的,所以,大家就会觉得我只要懂应用方面的知识就好了,基础知识根本不需要去学。
就拿程序员来举例:
很多的程序员培训机构,他们并不会教任何的基础知识,直接就是教编程语言,然后设计一些案例做练习,3个月-6个月基本就结束。这样教出来的程序员能够写代码吗?当然是能的,不然这些培训机构早垮了。而很多大学本科4年读完的应届生,说不定写代码都没有这些培训几个月的学生强,大学4年对于程序员来说难道就是白费吗?
并不是的。
基础知识决定的是你未来的高度,可能你作为一个初级、中级程序员,你不一定会用到数据结构、算法、编译原理。但初中级的程序员就是你未来几十年的全部吗?
如果是的,在你30多岁的时候,应该就会面对裁员了并且很难找到下一份工作。
程序员是一个干到老学到老的工作,每天都需要去学习一点新的知识,技术也是在不断的演进,需要去了解未来的技术发展方向,这样才能够一直产生价值。而基础知识是什么呢,就是当你对技术了解越深入时,越需要用到的东西。
例如:你要做大数据的工作时,你需要数据建模,需要在海量的数据中抽取自己需要的数据,还需要不影响系统的性能,运算速度更快。那么你就必须要了解算法,了解时间复杂度。如果你曾经大学时好好的学习了这些知识,并且时不时会温习一下,那么你更高更快的胜任这份工作。
但是,对于一个只是了解应用知识的程序员来说,他需要想办法学习你用4年时间堆积起来的知识,而且还不一定有可靠的老师能够教他。
再举个例子,现在华为需要一些技术人才,来做他方舟编译器的迭代,待遇非常可观。
而这时,对于懂数据结构、懂算法、懂编译原理的人来说,查的无非就是一些应用实践的知识,这些知识只要有基础、有环境,1-2周就可以上手。
但是对于只懂应用知识的人,他可能就是看都看不懂,华为也就不可能去招聘这样的人。
所以,程序员也是有高低之分的,有的年薪百万,有的年薪可能就十来万。谁不想拿百万年薪呢?可能他们也觉得某些知识没有用,所以没有去认真的学吧。
㈣ 试述编译原理中优先函数有何好处与不足之处
构造算符优先分析表时使用的优先函数,其等价于矩阵表,但存储量校 定义两个函数,其对应元素的值为优先值,通过循环比较各元素的两个值,每次将优先级大的值改为小的值+1,若相等则都赋为目前较大的值,循环直至结果没有变化,构造OK
㈤ 非计算机专业为什么学c语言知乎
对于题主的问题,我觉得有点大了,这个问题就好像我问一个学习金融的人这样一个问题:对于非金融专业的学生,怎么入门金融学?
OK,我先说说我对计算机的理解吧,因为我觉得这对学习计算机比较有好处。
我所认为计算机是什么呢? 他是一种辅助设备,能够拓展人类的能力。能够轻易完成人类很难做到和很费时间和精力才能做到的事情。
Okey,理解说完了,开始干货:
计算机分为硬件和软件,硬件就是你看得见摸得着的,软件是你看得见摸不着的。介于题主是想说入门,我就不推荐计算机有关硬件的东西了,我主要推荐的是软件的方向。
通常对于计算机专业的人来说,了解计算机的硬件组成是非常有必要的。因为这不单单只是告诉你现象,还告诉你的本质。
学习计算机的软件(还有硬件):首先,你要看一本叫《计算机科学技术导论》的书(事实上不管你专攻硬件还是软件,这本书看看绝对没错),这本书包含了很多的基础内容,
比如2进制(“计算机世界”的语言,计算机非常笨,哦,也就是cpu非常笨,只能明白01010101,其他的统统不知道),
计算机硬件的组成(运算器,控制器,存储器,输入输出设备),
汇编语言(因为010101对于人类来说过于麻烦和难以理解,所以就把一段010101用几个字母定义,例如“mov”),
然后就是c语言,一些很懒的使用汇编语言的程序员觉得汇编语言还是不够方便,所以就发明了高级语言---c语言。(可以看出来计算机的发展史真的是一群很懒的人的奋斗史:),我希望有幸成为他们其中的一员。)
当然,里面还说了很多其他的东西。
看完了《计算机科学技术导论》以后,好吧,这是开胃菜,正菜开始上桌了。
C++ 。推荐书目:《C++ primer》 ,C++是一门计算机高级语言,计算机语言是拿来干什么的呢?就是和计算机交流的,你看,你和英国人说话要说英语,要和广东人说粤语,要和荷兰人说荷兰语。一样的道理。随着“hello world”在那个黑黑的界面中显示出来的时候,你甚至会怀疑:这TM就是编程?!
哦,这只不过是万里长征中的第一步。后面还有好多有趣的东西呢。
你要开始了解什么是变量,什么是常量,什么是循环,什么是类,什么是判断语句,什么是继承,等等等等。
如果你学习完了语法部分(就是上述说的),那么,恭喜你,基本上已经可以和别人说:我学过编程了。
好嘞,开始下一步:
因为题主的研究生是金融的,而且boss是做risk management的,那么算法就是必不可少的了。
《算法艺术及信息学竞赛》 这本书还不错,介绍了一些基本的算法(当然里面不会告诉你怎么进行风险管理,那是金融专业的事)。我只是粗略的过了一遍,所以就不献丑了。不过研究算法感觉就像在原始丛林里面爬山,一般人进去就跪了,有了大量的经验以后才能生还。
《数据结构》 ,在计算机科学或信息科学中,数据结构(英语:data structure)是计算机中存储、组织数据的方式。通常情况下,精心选择的数据结构可以带来最优效率的算法。(来自维基网络),这是修炼的内功心法之一。
《操作系统》,了解了操作系统的原理以后,才能更好的操作我们正在使用的系统。属于中级的课程吧。
《编译原理》, 如果说计算机语言是魔法咒语的话,编译原理就是告诉你,这些魔法咒语是怎么生效的
《计算机组成原理》 哦,这个非常有趣,和操作系统有很大关系,但是这个是从硬件的层次上面(大部分来说)来解释计算机的组成
《软件工程》 估计题主暂时看不到这里的了,什么是软件工程呢?我的理解就是,把写软件规范化。形成一种规范以后好处就不言而喻了。
实话说,在学习的过程中会出现很多问题:
比如说语言选择的问题,你会听说JAVA无所不能,C#简单方便,python优雅至极,php开发速度快到带你飞。
我个人觉得,语言不是重点,语言只是个工具而已,重要的是人,就好像我们都会写中文,为啥俺和莫言的差距咋就这么大呢!
个人建议是:发挥各个语言的优势,在不同的情况使用不同的语言。
比如说:
1.想要开发个简单的网站,PHP是不二的选择(你可以想象用C++写网站的“快感”么?)
2.windows下的程序,C#绝对是王道,还有比微软自家的东西更懂自己的么?
3.android开发,平台的限制,最好还是用JAVA。
4.考虑到性能问题,如果你是个大神(那是不可能的,如果这样你就不会问怎么入门了)那绝对会使用到C++,对于一般的凡人,JAVA的回收机制以及够用了。
如果你想要买书,个人觉得最好不要买国人写的,因为国内大部分都是你抄我我抄你的节奏,最好买国外的书。图灵系列的我觉得不错。
我个人觉得,学习计算机并不神秘和复杂,甚至有些可怕的简单,有付出,就一定有回报。因为计算机的严谨性,他永远不会出错,你给出了正确的方法,就会得到正确的结果。
这里推荐题主一个小网站,名字叫做提问的智慧:
http://www.beiww.com/doc/oss/smart-questions.html
㈥ 想去学习软件有什么好处呢
1、计算机硬件原理:了解硬件怎么工作,知道软件是怎样在硬件上工作的,CPU架构,指令,怎么做运算,内存如何工作,内容地址是怎么回事,硬盘如何存储,数据和指令如何通过电路和元器件转化成电流和脉冲,可能需要数据电路的原理。无论从事计算机哪方面,比如网络、软硬件,这个原理都必须精通。因为计算机技术是很抽象的,但是在现实和具象上是依赖硬件。
2、操作系统原理:在了解了硬件原理后,了解操作系统是怎么工作的。因为所有的软件都是基于操作系统的,而操作系统本身也是一个软件。这些结合硬件来理解,就更容易了。
3、编译原理:了解软件从源文件到目标文件,到执行的全过程。如果有必要,其中的东西也要专门买书去研究。这样代码上不容易犯错误。了解了硬件原理和操作系统原理的基础上,了解编译原理也就比较简单。当然每种语言编译过程都不一样,但是原理都是基本相同。
4、数据结构和算法分析:好的算法,事半功倍,此外可能还要补一些高中数学、高等数学的知识。
以上每部分,都要至少1-2个月或者150个小时以上的钻研,要做到基本掌握。如果不掌握以上部分,不是说学不了软件,但是如果想学精通,想比一般人强,是不可能的,因为你只知道怎么做,但是为什么这样做不清楚,就是死记硬背了,反反复复的记忆效率也很差。
有时候很多独立的软件开发的工具书,没有讲的那么细致,只是告诉你如何做,但是不会告诉你为什么这样做,另外一些好的方法也无法告诉你,因为都需要从基础的硬件电路电流原理来介绍,如果从原理上说,那会说的没完没了。
大约半年甚至1年后,此时你所有软件开发需要掌握的基础知识,都比较明白了。再开始研究程序开发,就会觉得开发很简单,事半功倍。因为你已经从原理上理解了,软件是怎么工作的。所以也知道软件开发的学习周期至少在1年以上。 达到能够开发中型软件,至少也要1年半,而且这个时间还是每天都在钻研的时间。
㈦ 学习数据结构算法和操作系统等基础课程对提高编程有什么用处 知乎
首先,这两门课程对于编程而言是非常重要的,但由于大学课程安排的不合理性以及学生自身的编程差异,对于未深入研究过编程的人或者未参与过项目开发的人而言,课程缺乏足够的吸引力。通俗而粗略的讲数据结构可提高程序本身的健壮性以及灵活性,无关任何编程语言;操作系统有助于你开发基于操作系统的各类应用,要知道绝大多数的程序都是基于操作系统的,再者类似内存分配、存储空间的分配等细节也因操作系统不同而不同。我个人感觉是,这两门课程对于大多数学生而言是缺乏实际意义的,但如果你从事过一段编程工作后再返回学习两门课程会有更深入的体会。希望我的回答可以帮助到你。
㈧ 请问学习编译原理对程序员有什么用
知道你写的程序编译器是怎么编译的,学好了以后可以开发编译器(那要很牛很牛)。更现实点的好处是学会使自己写的程序更优,提高程序的效率。
另外,我觉得里面《运行时的存储组织与管理》这章很有用,它能告诉你编译器是怎么在内存中为程序的函数(包括变量)分配空间的,里面的对堆栈的讲解很详细,帮助你更深入了解内存分配情况。
