❤️大学三年沉淀,把我的学习经验分享给你,爆肝万字带你走进编程世界!❤️

Posted Alex Hub

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了❤️大学三年沉淀,把我的学习经验分享给你,爆肝万字带你走进编程世界!❤️相关的知识,希望对你有一定的参考价值。

Hello,大家好,我是Alex。时光匆匆,暑假过的很快,转眼又到了大学的开学季,我也是又混进了我们学院的新生群,发现大家对计算机充满着迷之向往,啊哈哈哈,不过没有人带着入门还是很容易走弯路的哦,今天就把我大学三年学习计算机的经验分享给大家,帮助各位想要提前学习编程的同学选择好路线,快人一步走进计算机的世界。


其实这些东西呢,本来应该等开学之后学校会给大家安排相应的研讨课来学习,不过既然大家学习的热情那么高涨,那我就提前给大家介绍一下。

当然呢,我在这里只是根据我的学习经历给出一些小小的入门建议,更加专业的内容呢,大家还是等开学之后再去了解吧。

开学要不要买/带电脑?

有些同学:“开学要不要带电脑啊?没有电脑是不是得买一个?”

我的回答是:

啊哈哈,开个玩笑,不过我还是建议买的,毕竟大家学的是计算机,连电脑都没有,那怎么学。

已经有笔记本电脑的同学呢,如果性能尚可,正常使用起来没啥问题,那可以选择直接带过来。

如果你想买一个新的笔记本电脑的话,我就推荐几个配置吧。

  • CPU:如果只是敲代码写文件的话,i5就OK,甚至i3都可以,推荐i7,满足基本需求的同时,还能满足时不时的高端需求
  • 显卡:显卡就是决定你的图像处理能力,显卡越好,运行画质高的游戏或者软件,就会比较流畅,敲代码写文件对显卡的要求不高,目前游戏本一般都是独立显卡,如果以后有平面设计、视频后期的需求,建议独显,而且到以后如果做AI的话也需要用到GPU,贼烧显卡,这个可以整一个好的。

我的GeForce GTX 1060,买的时候属于中端显卡,现在不行了,跑个深度学习模型,就把显存沾满了,不过平常用起来完全OK,玩个LOL还是很流畅的。

  • 内存:16G就OK,满足基本敲代码、办公和娱乐需求,对游戏或图像处理有要求的可以适当增加内存大小,不过以后敲代码如果用Jetbrain公司的IDE都比较吃内存。

我8G内存,开一个PyCharm还好,再加一个WebStorm就有点卡了, 要是开三个就卡成PPT,开四个就别想动了

  • 硬盘:硬盘有固态硬盘(SSD 新式硬盘)、机械硬盘(HDD 传统硬盘),固态硬盘读写速度极快效率贼高,但价格也相对应比机械硬盘要贵上不少。建议固态硬盘(SSD),贵一点,但是读写速度快,根据个人需求可以增加机械硬盘,但也不需要很大。

我的是200G固态+800G机械,到现在还有一大半没用,所以512G固态就OK。千万不要把软件安装到C盘!!!

  • 品牌:苹果,联想,戴尔这些比较前排的品牌都是可以的,最近小米,华为的笔记本功能也比较强大,这些我身边都有人用,尤其是华为的多屏协同功能,手机、平板、电脑协同办公,效率还是很高的。

最后,最重要的一点就是:最好买轻薄本,携带方便,因为有的时候上课想要带着笔记本的话,游戏本那种又大又厚,绝对没有轻薄本那么友好。

而且我觉得笔记本对于大家来说应该是一个学习办公的工具,而不是用来打游戏,所以买一个轻薄本也从侧面督促自己要多敲代码,少打游戏。

至于说编程对计算机的配置要求比较高,这一点我觉得有点言过其实了,因为我自己是做过前后端开发的,也写过android和树莓派,自我感觉这些方向对计算机的配置要求并没有特别高。现在做人工智能这个方面的研究确实对机器的要求特别高,而且完全是高得离谱,普通的入门还好,在自己的笔记本上训练个小模型没啥问题,稍微进阶一点,比如做计算机视觉方向,之前拿我自己的电脑训练一个目标检测的模型就觉得比较吃力了,又要清显存又要设置虚拟内存,再往后现在在公司训练模型光数据就可能几个T,自己的笔记本基本只是个写代码的功能了,训练都是在专门的服务器上。

至于服务器是啥,你们以后会接触到的,可以简单理解为一台24小时不间断运行的云端电脑。

