高手问答第 285 期 —— 聊聊计算机系统原理与软件开发

OSC哒哒 发布于 06/15 13:43
阅读 6K+
收藏 20

开源之夏第三届火热来袭,高校学生参与赢万元奖金!>>>

为什么985计算机专业出身的程序员天花板会很高?你可以留心一下身边的架构师、CTO等高级岗位,看看对不对。编程的本质是什么?是利用高性能的计算机来帮助我们处理人脑无法企及或者效率低下的工作。

编程的确是越来越简单了,很多10年前需要自己开发的任务都已经被开发工具打包嵌入到了开发环境中,一些少儿编程甚至拖来拖去也能实现出来一些基本功能。但是绝大部分的这种“程序员”很难更进一步了,因为基本功差距太大。

程序员到一定的阶段,拼的数学能力和对计算机系统的理解。数学能力需要投入的教育成本是比较高的,毕竟这是个长期的系统性工程,但是作为IT从业者、程序员,我认为还是需要把计算机系统搞明白、搞透,这个过程比起恶补数学,要轻松多了。我前几年写书的时候,请教过很多大厂架构师,我发现他们对硬件的掌握水准之高,远远超过我这个硬件开发工程师的预想。

看看下面这张图,内存读写流程,这个流程估计很多程序员都搞不太清楚,的确,99%的几率用不到,但是可能就是那1%将决定你的职业走势。

一切IT生态都是建立在计算机硬件系统之上的,如果不夯实这个底层领域的知识体系,那么上层的知识体系就难免成为空中楼阁。掌握计算机底层,相当于掌握基本的物理学,正如基本的物理学被纳入义务教育阶段一样,掌握计算机底层,应该是每个IT从业者的基本功。

OSCHINA本期高手问答(616日-622日)我们邀请到 @Mr冬瓜哥 , 将和大家以“计算机系统原理与软件开发”为切入点展开讨论,包括:

  • 计算机体系架构
  • 操作系统
  • 通信和网络
  • 存储系统
  • 人工智能

除此以外,还可以将讨论内容延伸到软硬件开发、芯片开发、计算机视觉等相关领域。

嘉宾简介

冬瓜哥(张冬),IT狂人,现任某半导体公司系统架构师,喜钻研,著有《大话存储》《大话计算机》系列图书。公众号:大话存储

为了鼓励踊跃提问,清华大学出版社会在问答结束后从提问者中抽取 3 名幸运用户赠予《大话计算机》书籍一套哦 

购买地址:

京东:https://item.jd.com/12999712.html

当当:http://product.dangdang.com/29141473.html

 

下方地址可以下载《大话计算机》目录以及首次开源的书中的16页计算机体系架构思维导图。大家可以从目录或者思维导图中找到自己感兴趣的话题与冬瓜哥一起讨论。

下载地址:https://pan.baidu.com/s/15yhuuqaDg-5CVtFH9mH3kQ   提取码:bmdx

 

OSChina 高手问答一贯的风格,不欢迎任何与主题无关的讨论和喷子。

下面欢迎大家就相关问题向 @Mr冬瓜哥 提问,直接回帖提问即可。

加载中
0
M
Mr冬瓜哥

引用来自“程思”的评论

@Mr冬瓜哥 既然谈到人功能只能,请问您对 类脑计算机,和 模拟TPU(使用模拟电路原理构造神经元节点)这类技术怎么看?

我觉得AI,量子计算等这类应用,使用模拟电路是个值得深挖的方向,数字电路虽然高速,但是似乎已经发展到了极限,它所能解决的问题有限,对于穷举这种运算模式,费时费力耗能。而模拟电路本身并不是在主动计算什么东西,它只是利用自然界天然存在的计算手段来计算(这个详见我对数学那个贴的回复),所以天生速度就很快,只要电路搭建好,出结果就是一瞬间的事情,只要利用一些手段克服模拟电路的诸多干扰引入的不确定性问题,大有前途。实际上有些低精度的场景比如AI,模拟电路就算引入一些干扰,结果可能不那么精准,但是依然能落入可接受范围内。

