iT邦幫忙

第 11 屆 iThome 鐵人賽

DAY 3
0
Software Development

念美術的女孩不可能學會資料結構與演算法?系列 第 3

二、女孩的第一支程式(1)

「我們剛剛在腦中想了要怎麼寫出一支程式,但那是我們的語言——也就是用中文描述。現在我們要來講如何講電腦聽的懂得語言。」小光凝重的說道。

「你幹嗎臉色那麼凝重」我有點嘲弄意味看著他。

「恩...因為我不太清楚該如何講起...就是要怎樣教你程式語言是什麼」男孩苦笑著。

「你就講啊!反正我聽不懂就叫你在講一次」嘖嘖,就不能跟我一樣大方嗎?

「好吧!我盡量!」
「那麼我從最基礎的開始講起喔!」

小光在紙上開始寫了一堆符號:

fn main() {
    let hello_str = "Hello World";
    println!("{}", hello_str);
}

我的媽呀,他到底在寫什麼東西!我喃喃自語。

「這是一支最簡單的程式,叫做 Hello World,基本上所有學程式語言的人第一支程式都是這個喔!」小光說道。

「好...喔...」我困惑。

「這是一段 Rust 程式語言的程式碼,不過是什麼程式語言其實也不是很重要,重點是這段程式碼,他可以被電腦讀懂,然後電腦就成開始做事情。」

「那他可以幹嗎?!」

「你猜猜呀 :P」

「嘖嘖。我想想喔。恩...我只看到 "Hello World",然後下面那個 println!() 不知道是幹嗎的?」我答道。

println!() 的意思就是讓電腦知道要『印出(print)』東西。第一行程式碼先是『宣告』了 hello_str 等於一串字串 Hello World,然後因為我們寫了 println!("{}", hello_str),所以電腦知道要印出的東西是 hello_str 所代表的文字,因此會印出 Hello World 在螢幕上喔!」

fn main() {
    let hello_str = "Hello World"; 
    // 先宣告 hello_str 代表字串 "Hello World"
    
    println!("{}", hello_str); 
    // println!() 會印出東西,並且說要印得東西是 hello_str
}

「於是我們會看到這樣的結果喔」小光拿出他的香蕉電腦。 (明明就是 SolidHard 員工,還用對手家的產品,嘖嘖 XD)

小光打開電腦,在電腦中把這段文字輸入進去,然後又做了一些步驟。

「我們可以看到這樣的結果」 小光手指著螢幕

【有興趣的讀者可以點進去跑跑看:連結

螢幕上的內容:

「你覺得人類是怎麼理解別人說的話?」

「我想想喔,耳朵聽到聲音,聲音在耳膜上共振,然後神經傳送訊號給大腦,大腦去解析這段訊號代表什麼意思,然後我們的意識就理解剛剛的話是什麼意思了」我故意批哩啪啦講了一串。

「哇!你越來越有工程師的樣子了喔」小光笑道。

「當然!」嘿嘿,我好歹以前都有好好上生物課。

「電腦理解程式碼也是差不多呢!」小光輕輕說道。

「恩?」

「程式碼是給人類看的,所以電腦會先把程式碼解析編譯成機械碼,也就是機器看的懂得語言,通常就是 0 和 1 組成的一大堆數字,就像你看電影中駭客橋段那樣。然後電腦要跑程式的時候,就是去讀機械碼,然後就能執行原本程式碼中要做的工作」

「等等。解析、編譯是什麼意思?」

「簡單來說,程式碼就像是人類聽到聲音,是最初的東西。耳朵把聲音變成訊號,讓大腦可以理解,對於電腦來說,就是把程式碼『轉換』成機械碼。而大腦能理解得東西,換成電腦的話,就叫做機械碼。剛剛提到的轉換,就是解析編譯在做的事情。這邊大概理解就行了,總之就是要讓電腦能懂」

「恩...好像稍微能懂了。」其實我還是懵懵懂懂,但我覺得以後就會懂了吧?!

「所以你看螢幕,上面那串印出來的資訊

   Compiling playground v0.0.1 (/playground)
    Finished dev [unoptimized + debuginfo] target(s) in 0.64s
     Running `target/debug/playground`

其實就是電腦在把程式碼轉成電腦看的懂得語言的過程。

最後電腦能讀懂程式碼了,就開始執行工作。而我們剛剛給他的工作就是印出「Hello World」,所以你看最下面,這不就印出來了嘛!

Hello World

」小光很仔細地講。

「哇!好酷喔!!!!!」我想,我開始對『程式』這個東西感到興趣了呢!


嗨,喜歡本系列的話,可以追蹤作者粉專「微中子」喔!


上一篇
一、女孩的空想程式
下一篇
三、女孩的第一支程式 (2)
系列文
念美術的女孩不可能學會資料結構與演算法?4
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
alantsui
iT邦新手 5 級 ‧ 2019-09-13 17:38:08

用 rust 教美術女孩,想必是梁靜茹給你的勇氣吧,btw支持

微中子 iT邦新手 4 級 ‧ 2019-09-13 22:05:45 檢舉

梁靜茹 這是啥梗?

hannahpun iT邦新手 4 級 ‧ 2019-09-14 01:20:08 檢舉

我要留言

立即登入留言