总而言之,单纯的编程对计算机的配置要求并不是特别高,如果后面也想做一些3D建模或者视频后期的话那么确实需要一个比较好的配置。

编程方向那么多,我该怎么选啊?

学计算机肯定是有方向的呀,我这里就简单说几个方向,基本可以涵盖大家大学四年会接触到的所有领域。

前端

先来说说前端,为什么先说它呢,因为前端最直观,我们现在通过浏览器打开的网页,在B站看到的视频,都是前端工程师们一点一点搭建出来的。

所以简单的讲,前端就是写网页的,怎么做出最漂亮最好看的网页,就是前端工程师的工作。

前端工程师是互联网时代软件产品研发中不可缺少的一种专业研发角色。从狭义上讲,前端工程师使用 html、CSS、javascript 等专业技能和工具将产品UI设计稿实现成网站产品,涵盖用户PC端、移动端网页,处理视觉和交互问题。从广义上来讲,所有用户终端产品与视觉和交互有关的部分,都是前端工程师的专业领域。

2009年的Bilibili网页长这样:

现在的Bilibili是这样的:

是不是感觉焕然一新,所以前端是一个相对比较新的行业,互联网发展早期(1995年~2005年)是没有专业的前端工程师的。随着互联网的发展,大约从2005年开始,正式的前端工程师角色被行业认可,到了2010年,互联网开始全面进入移动时代,前端工程师的地位越来越重要,前端领域的技术发展也越来越快,各种新的思想、设计模式、工具和平台都快速发展,对前端工程师的技能要求也越来越高。

所以,我推荐喜欢设计、审美比较高、喜欢绘画的同学可以尝试一下前端,这是一个入门相对轻松的方向。

后端

说完了前端我们再来说一下后端,这是一个跟前端息息相关的方向。我们可以看一下这张图,对于用户来说,他看到的是非常漂亮非常好看的界面,但是在前端的背后是需要强有力的后端来支持的。

那么后端到底是干什么的呢,还是拿Bilibili来举个例子,我们看的那么多视频,假设一个10分钟的视频有100M,Bilibili有那么多视频,就算只有100, 0000个,那差不多也要100T的空间,你有没有想过这些视频都在哪呢?

首先肯定不在我们自己的电脑上,对吧,哪有谁的个人电脑能有100T的空间,那也太奢侈了。前面我们提到了服务器,其实这些视频都是存在Bilibili的服务器上,那这些服务器在哪呢?有可能在Bilibili的总部上海,也有可能在某一个不知名的岛上,据说腾讯的数据中心在南极。

总而言之,这些数据离我们很远很远,但是我们又能通过浏览器,或者说是通过互联网访问到,这就是后端给提供的支持。

你在家里一点,想看的视频数据就从百公里外的服务器传输到你的电脑上。你开学之后要报道,学校也会把你的身份数据录入数据库,这样你才能查到你的学历。你在京东上买了东西,由谁来发货?通过什么物流?发给谁?这些都是后端需要设计的东西。

总而言之,后端就是对各种数据进行处理,增删改查是家常便饭,后端工程师追求的是其实跟奥利匹克精神比较类似,更快:数据处理更快、更高:开发效率更高、更强:系统稳定性更强。

所以我推荐心思比较细腻严谨,有责任心,有毅力,逻辑思维能力强的同学可以尝试一下后端。

移动端

移动端应该是现在大家接触最多的终端产品了,它就是我们的手机,因为可以随身带着,移动起来比较方便,所以叫移动端。

它其实分为了两个方向:Android开发和ios开发,另外还有一个移动端开发方向:小程序,也就是大家微信里或者支付宝里的小程序,这些小程序功能一般都比较简单,而且我们一般也把小程序开发归为前端的范畴。

从2017年下半年开始,就听到各种言论,例如“Android 开发凉凉”、“移动端开发没出路了赶紧转行”、“移动端要被小程序替代了” 等等,但是,我有预感,移动端开发肯定不会穷途末路,低谷之后必回触底反弹。

坦白讲我其实没怎么涉及过移动端开发,只写过一个仿网易云音乐的APP和一个游戏小程序,我之所以说以移动端开发以后不会消失是因为我是做AI的,这听起来有点匪夷所思对吧,待听我解释。

2016年,谷歌提出了一种新兴的人工智能基础技术——联邦学习,用于解决手机终端用户在本地更新模型的问题,设计目标是在保障大数据交换时的信息安全、保护终端数据和个人数据隐私、保证合法合规的前提下,在多参与方或多计算结点之间开展高效率的机器学习。

