細說10月24號為什麼是程式設計師的節日?

2022-07-04 08:00:11 字數 3408 閱讀 2282

10月24日,有人把這個日子定為程式設計師的節日,因為1024這個數字和程式設計師密切相關。

下面我就為大家解密,1024跟程式設計師有什麼關係,程式設計師寫程式又到底是怎麼回事?

我們所使用的電腦和手機裝著各種各樣的軟體,能幫我們完成各種各樣的任務,幫我們工作,供我們娛樂,這部神奇的機器似乎無所不能。

但是你關掉顯示器,拆開機箱, 會發現裡面只有密密麻麻的電路, 這些電路以一種神奇的方式運轉, 幫我們完成我們想要做的事情。

就拿機箱中最主要的部件cpu來說,他其實是由無數個邏輯開關組成,每個開關只能表示兩種值0和1,開關閉上就是1,開關開啟就是0,就像手電筒一樣,開關閉合,點亮燈泡表示1,開關放開, 熄滅燈泡表示0。這無數多個邏輯開關通過一種叫做繼電器的電子元件連線,經過各種奇妙的組合,最終就是我們所使用的cpu。雖然我們使用的現代積體電路型cpu比這個要先進無數倍,基礎執行原理卻沒有本質的變化, 它們依然只能識別0和1這兩個數字。

比如說你要讓電腦的機箱報警1次,你跟cpu說:「你讓電腦給我叫一下」,cpu是不會理你的。 cpu只認得由0和1組成的命令,你需要給cpu傳送一條表示讓機箱報警的命令,比如說11100101,它才會按照你的要求去完成任務。如果你要讓機箱叫10下,那麼同樣的命令要發十次。

這些0和1組成的命令就是電腦程式的本質,任何軟體最終都是以這種形態在計算機上執行的,我們把它稱之為機器語言或者機器指令。 

這種由0和1組成的命令對機器而言甚易理解,對人類而言卻難以識別。這樣的命令, 讀個幾條幾十條還勉強能接受,幾萬條, 幾十萬條,幾百萬條呢?試想一下對著滿螢幕的密密麻麻的0和1,會是什麼感受?  任何乙個智商落在天才智商界限以下的普通人,都沒有辦法高效的閱讀這些指令。

為了克服這種障礙,有人發明出一種叫做組合語言的東西,組合語言是機器語言的人類可閱讀形式。

比如說讓機箱報警的指令11100101,如果使用組合語言實現的話就是warn指令。彙編器最終會把warn指令轉換成11100101,因為cpu只認得0和1,不認得英文本母,但是對於人而言,warn指令比11100101要友好的多。換句話說, 組合語言的編譯器會把人類看的懂,cpu看不懂的組合語言命令**轉換成cpu看的懂,人類卻很難看的懂的機器指令。就像你的身體, 需要蛋白質、脂肪、維生素等營養元素來維持身體的新城代謝,可你吃下去的食物是蔬菜、水果、肉類,你的嘴巴認識這些食物,你的身體卻不認識。這個時候, 你的消化系統就充當起了轉換器, 將食物轉換為你身體所需的營養元素。  這其實和電腦執行是同樣的道理, 你的身體好比電腦, 他需要營養元素也就是0和1組成的指令來維持執行,你吃下去的食物是彙編指令,你的消化系統就是將食物轉化成營養元素也就是將組合語言轉換成機器語言的轉換器。

讀到這裡,是不是感覺到了眉目,程式設計師的工作就是寫彙編指令。事實上,  的確存在以寫彙編**為職業的程式設計師。 然而, 計算機技術發展日新月異, 現在,這類程式設計師只佔到程式設計師總群體的極少一部分。 絕大多數程式設計師不用組合語言寫程式,他們使用的是比組合語言更加高階更加易於使用的高階程式語言。

來看乙個例子

這是乙個供普通電腦使用者使用的計算器軟體,我們用它計算8加9的值,並將結果17顯示。

假設我們不考慮軟體的圖形使用者介面實現,只關注值的計算,此次運算的程式大概長這樣子,**以c語言為例

#includeint

main()

這便是大多數程式設計師使用的語言,也就是所謂的高階語言。

那我們可不可以使用組合語言來實現這個程式呢,答案是可以的,下面是組合語言的實現形式

使用高階語言和使用組合語言實現這次計算,哪一種編碼效率高,哪一種簡單,哪一種可讀性強,哪一種易於維護?不言而喻

因為高階語言比組合語言好用,所以程式設計師們都放棄組合語言轉而使用高階語言。