对于类脑计算机,我觉得这里面关键的问题在于,如何找到一种方法,能够处理大量连续的训练数据。因为人脑从发育到成熟,每天12小时都在接受听觉触觉嗅觉视觉四大输入,而且人眼分辨率大概在6k左右。如果能让类脑也接受类似输入,可能会有质的改变,包括激发出情感等高阶抽象的东西。

0
M
Mr冬瓜哥

引用来自“htoooth”的评论

  @Mr冬瓜哥 量子计算是计算机的未来吗?他是另一种计算模式吗?

要理解量子计算,首先得理解或者基本理解宇宙基本模型。我虽然无法感知这个宇宙是怎么创造的(尚且说宇宙就是造w者的一个电脑游戏吧),但是我冥冥中感觉这个世界一切都是基于能量构成的,而且是波动形式的能量,也就是由最基本的不断简谐运动的振子叠加而成的。如果把这个最基本的振子成为“宇宙基本场”,那么成矩阵排列的(不清楚这个矩阵具体怎么排列,就像显示屏像素点有很多排列方式一样,但是这不重要)基本场,就是这个宇宙的空间(space),基本场中被注入的能量(电磁能?不知道),先做了初始叠加,形成一种驻波(没见过驻波特性的可以去搜一下相关视频,其实很奇妙,也可以用一种小孩玩过的玩具万花尺,见图),就像万花尺一样,你所做的只不过是在往复运动,但是通过某种角度叠加,就形成了高阶的样子。

看似在空间中可以静止而不向外传递,这就是最基本的微观粒子,比如希格斯玻色子等等,然后再做次级叠加,形成质子中子电子,然后形成更高阶的能量驻波聚合体,静止在空间中,其能量波被暂时锁住不向外传递。任意眼睛可见的物体,其实都是空间基本场能量驻波聚合体。在这个基本概念之上,物体的“质量”,其实就是这个空间内所有空间场能量之和或者积分,所以e=mc2就没那么不可理解了。那么至于物体的运动和相互作用,就可以在这个理论之上叠加新理论去支持,物体的运动,就是整个空间驻波聚合体的整体运动,实际上是能量波的整体传递到远处的空间场,而这个整体传递过程的规律,牛顿已经发现和总结好了。明白了这个基本模型之后,再理解量子计算就容易了。

那么既然组成任意物体和物体相互作用逻辑、结果的基本单位都是空间场,而空间场的简谐振动两种状态,就是所谓量子态,一切事物均处于量子态,也就是底层是不断振动的,但是却是在高纬度静止的符合牛顿运动定律的能量聚合体。那么任意物体微观上均在不断的呈现出各种状态,只不过这些状态转瞬即逝,换句话说,量子计算,相当于每个量子位都在同时计算,同时作用,同时展现出所有可能的结果,人们只需要在正确的条件下锁定那个希望的结果,相当于在正确答案到来时给它抓出来。当然,具体我也不懂。这种量子计算是在另一个维度上的计算,与目前的顺序执行代码的计算方式,没法比较,起码当前,量子计算不可能取代现有计算形式,量子计算可能会在AI方面发挥重要作用,目前这种AI处理方式非常低效。既然量子计算能够让一个多变量系统瞬间处于全部可能的状态,而且还能通过人为手段来选出想要的答案,而这正是AI所求之而不的的。

0
M
Mr冬瓜哥

引用来自“赤脚小子”的评论

@Mr冬瓜哥

程序员到一定的阶段,拼的数学能力和对计算机系统的理解。

对这句话深有同感,前者比如刷leetcode, 背后都是数学思想, 太多的解法最后是要用数学推导得出时间/空间复杂度证明这个它的正确性。

