Memoir - Road

謹記我跌跌撞撞,那不成熟的過去。



路?

元旦連假回家,老爸載著我,吃晚餐的路上。

“唸到現在,你還會想念電機嗎?”,爸提了個問題。

“還好,只是不知道念電機的話現在會怎樣”
“不過可能沒辦法像現在一樣方便,上個網找個方向就能充實專業”,我想想了後說。

“那樣就要像我一樣買單芯片機,一些材料,動手實作吧”,爸說。

“那樣很麻煩吧?”,我不禁嘆道。

當初選志願時,對資訊甚是排斥,主要是因為高中有過挫折吧。

高中電腦課學 C++ ,當時適應非常不良。
對於using namespace stdcin >> , cout <<,感到沒有 sense。
這些老師僅是帶過,我是有聽沒有懂,由於沒有深入講解,我對整個架構觀念,建立不太起來。

一切是如此的抽象。

對於引入頭文件云云感覺都記不太起來,可能是不太熟練吧。

但畢竟住宿,也沒有電腦可以搞這些。

對於沒辦法操作的程式,要我光看課本複習,我是辦不到的。

而結果是每次上課,我都只能生硬的使用這些東西,對於這一切一切,我感到非常恐懼,
一種對陌生感到的恐懼。

一個段落寫完,運行不起來,底下錯誤訊息也不會看,老師好像也沒教。

總之,感覺要完成一段可以跑的東西,困難重重,一個不會就杵在那裏。

常常只能向老師求救,對自己的無能感到厭惡。

連 cout、cin 的 <<>> 都常常寫反。

每每使用這些東西,我都會感到痛苦。

在這堂課中,我體會不到編程的樂趣,沒有成就,只有挫敗感。

記得曾向老爸抱怨聽不懂,他只是表示你現在只要把書讀好,不用去搞那些。


就這樣渾渾噩噩了三年


升大學的暑假,老爸教了我 VB6 ,我開始對程式開發產生了些興趣,
也終於能開始熟練的使用簡單的語法了。

比起那時 Dev C++ 視窗裡的天書般的除錯訊息,VB6 更是直接的標示出有問題的地方。

而且不用引入函式庫, syntax 的 support 感覺強很多。

物件都帶有各自的屬性,一切具體了起來,OBP 帶我看到更結構化的世界,
也為我鋪好了 OOP 的道路。

程式原來是嚴謹但不失彈性的,我深刻的體會到了這點。

“你怎麼會這樣寫捏?”

彷彿又回到了兩年前,老爸竟然說出了和電腦老師一模一樣的話。

但是這次我已可以好好說出我的想法,而不是當年的支支吾吾。

看著老爸拉著元件,加上程式碼,我好像可以了解到一些程式碼後的行為。

感覺經歷一兩年的沉澱,思路終於和這領域銜接上了,每個問題好像都能問到點上。

拉著表單,為各式各樣的元件加上程式碼,一切的一切如我所願的跑了起來。

程式能終於照著我的想法去跑了。

遇到 bug 我也終於看得懂錯誤訊息。

更重要的是學會了設中斷點,逐行運行程式,學會調試。

感覺 VB6 比 C++ 親切很多,語法檢查,錯誤提示,對我來說都點到了點上。

學習不再窒礙,我可以的,這是一個我可以掌握的世界。

上了大學學了 C 語言,感覺自己看了夠多,兩種語言間 (C/C++ , VB) 能互相輝映。
剛碰 C ,就深深感到他比 C++ 親切,感覺少了很多奇怪的東西。

有了先前的經驗,我覺得即使再複雜,只要能跟我說明其中含意,我就能好好記住他。

好,那就開始吐槽 C 和 C++ 吧,我覺得用 C 入門比 C++ 好的一些點。

雖然說總的來說是我高中時不認真成分居多。(其實 VB6 才是最好入門的啊)

  1. `#include` vs `#include`
    恩,我覺得前者比較有 sense , 標準的 io 嘛,那 stream 是什麼鬼 ( murmuring )
  2. `using namespace std;`
    這個我不知要怎麼說了,完全沒有頭緒啊。 可能你跟我講沒有用的話,`cout`要改成`std::cout`,我就會有 sense 了。
  3. `scanf("%c%d") printf("%c%d")` vs `cin >> cout <<`< blockquote> 前者可能會有`&`符號的問題。 不過比起莫名其妙且老是記不起來的`>>`與`<<`, 我相信前者的 format string 和 `&` 對我比較有 sense 不要說為了打比賽啊,但說起來 c 是 c++ 子集,要用 ++ 的庫講一下應該就會知道了吧? 況且`stdio.h`的東西比`iostream`的快啊,怎不教`cstdio`? < li>
  4. `fopen`
    現在想起來怪怪的,如果有教 fopen 那當初是用甚麼寫入?`fputs` ? 那怎不教 `cstdio`? 要再查一下,記憶模糊了。
  5. `'\n'` vs `<< endl;`
    換行,好像過了很久才明白 `endl` 是 end line 的意思, 相形之下 `\n` new line 似乎比較有 sense。

而漸漸的,我從 VB6 回歸到 C,是種反璞歸真的感覺。
VB6 的視窗化,讓我覺得一切都太麻煩,而 Linux 簡單明瞭,深深的吸引了我。

在 VB6 中寫一段簡單的東西,都要拉一個元件出來,也許也是到了個瓶頸,感覺做不出甚麼東西出來,
開始想要追求功能性的我,投向了 C 語言的懷抱。

  • 大一期中,用 C 調 ncurses 寫了個俄羅斯方塊,
    感覺能開始做複雜的東西,之後也寫了個多人聊天室。
    儘管現在看了,那些 code 全都醜的要命。
  • 回憶高中所學,用一招 fopen 開啟了更大的世界(壞笑)。
  • 開始熟悉 script,寫了蠻多小東西(也是壞笑)。
  • 學會了 system() 各種花式亂搞(反正主機不是我家的(逃。
  • 學了很多語言,開了眼界,覺得學習新東西,是件有趣的事情。

然而一切的一切在之後的之後,回來看這些事總覺得 too naive。

雖然常常感嘆高中沒得引發興趣,踏入這領域,不過至少現在是在路上的。

我浪費了太多時間在別人無意義的程式上了,從現在起,我要寫我自己的。

上知乎,感覺看到的東西越來越多,只要我肯伸出手,就可以抓住這世界。

開始頻繁的上 GitHub ,雖然可能推的 repo 不夠入流,大多只是些小 script,

但是確實是有在累積的,屬於自己的某些東西。

在 zerojudge 刷了些題,看著排行上的那些高中學長同學等,不禁感嘆錯過了電研。

想要刷到章魚的高度呢,不過還有距離呢,笑。

看起來好像是在吐槽高中電腦課,其實更多的是對自己的憾恨。
是當年那個找不到目標的自己,造成現在的碌碌無為,
總想著要做些好玩的事情逃離課業,卻一次次和計算機擦身而過,

罷了,就讓過去的一切,都封存在這篇文章中吧。

------------- EOF -------------