✔ 最佳答案
我諗你講嘅「原始檔」同「程式碼」應該係指「Source code」同「Machine code」
講兩樣嘢分別之前,先講講佢哋係乜,當係Confirm係唔係exactly你問緊嘅嘢又好,當係畀唔知咩事嘅人明白啲都好啦。
電腦係點樣Work嘅呢?
有上過電腦堂嘅人應該會知道,宜家啲電腦只識認「有電」同「無電」。一連串「有電」「無電」嘅訊號流經CPU等組件就會做到唔同嘅事。人為咗方便理解就用二進制數字(Binary)「0」同「1」分別表示上面兩種狀態。
所謂Machine code,就係某台電腦(準確地講,機器)理解到嘅「0」「1」組合。某指定長度嘅Binary code表示住一個指令(譬如加減數、跳去某步之類),跟住又一個指定長度嘅Binary code就係對應指令嘅參數(以加減數為例就係符號隔離個數咁)
咁宜家電腦啲程式就係靠人寫嗰啲「0」「1」寫出嚟?
係人都應該有咁嘅感覺:電腦諗嘢同做嘢嘅方式同正常人比差得好遠喎!唔好話作為用家嘅我哋,恐怕真係知道啲「0」「1」組合做啲咩嘅人買少見少。所以就有譬於編譯器(Compiler)嘅嘢,佢可以睇得明人用接近人類語言(即係英文)寫出嚟嘅原始碼(Source code),再將Source入面啲指令譯做對應嘅Machine code。於是乎人就可以叫電腦做人想佢做嘅嘢啦。
上面純粹用講故咁嘅方式去解釋Source code同Machine code係咩,佢哋嘅分別呢,我覺得可以一句起兩句止:Source code係人可以理解到嘅文字(Text)指令;Machine code係電腦理解到嘅二進數(Binary)指令
Extra:
Source code同Machine code係唔係得一種?
呢個世界人話都有幾十甚至上百種啦,機器世界都一樣!譬如西洋人母語係英文,中國人母語係中文咁,機器因應佢嘅種類同OS有唔同嘅Machine language,喺電腦世界入面比較common就有Windows x86,x86就係Intel、AMD等CPU嘅類別(起源自Intel 8086)。Source code嘅language都係一樣,不過佢哋主要係因唔同特色而發展出嚟,未必跟死一種機,譬如C++就喺好多唔同機種上都有對應嘅compiler。另外Source language有分高低階,愈高就愈似人類語言(即係似係跟足埋人類語言啲Grammar)。低階就有匯編語言(Assembly),佢其實就係用幾個字去對應一個Machine code嘅指令,不過Assembly source都係要由匯編器(Assembler)去匯編成machine code架先可以畀機器睇得明喎。
2010-04-22 07:52:36 補充:
@ anderslee - 先多謝閣下指教。我嘅意思係雖則Windows同Linux喺同一部機都係用相同嘅Machine language,不過譬於Linux唔識認Windows exe,反過嚟都係,所以都係OS-dependant嘅…
我承認我嘅答案未必係100%準確,不過都唔好一劈頭就嚟句「錯哂」,除非我真係由頭到尾,徹徹底底咁錯到飛起,好嗎?