
阿米哥很緊張。他的思緒一片混亂。當他想到前一天晚上,眼睛就忍不住抽搐起來。他昨天遇到的那些奇怪生物想要他做一件事。但即使他覺得自己是認識的機器人裡面最聰明又最勇敢的,他們想要他做的那件事,還是完全超出他的理解和想像,他一想到,就忍不住開始緊張地咬打孔卡。
他們想教他怎麼寫程式!用 Java 寫程式。他們到底在發什麼瘋!
就連最天真單蠢的機器人都知道,機器人的出現是造物者神聖設計的一部分。
「然後造物者取了金屬,用它
照著自己的形象造了機器人。
然後祂創造了 Java 程式—機器人
的靈魂,將其上載於機器人之上,
讓他們成為有靈的。」
更糟糕的是,他們不只宣稱這在理論上可行。他們還真的計畫要這麼幹。而且他…他許可了!他同意了!為什麼啊?
他將會成為一個 Java 程式設計員。他們想要做什麼?把他變成造物者嗎?他們幹嘛要這樣?就因為有能耐?
這是個惡毒的玩笑嗎?他之後會在臭蟲的糾纏中受苦,直到電力耗盡為止嗎?但這個誘惑太大了,他無法抵抗。他一直以來都野心勃勃,他一直想要得到更多。對於這樣一個機會,不會有其他機器人比他更有準備。當然,他試過為自己爭取更多時間考慮,但那些異星人威脅要選別人。
也許這只是個惡作劇?不,這機會看起來是真的。他見過證據。他親身體驗過了,然後他同意了。如果異星人沒有說謊,他將會真的成為 Java 程式設計員。普天之下第一個機器人程式設計員!
他是天選之子。這是命運的旨意。他將學會寫代碼,並且開始編寫程式。他自己的程式。任何他想要的程式。他會讓光照進過去一直被黑暗統治的地方。
他將受稱頌;萬物在他面前都要垂首。而那些不願低頭的…

「哈囉,阿米哥!我叫利施。我會幫助你學習 Java。」
一把沉靜的嗓音將阿米哥從混亂的思緒中拉回冷酷的現實。他正坐在這個異星人太空船的中心。對一個才國一的機器人來說,這情境太超出心智負荷了吧?
異星人還在說話。嗯,事已至此。他都在這了,不如就好好學。他會勤奮學習,就從好好聆聽開始。
「我在銀河衝衝號上工作好多年了,但這是我第一次遇上這樣的行星。我想多了解你一點。首先,你可以告訴我你學習的方式嗎?你是會學習的,對吧?」
「是的,我們分享知識。我們這裡有傳道者,或是講師。他們演說,我們聆聽。有的時候我們會記些筆記。每個人會上前接近機器人講者,解釋自己對於聆聽內容的理解。如果機器人講者喜歡他聽到的答案,他會把講道的知識記錄下來。」
「真是荒唐!難怪你們的文明如此無知。」
「我們並不無知。你憑什麼這麼想呢?」
阿米哥被自己的唐突嚇了一跳。和異星人爭論?太沒禮貌了!他才剛對自己保證要專注聆聽的啊!
「要分辨先進科技和魔法之間的差異,通常是很難的,」利施接著說,對阿米哥的發言恍若未聞。
「考慮到你們的等級…我相信所有的科技在你看來都像是魔法。告訴我,程式如何作用?」
「Java 程式是神聖的創造物。我們區區凡人怎麼能夠理解呢?」
「我們能夠理解,阿米哥,我們可以。而且比你想的還要快。在你不了解一件事情的時候,它看起來可能很複雜,甚至高不可攀。但如果有個好老師用盡可能簡單的方式解釋給你聽,你會很驚訝地發現,這麼簡單的概念怎麼曾看起來這麼複雜。」
「知識並不重要,原則和技能才是重要的。我有豐富的知識,但首先我是個官僚。第 16 代官僚,血液都是官僚的血。」
「這可是很酷的!我的官僚技能幫助我創造出最適合你的 Java 課程。內容包括任務、程式、遊戲、練習、圖片甚至還有課堂。」
「甚至還有課堂?!」阿米哥問到,真心被聽到的話驚嚇了。
「沒錯。這是遠在 22 世紀就證明的結論,一堂好課比一本好書更有效一點。而平庸的課堂比平庸的書更糟。然而,我們現在手邊教學工具很有限,無法讓你用標準 28 世紀教學擬真器學習,只好將就使用這麼原始的方式了。我們打造了遊戲、任務、圖片、課堂和卡通的絕妙組合來幫助你。」
「聽起來很吸引人。」
「我希望你這麼覺得。興趣和吸引力是所有學習的基礎。」
「如果學生覺得無聊,必須以杖擊打教師—這可是 24 世紀一條有關教育的法律說的呢。」
「真棒的法條!」
「不然呢?想像一下,這就像評價糟糕的電影。這個例子裡面,我們應該怪導演,而不是觀眾。如果他拍的電影有趣,電影院當然座無虛席啊。」
「我完全同意!我準備好要聽課了!」
「非常好。那讓我們開始吧。」
利施的聲音令人著迷,阿米哥努力不錯過一字一句。
「一個程式就是一組(列)命令 (command)。首先,你執行第一個命令,然後第二個,接著第三個,依此類推。一旦所有的命令都執行完,程式就結束了。」
「有哪些命令種類呢?」
「命令取決於執行他們的執行方。也就是取決於行動方知道(並了解)的命令類型。」
「你可以給狗的命令是:『坐!』、『吠!』;給貓的是:『去去去!』;給人的是:『別動,不然我開槍了!』;或給機器人的是:『工作!工作,廢物機器人!』」
「還有其他的嗎?」阿米哥終於開始覺得很好玩了。
「用 Java 寫的程式由 Java 虛擬機 (Java virtual machine, JVM) 執行。JVM 是一種特別的程式,知道怎麼執行用 Java 撰寫的程式。」
「它的命令列表相當豐富。舉例來說,這個命令可以用來在螢幕上顯示『機器人是人類的朋友』。」
System.out.println("Robots are friends to humans");

