请选择 进入手机版 | 继续访问电脑版

52维修

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 468|回复: 1

编译原理和算法导论是不是屠龙技 有技而无龙可屠?

[复制链接]

该用户从未签到

1

主题

1

帖子

22

积分

准小白

Rank: 2

积分
22
发表于 2018-4-19 10:47:35 | 显示全部楼层 |阅读模式
————以下为更新内容————
有童鞋在评论还有私信给我说了些问题,我统一回答下。

1、像高数、编译原理、操作系统等等很多课程总觉得学不懂怎么办?
答:这不是你一个人的疑惑,这是普遍现象。这些知识相对来说比较抽象,而且涉及的知识面非常广,比如说图形学,能做研究生的单独专业分支了。本科阶段学时有限,老师也只能抽重点来讲,刚学的时候你要真能懂百分之六十已经非常不错了。而且很多知识要在实践中才会慢慢理解。关键是得首先有个大概印象,理解核心内容,一些细节先放过,日后开发中遇到问题再回来看就会理解了。
比如数据库,刚开始脱离实践去讲,左连接右连接自然连接1234f范式等,肯定很多人一头雾水。
等到日后,做实际开发,设计数据库时候因为不懂左右自然连接的区别,然后发现自己踩坑了,回头再研究才发现原来如此。所以不用担心。

2、现代很多开发中,比如前端,很难接触到底层,学这些知识有用吗?
答:的确,随着各种工具越来越完善,很多开发已经越来越少让程序员接触底层,从而解放生产力。而未来的趋势则是,程序员会越来越少地写代码。
但是,无论怎么变,这些基础的课程都不可能改变。因为这是这些都是计算机专业核心基础。工具会过时,但是知识不会。
打个比方,六十年过去了,计算机比人计算速度得快得多得多,但是人为什么还要学数学?想想就明白了。
也有人说有些知识学来感觉没机会用的上。
关于这个问题,我原答案已经说了:上大学其实是拓宽你未来的道路。这样无论你以后想往哪个方向继续深入,都可以会很平坦。

很多计算机专业的都面对一个问题,现在Android ios php等等,那么火,人家上个培训班不到一年就去拿个不错的工资了。我还要浪费四年青春学这些没用的知识干嘛?
想一想如果未来Android像塞班一样说没就没,ios不再火了。没有一身过硬的基础的你,你能去干嘛?再上个培训班学上半年然后转行?要是你不再年轻了呢?而且一般企业开发,核心的都会交给一些真正底子好,又有经验的来干。而只会if else for while的你,只能写一辈子逻辑。当然你说你享受写逻辑的话,可以忽略。

————以下为原答案————有人说了些观点。我以一个普通程序员的观点分析下这个问题好了。

先说下个人经历

刚大一,学高数、线性代数时候。
我当时想,这些抽象的算术有什么卵用,老子又不是做数学家好好敲代码,背背公式、做做题就过了。
结果被啪啪啪打脸,大二碰上图形学、离散要多惨死得多惨。

我又想,图形学、离散有什么卵用,我以后肯定不会用到,好好敲代码才是重要的。
结果后面学directx opengl游戏开发时候,碰上各种矩阵换算、几何转换以及数学知识各种综合运用,又被啪啪啪打脸,赶紧回去恶补数学、图形学知识。

大三学概率论,我想这鸟玩意我们绝对不会用得上了吧?于是得过且过。
结果后面参加个比赛,小组一起做个关于小语种手写识别的项目。其中的模式识别模块和机器训练,都必须用到hmm模型。
找了各种hmm模型资料发现自己看不懂,各种概率论知识,欲哭无泪。又各种找回之前的课本恶补。此时脸已经肿了。

终于到下学期学组成原理、编译原理操作系统时候开始用点心去学。虽然当时有很多无法学透弄懂,但是大有收获。即使过了这么久,依然觉得当时做得太对了?

至今我仍然会在开发上遇到各种问题,依然要回去各种补,有时候甚至恨不得重读大学四年。

有很多童鞋总是不屑这类课程。总觉得数学、理论等各种科目都是那些考研、搞特定领域研究、学霸刷GPA用的。所以我们总能在大学里面看到很多人相当不重视,应付了事,能过就已经烧香拜博了。

大学计算机专业无非分五大类课程:
数学:高数、离散、微积分、概率论、线代、数据结构、算法、图形学等
工程理论:工程导论、结构设计、需求工程、建模、设计模式等
计算机原理:数字电路、计算机基础、计算机网路、组成原理、编译原理、操作系统、数据库等
编程基础:C/C++、java、html、汇编等
应用及实践:各种语言的课程设计

