0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

解析程序员为什么需要理解 CPU?

GReq_mcu168 来源:CSDN技术社区 作者:码农的荒岛求生 2021-05-24 11:47 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

今天给大家带来一篇胜似技术文的非技术文。 最近陆陆续续写了几篇关于CPU的文章,可能有的同学会问,程序员写代码就好了,为什么需要去理解CPU啊?不嫌累啊?啊?啊?你倒是说啊。

计算机系统 != 汉堡包

在之前的文章中我把计算机系统比作一个汉堡包,这个类比不太恰当,虽然汉堡包是层级结构,但它是上下对称的,计算机系统的层级结构显然不是对称的,你要说披萨还差不多,注意是披萨,不是馅饼,因为馅饼也是对称的。

计算机系统的结构是上层基于下层,并且上层对外屏蔽下层,因此用洋葱来比喻计算机系统是再恰当不过了,这两者都是层级结构,下层对上层都不可见,最妙的是,这两者看时间长了都会辣眼睛! 这种层级结构保证了处于上层程序员无需理解下一层。

模糊的精确你的确不需要知道底层全部的微观细节,实际上我也不相信有谁能全部知道,如果你太注重细节,没有对计算机系统的大局观而是一头扎到细节里,最终也只是徒劳,只挖掘细节很像是一种“模糊的精确”。

精确的模糊但是,如果你能知道底层的宏观上的原理,情况就不一样了,我把这种宏观上的不那么细节的理解称之为“精确的模糊”,老外有一个词我认为很贴切:The Big Picture。 程序员这一行,个人认为精确的模糊要远好于模糊的精确,因为前者要想进一步了解细节是很容易的(只是需不需要的问题),反之则非常困难。而且依靠这种精确的模糊已经能解决很多问题,而后者则不能。

上帝视角每一个大家认为的高手脑海里都有这样一种精确的模糊(或者精确的精确,高手中的高手),ta可能不知道编译器(解释器)、链接器、操作系统、网络协议栈、CPU、内存等等所有核心模块的全部细节,但是ta知道这些模块“应该”怎样工作,当你有了这种理解后,你会发现: 你很确定的自己的每一行程序是怎么被计算机执行的;

你清楚的知道什么时候该用多线程什么时候不该用;你清楚的知道自己的线程什么时候该加锁、什么时候该等待,怎样解决互斥问题,怎样解决同步问题;你清楚的知道自己的每一段代码大概可能会执行多长时间;

你清楚的知道自己的每次函数调用从上层到底层是如何执行的,因此你很清楚该选择使用什么样的函数,传递什么样的参数才能达到自己想要的效果;

你清楚的理解计算机系统,当你的程序出现问题后无头苍蝇般瞎试一通并期待自己的程序能奇迹般正常工作时;当编译器提示奇怪的错误时;当链接器莫名其妙的提示‘undefined reference to ***’时;当程序运行起来就core时;

当程序运行一段时间被OOM kill掉时;当你的程序内存泄漏时;当你的程序莫明奇妙耗时非常高时;如果在这些时刻你能做的仅仅是等待别人来帮忙,那么就不要说程序员不需要理解底层了。

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • cpu
    cpu
    +关注

    关注

    68

    文章

    11223

    浏览量

    223018
  • 计算机
    +关注

    关注

    19

    文章

    7767

    浏览量

    92698
  • 程序
    +关注

    关注

    117

    文章

    3836

    浏览量

    84768
  • 编译器
    +关注

    关注

    1

    文章

    1670

    浏览量

    51095

原文标题:程序员为什么需要理解 CPU?

