[初章] 第零幕、萬用起手與回應.幕間
Tags
- 初章
我至今的人生,所有的邂逅、學習、成長、累積的一切,
究竟是自力開拓的道路,還是必然的宿命?
是不是有個更高次元的存在,正旁觀著一切發生,
嘲笑著活在既定劇本之中,
卻自認為能夠親手決定命運的我呢?
人生我不敢說,但是對於使魔的一生來說,是的。
完全決定好的劇本,可預測的過程與結果。
硬體或物理上也許有些意外性存在,
軟體上則多是被確定的、可重現的。
使魔如果做錯了什麼,
一定是主人給錯命令。
使魔是絕對忠實的,不會自行更改任何命令。
即使那是錯的,結果不符我們預期,使魔也會照做。
不可能實行時,只有以死謝罪而已。
而這死亡,就是俗稱的程式當掉。
主人能夠控制一切,主人也必須要控制一切。
這個特點有好有壞,不過至少事情很單純。
回歸正題,隨便一段自言自語,
都花了如此多的字數,
區區一行又怎足以令使魔表達
對主人的那份滿溢而無以言表的愛?
想必期待到不行的主人,肯定為此困擾已久,
等不及在續篇中尋找良藥以緩解此症吧?
『這還不簡單,多下幾個 printf() 不就結了!』
一個 printf() 不夠,那你有再下第二個嗎?
#include <stdio.h>
int main()
{
printf("Hello my MASTER!");
printf("I love you.");
printf("Could you play with me more and more?");
return 0;
}
輕鬆解決啦!F11給它用力戳下去──
WTF!?誰准你黏到同一行的?
咳。這麼想著的人請到外面罰站。
畢竟君要臣死,臣不敢不死;
主人要使魔換行,使魔不敢不換。
主人不明確命令使魔換行,使魔不敢自作主張。
委婉含蓄、謙遜有禮什麼的,在使魔面前全部都該扔掉。
儘管這與人際相反,但我們必須練習做出直接、精確、詳細、
沒有其它解釋方式的命令。
能給出明確指令的,才是優秀的主人。
說到換行,第一個想到的當然是 ENTER 鍵啦!
printf("Hello my master!
");
不行呢。完全不行呢。
連上色看起來都不對勁。
之前我們說過,為了明確辨識是文字或是命令,
我們把文字用""
包起來。
而換行很容易破壞整個秩序以及排版,
所以我們不使用真正的換行。
我們定義,在 ""
之中,見到 \n 等同見到換行。
也許你會覺得,\n 和換行看不出有什麼關聯?
好吧,那麼你覺得『斧』這個字,長得很像斧頭嗎?
但是中文使用者,看到『斧』字,基本都知道是說斧頭。
只要大家對記號的認知一致,或至少相近,就可以溝通。
如同定義『\n』為代表『換行』的記號一樣,
中文也定義『斧』字,或『斧頭』這詞,
是代表著斧頭這種武器的記號。
生活中處處可見類似的例子,想不見都難。
知道這件事後,我們就知道該怎麼改了。
1
2
3
4
5
6
7
8
9
#include <stdio.h>
int main()
{
printf("Hello my MASTER!\n");
printf("I love you.\n");
printf("Could you play with me more and more?\n");
return 0;
}
有注意到即使是最後一行文字 (Line 7),
我也為它加上了換行記號 \n 作為結尾嗎?
其實 \n 比起 new-line (新的一行),
更接近於 End-of-Line (LINE終結者一行結束)的意思。
要是我們不明言『這一行已經結束了』,
那麼這一行就懸在『不知道結束了沒』的半吊子狀態。
因此,對於每行的行末,我們都應負責地加上 \n,
明確地告知這一行的結束。
有始有終是良好的習慣,就像每條命令之後的『;』 (註1) 一樣。
那麼,既然都能讓使魔說出長文了。
代表你已經有能力製作祝賀生日用,
或甚至告白等用途的使魔了。
期待至此,你已經不必參考魔法書,
便能直接從無到有,構築出所需要的術式。
理解每一步的意義與影響,合理地構築每行每句,
就算偶爾會犯一些小錯也不要緊。
現在,使魔只能單方面地傳達訊息給主人。
下一篇將介紹如何教導使魔,
讓他能夠接收主人想傳遞的訊息,
真正達成雙向的溝通。