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