谈新手应该怎么学好计算机

81 阅读19分钟

我见过有不少的计算机新手(或者是萌新),对计算机这一块似乎很难理解。用网络上比较火的语言来说,就是"当代xxx学计算机就像老年人玩智能机",对于这一现象我认为有很多因素,包括但不限于家庭情况,生活环境,教育背景,个人爱好,学习经历等。而且许多新手在学的时候,总是会提出你意想不到,甚至让你觉得"是个正常人不都应该这么想吗,为什么他会那么想"的问题/疑惑。所以本文章将要针对这一部分人群展开讨论,讲讲对于计算机新手来说应该怎么有效的学习计算机。

一部分新手学习计算机的感想

大多人都是计算机专业的学生,或者工作后被迫学习计算机,不过根据我见过的人来说,前者居多,这一部分也是围绕计算机专业的学生来讨论。

很多人当时报名计算机有些是因为自己喜欢(这是最好的),也有分数线不够,也有为了上课能玩电脑的,也有不明确自己目标就随意报了个自己感觉喜欢的专业,也有认为计算机前景好的 等等。在这些人当中,因为自己喜欢而去学计算机的人大概率能学好,那么剩下的人就是我所认为的"新手"了。

在他们(新手)的认知中,学习计算机要学的可能是代码,可能是硬件,也可能是做黑客。然而他们之前没有真正的了解或学习过计算机,这就导致在真正学的时候认为这不重要,那不重要,最后连基础都不会。还有些是认真跟着学校里学的,但是大多学校里不管你的基础怎么样,可能默认了你会这个会那个,然后直接讲专业知识(当然有些老师很水,"纯念ppt"式讲课),这就导致很多同学就算认真听,也听得云里雾里,因为他没基础。

学生的基础能力

部分学生正儿八经的学习或者是接触计算机是在 高中以后(本科/大专)或者初中以后(中职),在此之前可能连解压缩都不会,这就导致了和同龄人有巨大的技能差,在学校里学习专业课时,看到别人能熟练的操作,而自己不会,多少一些自卑,从而越来越差,甚至失去动力。

而有些人在幼儿园或者小学就接触了计算机,他们从小就研究或者操作计算机。我一直相信一句话"一样东西接触时间长了,谁能保证你不会去研究些奇技淫巧呢",所以说,这些从小就接触计算机的人,多多少少对计算机有感觉,在一些情况下,就算不知道为什么这样做,但就是感觉"难道正常的不应该这么做吗?",在操作的时候很顺手,一些技能/知识也是在潜移默化中满满积累的,当然这些几乎都没人专门教,都是自己研究出来的。

九年义务教育"后遗症"

很多新手都有个通病,在学校里学专业课的时候,依然保持以前的学习方式,即老师们经常说的"不会就多看多背呀",然而计算机属于工科,即和工程相关的,何为工程?按照我的理解是用自己的专业技能做出一个实际可用的项目。这就强调了工科必须要"做",对,就是动手做。对于计算机来说理论和实践都是不可缺少的过程,然而很多人只有理论,光靠背,缺少实践。我认为这是导致"脑子会了,手不会"的原因之一,总而言之练得太少了。

兴趣驱动学习

之前说过很多人来学计算机有着不同的目的,而作为自己的爱好/兴趣来的却较少。就像玩游戏一样,你对他感兴趣后,会无时无刻的想着它(夸张了),甚至在吃饭,睡觉前还在玩,平时也会看各种攻略,主播。如果把这个效果映射到学习计算机上岂不是轻轻松松拿捏。

这样说可能大家还是会有些抵触,因为有"学习"二字,在很多家庭的观念中"学习"和"娱乐"是分开的,但你仔细思考会发现,你为什么会"娱乐",是天生就会吗?很显然不是,没人天生就会玩游戏,看小说。那么是什么让你"死心塌地"的爱上(学习)他们呢。虽然"商业控制"这个客观因素是不可避免的,但我们从主观来讲,他给了你成功的喜悦,或者你操控别人的满足感。

