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

    文章

    11332

    浏览量

    225975
  • 计算机
    +关注

    关注

    19

    文章

    7841

    浏览量

    93490
  • 程序
    +关注

    关注

    117

    文章

    3849

    浏览量

    85489
  • 编译器
    +关注

    关注

    1

    文章

    1673

    浏览量

    51954

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

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

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    XILINXPWR - 082 EVM电源管理解决方案深度解析

    XILINXPWR - 082 EVM电源管理解决方案深度解析 在电子设计领域,电源管理解决方案对于FPGA等关键器件的稳定运行至关重要。今天,我们来深入探讨XILINXPWR - 082 EVM
    的头像 发表于 04-26 13:15 209次阅读

    Claude Code在国内怎么使用?AI编程人员必看的完整指南!

    这两年,AI编程工具层出不穷,但最近 Claude AI 在程序开发者圈子里备受欢迎,越来越多程序员发现使用Claude的体验非常接近“一个懂工程的搭档”,而不是简单的代码生成器。 但问题也随之而来
    的头像 发表于 01-23 14:09 6089次阅读
    Claude Code在国内怎么使用?AI编程人员必看的完整指南!

    堆栈的原理揭秘

    百度百科试图传递的信息翻译为人话: 2. 为什么需要堆栈?首先,为什么需要堆栈?真的是搞计算机的那帮宅男吃饱了撑的吗? 【编者注:必须不是!鲁迅曾经说过:“不想偷懒的程序员不是好程序员
    发表于 01-23 07:08

    芯盾时代SDP助力企业应对核心机密泄露危机

    无论你是程序员、文案、财务,无论你想撸代码、出海报、做报表,各式各样的AI总能满足你的需求,让你的工作更加轻松。
    的头像 发表于 12-26 11:49 868次阅读

    大理的AI野心藏不住了——风花雪月中千名程序员探讨人工智能

    2025 年12月4日至6日第二届CCF程序员大会暨大理人工智能与应用国际开发者大会在大理圆满落幕。
    的头像 发表于 12-24 17:45 918次阅读
    大理的AI野心藏不住了——风花雪月中千名<b class='flag-5'>程序员</b>探讨人工智能

    解析Linux的进程、线程和协程

    )用户态线程:协程不依赖于操作系统的线程管理,由程序员手动控制。 (2)轻量级:协程切换的开销非常小,适用于高并发的场景。 (3)高度可控性:程序员可以精确控制协程的执行流程。 二、进程、线程
    发表于 12-22 11:00

    程序员最常见谎言

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

    堆和栈的区别

    程序员分配释放, 若程序员不释放,程序结束时可能由OS回收 。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表,呵呵。
    的头像 发表于 11-27 18:13 1252次阅读

    裸机方式的缺点有哪些

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

    Labview 解析dxf文件并显示<一>

    Labview软件开发过程中,大家会遇到导入dxf文件的需要,今天开个帖子,聊聊如何解析和显示dxf文件,同时用图表来显示。 首先来介绍下dxf, 简单来说他就是图形文件的一种文本格式,具有固定
    发表于 11-14 22:45

    软通国际亮相2025沙中开源与AI科技峰会

    2025年11月11日,由沙特程序员协会(parmg)主办的"2025沙中开源与AI科技峰会"在利雅得盛大启幕。
    的头像 发表于 11-14 17:45 1612次阅读

    20个低代码开发平台多维度对比:解锁企业应用开发新动能

    差异、需求变更等因素而拉长时间战线。进入设计阶段,无论是产品功能设计,绘制用户旅程图、定义交互规范,还是技术架构设计,选择技术栈、设计系统模块并规划扩展性,都需要精心打磨。随后的编码环节,程序员需一行行编写代码实现系统
    的头像 发表于 11-05 17:04 823次阅读

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

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

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

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

    程序设计与数据结构

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