Re: [討論] 所以練acm都底有啥好處?

作者: eight0 (欸XD)   2014-08-18 19:59:06
我已經很久沒在寫 ACM 了,不過一些好處參考看看
1. 練基礎程式邏輯。迴圈、判斷,各種 condition 剛寫出來時絕不是最優,
通常也要重構許多遍才能做到簡潔又易懂
2. 練 Code Quality。包括程式碼的排版、註解的寫法、切割 task 的能力,
是否 self-explainatory。你的程式碼是協助向其它人表達你的想法還是
剛好相反?
3. 對整體程式架構的判斷能力。效能瓶頸?一次 AC?查 bug?物件之間的
互相溝通?記憶體與效率考量?高階語言的底層實作?從設計階段到最
後寫完,不同的地方都有很多問題可以去考慮。
4. 對語法的熟悉度。所有的語言都是要表達自己的意思,程式語言也一樣。
當你對語言越熟悉,也許哪天就會發現開始會用倒裝、飾字、借代……
5. 讓你的腦子有事情做。解題不是在電腦前猛敲鍵盤就行的,除了基礎的
題目外,很多題目都是需要你靈光一閃,讓腦袋轉轉彎。
6. 累積未來的資本。指的是你在解題時的實作方法。寫軟體時除非一開始就
打算要用特定的 Lib,不然都是從定義介面開始,再慢慢實作的。你會發
現之前用的東西都可以「移植」到現在的程式上。等到累積夠了,這就變
成你的 Lib,以後要寫什麼東西只要把框框架好,把自己以前寫的東西拿
來用就行了。
主要沒練到的部份,就是專案管理和 Team work 吧。基本上老闆是不
會管你的 Code 有多好看,他只要你盡早完成然後不要出 Bug。
在這種情況下你要會管理自己的作品,我就看過有人檔案命名都一樣
然後拿舊的蓋掉新的……。可以試試 Github。
你可以試試看,拿出三個月前寫的程式碼 Review,如果看不懂就重寫,
勉強還可以就重構,直到你只要眼睛掃過去就知道這份 Code 在幹麻為止。
總覺得這樣講下來其實跟 ACM 沒多大關係,總之就是找東西給自己寫啦!
把它當成一份要給別人看的創作,而不是單純的 AC 就好。你有看過藝術家
說自己的作品沒用的嗎?
題外話,上面提到了 Github,最近有個服務叫 Coding (https://coding.net/)
是大陸提供的,不知道大家對大陸的這種服務看法如何。可以建私人 Repo。

Links booklink

Contact Us: admin [ a t ] ucptt.com