然而学校里的计算机教育是按照大纲来的,不管能不能给你成就感,而你也沉迷在这种教育环境里,自然而然的把学习计算机和"九年义务教育"衔接起来。这就导致了学生会有乏力,没兴趣的感觉,那么怎么解决呢?首先我们要知道那些所谓的计算机大神为什么一看就通,上手就会。其实这点也在之前的《学生的基础能力》章节中说了,很多人从小就玩电脑,所以他们对计算机"有感觉"。那么现在很多人都已经到这个地步了,不可能再回到过去吧,那么这一部分人我认为需要做到以下几点:
        1: 在空闲时候,比如寒暑假,周末,刻意的研究电脑。你可以先把你认为不会的,先从网上查查,或者问ai。注意不用把他当做你的负担,只是普通的探索而已。实在不知道自己研究什么的,可以看看自己电脑上的各种界面,哪里有疑惑问哪里。
        2: 结合自己的爱好研究。很多人喜欢玩游戏,那么平时可以去看看,怎么安装驱动,怎么优化,或者一些间接的技能比如:怎么判断官网,什么是搜索引擎,知道常见的系统架构等等

教育/学习环境

不管是从学生的角度还是老师来说,肯定都是希望自己(或者学生)什么都会,学的轻松。但事实是很多学生特别是在职校/大专,在刚开始虽然很认真,但久而久之因为各种原因不想学,甚至带动"摆烂"的浪潮,这就导致整体氛围不好,也潜移默化的影响其他想要学习的人。相信大家的本性都是摆烂,能轻松则轻松,那么我我们需要做的就是和自己的惰性斗争。既然改变不了环境那就改变自己,如果你的朋友中哪怕有一个依然保持学习的心,那么平时可以多和他在一起。再者,你还需要改变你的一些习惯,比如每一段时间就强迫减少玩游戏/娱乐的时间,不一定是所有,可以把你认为影响你学习最严重的进行控制,再循序渐进,从减少整体时间到不感兴趣(这有些难)。当然,现在大部分人玩的游戏都是多人联机,就算你不玩,同学可能也会被迫带你,那么此时你需要有一定的自制力和一点抗压能力(同学可能会觉得你装逼)。

从老师这一方面来讲,有严格的,轻松的,念ppt的等等,在如此众多的不同教学风格里,很难每一种都完全符合你的意愿。那么你需要就有种自学的能力,俗话说得好"师傅领进门,修行靠个人"。面对严格的老师,但你不喜欢,那就不管他,但上课最好还是听一下,然后在脑子里构思出大致的思维导图或者这个知识点的逻辑,这很有用,因为你大概率不会直接问这个老师,毕竟你不喜欢他,那么你可以直接问同学,把你脑子里构思出来的那些知识点(可能是零散的,也可能不准确)和会的同学交流。这样不仅能增进同学间的感情,也不影响和老师之间的感情(至少老师对你没坏印象)。另外还有些老师有不同的教学风格/方式,如果你不喜欢,那么可以在不破坏课堂纪律的情况下,选择性听讲,课后问同学,或者自己问ai,查询搜索引擎等方式。

自学和教学大纲冲突?

相信一些自学或者网上搜的同学有这种想法"我的做法和老师教的不一样怎么办,会不会影响分数"。其实不用担心这个,因为在自学过程中得到的知识肯定>学校里老师教的知识(优秀的学校当我没说),这不像以前较为死板的答题模式,必须按照xxx模板或者xxx规范答题(部分理论题除外),至少在写代码/命令这一块是非常灵活的,你能写出比别人更好更完美的代码,为什么不多写多尝试呢,如果老师看不懂那就是老师能力不够了(手动狗头)。

小Tips: 平时也可以多在老师那边多唠唠嗑,多刷刷脸,脸熟后,自然认为你比别人更热爱学习,甚至更厉害。

不过对于自学内容和教学大纲之间也需要有个权衡,如果自学的内容远偏离目前的大纲,那么你最好找目前正在学的课程的内容的教程,如果你自学能力很好,或者本身就对大纲中的内容熟悉,那么当我没说。

自学很重要!

不知道大家有没有看到网上说"现在大学(包括中职)的计算机教育普遍很落后,教的都是些过时的知识"。这句话没毛病,不少学校还在用vs6教学,教你的是jsp,php等过时的技术,这和我们目前主流的技术栈有很大脱节,不管是开发模式,逻辑方式都有区别。那么有一个好的自学能力是必不可少的,你需要自己去探索当前主流的技术是什么,并且学习他们。

