从与计算机结缘说起

一、结缘计算机


初识计算机与编程

谈到和计算机的结缘,最早的记忆是在二年级的时候,穿着1块钱买的鞋套走进一尘不染的机房,面对着关着的电脑,老师给我们介绍显示器、鼠标、键盘、主机等外部设备。后来,住在隔壁的表哥家买了当时很流行的联想15寸的液晶显示器的那款电脑,于是我开始通过表哥了解了各种各样的单机游戏,从连连看、抢滩登陆2003再到红色警戒等,再后来便开始迷上了各种类型的网络游戏,网络游戏便开始占据我大量的假期时间,而且也是我们同学和玩伴课余的谈资。慢慢地,我的眼睛开始近视,开始被父母限制接触电脑的时间,到了高一我的眼睛近视已经到了600度以上。

高二的时候,因为我们山西省高中会考有计算机这一科,所以学校专门开设了VB课程,在上VB课之前觉得编程是一件非常酷的事情,对它还是很有兴趣的。结果上完第一节VB课后,就一个感觉——“恶心”,当时就想我将来绝对不干这个,太痛苦了。之后通过慢慢地学习,学会了怎样用VB写一些比较简单的小程序,例如猜数字等,那种“恶心”的感觉也淡了很多,但是还是感觉这个很难。因为要会考,还特意从机房保存了VB的程序和一些训练题到我的邮箱,以便回家自己练习(这些东西现在仍在我的邮箱(⊙_⊙’))。最后会考的时候发现题目很简单,非常幸运地拿了一个A。

专业选择

高一有次放假回来和堂哥聊到了专业的问题,堂哥说:“不要学计算机,计算机现在谁不会,这还用学吗?”当时我也深以为然,再加上自己眼睛高度近视,也怕自己将来瞎了或者带着啤酒瓶底一样厚的眼镜。高考前,我一直想学的是经管类专业,想做一个唐骏那样的职业经理人,自己还专门买了各种各样职业经理人的书来看。结果高考后成绩不是太理想,去不了好学校,那我就只能选感兴趣的好专业了。最初我想报的专业是电气工程及其自动化,因为当时网上查到电气方面可以做比较“智能化”的东西,比如智慧屋、智能楼宇之类的。但是我爸却不同意,他认为电气这专业和机械类专业一样,将来要待工厂,工作很累而且还不体面。当时,因为之前我堂哥说的那番话还有我当时已经800多度近视的原因,我压根就没有考虑报计算机专业。这时, 我堂哥又出现了(他当时去了上海,在张江高科的一家外企工作),他突然问我:“不考虑计算机专业?”我愣了一下,说了我近视的问题,他说过了18岁近视度数基本就不变了(事实证明还确实是这样)。于是我便开始查找有关计算机专业的相关知识,过程中突然了解到了“人工智能”,这个词一下就吸引了我(当时确实只是那种字面意义的理解,看到这个词大多数人应该都会感兴趣),然后又发现计算机专业在研究生期间有一个模式识别的方向,

(因为当时没考好想复读,父母觉得有风险,不太赞成;在外面工作的几个堂哥也说现在本科文凭不够用,基本都是研究生;再加上比我大一些的表姐们也说大学基本都差不多。所以就想着说先上大学,之后再考研。<后来发现:好大学和普通大学差别还真挺大的,各种氛围、资源等完全不是一个级别>)

然后便决定了报计算机类的,而计算机类的当时又有好几个专业:计算机科学与技术、软件工程、网络工程,当时看到软件工程学费比较贵,想说贵肯定是有原因的,相对其他两个应该会比较好(后来发现只是单纯的贵而已T_T),所以就报了软件工程。

 

二、 大学生活


大一上——社团活动中穿梭

在社团方面,大一刚步入大学,觉得什么都很新鲜,对什么都很感兴趣,当时报了十几个社团,后来进了七八个社团,刚开始的时候奔波于各种社团的面试、活动之中,活动还经常撞车,当时恨不得自己有分身。但是因为当时进了我特别喜欢的一个社团——华硕硕市生,而且感觉各种活动都很棒,能学到很多,所以后来慢慢地基本就以这个社团为主,其他都慢慢淡出了。

