作者:暗灭
链接:https://www.zhihu.com/question/58408219/answer/156866958
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
第一 计算机组成原理在讲什么,对于程序员来说的意义是什么。
第二 哪些知识点是工作中经常遇到的。
第三 在哪里学习,怎么学习。
第一 计算机组成原理在讲什么计算机组成原理,讲述的多数跟硬件有关系,主要描述的是计算机的内部结构是什么,数据怎么存储和运算,指令系统又是什么,CPU怎么运转,还有就是输入输出是什么。 揭开神秘的面纱,做一个真正的工程师,计算机组成原理是必不可少,软件是灵魂,硬件是肉身,玄幻小说中经常说的肉身成圣,对应到IT里,指的就是对计算机组成原理非常熟悉。 计算机组成原理会讲很多底层的东西,大部分和编程无关,但是有一些重要的概念是少不了的。 这也是这个回答想要做到的,就是帮助新人快速了解哪些知识点很重要。 对于程序员来说,了解计算机组成原理,从认知上,就把软件从一个魔性的位置降低到了可掌控的位置,就会明白,软件运转并不是靠魔性,而是靠指令,所有你看到的数据和错误,都是对应的程序分解成一道道的指令。 除此之外,还有一些对于软件编程来讲非常重要的概念,特别是底层的一些设计理念。 所谓的科班出身,就从这里开始。第二 哪些知识点是工作中经常遇到的。 1.浮点数的表示 浮点数的表示是编程里比较重要的概念,这对于金融计算来讲,格式重要。1/3=多少?为什么推荐使用BigDecimal? Float和Double适合做金融运算么? 这些都会在浮点数里找到答案,对于Java,Android,IOS,JS都有用。2.进制 1024的世界外行人不懂,没有2进制就没有计算机。这也是必不可少的一定要理解的概念。10000这个可不是联通的电话,8进制,16进制的转换对于运维来讲格外重要,如果你们熟悉Windows蓝屏,那一串看不懂的东西,也是和2二进有关。 同样的,Java,Android,IOS,JS和OP都需要。 3 字符编码 Ascii码,GB2312,GBK,Utf8,Unicode,这些编码格式,是缠绕程序员的恶梦,有一位未来的伟人曾经说过,如果一个程序员没有解决过乱码问题,他还能称为一个程序员吗? 了解了这些编码的存储格式,你才会明白为毛为有中文乱码问题,究竟计算机是哪里出错了-其实错的是它么?它只是听你的话而已。 这个对于Java程序来讲更重要一些,无论是DB,还是文件,还是接口,还是日志,甚至是CRT,只要有中文的地方,你都有可能遇到乱码的问题。4.Cache的替换算法 计算机本身的缓存设计,给软件系统中的缓存设计能提供很多启发。常用的替换算法,随机,FIFO,LRU,这些都是从计算机组成原理就可以借鉴的。 当然最重要的还是缓存的概念,在计算机的世界里,空间换时间,时间换空间也是经常用的策略。 能够理解了缓存,就能够让你在未来的复杂设计中站稳脚根。对于Android,IOS,JS也讲,也同样如此,Java更不用说,Redis和Memcache和Ehcache和OSCache等一系列缓存体系,都脱胎于最根本的计算机组成原理思想,只是在不同的场景下,有了自己的变异。 对于缓存,还有命中率的概念要懂的。另外就是失效策略,命中率和失效策略是设计缓存的关键点。5.总线 总线的概念其实在几年前SOA盛行的时候比较火热,最近已经慢慢消散,但是做为背景知识,理解总件,进而理解微服务,还是有点用处的。6.调用子程序 调用子程序可以帮助你理解递归,回调。特别是在JS里,回调简直是。。。还有IOS。 与此同时,上下文的概念也可以在调用子程序中理解的更透彻一些,想当年,我可是想了好久都没弄懂上下文是什么意思。 7.I/O IO更多的是一个概念,input和Output是一个非常重要的概念,特别是在网络请求和读文件中。 Java工程师必备,Android和IOS也可以懂一点。JS可以不用怎么了解。 第三 在哪里学习,怎么学习。这些基础课程,最好的学习方式就是课本,我找到的一本王道考研,<计算机专业基础综合考试指导全书>,看看这本就很好了。 当然,我们请了付师,每周日晚都在讲直播课,如果你感兴趣,加入QQ群 417440564 了解,但是请记得入群看群公告,改群名片。
xiami#1
对于初学者、底层码农、业务员、外包交差的人来说,机组的东西在绝大多数不直接和硬件打交道的情况下,不重要。毕竟中间隔着一层操作系统的封装。而透明性是API的重要参考标志之一。大多数人会说,写里面还是写外面没区别。
如果想往上走,写出高效、间接的代码,机组的东西必须少不了。缓存是根据内存命中率来的,如果连续读取同一段内存的数据,缓存就会映射该段内存,而缓存和内存的IO速度是存在数量级差距的,具体表现就是运行时间会大不一样。这时候的回答就是连续维度写里层,非连续维度写外层。
作者:Menelaus RT
链接:https://www.zhihu.com/question/58408219/answer/161084183
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。