当然学习里的那些技术学了也有用处,虽然在当前技术栈下已经淘汰,但是仔细想想,难道那些不是底层/原理层的东西吗。举个例子,目前主流springboot,那么学校里教的jsp就可以帮助你更好的学习servlet是怎么配置的等,这些就算学校里不教,在未来学习spring底层的时候依然需要学这些,既然这样为什么不直接先按照学校里的大纲学呢。

在自学的过程中不仅需要学习当前主流技术,在学校里学的技术依然需要学,俗话说得好"技多不压身",虽然大部分公司使用主流技术栈,但总有那么些老产品或者公司,他们依然在使用以前的技术,所以如果大家学有余力,可以研究各种技术,不管是否适应当前时代。

新手如何学习编程语言?

相信不少计算机专业在第一学期的时候就开始学编程语言,这也是大多数人梦的开始,不过也可能是噩梦,为什么说是噩梦呢,因为很多学校一上来就讲c语言,python此类的语言,而不知道他实际有哪些用途,另一个原因是不清楚他和自己选的专业有什么关系,这就导致了一些人一开始就迷茫,不知所措。

如果你现在仍然处于迷茫阶段,那可以参考以下方法,在学习一门语言之前,先了解他是干什么的,以及他的相关理念,以及其发展历程,这样就能建立起对这个语言的认识,不至于在遇到挫折的时候总是在想"我为什么要学这个"。

但同样的,当你了解到这个语言是干什么的后也许你并不感兴趣,或者认为这个语言和学的专业没关系,不管是什么原因,能被安排在最开始学习的,几乎是最基础(根据计算机的体系来看),或者说最核心的(比如人工智能学的python),建议大家可以抽个时间把整个计算机体系的开发行业都了解一遍(如硬件开发,嵌入式,驱动开发,linux开发,web开发,大数据,云开发,人工智能等),主要了解该行业用途,常用技术等,这样可以对整体框架有清晰的认知。其实最后说到底,都是c语言/汇编的功劳(应用层),所以c语言也就成为了计算机的大部分专业的入门语言。

并且在学习不管什么语言的时候,一定要把基础打好,不然直接学框架或者后续的内容还是非常难理解的,大部分语言的基础包括但不限于:数据类型,变量/常量,条件控制,循环,函数(方法),自带库等。切记在学习代码的时候不要照着书敲,因为这会让你有依赖性,以及失去独立思考的能力,不管是教科书还是自己买的编程类书,都是参考用的,具体代码需要自己想出来,以及在理解代码的时候,不能只知道单行代码什么意思(这只要学过,应该都知道),你需要读懂一个功能所在的代码块是什么意思。

另外,在平时也需要多练习,可以从网上找题目,例如猜数字,模拟购物,从数组中查找数字,统计xxx在数字中出现的个数等等,这些可以从不同角度锻炼你的基础能力。亦或者你可以根据自己的实际需要来开发对应的程序(这很酷对吧)

新手如何学习linux?

linux作为一门很多专业都需要的技术(或者说后端开发,人工智能),他的重要性不言而喻。但很多新手在学习linux的时候完全不理解里面的概念或者方法,就直接学习,导致了很多时候会出现各种意想不到的问题。

首先linux他就是个系统而已(说的不准确,但为了好理解先这样说),那么怎么操作这个系统呢?有人说这不简单吗,找到对应的菜单,点击想要的选项就行,不过这是有可视化界面的情况下,然而一些linux没有可视化界面,只有孤零零的黑白命令行界面,看起来很难受对吧,但这就是linux和我们熟知的windows/macos最大的不同的地方,linux使用所谓的"命令"来控制整个操作系统,而这些命令在完成特定的任务时,貌似很固定,这也导致一些学生直接背命令,这是学计算机的大忌,你需要理解命令是什么意思,再敲上去。并且需要注意这些命令都是人规定的,那么肯定是比较方便记忆的,总不可能是随便26个字母里抽几个搭配起来,比如你要设计一个列出当前目录下的所有文件的命令,你会怎么设计?抓住关键词"列出"对吧,他英文是什么?"list",而且我又认为这命令很常用,不想频繁的写这么长一串,所以我就简写成"ls",怎么样?是不是很简单。那么类似的,chmod(change mode),mv(move),cp(copy),ln(link)等都是一样的逻辑