在专业方面,当时学校开设了C语言,在刚开始学习的过程中,很多同学因为第一次接触编程,都叫苦不迭,而我因为高中学习过VB,在学习的过程中阻力很小,当时就很感谢高中学习VB的经历,让我不至于把面对VB的第一次感觉带给C语言,可以用更好的心态去学习它,而不会去讨厌、排斥它。因为我们大一的C语言老师很负责,要求很严格,让我们在OJ上交作业,所以在deadline来临之前,全宿舍经常熬夜写代码,一个学期下来感觉也学到了很多。

 大一寒假期间为了完成我想去上海的梦想,(高考前的理想就是上海交大,就想去上海发展。但是高考成绩不好去不了上海一般的学校)就去找在同济的高中同学玩,因为他学的也是计算机,便和他聊了聊这方面。聊完之后,才发现差距是如此之大,他们的一个小作业就已经是写2048、斗地主这样的游戏了,而当时我还在为我课程设计写的所谓的“歌手比赛评分管理系统”而沾沾自喜,这次交流让我第一次真正意识到了好学校和我们这种普通学校在计算机专业方面的差距。

大一下——初识ACM

在学期之前教我们C语言的老师继续教我们数据结构,这门课要求也很高,但是到了课程中后期,大家普遍都没有按时在OJ上交作业,使得老师只好不断地往后推迟deadline,这也使得我们对这门课,开始有点降低自己的要求,学的没有上学期那么认真。因为老师在上课的时候经常给我科普ACM竞赛,正好学院在暑假又举办了ACM培训,我当时对编程还是很感兴趣的,对这个专业也很满意,所以就积极报名了。在培训开始之前,我本来觉得我C语言学的还算不错,结果刚开始做题时才发现自己之前学的真是差劲,通过一个暑假的培训和刷题,我的编程能力得到了极大的提高,而且弥补了之前数据结构没学好的部分,这为我后来在本专业的学习和向其他方向扩展延伸奠定了重要的基础,也让我对ACM竞赛更加感兴趣。

在数据结构的学习部分,对比博客B[1]的观点“他的课让我明白:“数据结构”,以及一切计算的课程里面,凡是自己不理解的东西,自己说不清道不明的东西,其实有很多人是理解的。”我的观点是,很多东西不是凭空产生的,都是有它的历史背景的,新东西产生都是因为旧东西有它的局限性和弊端,解决不了当前需要解决的东西,所以人们为了解决当前的问题,经过思考提出了所谓的新东西。所以我在遇到一个新概念的时候,我会好奇为什么要发明这个概念,具体是在什么背景下,为了解决什么问题而出现或发明的,这使得较容易理解这些有因有果的知识。也正是这些“历史发展”的原因,提高了我对这一学科的学习兴趣。

大二上——渐入佳境

在社团方面,因为我这学期并没有竞选社团的一些职务,我发现自己在社团活动中能学到的东西很有限,而且我们的这学期课业比较繁重,使得我没有太多时间,所以直接就和社团活动say goodbye了,把精力都放在了专业方面。

在专业方面,在这学期我们开设了web编程技术这门课,让我第一次真正感受到了如何自己用jsp做一个真正有用的东西,老师布置的实验也很多,而且相对此时的我们难度还不小,因为我对它能做出实际的有用的东西还是很敢兴趣的,所以花了很多时间在实验上,最后全部实验都拿了A,最后考试也拿了96的专业最高分,这也是我上大学以来各种评分最高的一次。通过这门课我确实学到了很多,也使得自己在当时一跃为班上的比较厉害的人。记得有个实验是安装SQL Server并且通过jsp写的网页进行jdbc连接,对数据库进行CRUD。这个实验就难道了班上很多同学,而我当时又是班长,就主动下宿舍帮他们安装,教他们怎么弄,我记得当时我给别人装SQL Server都装恶心了—_—‘。

在ACM方面,这学期基本都是按照之前组的队每周六上午进行一次周赛,但因为平时各种课业也很繁重,所以基本上就只有周六上午练一练题,自己课余也没有多花时间,导致自己在ACM方面的水平也就停滞不前了,这使得在接下来的一次省赛选拔中,我并没有入围,直到大二下学期才有了机会去参加福建省的ACM比赛。

此外,在这学期我对自己将来要具体从事的技术方向也很迷茫,不知道往哪个方向发展,当时学院也经常会组织各种技术方向的讲座,我每个都跑去去参加, 都想去了解一下,然后选择自己比较感兴趣的一个。其中正好有个无人机实验室,我当时听了名字觉得挺感兴趣的,就拉了班上一个同学一起去听了下宣讲,结果去了发现这里不止无人机方面的东西,还有人脸识别、三维重建等我之前没有听说过的东西,听完讲座后,我们就一起向那个老师报了人脸识别方向。之后便开始接触OpenCV,开始学习图像的基本知识,之后又慢慢通过指导老师举办的一些讲座开始了解了深度学习、机器学习的相关知识。对这些东西的接触和学习使我开始意识到数学的重要性。不知不觉,我就走进了人工智能这个领域,接触到了最初促使我报计算机专业的这个动机点。之后,老师要求我们在Ubuntu下面配置深度学习框架Caffe的环境,当时正好在考试周,那周还没有课,而我又不想复习,所以就直接开始搭建环境,当时第一次开始接触Linux系统,从装双系统到Ubuntu联网缺少驱动问题再到配置caffe的过程中我踩了各种各种的坑,花了整整5天终于把它给配好了,虽然我显卡不够好,不支持cudnn加速,但是基本上可以跑那种toy example,起码可以开始学习它了。在这五天的配置过程中,让我学会了通过搜索引擎中来解决自己遇到的问题,这对我之后各方面的学习也提供了很大的帮助。之后在老师的指导下,我们组申报了大学生创新创业训练计划项目,后来很幸运地获得了国家级立项。