这些概念听起来比较迷,没关系,知道这个概念就可以了。

随着手机用户隐私保护意识的逐渐增强,联邦学习以后会是一个发展趋势,因为小程序可很难部署这些模型,本身追求的就是轻量级,不可能割舍出来一部分用于训练模型,所以以后的APP肯定也会继续发展的。

桌面应用

桌面应用其实就是我们电脑上安装的各种软件,比如:QQ、WPS、微信、浏览器、英雄联盟,还有系统自带的:日历、记事本、计算器等等,这些都属于桌面应用。

不过近几年桌面应用开发已经不是特别火了,因为很多应用大家现在基本都通过浏览器就能解决了,所以有些已经转Web后端或者其它岗位了,但是并不代表没有需求,像Qt、C#.Net这些还是非常还是很火的。

不过最近我发现了另外一个趋势,有些Web站点已经支持把网页直接转成桌面应用了,走的还是前后端开发的路线。

物联网

物联网(IoT)其实我们身边也很常见,它的本意就是将我们日常生活中的物理对象连接到互联网。举个简单的例子:灯泡,从一开始古人用的煤油灯,到后来爱迪生改进电灯泡,再后来楼道里的声控灯,一直到现在可以通过手机或者智能音响控制的家庭灯。一个原本跟互联网完全没关系的生活用品逐渐可以接入网络,这就是物联网要做的事情。

当然物联网涉及到的领域非常广阔,小到身上的智能穿戴设备,大到智能汽车也就是车联网,其实都可以归为物联网的范畴。随着我国新基建的推进,自动驾驶和智能驾驶行业的蓬勃发展,学习物联网以后也肯定大有可为。

所以我推荐喜欢机器人、电子零件的同学可以尝试一下物联网这个方向。

网络安全

网络安全现在已经被列为国家安全战略的一部分,对于互联网行业来说,我们所熟悉的360其实就是做网络安全的。


网络安全其实可以分为三个方向:① 安全研发,② 安全研究:二进制方向,③ 安全研究:网络渗透方向。

安全研发方向呢,主要就是做各种安全业务相关的软件,比如像防火墙、数据库网关、杀毒软件等等。

安全研究:二进制方向呢,这个方向的主要做的是软件漏洞挖掘、逆向工程、病毒木马分析等工作。因为经常都是与二进制的数据打交道,所以久而久之用二进制安全来统称这个方向。

安全研究:网络渗透,这个方向更符合于大部分人对“黑客”的认知,他们能够黑手机、黑电脑、黑网站、黑服务器、黑内网,万物皆可黑。这个方向初期更容易入门一些,掌握一些基本技术,拿起各种现成的工具就可以开黑了。

所以我推荐对网络这个方向比较感兴趣的同学可以尝试一下网络安全这个方向,也是很好的,不过也要注意,人外有人天外有天,技术给你带来方便的同时也要心怀敬畏。

算法 & AI

终于到了我自己的方向了,算法和AI。

这两个为什么放在一起呢?因为做AI的岗位名称就是算法工程师,算法呢又会分为基础通用算法和人工智能算法。

基础通用算法类似于让我们通过编程去解决奥数题,举个例子,我们来看一下LeetCode的第一题:1. 两数之和,给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标,下标也就表示是第几个数。

假如我们的输入是:nums = [2,7,11,15], target = 9,那么答案应该是:[0,1],为什么是0和1呢,因为数字的下标是从0开始计算的。

基础算法要解决的问题就是,如何把我们人类能够解决的问题交给计算机解决。比如在上面这个例子中我们可以一眼看出答案,但是如果输入的数组有成百上千位呢,而且每个数字都是个三位数或者四位数,这时候我们就没法一眼看出答案了。但是如果我们找到了解决问题的通用方法并且把它用编程语言抽象为一段程序,那么对于再长的数组,再大的数,计算机都可以在自己的能力范围之内快速计算出结果,这也就是计算器的功能。

那么人工智能算法是什么呢?这个概念最近特别火对吧,而且还被纳入了新基建的信息基础设施建设,那么人工智能到底是什么呢?

我的理解是:赋予计算机更多人类的能力,来帮助人们解放劳动力。从人脸识别门禁代替了保安的工作,到自动驾驶代替了司机的工作,语音输入可以让我们解放双手说说话就能打字,甚至有的人工智能都会自己写代码强化自己了,这些其实原本都是我们人类的能力,人工智能就是要教会计算机去做。

