今天真是風和日麗的好日子呢。我踏著輕快的腳步前去車站附近的咖啡廳。我和男孩約在那呢!
「那...不知道你週末有沒有空呢??」上次一起吃午餐時,最後男孩害羞地問道。
上次午餐後來他講了一些簡單的電腦知識給我聽,比方平常用的 PNG 或 JPEG 分別代表不同的圖片格式,然後說原來圖片壓縮其實有很多種方式,像是 JPEG 是一種破壞壓縮,壓縮過就回不去了。我想想,就像是保特瓶壓扁之後,想要恢復原狀幾乎不可能了呢!
實在是太有趣了,勾起我學習的慾望,所以就叫他在多講一些給我聽。
「有喔」我不懷好意地笑著看他,看他要怎麼接下去。
「那我們週末約在咖啡廳如何?」
「可以・喔!」
男孩已經在咖啡廳內,看到我便向我招手。
「你今天穿的真漂亮耶!」
果然是單純直率的理工男,我心想。
「謝謝」我撥了一下瀏海,心理爽不得了。
「那我們今天來聊聊程式語言吧!還有什麼是程式。」男孩眼神開始變得很專注。
「我們平常用的軟體、App、網站這些,其實都算是一種程式,然後運作在不同裝置上,像是手機或電腦。」
「比方說我看到你有用記帳的 App 對吧?」男孩問。
「對唷,不然我常常不小心就要吃土了」我看著手機,不好意思地回答。
男孩繼續:「這個 App 其實就是程式設計師將各種邏輯用程式碼表達出來,然後包裝成一個軟體。
舉例來說,App 中可以新增一筆消費記錄,每次增加消費記錄就要填上買什麼東西、花了多少錢、還有日期。並且他還能去統計每個月總共花了多少,並且分類分別是花在什麼東西上面。
那項統計總花費這個功能,就可以視為一個邏輯:完成這步驟需要先把這個月份的紀錄選出來,然後再把錢的部分加總」
「好像還是有點抽象耶...所以程式確切要怎麼辦到?」
「舉個例子,假設你要製造一支聖誕,你會怎做?」
「恩...挖幾球冰淇淋,然後淋上果醬吧?」
「好。假設你是就是一個製造聖誕的程式,他現在開始運作了,那我們先嘗試挖冰淇淋。可是,你的程式卡住了喔!」
「為什麼!!」我大叫。
「因為『你』不知道冰淇淋桶在哪裡,所以無法挖唷」
「原來這麼麻煩...那我把要去哪裡挖也講清楚這樣總行了吧?」
「那我們找的到要去哪裡挖了,可是還是有問題耶」
「又怎麼了?」我一臉苦笑。
「因為『你』不知道一次該挖多大的冰淇淋、多少球冰淇淋、哪幾種口味的冰淇淋」男孩賊賊地笑道。
「OMG!怎麼那麼麻煩!」我有點無言了。
「恩,這就是一支程式該如何運作的模樣,程式設計師必須把各種情況都考慮周全,並寫的一清二楚,這樣電腦才能真正照工程師的想法去跑,並且跑出正確答案喔!」
「所以一支聖誕程式到底長的像怎樣啊?」我歪著頭,無法想像他會多複雜,
「我想想喔。大概會是這樣吧」
男孩從包包拿出紙和筆,開始在紙上寫下一條條「指令」。
製造聖誕的程式:
1. 知道哪裡可以挖冰淇淋。
2. 一次要挖完整的一球,並且分別挖巧克力和草莓各一球。
3. 都放到玻璃碗中。
4. 淋上草莓果醬 20 ml。
5. 灑上一點巧克力碎片。
「我想這樣應該就可以了吧。」男孩盯著指思考著。
「這和食譜哪裡有差啦!!」我無奈的說道。
「的確滿像的呢!食譜就是人類把製作料理的步驟寫得很清楚,讓另一個人可以照著做就做出來;那程式就是工程師把要做的工作定義得很清楚,讓電腦知道該怎做並做的出來。」
「這樣去想的話,他們還真的沒啥差別呢~」男孩開心地說,玩弄著手上的筆。
「原來這樣就算是一支程式了喔?」我實在無法相信。
「對唷!這就是妳的空想程式!」
嗨,喜歡本系列的話,可以追蹤作者粉專「微中子」喔!
所以每次客戶提出需求工程師都會在內心白眼,因為根本沒說清楚他們要甚麼...
對了 "看到我變像我招手" -> 這裡似乎有錯字
謝謝糾正 XD
客戶不懂 感覺也只能慢慢幾是給他們聽了
我覺得溝通能力滿重要的,能把專業知識用別人聽的懂的話說出來也很重要