大二下——竞赛+实习

这学期课业不算太多,我的时间基本都花在了实验室,一方面在Cousera上学习吴恩达的机器学习课程,另一方面和另外一个同学做了老师这边一个滤镜的项目,虽然最后并没有达到对方的要求,但是在这个过程中学习到了图像处理的一些知识,加深了对图像的理解。后来参加了福建省大学生程序设计大赛,在比赛中感受到了在学校无法感受到的那种氛围,我们队因为差那么一点,没有获得铜奖,但是收获还是很多。通过这次比赛我发现在这方面我学校和省内其他学校还是差很多,这让我不要满足于自己在学校的水平,外面的世界很大,牛人很多。

暑假期间,有机会到公司实习,真正开始接触人脸识别方面的研发工作,主要任务是在已有的数据集做迁移学习。在实习过程中,读了一些前沿的论文,在MATLAB 下写了一些的小工具来辅助研究,最后通过 ROC 曲线来对之前使用的各种方法进行评估。这次实习使我更加清晰的认识了在人脸识别这一领域基本的研究流程,明白了如何独立进行这一方面的研究。

大三上——参加学术活动

在专业方面,我们开设了企业分布式计算这门课,算是大二用jsp进行web编程的进阶,主要学习JavaEE下的SSH框架,这门课使我真正知道了企业中是如何用java来开发网站的,让我收获很大,最后和另外两个同学一起开发了一个人才招聘网站,其中在管理员管理方面,我还加入了人脸识别来进行安全验证。同样在这学期开设的还有数据库原理,这门课最后也需要做一个网站,我和另一个同学一起做了一个宿舍报修系统。因为有了之前的开发经验,这次项目的开发重点主要几种在数据库的设计,在开发过程中主要考虑在各种不同的操作对表单状态的更改。这次开发经历,让我对数据库设计有了更深的理解。

在课余时间,一方面是继续深度学习下人脸识别的内容,尝试在caffe下加一层loss层来优化结果(最后并没有成功)。另一方面是,在大创项目的经费支持下,参加了CCF主办的2016年的中国计算机大会和南京大学举办的机器学习及其应用研讨会,通过参加这两次会议,我感受到了学术氛围,了解了在人工智能这一领域大家都在做什么事情,也坚定了我要考研的决心。

大三下——复习考研

在专业方面,这学期学习了面向对象方法,这门课让我开始体会到设计模式对于一个项目的迭代开发以及维护的重要性,这才发现自己之前写的代码质量并不高,并不可能运用到实际中,但是因为这学期重心主要是在复习考研,所以也并没有花太多时间去思考,去写代码,只是单纯地理解了一下这种思想。

这学期收获让我最大的是在期末的一个PHP实训,同之前的其他实训不同,这次实训虽然只有一周的时间讲课,但讲师不仅仅是讲PHP,他在讲PHP的过程中会穿插PHP的底层设计、C语言、数据结构、操作系统等知识,让我们对大学所学的知识有了一个复习和贯通,也让我们真正的理解了PHP这门语言的设计。此外还一步步地给我们讲解了LNMP架构的原理,让我们更加清晰地明白了企业开发项目的整体架构,也学会了自己如何在云服务器上搭建一个自己的网站。还给我们介绍了如何用Git进行代码管理和版本控制,明白了企业中实际开发项目的流程。

在课余时间,主要就是在复习考研。因为我大一一直没有入高数的门,有一个问题一直困惑着我,那就是:高等数学和初等数学最大的区别在哪?高等数学的精髓是什么?所以高数我就一直学不明白。在考研复习期间,我又重新拾起了数学,通过半年多的复习,上了考研数学的辅导班,才弥补了我之前没学好的内容,让我明白了之前一直困惑我的问题,也让我重新认识了数学,真正开始了解数学,也发现了数学自身的美。

三、问题回答:


第一部分:结缘计算机

1.你为什么选择计算机专业?你认为你的条件如何?和这些博主比呢?(必答)

关于为什么选择我在上文中有说明。