命令是需要日积月累的,不过在此之前,大家可以不立马使用命来操作,而是使用自带可视化界面的linux,因为这很符合大家的操作习惯,推荐两个自带可视化linux系统(不包括最小化版和服务器版):ubuntu,mint。大家可以在空余时间先使用他们,把他们当做日常系统来使用。这时候你应该想"这是一个新的系统,应该和windows差不多吧,我得好好研究研究 ^_^",反正不要把他想的难就行,就相当于给你一个新的软件让你玩,总不会 会用微信,就不会用飞书了吧。那么这时候有人问了"linux不是要学命令吗,你让我用可视化界面,我还怎么学习?"。唉先别急,linux最主要的就是命令,可视化是辅助的,也就是说,如果你遇到不会的操作,去网上搜大多都是让你用命令来操作,那么在日常慢慢的使用当中,多多少少都能学会一些基础的命令,大概在1个月左右就能对linux有个大致的认识,2~3个月后就能熟练使用基本命令。这样看起来是不是很简单,不用专门学命令,也不用背一大堆枯燥的理论就能基本会用linux。

按照我的方法,等你可视化界面基本会用了后,就可以去专门找教程,系统的学习linux了。

英语水平影响计算机水平?

很多人入门计算机总会想到"我英语很差,那我计算机还能不能学好?",答案是只要会小学英语的单词就不影响。学习计算机就拿编程语言来说,以java举例:new,class,if,else,for,while,public,protect等,这其中大部分都是小学的单词,如果不会,那么在学习编程的过程中影应该也能熟练掌握这些,因为这些都是"关键字",而一个编程语言中的关键词也就那些,几十个左右,算上各种零零散散的东西,英语词汇量不过百个,难道你连一百个词汇量都没有?其实总的来说,英语的好坏对计算机学习没有太大阻碍,有个很明显的例子就是英语是人与人之间交流的语言,而编程语言是人与机器之间交流的语言,编程语言有和英语完全不同的语法,如果让一个英语很好但没学过编程的人来看代码,那么他肯定也是看不懂的,所以就算你英语成绩20,30分,但计算机依然能成为你最厉害的技能之一。

不过在越来越深入计算机的过程中,多多少少会接触到英文的文档,或者仅有英文的官网,需要被迫你阅读英文,不过也可以接触翻译软件或者插件,但是用过的人都知道,对于专业领域来说,翻译成非官方的语言反而看不懂了,因为一些专业名词是以一些物品或者一个东西来命名的,如果翻译成非官方的语言,那么可能整体看起来很乱,特别是一些工具/编程语言的官方网站。说了这么多,就是想总结出来英语不是学习计算机必须的,但能在一定程度上决定你计算机能力的深度,毕竟计算机是人家老外发明的,很多优秀(底层技术/小众技术)的文章只有国外的平台有,国内的平台很难搜到。

接下来应该怎么做?

对于新手来说,应该有一个小规划,不过在前提是需要先了解计算机中各种行业,这样才有能力为自己的理想做规划。前期可以自己研究各种自己喜欢的东西,通过在不同编程语言或者技术之间切换,找到适合你的那个,再把他们做成一个规划,可以是短期的,也可以是长期的,这有助于帮你理清思路,不至于不知道自己应该学什么。接下来去招聘平台或者在网上搜你所喜欢的东西所在的岗位是什么,这样可以让你对职业规划有很大是帮助(如果后续不打算以计算机作为职业,那当我没说),也能帮助你了解行情。

除了有一个规划外,在计算机里还有个普遍的规则就是需要持续学习,很难有一门语言或者一项技术能够完全的贯穿你的职业生涯,每年都有新技术出来,每5~7年左右技术就可能会有很大的变革,所以保持一颗持续学习的心非常重要。

在学习的过程中,不仅需要自己学,还需要和别人一起学,在别人需要帮助的时候可以帮助他们,这能间接的使你阅读别人的代码,分析别人的逻辑,时间长了就能化为自己的知识,同时如果你有一定能力之后,可以帮助新手,在各种各样报错中分析问题,也能迫使你分析自己之前学习时被忽视的问题,起到"教学相长"的功效。