计算机系 入门搞事完全指南

2018-07-13 update v 3.1

文章时间久远,是入门时期撰写的教程,不具有参考意义,仅作存档保留

0x00. 序

本文献给刚接触计算机的新生,目的是给一头雾水的各位一点建议,不嫌弃的话可以拿来当作学习的参考,本人水平和阅历有限,难免有疏漏之处,还请各位指正,我也会不断更新完善。

文章里不会什么都有,学校老师也不会把什么都教给你,有很多问题得自己寻找答案,大学不同于高中,不会有老师天天盯着你让你学习,向你脑子里灌输知识。自学非常重要(划重点

img

0x01. 我们到底学些啥?

技术宅-编程-黑框眼镜-加班

这是很多人对计算机相关从业人员的印象。

naive!

计算机行业的发展方向相当多,你可以写程序当程序员,你也可以做产品测试,设计,美工,还可以学习信息安全去当黑客谈笑风生……还有物联网,数学建模,人工智能,机器学习,区块链………(真是让人摸不着头脑.gif

嗯….咱还是从简单的开始,一点点往下说吧(排名不分先后)

(这篇文章中间部分的有些东西初学者可能根本看不懂,推荐的很多教程,文档现在可能也无从下手,别急,你只需要留个印象,等你学到那一步了,再回我这找找,相信会有收获的。)

1.输入

(讲人话:打字

习惯成自然,尽量养成一个良好的打字习惯,坐姿也十分重要,毕竟谁也不希望《颈椎病康复指南》出现在自己书架上。

2.大坨基础知识

计算机怎么工作的?RAM和ROM是啥?32位,64位是什么鬼?编译器是什么?计算机操作系统是怎么运作的?

敬请收看:老年人电脑入门(划掉

基础知识的累积是个长期的过程,个人认为书籍是其中很重要的一环,目前计算机方向的书籍有非常多,可以根据自身兴趣挑选一些经典书籍,简单的小知识可以通过搜索引擎去了解。

3.Office系列程序

大多数人应该都见过结尾为.doc的文档文件,按照素质教育的标准,咱们应该是高中学习Word,Excel,PPT这三款微软出品的办公软件,但由于各种各样的原因,可能有些同学没有接触过,那么你最好先去网上搜索,或者找朋友教你,至少先学会Word的使用。至于是使用盗版还是正版,我就不发表意见了,软件也好,游戏也好,国内的大环境让我们正版意识薄弱,不是一时半会儿能纠正过来的。给你们个信息,Office365家庭版订阅一年499人民币,可以激活5个账号,每个账号可以登陆5台设备,宿舍合购,每年只要九十九块八!全套服务带回家!(Word、Excel、PowerPoint、OneNote、Outlook、Publisher、Acess)

img

4.初涉编程

学会编程。写程序没那么复杂,给各位1个小时的时间,任何人都能写出自己的第一个程序,那种看着出自自己之手程序的成就感,绝对是种前所未有的新体验。学校一般会教 JAVA 或者 C语言 作为课程,如果你有兴趣,我同样也推荐学习 PHPPython

别去纠结和争论到底学哪一种语言更好,那只会像给咸鱼撒盐一样浪费你的时间。

img

按照需求兴趣选择是最明智的办法,例如想开发 Android ,你可以学习 JAVA 或是Kotlin,想写 IOS ,胜此任的就是 Objective-C (Swift:喵喵喵?),想上手开发网站,可以学习 HTML + CSS + JAVASCRIPT + PHP/JAVA,想参加 ACM 竞赛,那不妨看看 C语言C++ ,想通过脚本语言来写一些小工具,Python 则是不错的选择。(JAVA和JAVASCRIPT除了长得像几乎没什么关系哦)

网络上也有很多的教程,列举一些对我帮助比较大的:

Runoob:www.runoob.com

网易云课堂:study.163.com

编程最重要的一点就是实践,编程最重要的一点就是实践,编程最重要的一点就是实践

重说三,手写热乎了才能熟练。

至于入门书籍以及方法,可以去知乎搜索,结合高赞回答以及评论区食用,还是有一些参考价值的。

网页&网站

目前网页前端主要基于 HTML ,CSS以及JavaScript,HTML是一种标记语言而非编程语言,学习它的难度远小于一些编程语言。前文提到的Runoob网站中有很全面的教程。如果你希望接触当代前端开发,那么可以去了解和使用一些前端框架,看看他们有哪些优势,这样设计有哪些好处。

当你学习了一段时间之后,我建议你跟着教程搭建一个个人博客,在过程中加深对这些知识的理解。顺便开始了解并学习后端数据库服务器等。(WordPress,Typecho等)

再深入一点,你就要接触到计算机网络的协议层了,TCP/IP,HTTP 等,你可以下载一个抓包软件,例如Fiddler,Wireshark,来分析了解协议,以及工作原理。

数据库

你可以从SQL语句开始,了解数据库的工作原理,并尝试将数据库融入到自己写的网站当中。有关数据结构请往下翻。

Android

移动端开发也是热门话题,这里介绍一点有帮助的东西:

stormzhang的Android学习之路

官方教程

官方教程中文

Android 学习资料收集(浏览一遍之后可以存下来当百科全书用)

另外现在安卓的官方语言是Kotlin而非JAVA,有兴趣的可以去学习了解下。

数据结构&算法

数据结构(data structures)和算法(algorithms)涵盖的知识点较多,也是编程能力中不可或缺的一部分。如果你是新手,可以在 visualgo.net 里先对算法有一个大致的理解,然后再深入学习。

游戏开发

适度的游戏对于大脑的放松有很大帮助,甚至可以开发大脑,优秀的游戏所创造的价值十分可观,在VR,AR技术慢慢进入普通玩家视野的今天,整个游戏行业似乎慢慢躁动起来,游戏设计师和开发者也成为了越来越热门的职业,如果你想更多的了解游戏背后的故事,而不是单纯的做一个玩家的话,可以看看这位UP主的 幕外战争,或是学习 HTML5 / Unity 来快速上手开发自己的游戏。如果你有足够精彩的 创意 / 游戏成品 / 半成品(Demo),你可以在Steam平台上发布你的游戏。

相关:

indienova 独立游戏

腾讯GAD游戏开发者平台

当然强烈不推荐寝室 开黑 长时间 玩网游(点名Dota2,LOL,守望先锋,CSGO,王者荣耀,PUBG,堡垒之夜

图片来自网络

5.Git

当你自己写出属于自己的一坨或是很多坨代码之后,你就要开始学着管理自己的代码了,这时候就要接触一个概念:Git分布式版本控制系统 以及 GitHub.com 这个平台。

你可以从这篇文章了解GitHub的使用方式:https://guides.github.com/activities/hello-world/

6.MarkDown

Markdown是一种可以使用普通文本编辑器编写的标记语言,通过简单的标记语法,它可以使普通文本内容具有一定的格式。

学会使用markdown可以极大的提高写作效率,大部分文档都采用markdown写作。你们愿者上钩:

怎样引导新手使用 Markdown?

7.Docker

Docker 最初的2小时(Docker从入门到入门)

Docker 中文手册

8.数学&英语

计算机系的课程大同小异,数学英语基础没跑的,可能有些同学对这两门有些害怕,不过没关系,怕着怕着就习惯了(???),我想特地强调一下英语,哪怕是高考只考20分的,你还是不应该放弃英语,很多的资料,文档,都是英文写作的,大多数编程语言也是基于英文,熟悉英语能帮助你更好的理解计算机。

数学自不必多说,编程需要良好的数学思维,你大概不需要像高中那样进行大量重复枯燥的演算,但一定要保持大脑的逻辑清晰,严密。

img

9.硬件知识

和软件同样重要的还有硬件,初期你可以通过选购PC来入门一些基础硬件知识,B站有个视频可以作为参考:如何选购一台称心如意的电脑?

之后你可以去搜索引擎搜搜各种硬件配置的各种参数以及代表的含义,比如CPU的主频,超频,等等。

再往后,如果你还是很感兴趣兴趣,不妨接触一下 树莓派 或是 Arduino ,相信你会被这些精巧的电路和元件的魅力所吸引。

10.系统知识

如果你接触计算机不久,那么你可能没有听说过 Linux 系统,相对于 Windows ,这个系统更适合计算机的学习和研究,不过现在说这个还有点早,我们先把 Windows 整明白吧。

目前主流的操作系统是 Windows10,如果你是XP系统,我建议升级一下,上述的几种主流操作系统各有优劣,不过涉及的一块知识非常重要:安装系统

当你因为种种原因需要重装或者安装操作系统时,你应该自己动手尝试,而不是送到电脑店,白白花上几十大洋,重装系统只需要一个U盘,和一台能用于写入系统安装镜像文件的电脑即可,方法和过程网络上非常多,不再赘述。

再说 Linux ,对于新手而言,给自己安装一个Linux是比较困难的,如果你想尝试一下 Linux ,又不想玩坏自己的电脑,你可以试试虚拟机,你甚至不需要U盘,就可以在虚拟机里安装任何操作系统。

嗯…不过我们为什么要学习Linux呢?参考:为什么要学习 Linux?— 知乎

11.信息安全

知道创宇研发技能表 浏览一下可以大致了解这个行业的技术大纲

信息安全媒体:FreeBuf

社区/课程/比赛:i春秋

R.I.P

可以通过参与CTF比赛的形式,边玩边积累信息安全知识。

12.区块链

区块链技术尚在发展阶段,核心是“去中心化”。

区块链相关名词解释:http://me.tryblockchain.org/getting-up-to-speed-on-ethereum.html

漫画解释区块链技术:http://if.pedaily.cn/news/201608/20160830161298426.shtml

技术开发相关资料总结:https://github.com/chaozh/awesome-blockchain-cn

13.其他方向

如果你对我所说的其他方向感兴趣,你可以先尝试自己了解一些相关知识,你所在的专业只是你的课程重心,而在计算机的学习中,自学占的比重大得多,专业并不能成为限制你发展的因素,兴趣第一。大学的时间是十分充裕的,合理安排,相信你很快就能找到自己感兴趣并打算去钻研的方向。

img

0x02 . 一些建议

  • 提问的艺术

当你遇到任何问题时,请牢记,要做的第一件事,是自己去寻找答案,而不是立刻提问。你可以先尝试:

  1. 使用搜索引擎搜索
  2. 查阅用户手册/说明书/文档
  3. 再特娘的搜一次

当这些办法不能找到答案时,才是你提问的时机,提问时,一定要详细的描述问题和自己的疑惑,方便别人回答,别人耐心解答后,咱最好说声谢谢。

更详细的提问技巧:提问的智慧

提问的智慧 英文原版

  • 时间安排

另如果可以,请减少浪费在 QQ ,空间,微博,微信上的时间,它们会让你的时间1s 1s的悄悄溜走,并将你整块的时间打碎。

img

0x03.最后

如果你跟着思路看到了这里,那么恭喜你,你在计算机的学习征途上已经迈开了自己的小碎步,接下来你只需要跟着自己的节奏,走好自己的每一步就好啦!

最后送上一点福利,很多企业/网站对在校大学生有优惠政策(比如买 macbook 送耳机),这里推荐两个十分有用的 Student Pack

  1. GitHub Student Developer Pack

包含GitHub增强服务,Bitnami一年免费商业套餐3,AWS 百来刀的可用余额,Azure 每月25美刀的免费服务器,DigitalOcean服务器50$,一年的自选免费 .me 域名,免费 SSL 服务,虚幻4引擎等等等等

  1. Free for students:Professional developer tools from JetBrains

只要你是在校大学生,拥有学生 edu 邮箱(我们是大一下学期发放的账号),所有产品,在校期间,全部免费使用。JetBrains公司拥有非常多好用的IDE,适合开发和学习。

img

最后的最后….

GLHF

XD

Write with  by Coink

2016.09.27

update 2017.07.28

update 2018.07.13

  • 修改了文章的画风
  • 更新了一些链接
  • 增加区块链相关知识