给大一计算机的建议,来自一名即将大四的老货

本文纯属个人观点,勿喷,愿意和大家一起交流进步

致有缘人

自己即将升入大四,犹记得自己大一的时候的迷茫,当时自己多么希望有个带自己的学长,然而无奈只能自己摸索,特写此篇献给即将踏入大学的你们。

不管什么原因来了计算机专业,既然来了,就要努力爱上它。这里你将见识到很多很多新名词,Web,html,JavaScript,C++,python,框架,包,复杂度,函数,库,协议,TCP,UDP,CPU,if,else,循环,算法,递归,迭代,内存,指针,Android,比特,爬虫,二进制,调制,服务器,VPS……开始的自己和你们一样,什么也不知道,但这不重要,要相信自己可以做到,缺的只是去开始,一篇 编程入门,先推荐给大家。

学计算机能做什么

大一的时候开始学 C++ ,整天对着黑框框,不禁在想,自己学了假计算机吗,这是在干什么?但我想告诉你的是,计算机不仅如此,他可以做应用,电脑上的应用,QQ,迅雷,手机上的游戏王者荣耀,斗地主,计算器,时钟,各种每天浏览的网页,研究算法,打败柯洁的阿尔法狗,汽车的自动驾驶,共享单车……所有的所有我们都可以做,没错,我们应该自豪,我们每天使用的各种东西,都是我们程序员所能做出来的。

三条大学的道路

大学早已不同高中,不再有人管,但最重要的还是「好好学习,天天向上」,真的,即使大一,也要认真,只要拿出高中的百分之八十去学,相信就会取得不错的成绩。有了成绩,大四的时候会有更多的选择,保研?读研?工作?

ACM

ACM 说简单了就是一个比赛,一般三个人组队,然后在规定时间和其他小组比谁做对的算法题多。题目做完提交,如果成功了就会得到令人兴奋的 「AC」,accept,就是题目做对了,还有就是「AK」,all kill,完成了所有题目。

自己大一的时候,对 ACM 不是很感冒,总觉得那些题目很无聊。现在反而有点喜欢上了算法(算法就是解决一个问题的思路,方法,具体操作),每解一道题的喜悦,是他人无法体会的。我推荐大家先去尝试尝试 ACM ,因为不管保研,还是找工作,很深的算法基础都会得到青睐。我们院也有自己的 ACM 队,可以去加入。

这里给几个地址,大家可以去尝试下
杭电 OJ ,大多数人用这个
北大 OJ ,和杭电 OJ 类似
LeetCode ,国外的一个网站,Facebook ,谷歌的笔试算法题都可能出自上边。

科研

所谓科研就是看别人的论文,了解别人的思想,去改进作者的算法。怎么判断是否改进了呢?举个简单的例子,预测明天天气,作者的正确率 90%,你的算法经过实验发现是 95%,你这个算法就比原作者的好。然后你就可以发论文了,从此走上人生巅峰。就是看论文,写代码,做实验,分析实验数据,尝试尝试再尝试。当然更牛的人就是提出崭新的算法,从此留名青史,如果你做到了,记得带我飞。

怎么开始科研呢?做到不要脸,直接去找老师,问老师有没有什么项目,自己想跟着做。大学老师真的都很好,他带你其实得不到任何的好处,因为把你带出来,你可能研究生也不会跟他。这里感谢一直带我的龚文引老师,谢谢老师。不要想着老师找你,大学最重要的是要主动。

做应用

做应用,相比其他两个会更有成就感。因为做出来可以很快的让你的同学用到,或者服务自己。主要有三个方向。

Web。 就是网页,你每天用浏览器进的所有东西都是网页。做网页你需要去学 html ,JavaScript,css。微信推出的小程序,也可以算做在这里。当然由于越来越多的人进入 IT 行业,除了了解 Web 前端,你还得了解一些后端的东西,例如一些脚本语言 PHP,python,或者 java 都可以。你如果全精通了,就可以走上人生巅峰,成为一名传说中的全栈工程师。

移动端。Android,iOS,手机上所有的 APP 我们都可以做。对于 Android 你需要学习 java 或者最新的 ktolin。对于 iOS 你需要学习 Objective-C 或者 swift ,当然你还需要买苹果的手机和电脑。

