第10章 第一個給你看
周一上午的哲學導論公共課,大教室里坐得滿滿當當。
許薇照舊踩著鈴聲溜到葉明身邊,把書包往桌肚一塞。
她胳膊肘輕輕碰了碰葉明,入目便是他桌上攤著的《網站建設從入門到精通》,筆記本上畫著密密麻麻的架構圖,箭頭交錯。
他全然沒把講台上教授的「洞穴隱喻」放在眼裡。
許薇湊到他耳邊,氣息輕得像羽毛。
葉明感覺耳邊好像有小貓靠近,筆尖沒停,頭也不抬。
「葉明,你這是在上哲學課,還是偷偷開編程小灶呢?」
「哲學課。」
許薇戳了戳那本厚書,語氣里滿是調侃:「那你看這個?」
葉明翻了一頁,在架構圖上補了個節點:「老師講的我都會了。」
他語氣平淡得理直氣壯。
許薇噎了一下,瞪著他的側臉:「你知不知道你這樣真的很欠揍?全班都在記筆記,就你特立獨行。」
葉明終於抬眼,目光帶著笑意掃過她:「再說不是還有你這個真大好人嘛,筆記你會不給我看?」
許薇看著他篤定的模樣,耳尖微紅,那點小彆扭忽然煙消雲散。
她撇撇嘴嘟囔:「行行行,你是扒皮你有理。天天研究這個,到底鼓搗出什麼名堂了?」
葉明頓了頓筆尖,看著她亮晶晶的眼睛,認真道:「還在學,等做出來了,第一個給你看。」
畫餅誰不會。
一句平淡的承諾,讓許薇的心跳莫名漏了半拍,這傢伙怎麼老說這種話。
她慌忙別過臉,故意清了清嗓,小聲嘀咕:「這還差不多……」
過了一會,葉明放在桌上的手機又亮了一下。
許薇又湊過來,眼底閃著狡黠的光:「哎,你手機亮了吧?看你的表情,我猜是蘇晴發的信息吧?」
葉明的筆尖猛地一頓。
這個蘇晴,自己都不理她了,怎麼還時不時發信息?真當自己是樹洞了?
許薇追著問:「回了嗎?」
葉明淡淡道:「沒回。」
「為什麼不回?」
回什麼回,回她不如畫架構圖。
葉明放下筆,無奈地看她一眼:「你問題真多。」
許薇「噗」地笑出聲:「行行行,班長大人嫌我煩了。」
她擺了擺手坐直身子,嘴角卻抑制不住地上揚,小聲嘟囔:「不過你這樣挺好的。」
後半句她沒說出來——不理那些亂七八糟的人,挺好的。
葉明沒接話,低頭繼續畫圖思考,眼底的笑意卻悄悄漫開了一點。
下午的英語課則是另一番光景。
阮星像只小麻雀,坐在葉明旁邊嘰嘰喳喳說個不停。
她從六級聽力的焦慮聊到國慶的聚會計劃,眼睛亮晶晶的。
「葉明你昨天又泡機房了吧?黑眼圈都快掛到下巴了!國慶七天你總不能還泡在機房吧?」
葉明翻著英語書,言簡意賅:「泡機房。」
阮星瞪大了眼睛:「你瘋啦!七天全泡機房?」
頓了頓,她又小聲嘀咕:「不過你這種勁頭,要做什麼肯定能成。」
她剛要繼續吐槽,葉明的手機忽然亮了起來。
屏幕上彈出一條信息,發件人里有「蘇」字。
阮星眼睛一亮,湊過來壓低聲音:「喲!有人給你發信息哎!女的吧?不回嗎?」
葉明隨手按滅屏幕,連看都沒看一眼。
阮星吐了吐舌頭,眨眨眼:「行行行,學生幹部都高冷,我懂。不過你這樣……還挺酷的。」
她轉回去看書,過了幾秒又忍不住想開口。
葉明忽然想起前世那個電話,轉頭看向她,語氣認真:「你平時出去玩,多留個心眼。如果有人叫你出去喝酒、應酬,覺得不對勁就立刻給我打電話。」
阮星整個人都愣了,眨著眼睛看他,眼底慢慢漾開暖意:「你這是在關心我?」
關心什麼關心,老同桌了,不想你出事。
葉明沒回應,只是重新轉回頭看書。
阮星盯著他的側臉,心裡一暖,乖乖點頭:「知道啦!大班長說得對,我記住了!」
周四下午,計算機學院機房。
屏幕上的錯誤提示,已經對著葉明嘲笑了半個多小時。
他反覆檢查了語法,對照了筆記,甚至重啟了環境。
代碼依然固執地報錯,像一堵透明的牆,把他和運行成功的世界隔開。
有時候,最讓人無力的不是龐然大物,而是近在咫尺卻看不見的塵埃。
他揉了揉發脹的眉心。
機房空曠,只有機器低鳴。
這種獨自面對未知的沉寂,比前世領導在會議室里的咆哮更磨人。
那時你知道問題在別人,現在你知道,問題只在自己。
就在他幾乎要放棄,準備從頭再敲一遍時,一隻手從旁邊伸過來,食指關節在屏幕某處輕輕叩了叩。
「這裡,多了一個下劃線。」
葉明一愣,順著那手指看去,use_rname。
那個該死的、隱形的下劃線,正靜靜躺在那裡。
他猛地回頭。
一個戴黑框眼鏡的老師站在他身側,微微傾身看著屏幕。
他穿著灰藍色的襯衫,袖口挽到小臂,身上有種常年待在實驗室里的人特有的乾淨與沉靜。
不是嚴肅,而是一種見慣了各種錯誤的平靜。
葉明連忙改正,運行。
那個困擾他許久的錯誤提示,消失了。
「謝謝老師!」他趕緊站起身。
老師擺了擺手,示意他坐下,自己也從旁邊拉了把椅子過來。
「找了很久?」
「嗯……快一個小時了。」葉明有些窘迫。
為一個下劃線,真是出息。
「正常。」
老師語氣平淡,聽不出是安慰還是陳述。
「剛開始學,眼裡只有自己想寫的邏輯,看不見實際寫出來的字符。
眼到,手不到,心也沒到。
所謂的『結硬寨,打呆仗』,在編程里,就是和每一個字母、每一個符號死磕。
磕贏了,路就通了。」
葉明心頭一震,「眼到,手不到,心也沒到」這十個字,精準地戳中了他剛才那種焦躁又盲目的狀態。
「叫什麼名字?」老師推了推眼鏡,問道。
「我叫葉明。是人文學院的,大一。」
老師點了點頭,目光落回屏幕上他那段雖然跑通但依然稚嫩的代碼。
「文科生,肯沉下心鑽這個,是好事。邏輯和耐心,這兩樣你看起來不缺。」
他話鋒一轉,語氣依舊平和,卻多了些分量。
「不過,編程不光是讓機器聽話,更是讓自己和別人看得懂。你這個變量名,即便拼對了userName,也不是個好名字。」
葉明怔住。名字不對?
「userName太模糊。」
老師用筆在他筆記本空處隨手寫下幾個詞。
「是登錄的用戶名?顯示的名稱?還是全名?
在資料庫里,它可能叫login_name;在個人資料頁,它該叫display_name;在表單里,它可能只是input_name。
一個模糊的名字,會在你代碼變多時,變成一百個互相打架的模糊概念。
命名的藝術,就是消除歧義的藝術。這是比語法更早的『正確』。」
葉明看著那幾個詞,仿佛又有一層薄霧被撥開。
他之前只關心「能不能跑」,老師卻已經在說「怎麼才跑得明白、跑得長遠」。
「我姓張,張秉文,計協的指導老師。」
老師放下筆,像是隨口一提。
「以後有問題,可以來問我。每周六上午我一般都在系裡。」
葉明壓下心中的驚喜,連忙道謝。
他想起李悅學姐的提醒,猶豫著問:「張老師,關於網站前後端怎麼更……更清晰地配合,我有點亂。」
張秉文似乎就等他問這個,沒有直接回答,而是問:「你想像中那個網站,最後想做成什麼樣?」
葉明深吸一口氣,把「重生模擬器」的粗略想法說了出來,包括簡單的隨機事件、屬性分配和不同人生路徑。
張秉文安靜聽完,點了點頭。
「想法有點意思。那你就不能只想著『登錄』、『顯示』這幾個散點了。你得先有個地圖。」
他又拿起筆,在剛才的紙面上畫了三個方框,用箭頭連接。
「前端,負責展示和交互,就是瀏覽器里玩家看到、點到的東西。
後端,負責處理和判斷,就是你設的那些規則、概率計算。
資料庫,負責記住一切,玩家的選擇、結果、狀態。」
他點了點連接前後端的箭頭。
「這裡,要定義清晰的語言。前端發『請求』,要什麼數據,做什麼操作。
後端回『響應』,給你結果,或者告訴你成功失敗。
別把前後端的邏輯攪在一起,那是亂燉,以後沒法加新菜。」
寥寥數語,一張極簡的藍圖。
葉明之前腦子裡糾纏的「HTML怎麼接PHP」、「數據怎麼來回傳」的毛線團,被這幾個方框和箭頭理出了清晰的線頭。
「當然,這是最理想的地圖。」張秉文笑了笑,「實際走起來,會踩坑,會繞路。但心裡有這張圖,迷路了也知道自己在哪。這比學一百個函數調用更重要。」
他站起身,看了看表。
「今天先到這兒。記住兩件事:一是名字要取得清楚,二是腦子要分得清楚。回去可以把你那個模擬器的流程,用這種分塊的思路畫一畫,不用寫代碼,先畫明白。」
許薇照舊踩著鈴聲溜到葉明身邊,把書包往桌肚一塞。
她胳膊肘輕輕碰了碰葉明,入目便是他桌上攤著的《網站建設從入門到精通》,筆記本上畫著密密麻麻的架構圖,箭頭交錯。
他全然沒把講台上教授的「洞穴隱喻」放在眼裡。
許薇湊到他耳邊,氣息輕得像羽毛。
葉明感覺耳邊好像有小貓靠近,筆尖沒停,頭也不抬。
「葉明,你這是在上哲學課,還是偷偷開編程小灶呢?」
「哲學課。」
許薇戳了戳那本厚書,語氣里滿是調侃:「那你看這個?」
葉明翻了一頁,在架構圖上補了個節點:「老師講的我都會了。」
他語氣平淡得理直氣壯。
許薇噎了一下,瞪著他的側臉:「你知不知道你這樣真的很欠揍?全班都在記筆記,就你特立獨行。」
葉明終於抬眼,目光帶著笑意掃過她:「再說不是還有你這個真大好人嘛,筆記你會不給我看?」
許薇看著他篤定的模樣,耳尖微紅,那點小彆扭忽然煙消雲散。
她撇撇嘴嘟囔:「行行行,你是扒皮你有理。天天研究這個,到底鼓搗出什麼名堂了?」
葉明頓了頓筆尖,看著她亮晶晶的眼睛,認真道:「還在學,等做出來了,第一個給你看。」
畫餅誰不會。
一句平淡的承諾,讓許薇的心跳莫名漏了半拍,這傢伙怎麼老說這種話。
她慌忙別過臉,故意清了清嗓,小聲嘀咕:「這還差不多……」
過了一會,葉明放在桌上的手機又亮了一下。
許薇又湊過來,眼底閃著狡黠的光:「哎,你手機亮了吧?看你的表情,我猜是蘇晴發的信息吧?」
葉明的筆尖猛地一頓。
這個蘇晴,自己都不理她了,怎麼還時不時發信息?真當自己是樹洞了?
許薇追著問:「回了嗎?」
葉明淡淡道:「沒回。」
「為什麼不回?」
回什麼回,回她不如畫架構圖。
葉明放下筆,無奈地看她一眼:「你問題真多。」
許薇「噗」地笑出聲:「行行行,班長大人嫌我煩了。」
她擺了擺手坐直身子,嘴角卻抑制不住地上揚,小聲嘟囔:「不過你這樣挺好的。」
後半句她沒說出來——不理那些亂七八糟的人,挺好的。
葉明沒接話,低頭繼續畫圖思考,眼底的笑意卻悄悄漫開了一點。
下午的英語課則是另一番光景。
阮星像只小麻雀,坐在葉明旁邊嘰嘰喳喳說個不停。
她從六級聽力的焦慮聊到國慶的聚會計劃,眼睛亮晶晶的。
「葉明你昨天又泡機房了吧?黑眼圈都快掛到下巴了!國慶七天你總不能還泡在機房吧?」
葉明翻著英語書,言簡意賅:「泡機房。」
阮星瞪大了眼睛:「你瘋啦!七天全泡機房?」
頓了頓,她又小聲嘀咕:「不過你這種勁頭,要做什麼肯定能成。」
她剛要繼續吐槽,葉明的手機忽然亮了起來。
屏幕上彈出一條信息,發件人里有「蘇」字。
阮星眼睛一亮,湊過來壓低聲音:「喲!有人給你發信息哎!女的吧?不回嗎?」
葉明隨手按滅屏幕,連看都沒看一眼。
阮星吐了吐舌頭,眨眨眼:「行行行,學生幹部都高冷,我懂。不過你這樣……還挺酷的。」
她轉回去看書,過了幾秒又忍不住想開口。
葉明忽然想起前世那個電話,轉頭看向她,語氣認真:「你平時出去玩,多留個心眼。如果有人叫你出去喝酒、應酬,覺得不對勁就立刻給我打電話。」
阮星整個人都愣了,眨著眼睛看他,眼底慢慢漾開暖意:「你這是在關心我?」
關心什麼關心,老同桌了,不想你出事。
葉明沒回應,只是重新轉回頭看書。
阮星盯著他的側臉,心裡一暖,乖乖點頭:「知道啦!大班長說得對,我記住了!」
周四下午,計算機學院機房。
屏幕上的錯誤提示,已經對著葉明嘲笑了半個多小時。
他反覆檢查了語法,對照了筆記,甚至重啟了環境。
代碼依然固執地報錯,像一堵透明的牆,把他和運行成功的世界隔開。
有時候,最讓人無力的不是龐然大物,而是近在咫尺卻看不見的塵埃。
他揉了揉發脹的眉心。
機房空曠,只有機器低鳴。
這種獨自面對未知的沉寂,比前世領導在會議室里的咆哮更磨人。
那時你知道問題在別人,現在你知道,問題只在自己。
就在他幾乎要放棄,準備從頭再敲一遍時,一隻手從旁邊伸過來,食指關節在屏幕某處輕輕叩了叩。
「這裡,多了一個下劃線。」
葉明一愣,順著那手指看去,use_rname。
那個該死的、隱形的下劃線,正靜靜躺在那裡。
他猛地回頭。
一個戴黑框眼鏡的老師站在他身側,微微傾身看著屏幕。
他穿著灰藍色的襯衫,袖口挽到小臂,身上有種常年待在實驗室里的人特有的乾淨與沉靜。
不是嚴肅,而是一種見慣了各種錯誤的平靜。
葉明連忙改正,運行。
那個困擾他許久的錯誤提示,消失了。
「謝謝老師!」他趕緊站起身。
老師擺了擺手,示意他坐下,自己也從旁邊拉了把椅子過來。
「找了很久?」
「嗯……快一個小時了。」葉明有些窘迫。
為一個下劃線,真是出息。
「正常。」
老師語氣平淡,聽不出是安慰還是陳述。
「剛開始學,眼裡只有自己想寫的邏輯,看不見實際寫出來的字符。
眼到,手不到,心也沒到。
所謂的『結硬寨,打呆仗』,在編程里,就是和每一個字母、每一個符號死磕。
磕贏了,路就通了。」
葉明心頭一震,「眼到,手不到,心也沒到」這十個字,精準地戳中了他剛才那種焦躁又盲目的狀態。
「叫什麼名字?」老師推了推眼鏡,問道。
「我叫葉明。是人文學院的,大一。」
老師點了點頭,目光落回屏幕上他那段雖然跑通但依然稚嫩的代碼。
「文科生,肯沉下心鑽這個,是好事。邏輯和耐心,這兩樣你看起來不缺。」
他話鋒一轉,語氣依舊平和,卻多了些分量。
「不過,編程不光是讓機器聽話,更是讓自己和別人看得懂。你這個變量名,即便拼對了userName,也不是個好名字。」
葉明怔住。名字不對?
「userName太模糊。」
老師用筆在他筆記本空處隨手寫下幾個詞。
「是登錄的用戶名?顯示的名稱?還是全名?
在資料庫里,它可能叫login_name;在個人資料頁,它該叫display_name;在表單里,它可能只是input_name。
一個模糊的名字,會在你代碼變多時,變成一百個互相打架的模糊概念。
命名的藝術,就是消除歧義的藝術。這是比語法更早的『正確』。」
葉明看著那幾個詞,仿佛又有一層薄霧被撥開。
他之前只關心「能不能跑」,老師卻已經在說「怎麼才跑得明白、跑得長遠」。
「我姓張,張秉文,計協的指導老師。」
老師放下筆,像是隨口一提。
「以後有問題,可以來問我。每周六上午我一般都在系裡。」
葉明壓下心中的驚喜,連忙道謝。
他想起李悅學姐的提醒,猶豫著問:「張老師,關於網站前後端怎麼更……更清晰地配合,我有點亂。」
張秉文似乎就等他問這個,沒有直接回答,而是問:「你想像中那個網站,最後想做成什麼樣?」
葉明深吸一口氣,把「重生模擬器」的粗略想法說了出來,包括簡單的隨機事件、屬性分配和不同人生路徑。
張秉文安靜聽完,點了點頭。
「想法有點意思。那你就不能只想著『登錄』、『顯示』這幾個散點了。你得先有個地圖。」
他又拿起筆,在剛才的紙面上畫了三個方框,用箭頭連接。
「前端,負責展示和交互,就是瀏覽器里玩家看到、點到的東西。
後端,負責處理和判斷,就是你設的那些規則、概率計算。
資料庫,負責記住一切,玩家的選擇、結果、狀態。」
他點了點連接前後端的箭頭。
「這裡,要定義清晰的語言。前端發『請求』,要什麼數據,做什麼操作。
後端回『響應』,給你結果,或者告訴你成功失敗。
別把前後端的邏輯攪在一起,那是亂燉,以後沒法加新菜。」
寥寥數語,一張極簡的藍圖。
葉明之前腦子裡糾纏的「HTML怎麼接PHP」、「數據怎麼來回傳」的毛線團,被這幾個方框和箭頭理出了清晰的線頭。
「當然,這是最理想的地圖。」張秉文笑了笑,「實際走起來,會踩坑,會繞路。但心裡有這張圖,迷路了也知道自己在哪。這比學一百個函數調用更重要。」
他站起身,看了看表。
「今天先到這兒。記住兩件事:一是名字要取得清楚,二是腦子要分得清楚。回去可以把你那個模擬器的流程,用這種分塊的思路畫一畫,不用寫代碼,先畫明白。」