可是我們電腦中的cpu是不認識高階語言的。這個時候高階語言編譯器閃亮登場,它的作用就是將高階語言的**轉換成組合語言的**,就跟組合語言轉換器將彙編**轉換成機器**是一樣的道理。

這個時候,一切都已明朗, 軟體的整個執行過程如下

我們假定某個軟體是使用解釋型語言開發的,那麼, 當軟體的使用者執行軟體的某乙個功能時

第一步,這個功能會被轉換為開發這個軟體的語言的**

第二步,這門語言的**會被語言的直譯器轉換成彙編**

第三步,組合語言轉換器會把彙編**轉換成機器**

第四步,cpu執行機器**,完成使用者的操作

那上面講的這些跟1024有什麼關係呢?我們已經知道, 計算機cpu只認識0和1組成的指令,這種指令還有另外乙個名稱, 叫做二進位制,而我們人類使用的數字系統是十進位制。

零,一,二,三,四,五,六,七,八,九,十,我們是這樣數數的,從零到九, 每乙個數字都由乙個字元表示,分別是0-9,而十並沒有單獨的字元表示,它使用一和零的組合「1」,「0」表示,所以,在十進位制數字系統中,所有數值都是0-9的組合。

同樣,在八進位制數字系統中,只能用0-7範圍內的數字進行表示。  零,一,二,三,四,五,六,七,接下來不是八, 像十進位制的十一樣, 八進位制的八也用「1」和「0」的組合表示。

同樣,二進位制只能使用0-1範圍內的數字來表示。零,一,不好意思,二進位制沒有二,如同八進位制沒有八一樣,二進位制的二也是用「1」和「0」的組合來表示,10在二進位制系統中就表示2。

一,二,三,四,五,六...一千零二十四,我們從一數到一千零二十四,在十進位制數字系統中,使用1024表示;在八進位制數字系統中使用2000表示;在二進位制數字系統中則使用10000000000表示,這像不像一串cpu的機器指令? 是的,cpu認得出這串數字。 如果使用科學計數法表示那麼這串數字就是2的10次方。

1024 = 2的10次方 = 10000000000

512 = 2的9次方 = 1000000000

256 = 2的8次方 = 100000000

128 = 2的7次方 = 10000000

64 = 2的6次方 = 1000000

32 = 2的5次方 = 100000

16 = 2的4次方 = 10000

8 = 2的3次方 = 1000

4 = 2的2次方 = 100

2 = 2的1次方 = 10

1 = 2的0次方 = 1

看出來程式設計師和1024的關係了嗎?我告訴你們,沒什麼關係,這一切只是1024 = 2的10次方 = 10000000000的偶然而已, 512、256、128這些數字對與程式設計師而言跟1024沒有差別。

有同學說1kb = 1024byte, 1mb = 1024kb, 1gb = 1024mb, 1tb = 1024gb, 1pb = 1024tb,這才是1024的意義!但是這些容量單位不僅僅跟程式設計師有關係吧?普通的電腦和手機使用者甚至比程式設計師更關注這些單位

如果從這個角度講,那麼10月24日不但是程式設計師的節日,更是所有電腦使用者的節日,我們所有電子裝置愛好者應該普天同慶,大家一起嗨!

為什麼說10月24日是程式設計師的節日?

10月24日訊息,提起 1024 很多朋友會想起不可描述的某著名 但其實,10月24日是屬於程式設計師們的共同節日,以節日向改變世界 固執地堅持對於知識 技術和創新不斷追求的程式設計師們表示致敬。1024是2的十次方,二進位制計數的基本計量單位之一。程式設計師 programmer 是從事程式開發 ...

程式設計師節,10月24日!

根據大家在 中國程式設計師節,10月24日,你同意嗎 中的反饋,現在確定中國程式設計師節放在每年的10月24日。將在10月24日那天組織網上慶祝活動。希望通過程式設計師節,代表著我們的一種努力,努力將程式設計師們凝聚在一起,為社會創造更多價值,得到更多的認可。我們是程式設計師,不是 工人,不是it民...

10月24日是中國的程式設計師節,通過滴滴大資料看看

西二旗程式設計師們過著怎樣的生活 聽說,月入五萬的西二旗人都活得像月薪五千,吃穿住行每個方面都遵循 反裝逼 定律,於是好奇的後廠村村花去問了幾個程式猿小哥哥,有什麼感想,以及錢都用在哪兒了?a 除了月入五萬,其他全是真的。b 不挑吃穿住,可沒說不挑媳婦,加上媳婦,月薪變兩千。c 這算什麼呀,你看看地...