后端。这里的东西就比较杂了,大家接触的也比较少,因为我们只会用 APP ,浏览网页,背后的东西谁知道呢。你需要去了解 Linux 系统,做后端的东西它比 Windows 方便的多。你需要学习 python ,go,java 等等中的几种。你需要学数据库,网络,系统安全。总之很杂,慢慢的了解。

总之,由于现在越来越多的库,做一个 APP ,网页成本越来越低,随随便便就可以做出来一个。你如果想往这方面走,一定要记录深入你所学的,不然仅仅做个东西没什么竞争力的。重要的是他设计的思想,方法,你的目标应该是成为造轮子的人,而不是用别人的东西。

最后,不管哪个方向,我们都可以去尝试,甚至都去做到极致。

科学上网

大一的一个巧合,我才意识到,天哪我们原来上的是假网。由于 GFW 的存在,一些国外的东西,我们都不能用。之所有我们不会感觉缺了什么,是因为国内所有东西都有了对应的替代。作为程序员,我们至少会使用 Google 搜索,所以大家要想办法去使用它。这里推荐修改 hosts 或者 ss ,话题敏感,不多谈。

一些有用的东西

github/coding
两个可以找到开源项目,或者放自己项目的地方,一个国外的一个国内的。里边有世界上各种各样的大牛贡献的项目,也有 BAT,也就是国内的百度阿里腾讯贡献的项目。所谓开源就是,在遵循某些协议的前提下,我们可以把它的代码用到我们自己的代码里。

git
要使用 github ,当然少不了 git。一个版本控制和协作的工具,你一定会爱上它。推荐廖雪峰老师的 git 教程。

石墨
可以进行多人协作,实时编辑保存文档,用了就知道了,不解释。

segmentfault
一个问答平台,当你有什么 BUG 解决不了的话可以到上边提问

stackoverflow
国外的问答平台,你如果用英文搜索问题,多半会进入这个网站,几乎没有它解决不了的问题。

知乎 以及 其 APP
上边很多程序员,这里推荐下 温兆伦,即 winter,赵劼,vczh,虽然他们现在都是在水知乎,但可以看看他们的之前的回答,感受下和牛人直接的差距。还有 萧井陌 ,蓝色 翻翻他们的答案会有一些好处的。

quora 以及其 APP
一个国外的问答网站,可以提高自己英语,以及了解下世界上有趣的事情。说道英语,一定要学好英语,一定要学好英语,一定要学好英语,背单词可以用扇贝,百词斩等,也可以用我最近用的 Lingvist。推荐一个口语教程,链接:http://pan.baidu.com/s/1c184jNa 密码:rpbf 。

Telegram
一个 IM 应用,也就是即时通讯,与QQ,微信类似。安全性很高,上边可以找一些有趣的群组,和外国人交流学习,会发现很多很多有趣的事情。但需要科学上网。

微信公众号
stormzhang ,主要做安卓的,现在分享一些他的经历、经验
一个程序员的日常,主要做 python,数据分析
小道消息,互联网最新的见解

社团

根据自己的兴趣要选择加入一些社团,这是高中所不具有的,你会认识更多的全国各地的朋友,增长自己的见识,这里介绍两个我加入的。

点石团队
地大唯一的互联网团队,加入后至少可以增加你的见识,你也可以和里边的小伙伴合作完成一些东西, APP ,网页 什么的,充实自己的大学生活。

计算机羽毛球队
自己虽然球打的不怎么样,但认识了很多朋友,一起打球,一起吃饭,一起出去玩,一起过生日,很棒。

能力

计算机最重要的就是解决问题的能力,搜索的能力,我们会遇到各种各样的 BUG,无穷无尽的 BUG,但我们要养成自己解决的习惯,不要动不动就去问别人,这样提高的只会是别人,自己永远提高不了。你要相信没有搜不到的问题。

还有就是该学哪门语言的问题,至少会两种类型的语言,编译型的语言 JAVA,C++ 之类的,解释型的语言,python,php 之类的。但最后你会发现,语言其实仅仅是一种工具,最重要还是解决问题的思路方法。

End

「当你觉得已经很厉害的时候,其实仍旧什么也不会」,计算机相关的东西真的太多太多了,学的越多,不会的也将越多,这方面我们一定要谦逊,多向其他人学习。大学很短,真的很短,「starting is half the battle」,共勉~

windliang wechat