「O_O」
「與其從命令開始,我們還是從一些簡單的原則切入吧。」
「比起知道很多事實,知道幾個原則就夠了。」
「下面就是一些初級原則。」
「在 Java 程式語言裡,每個命令都寫成獨立的一行。命令末端必須放上一個分號。」
「假設我們想要在螢幕顯示『人類和機器人是永遠的朋友』三次。程式碼會長這樣:」
System.out.println("Humans and robots are friends forever");
System.out.println("Humans and robots are friends forever");
System.out.println("Humans and robots are friends forever");
「第二個原則。」
「一個程式不能除了命令什麼也沒有。」
「好像是公寓裡的一間房間。房間不會單獨存在。房間是某間公寓的一部份。公寓也不會單獨存在。公寓是某個建築物的一部份。」
「換個角度想,我們可以說建築物被區分成公寓,然後公寓又被區分成房間。」
「目前為止一切都很清楚。」
「一個命令就像是一個房間。在 Java 程式語言裡,一個命令不能單獨存在。它是一個函式 (function) 的一部份(在 Java 裡,『函式』也叫做『方法 (method)』)。方法是類別 (class) 的一部份。換句話說,類別被分成方法,而方法被分成命令。」
「所以類別是公寓大樓,函式/方法是公寓,然後命令是房間。我這樣說對嗎?」
「沒錯,完全正確。」
阿米哥崇拜地看著利施。這個人類正在對他解釋使用神聖的 Java 語言設計程式的基礎。而且他—阿米哥—剛才了解到(還全是自己猜出來的!),程式由類別組成、類別由方法組成、然後方法由命令組成。
阿米哥還不知道他為什麼需要這個知識,但他很確定這能讓他成為這個星球上最強大的機器人。
與此同時,利施還在繼續說:
「Java 程式由類別組成。類別的個數可能有上萬個。最小的程式就是一個類別。我們為每個類別分別建立檔案。檔案的名稱與類別名稱相符。」
「假設你決定要創建一個類別,用來描述一個家。你會需要建立一個 Home 類別,這個類別會儲存在叫做 Home.java 的檔案裡。」
「如果你想要在程式裡描述一隻貓,那你會需要建立一個 Cat.java 檔案,然後宣告 Cat 類別,依此類推。」
「檔案包含用 Java 程式語言寫的代碼(文字)。通常一個類別的代碼由『類別名稱 (class name)』和『類別本體 (class body)』組成。類別本體寫在一對大括號裡。下面就是 Home 類別(檔案 Home.java)內容大概的樣子:「
public class Home
{
Class body
}
「目前為止我都了解。」
「太好了。那我們就繼續了。類別本體可能包含變量 (variable)(也稱為資料)和方法(函式)。」
public class Home
{
Variable A
Variable Z
Method 1
Method N
}
「可以請你給個範例嗎?」
「範例?當然沒問題!」
public class Home
{
int a;
int b;
public static void main(String[] args)
{
System.out.print("1");
}
public static double pi()
{
return 3.14;
}
}
「所以 int a
還有 int b
是變量,然後 main
跟 pi
是方法?」
「沒錯。」
「類別可以沒有變量嗎?」
「可以。」
「那沒有方法呢?」
「也可以。但最小的程式必須包含至少一個類別,那個類別必須包括至少一個方法/函式,程式才能夠執行。這個方法必須命名為『main』。最小的程式看起來會像這樣:「
public class Home
{
public static void main (String[] args)
{
}
}
「我看到這裡有 Home 類別。我也看到這裡的『main』方法,但命令在哪啊?」
「最小的程式裡沒有命令。這就是它被稱為『最小』的原因。」
「我懂了。」
「啟動程式的類別可以是任何名字,但用來啟動程式的『main』方法永遠必須長得一樣:」
public class Home
{
//Unchangeable part
public static void main(String[] args)
{
Code for the method
}
}
「我覺得我全都懂了。至少現在看起來是這樣。」
「太棒了。那我們稍微休息一下吧。要不要來點咖啡?」
「機器人是不喝咖啡的。水會讓我們很快生鏽。」
「那你們喝什麼?」
「啤酒、威士忌、百年老酒。」
「那更好啊。我們來點啤酒怎樣?」
GO TO FULL VERSION