举个简单的例子,做计算机视觉的话有个方向叫图像识别,这个领域的目标就是教会计算机认识各种猫、狗、狮子、老虎和大象等等,回想一下我们小时候是怎么认识这些动物的呢,是爸爸妈妈把各式各样动物的图片拿到我们面前,然后告诉我们哪个是猫,哪个是狗。

人工智能也是一样,我们把成千上万张图片交给计算机去看,告诉它哪个是猫,哪个是狗,不停的训练它,最后它就可以学会人类的本领。

所以我有的时候经常会感慨,做人工智能就像是带孩子一样,一开始要教它怎么识字、怎么说话,到现在要教它怎么开车、怎么做题,真的太神奇了,感觉它像一个孩子一样逐渐长大,学习更多的技能。

不过真正做人工智能研究的需要一些数学的功底,相对来说入门门槛比较高,但是也更具有挑战性,所以我推荐对数学、人工智能比较感兴趣的同学可以尝试一下算法这个方向。

哇!方向那么多,我该怎么学呢?

说了那么多方向,其实都是以后才要划分的,那么作为刚入门的小白应该学习些什么呢?

在这里我就假设你是已经对计算机稍微有一些了解的了,知道怎么开机、知道怎么复制粘贴、知道不要把软件安装到C盘(苹果用户请随意)。

我们知道学计算机一开始其实就是学习编程语言,虽然方向很多,但是各个方向使用的编程语言其实是有交集的。

前端:HTML、CSS、JS等
后端:Java、Go、Python等
移动端:Java、Kotlin、C/C++、Swift等
桌面应用:C++ QT、C#等
物联网:Linux(操作系统)、Python、C/C++等
网络安全:Linux(操作系统)、JS、C/C++、Python等
算法&AI:Python、C/C++

其实归纳起来,涉及到的编程语言并不是很多,我这里就给出选择各个方向后建议的第一门语言:
前端:HTML、CSS、JS,这三个是要一起使用的,并不是三门语言
后端、移动端:Java,毕竟这是个万金油
桌面应用、基础算法:C/C++
物联网、网络安全、AI:Python

那么这些语言要怎么开始学呢?大学之后很少会再像高中那样有老师线下教你,有作业,有考试的那种学习方式了,更多的是自己找视频、找书、找教程来看,自学成才。

我在这就推荐几个视频教程的链接,大家想学习的可以看一看。

前端:https://www.bilibili.com/video/BV14J4114768
Java:https://www.bilibili.com/video/BV12J41137hu
C/C++:https://www.icourse163.org/course/ZJU-199001
Python:https://www.luffycity.com/free-course/124/detail

总结

最后总结一下吧。

其实,前面介绍的方向那么多,技术那么多,但是万变不离其宗,编程学习的,不仅仅是编程语言和相应的技术工具,而是体会程序设计的精妙思想。

归根到底,语言其实也是帮助我们实现想法的工具,所以你首先要有想法,编程语言像是Java、Python,你可以学,别人也可以学,尤其是现在互联网那么开放,再加上计算机界一直崇尚开源精神,所以学习资源遍地都是。

那么怎么才能跟别人拉开差距呢,就要在学习的过程中感悟别人没有理解的东西,学习的目标不是单纯的为了记住各种关键词和简单的运用写几行代码就行了,而是感悟这个地方为什么这么设计以及某个功能为什么这么运用。锻炼这个能力这就需要大家多去研究源码,多去思考,这才是编程之美,不然你学完之后也不过是一个会搬砖的码农罢了。

好了,方向介绍完了,资源也分享给大家了,大家快冲吧!

以上是关于❤️大学三年沉淀,把我的学习经验分享给你,爆肝万字带你走进编程世界!❤️的主要内容,如果未能解决你的问题,请参考以下文章

❤️爆肝万字!一文最全总结之Spring从入门到入土❤️(建议收藏)

❤️爆肝万字整理的综合架构web服务之nginx详解❤️,附建议收藏

Python OpenCV实战画图——这次一定能行!爆肝万字,建议点赞收藏~❤️❤️❤️

☀️~算法系列之爆肝万字总结七种查找算法,持续补充更新中,建议收藏~☀️

☀️~爆肝万字总结递归~❤️玩转算法系列之我如何才能掌握递归解题的能力❤️~十大经典问题助你突破极限~☀️

(大厂必备)厂长熬夜爆肝万字之多线程高并发JUC编程⭐学妹已收藏