自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

上帝視角:程序員為什么需要理解 CPU?

商務(wù)辦公
最近陸陸續(xù)續(xù)寫了幾篇關(guān)于CPU的文章,可能有的同學會問,程序員寫代碼就好了,為什么需要去理解CPU啊?不嫌累啊?啊?啊?你倒是說啊。

[[400041]]

大家好,我是小風(人設(shè)建立中。。。),今天給大家?guī)硪黄獎偎萍夹g(shù)文的非技術(shù)文。

最近陸陸續(xù)續(xù)寫了幾篇關(guān)于CPU的文章,可能有的同學會問,程序員寫代碼就好了,為什么需要去理解CPU啊?不嫌累啊?啊?啊?你倒是說啊。

計算機系統(tǒng) != 漢堡包

在之前的文章中我把計算機系統(tǒng)比作一個漢堡包,這個類比不太恰當,雖然漢堡包是層級結(jié)構(gòu),但它是上下對稱的,計算機系統(tǒng)的層級結(jié)構(gòu)顯然不是對稱的,你要說披薩還差不多,注意是披薩,不是餡餅,因為餡餅也是對稱的。

計算機系統(tǒng)的結(jié)構(gòu)是上層基于下層,并且上層對外屏蔽下層,因此用洋蔥來比喻計算機系統(tǒng)是再恰當不過了,這兩者都是層級結(jié)構(gòu),下層對上層都不可見,最妙的是,這兩者看時間長了都會辣眼睛!

這種層級結(jié)構(gòu)保證了處于上層程序員無需理解下一層。

模糊的精確

你的確不需要知道底層全部的微觀細節(jié),實際上我也不相信有誰能全部知道,如果你太注重細節(jié),沒有對計算機系統(tǒng)的大局觀而是一頭扎到細節(jié)里,最終也只是徒勞,只挖掘細節(jié)很像是一種“模糊的精確”。

精確的模糊

但是,如果你能知道底層的宏觀上的原理,情況就不一樣了,我把這種宏觀上的不那么細節(jié)的理解稱之為“精確的模糊”,老外有一個詞我認為很貼切:The Big Picture。

程序員這一行,個人認為精確的模糊要遠好于模糊的精確,因為前者要想進一步了解細節(jié)是很容易的(只是需不需要的問題),反之則非常困難。而且依靠這種精確的模糊已經(jīng)能解決很多問題,而后者則不能。

上帝視角

每一個大家認為的高手腦海里都有這樣一種精確的模糊(或者精確的精確,高手中的高手),ta可能不知道編譯器(解釋器)、鏈接器、操作系統(tǒng)、網(wǎng)絡(luò)協(xié)議棧、CPU、內(nèi)存等等所有核心模塊的全部細節(jié),但是ta知道這些模塊“應該”怎樣工作,當你有了這種理解后,你會發(fā)現(xiàn):

你很確定的自己的每一行程序是怎么被計算機執(zhí)行的;你清楚的知道什么時候該用多線程什么時候不該用;你清楚的知道自己的線程什么時候該加鎖、什么時候該等待,怎樣解決互斥問題,怎樣解決同步問題;你清楚的知道自己的每一段代碼大概可能會執(zhí)行多長時間;你清楚的知道自己的每次函數(shù)調(diào)用從上層到底層是如何執(zhí)行的,因此你很清楚該選擇使用什么樣的函數(shù),傳遞什么樣的參數(shù)才能達到自己想要的效果;你清楚的理解計算機系統(tǒng),因此發(fā)現(xiàn)公眾號碼農(nóng)的荒島求生也就是剛剛在本文開頭立人設(shè)的小風說的都是你已經(jīng)知道的東西。

當你的程序出現(xiàn)問題后無頭蒼蠅般瞎試一通并期待自己的程序能奇跡般正常工作時;當編譯器提示奇怪的錯誤時;當鏈接器莫名其妙的提示'undefined reference to ***'時;當程序運行起來就core時;當程序運行一段時間被OOM kill掉時;當你的程序內(nèi)存泄漏時;當你的程序莫明奇妙耗時非常高時;如果在這些時刻你能做的僅僅是等待別人來幫忙,那么就不要說程序員不需要理解底層了。

說了這么多,用一句話說就是理解底層的好處可以讓程序員在寫程序時獲得“上帝視角”,一切都逃不過你的法眼。

本文轉(zhuǎn)載自微信公眾號「碼農(nóng)的荒島求生」,可以通過以下二維碼關(guān)注。轉(zhuǎn)載本文請聯(lián)系碼農(nóng)的荒島求生公眾號。

 

責任編輯:武曉燕 來源: 碼農(nóng)的荒島求生
相關(guān)推薦

2015-09-24 09:04:36

程序員

2019-10-24 09:32:51

程序員python語言

2018-02-09 15:40:55

旅行青蛙程序員游戲

2015-09-16 08:43:16

2011-08-11 14:52:59

2011-09-18 09:42:08

程序員

2013-10-29 10:24:31

程序員漫畫

2015-06-05 14:15:13

程序員難升職

2014-08-15 11:07:09

程序員

2011-12-20 09:01:25

.NET

2012-09-06 10:30:58

2016-03-15 08:51:12

程序員生活怪異

2015-11-02 09:19:10

程序員JavaScript

2011-04-19 09:59:47

工資程序員

2015-09-15 09:08:58

前端程序員高薪

2019-11-08 13:57:53

程序員Excel軟件

2010-10-09 09:20:08

.NET

2013-09-26 09:34:56

女程序員

2012-08-07 09:34:31

程序員

2020-02-25 15:14:13

程序員人生第一份工作睡眠
點贊
收藏

51CTO技術(shù)棧公眾號