和这些博主比,我感觉我在计算机这方面的思维还是有的,但是比较欠缺是不如他们那么持久的专注,我通常是一小段时间的专注后,就需要放松一下,然而在短暂地放松后我很难快速转换回专注状态,(除非有大环境的氛围或者外力逼迫或者deadline)要么就回不去了,要么就要花挺久的时间。这使得自己通常整体比较低效,这也是我这么多年来一直很困惑的地方,也是限制我个人提升一个很重要的点。

2.计算机是你喜欢的领域吗?是你擅长的领域吗?

是我喜欢的领域,擅长的话我感觉还是不够。

第二部分:在计算机系里学习

1.你对你的大学生活有什么想要吐槽的地方吗?国内外的大学生活有什么区别?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?(必答)

吐槽的地方:整体的学习氛围并不是很好,我们专业的培养模式太过固定,不够自由,限制了一些同学的发展。

据我之前在网上看到的一些资料了解,国外大学生活是非常累的,学校要求特别高,有的学校研究生期间每门课至少要B以上,有1个C就要留级或者劝退,而且课程的难度都很大,基本每月都有考试,而且考试成绩直接影响到期末成绩,所以每个学生都特别累,每天睡觉的时间都很少。国外的大学生活比我们高中3年都苦。而国内我们一上大学基本上都放羊了。

我理想的大学教育是学校氛围特别好,自然而然带动着你一起学,同学都是乐于分享,喜欢交流的。而现实是,我们氛围不太好,自己的自控力也不够。

2.科班出身和北大青鸟有什么区别?

我认为最大的区别在于非计算机专业的人通过培训班快速入门后,掌握了一门语言的基本开发能力,但是欠缺对计算机本身的理解,如果在这一点没有突破,没有自己去学,那么可能很难有大的提升。而且之前和教PHP的讲师提到说有些人遇到BUG完全不知道该怎么办。而科班出身的我们对它有较深的理解,那基本上会有一个大概的排错方向,从而解决BUG。

3.速成的培训班和打基础的大学教育还有mooc之间有区别吗?

我认为速成的培训班在于可以短时间内提高自己某一方面的编程技能;打基础的大学教育则更偏向于培养计算机方面的通才,注重对计算机的理解和计算机思维的培养;MOOC有部分其实也是大学课程,但是却不局限于此,是一个大的开放的平台可以获取多方面的知识,有助于我们扩展学习。

4.学线性代数和概率论的时候,你是否有过这样的疑问“我们为什么要学这么多数学,这和我们的计算机有关系吗”,你现在是否还有这样的疑问?对这个问题,你有自己的解答了吗?那么其他学科呢?

有过这样的疑问,但是现在基本没有疑问了,因为如果只是单纯做开发的话,看似好像并没有用到数学,想要干嘛,别人都写好了,自己只需要调用即可,但是随着业务的发展,默认内置的API已经完全不能满足业务需求,此时要么选择自己写,要么选择购买别人的,而你如果要自己写,基本上都要涉及数学。而且在很多算法的研发、包括人工智能领域各分支的研究,其实都离不开数学。其他学科的话,物理对流体动画的研发也很重要,包括3D游戏的开发也涉及到物理方面的知识。

第三部分:未来规划

1.对于你未来在IT行业的发展,你有什么样的梦想或者未来想从事什么样的工作?你准备怎样来规划你技术道路,职业道路和社会道路?

目前我的打算是考研,在研究生期间做人工智能领域,主要是机器学习和计算机视觉方面的研究,将来去大公司做相关的算法工程师。

2.你对于实现自己的梦想已经做了或者计划做什么样的准备?

复习考研,大二期间有接触相关的学术研究,提前认识和了解了相关方面知识。

3.你们马上就要面临实习了,你打算在企业内实习还是在实验室实习?

复习考研。

4.实习经验究竟有多重要?是否需要马上开始积累实习经验?

拥有实习经验意味着你在工作入职后可以快速上手,快速插手公司业务,一方面快速为公司来带回报,另一方面自己也更加容易被重用。所以我认为马上开始积累实习经验是很有必要的。

5.(补充问题)为什么要考研?

一方面是因为想从事人工智能方面的工作,另一方面是想去一个更好的平台发展自己,通过B[1]博主的经历以及自己了解的一些,可以看出在好的平台,更容易获得大公司的实习机会,更容易获得好的工作机会,当最前提的原因是在好的平台你会更快更容易地提升自己。其实我现在对自己将来要从事的工作还是有些迷茫的,所以也是希望换个更好的环境、接触更优秀的人,去更加完善自己,提升自己,接触更多不一样的想法。

 [1]https://book.douban.com/subject/4006425/discussion/22803961/

原文地址:https://www.cnblogs.com/daleag/p/7457273.html