而后者,比如零拷贝,顺序写,都需要对计算机系统有深入了解才能理解和掌握。

 

我的问题是,大部分程序员毕业多年,一直耕耘业务领域,也就是日常crud,这时候数学知识基本都丢失了,请问您有什么好的建议帮助重新掌握计算机领域需要用到的数学知识么?

然后针对计算机系统,在学习了linux后,想学习硬件知识时,您建议研究现在火热的树莓派么?或者有其他更好的途径?比如pcb开始?

 

学习热情我觉得有三个支持动力,前两个是:钱,情怀。但是确实存在一种状态,就算给再多钱,也不愿意学习了,这种多半发生在30岁以后,所以第三个支持动力是年龄,好奇上进的年龄。如果这三个动力,一个都不具备,那么说什么都是空话,即便有点共鸣,而实际上也可能啥用没有。

硬件知识如果只是为了了解基本的硬件体系结构而更游刃有余的搞软件,那么树莓派和pc机没啥区别。但是如果要从事硬件开发,那么肯定得玩一玩 这些东西,树莓派也好其它也好,都行我觉得。

0
JasonWcx
JasonWcx
大厂需要的是码农,而不是程序员。高级别的研究计算机原理和算法设计,更多的语言数学和物理,统计学,图形学,还有其他相关科学。高端集中在欧美,搞的是计算科学或与计算机紧密相关的领域。国内只能集中在应用技术。
0
暗香去
暗香去
您好,请问线性代数如何跟计算机系统结合,能否举例说明? @Mr冬瓜哥
M
Mr冬瓜哥
这个我不太懂,抱歉!
0
Python自动化办公社区
Python自动化办公社区

对于从其它行业,转行过来成为程序员的人来说,想要职业发展顺利,需要优先学习哪部分知识呢?@Mr冬瓜哥

Python自动化办公社区
Python自动化办公社区
回复 @pyboy58 : 可我是python开发:sweat_smile: #Python-office#
pyboy58
pyboy58
看spring boot实战
0
贺小皮蛋
贺小皮蛋

@Mr冬瓜哥 老师您觉得摩尔定律 在当前的硬件技术下 还适用吗

M
Mr冬瓜哥
目前看来还可以再撑一两带。2nm已经投产了。往后不好说,眼看就要到极限了。如果不能从基础科学上突破,工程界到头了。下一步可以着手在分子级领域实现某种逻辑运算机制,这个在《大话计算机》尾声中有一些篇幅。
0
xiaour
xiaour

@Mr冬瓜哥  计算机的架构设计我觉得太精妙了,整体架构甚至几十年来都没太大变化,但是却支持了一代又一代的升级和扩展;如果延伸到软件架构设计上,OS的设计就没有那么容易搞明白了,如果把源码拿出来,我们可能不知道从哪里开始读,我们可以从哪些切入点去了解OS的设计呢?

0
pyboy58
pyboy58

@Mr冬瓜哥  你好,

1.问一下 当前微服务多台服务器运维的问题,有的电脑cpu很低,但是使用的内存很高,怎么平衡服务器资源?

如下列表

CPU(cores) CPU% MEMORY(bytes) MEMORY% 
262m 3% 13843Mi 87% 
157m 7% 1866Mi 51% 
116m 5% 2070Mi 56% 
96m 4% 1986Mi 54% 
348m 8% 10732Mi 68% 
316m 7% 10104Mi 64% 
1671m 41% 14304Mi 90% 
176m 4% 13646Mi 86%

2. 计算机底层软件,涉及到电脑内存,cpu之类的,被现在太多的框架k8s,docker包裹住,怎么深入了解计算机硬件这一块,可以从哪方面入手?

0
osc_09984781
osc_09984781

@Mr冬瓜哥 老师内存是不是越大机器的运行速度的就越快的 为什么现在个人PC没有设计成大内存的情况 是成本原因吗

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部
返回顶部
顶部