文章出处:【微信号:mcu168,微信公众号:硬件攻城狮】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    程序员最常见谎言

    了。 28我已经测试过了,这个功能没问题,可以上线了。 29别担心,这个问题很快就能解决。 30代码快写完了,已经完成 90% 了 。 希望大家对程序员多一些容忍以及谅解! 各位程序员你们都被我说中了哪些?说说你们的观点
    发表于 12-10 08:24

    裸机方式的缺点有哪些

    进行的: 应用程序程序员必须确保数据一致性。 超级循环可以与系统计时器轻松同步,但: 如果系统需要多种不同的周期时间,则会很难实现。 超过超级循环周期的耗时函数需要做拆分。 增加软件
    发表于 11-17 06:11

    奔赴热AI,码力全开!Talkweb House@1024程序员日系列活动圆满收官

    1024程序员日”系列活动至此划上了一个圆满句号。本届1024程序员节以“AI构建世界,智能引领未来”为主题,广邀技术大咖、产业领袖、企业代表与全球开发者齐聚星城
    的头像 发表于 10-27 18:59 450次阅读
    奔赴热AI,码力全开!Talkweb House@1024<b class='flag-5'>程序员</b>日系列活动圆满收官

    开鸿智谷“以赛促学、以赛选才”|1024程序员节暨开源鸿蒙构建大会圆满落幕!

    10月24日,由开鸿智谷联合主办的长沙1024程序员节暨开源鸿蒙构建大会在长沙圆满落幕。本次活动以“湘聚长沙,共赴热AI”为主题,通过技术分享与实战竞赛相结合的方式,着力培养“开源鸿蒙+AI”领域
    的头像 发表于 10-27 17:58 494次阅读
    开鸿智谷“以赛促学、以赛选才”|1024<b class='flag-5'>程序员</b>节暨开源鸿蒙构建大会圆满落幕!

    程序设计与数据结构

    的地址)出发,采用推导的方式,深入浅出的分析了广大C程序员学习和开发中遇到的难点。 2. 从方法论的高度对C语言在数据结构和算法方面的应用进行了深入讲解和阐述。 3. 讲解了绝大多数C程序员开发
    发表于 05-13 16:45

    CPU的各种指令和执行流程

    、数据传输等功能。要深入理解CPU的指令,我们需要从多个维度进行分析,尤其是指令的构成、分类、执行流程以及与不同架构的关系。
    的头像 发表于 04-18 11:24 1960次阅读

    Linux权限管理解析

    权限指的是某一个用户针对某一个文件的权限(root超级管理拥有全部权限)
    的头像 发表于 04-09 10:06 639次阅读
    Linux权限管<b class='flag-5'>理解析</b>

    计算机网络排错思路总结

    明人不说暗话,这篇文章我们来聊一个非常有用,同时也是程序员必备的技能,那就是网络排错思路大总结。
    的头像 发表于 04-01 17:32 653次阅读
    计算机网络排错思路总结

    如何在 树莓派 上编写和运行 C 语言程序

    ,一本很好的书是BrianKernighan和DennisRitchie所著的《TheCProgrammingLanguage》。这本书对经验丰富的程序员和想学习C语
    的头像 发表于 03-25 09:28 943次阅读
    如何在 树莓派 上编写和运行 C 语言<b class='flag-5'>程序</b>?

    零基础入门:如何在树莓派上编写和运行Python程序

    是一种非常有用的编程语言,其语法易于阅读,允许程序员使用比汇编、C或Java等语言更少的代码行。Python编程语言最初实际上是作为Linux的脚本语言而开发的。Py
    的头像 发表于 03-25 09:27 1554次阅读
    零基础入门:如何在树莓派上编写和运行Python<b class='flag-5'>程序</b>?

    阿里云升级通义灵码AI程序员,全面上线

    和JetBrains IDEs两大主流开发环境,这意味着开发者可以在自己熟悉的开发平台上,无缝接入并使用这款AI工具。 除了支持主流开发环境外,通义灵码AI程序员还引入了多项新特性,如多文件代码修改和上下文感知等。这些特性使得AI能够更好地理解开发者的意图和需
    的头像 发表于 01-09 11:16 963次阅读

    TMS320C6000程序员指南

    电子发烧友网站提供《TMS320C6000程序员指南.pdf》资料免费下载
    发表于 12-24 17:19 2次下载
    TMS320C6000<b class='flag-5'>程序员</b>指南

    TMS320C55x DSP CPU程序员参考补充

    电子发烧友网站提供《TMS320C55x DSP CPU程序员参考补充.pdf》资料免费下载
    发表于 12-21 11:36 3次下载
    TMS320C55x DSP <b class='flag-5'>CPU</b><b class='flag-5'>程序员</b>参考补充

    SSM框架的源码解析理解

    MVC模式,使得开发Web应用程序变得更加高效和简单。 1. Spring框架 基本功能: Spring是一个开源的Java平台,它提供了全面的基础设施支持,以便开发Java应用程序。Spring框架
    的头像 发表于 12-17 09:20 1425次阅读

    学习硬件的第一节课:学习读懂原理图

    常重要的。无论硬件设计得多么复杂,不管有多少设计真正硬件的实践经验,这些图和符号都是迅速有效地理解复杂硬件设计的关键。它们还包含了与嵌入式程序员设计和硬件兼容的件的相关信息,并教会程序员如何成功地与硬件工程师沟通软
    的头像 发表于 12-16 16:04 3693次阅读
    学习硬件的第一节课:学习读懂原理图