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

OSC哒哒 发布于 2022/06/15 13:43
阅读 9K+
收藏 22

【开源中国 APP 全新上线】“动弹” 回归、集成大模型对话、畅读技术报告”

为什么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冬瓜哥 提问,直接回帖提问即可。

加载中
1
OSC哒哒
OSC哒哒

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

@赤脚小子 @Morty777  @xiaour

恭喜以上三位网友分别获得《大话计算机》书籍一套

请于7月1日前登陆账号, 私信  @小白兔爱吃大灰狼   告知快递信息(格式:姓名+电话+地址)

3
enable-
enable-

@Mr冬瓜哥 冬瓜哥 您好 ,向您请教几个问题?

  1. 感觉您这套  是 是以计算机为落脚点的百科全书, 看了简介 涉及到硬件到软件 深度和广度,适合我这种刚入门的计算机 码农吗
  2. 因为我一直想知道计算机的底层硬件是如何设计的,和软件是如何产生联系的。太复杂的表达又怕看不懂, 请您在这里简单的 概述下几个关键点吗
  3. 像我 就是 一个普通码农,感觉就是面向业务编程,如何提升自己编程能力呢?
  4.  计算机 真能发展成 人工智能 像<西部世界 > 那种样子吗?

 

1
M
Mr冬瓜哥

引用来自“Morty777”的评论

@Mr冬瓜哥 冬瓜哥 您好 ,向您请教几个问题?

  1. 感觉您这套  是 是以计算机为落脚点的百科全书, 看了简介 涉及到硬件到软件 深度和广度,适合我这种刚入门的计算机 码农吗
  2. 因为我一直想知道计算机的底层硬件是如何设计的,和软件是如何产生联系的。太复杂的表达又怕看不懂, 请您在这里简单的 概述下几个关键点吗
  3. 像我 就是 一个普通码农,感觉就是面向业务编程,如何提升自己编程能力呢?
  4.  计算机 真能发展成 人工智能 像<西部世界 > 那种样子吗?

 

1. 非常适合。不仅仅是码农,高中毕业就可以着手阅读。

2. 《大话计算机》尤其适合彻底了解软件和硬件之间的联系,不复杂。代码最终是如何控制硬件的,说几个关键步骤可能会捅破一层窗户纸。CPU内部的PC计数器不断的自加,产生的信号被作为地址信号输送到存代码的存储器前端,存储器根据这个地址选出对应的代码输送到CPU内部的代码译码器前端,译码器这个东西可以说是软件如何控制硬件的一个最关键的理解点,译码器将代码中的0和1代表的控制信号,翻译成电路下游各种器件的控制信号,比如代码是把寄存器a和寄存器b相加,结果再写回寄存器a,那么译码器就控制下游电路选通寄存器a和b,这两个信号于是就被输送到加法器前端,加法器输出的结果又被控制为输送到寄存器a前端等待,在下一个时钟周期,寄存器a锁定这个结果,完成这次计算。这些细节过程,可以在https://www.bilibili.com/video/BV1Gf4y1m7F1这里查看,这个过程,在书里都有详细描述。

3. 编程这个第一靠扎实深刻的基础知识(计算机体系结构,明白代码是怎么执行的,明白各种计算机周边的知识比如计算,网络,存储),二就是靠练了,各种经验积累。

4. 我相信有相当概率会发展成那样。前有黑客帝国,现有元宇宙。人类精神世界的空虚和无限的用各种东西填充,必将发展为最后都进入虚拟世界。而虚拟世界里,人性不会有什么变化,依然会有奴役和压榨,一切奴役实际上都是信息的奴役,你不知道某件事,我就可以用这种信息屏障来奴役你。每个人头顶其实都背着一口井,有的井口大一些,有的很小,于是各种冲突就此而起。别以为元宇宙里面就没有信息屏障,只会更严重,除非人门意识到这个问题,使用立法的方式来约束。

enable-
enable-
非常感谢,视频 动态讲解流程 ,很通俗易懂:+1:
1
M
Mr冬瓜哥

引用来自“xiaour”的评论

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

OS已经极度复杂,需要支持的东西太多,需要背的包袱太多。我记得《大话计算机》第10章(讲操作系统)里有一节写的是各种时钟及其管理,你就可以看到光时钟计数器时钟中断,系统时间等这块,就够喝一壶。你的设想可能是,硬件系统里有个持续tik tok的时钟源,而实际上,为了应对不同需求,硬件系统里竟然有多种不同规格的时钟源,而且OS启动过程中还牵扯到多种时钟源之前的切换。这些都是历史的包袱,开放平台的OS就像一个修修补补的庞然大物,低效,迟缓,却又不得不忍受。

如果没有先在脑海里形成一个计算机底层架构的基本框架,如果针对某个细节模块没有读过前人写的内核代码情景分析类的图书或者文章的话,上来就读的话,除非有什么潜在的动力源支持,否则如果仅仅是为了了解和学习的话,会感到崩溃,事倍功半。所以我推荐不妨可以看看《大话计算机》第三卷第10章。

0
小而美软件开发
小而美软件开发
计算机的尽头是数学
0
htoooth
htoooth

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

0
赤脚小子
赤脚小子

@Mr冬瓜哥

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

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

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

 

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

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

 
shatian
shatian
我感觉从arduino入门就挺好,然后是51单片机,感觉树莓派属于更上了一个层次的东西了
0
i
iosdevlog

@Mr冬瓜哥 使用 FPGA RISC-V 软核  跑 Linux,有这方面的文档和资料吗?

M
Mr冬瓜哥
这个太具体了,baidu gg都可以。不过现在baidu怎么说呢,gargabe tip,这也不能怪baidu,因为他只是个收garbage的,目前现状是根本没人提供garbage了,各种封闭的小圈子,你都不知道去哪找。所以,gg和utb或许是另一个开放渠道。
0
屮殖
屮殖

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

0
M
Mr冬瓜哥

引用来自“丶凡尘”的评论

计算机的尽头是数学

嗯,也可以说一切自然界的现象背后都是数学。一块石头摞到另一块石头上,两块石头的各自高度和一共的高度之间的关系,就是”+”,那么你把一块石头摞上去的过程,就天然的计算了一次加法,那么这个过程是谁在执行这个计算,这是个值得深入思考的问题。同样,往水杯里倒水的过程,就是截面积对速度积分之后的体积,那么这种相乘的关系,以及更高阶的积分运算,是谁执行的。除了ax+b的线性关系,还有很多更高阶的非线性关系,比如x的平方,三角函数等,这些最基本的函数关系,在自然界中广泛存在着。飞蛾扑火走的是对数螺线,其底层对应着飞蛾的光感原件总是与点光源射线程45度角运动。螺壳上的图案,贝类的分泌器官一定是在底层以比较简单的运动形式运动,再叠加以高阶各角度运动最终叠加出美妙的图案。这些计算在天然的发生着,又是谁在执行这些数学过程。最终的疑问是:是谁让1+1=2的,其天然到,即便是另外一个宇宙,另外一个维度,也会自然的想到1+1难道不应该等于2么?这些我也没想清楚,数学为什么会存在,宇宙是怎么存在的。《大话计算机》尾声中,我也思考了很多。

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