普通程序猿眼里最有用的就是这块:编程、以及实践。然而,他们占总学习时间不到四分十一。难道这些课程都没用么?如果像题主说的,“无龙可屠”那学来干什么?
其实这些都是基础,根植整个计算机体系中。学得一招两式就整天都去打小怪兽,还乐呵乐呵的。某天你遇到棘手一点的,开始知道技穷了。关键是有些人可能一辈子遇不到了,然后就觉得也不过如此。

说白了。这些课程其实是拓宽你未来的道路。这样无论你以后想往哪个方向继续深入,都会走很平坦。否则你真地哪天用到了,你才发现自己某个技能树没点亮,赶紧回去补,到那时候学习路线就会变得非常陡峭。我已经如果一次坑。

算法/数据结构,这是编程的灵魂。很多人觉得学这个东西就是为了刷ACM刷面试题。你用什么语言这不重要,这是工具,重要的是编程思想。你不一定会用到里面的算法,但是它能锻炼你解决问题的思维能力。

编译原理。它能让你真真切切地看清楚你写的东西具体实现。没学过的人只能看到表面上的语法,而你能看到具体的实现。没接触过的人只知道怎么写,你却知道为什么要这样写。同时可以配合编译器做一些优化。

这些你也不可能深入学透,了解个大概已经够开发用了,真成了这方面的专家,至少十年。
+1
469°C
1
  • 小妞乖乖
过: 他们
回复

使用道具 举报

该用户从未签到

0

主题

1

帖子

21

积分

小小白

Rank: 3Rank: 3

积分
21
发表于 2018-4-19 10:49:16 | 显示全部楼层
编译原理:当你想写个静态网站生成器,再发现基本技能不过关的时候,就后悔没早早投入时间精力弄明白了。看看当今巨头,Google 的 go 和 dart,facebook 的 hack,Apple 的 swift,每一个成功的巨头都认识到想把一件事做好,就一定要自己从头做,从语言着手。再例如 Chrome 用的 V8 更是引领一个时代。这方面的牛牛们,都是一言不合就扔给你一个新语言。

算法导论:这个用过的都说好,没事多翻两遍,总会有新的收获。计算机专业,本科期间没刷过一阵 OJ 的,终身遗憾啊。

其实还有一个没提到的,操作系统原理。不知道是题主已经受益了,还是简单没想到,也是常被列入屠龙技的。一个例子是在各种嵌入式平台上,各种自己动手写简单 OS 的,常常有。或者就算不是自己写,使用别人写的,不完整的或者部分实现的裸露的嵌入式 OS,对于操作系统原理的理解更是必不可少。另一个例子是,Apple 的 iOS/OSX 和 Google 的 Android,都是大杀器。

再一个,网络原理和 tcp/ip 协议栈。用 dsp 的时候,移植过一个精简的基于 C 的协议栈,累坏了,ti dsp 的 c/c++ 编译器各种坑。这个移植协议栈传输速度慢,不稳定,出了局域网本网段,传输成功率就靠概率。还好项目不大,一个固定 ip 局域网解决问题,凑活完成了。中间解决数据错误和丢包的技巧是一个数据包发两遍,各种汗。就怨自己学艺不精没能力没时间好好调试。后来换了嵌入式 linux 和 android,系统内置可靠稳定的网络协议栈,那真是——“解放区的天,是明朗的天,解放区的人民,好喜欢~~~”。跨网段啊,互联网公网远程传输啊,都不是个事儿。

总体来说,屠龙技是计算机技术之集大成。作为从业人员,当然要学好精通。作为企业,要关注,要投入,这些技术方面如果能做出一些成果,那才真是能做出大新闻,做点小成绩的。








您目前使用的是【试用版】,很多功能受到限制!!如果试用此插件之后满意,对您产生了帮助,请购买正式版支持一下辛苦的开发者,插件的持续发展离不开正式版用户的支持,优秀的应用得益于您的捐助,点击下面的链接去Discuz官方应用中心购买正式版永久授权


http://addon.discuz.com/?@csdn123com_zhihu.plugin
正式版后续更新升级免费,一次购买,终身使用!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|52维修 ( 闽ICP备17030025 )

GMT+8, 2018-8-22 08:07 , Processed in 1.048145 second(s), 21 queries .

52维修 566it! X3.4 566it

© 2008-2017 Comsenz Inc.

快速回复 返回顶部 返回列表