第一次个人作业
这个作业属于哪个课程 | 2020春季计算机学院软件工程(罗杰 任健) |
---|---|
这个作业的要求在哪里 | 第一次作业-热身! |
我在这个课程的目标是 | 系统性学习软件开发中的理论和工程化的方法,通过组队和个人作业等锻炼编程能力,积累软件开发经验 |
这个作业在哪个具体方面帮助我实现目标 | 重新审视我学习计算机的动力和目标,学习了大学学习中的方法 |
第一部分:结缘计算机
- 计算机专业其实并不是我最喜欢的,最感兴趣的专业,我最感兴趣的其实是小生物专业,但是我因为色弱的原因无法报考生物方面的专业,于是选择了计算机专业。因为计算机算是我第二喜欢的专业了,准确的来说,我喜欢的是计算机上的运行的电子游戏,但我一直以来只是玩游戏,从未试着开发一款游戏,或是给游戏开发脚本或者mod之类。我认为我的条件既不算特别好的,也不算特别差。跟博客M、博客I的博主相比,我接触到编程的时间比较晚,上大学之后才开始学习编程,但这几年的大学学习下来我的编程能力也不算特别差,但是总的来说我性格比较慵懒,尝试编程的动力很缺乏。
- 计算机可以算是我喜欢的领域,是不是擅长的领域就不好说,但是肯定不是我不擅长,学起来吃力的领域。但是我对于计算机的喜爱更偏向于软件方面,对于计算机的硬件的方面到不是很感兴趣。
- 我对计算机专业喜爱肯定是不及我对生物专业和电子游戏的喜爱,但是绝对没有抵触和排斥的想法,学习计算机并不会让我感觉到痛苦,但是获得的成就感也不是特别高。实际上我对计算机和编程方面的喜爱是来自对电子游戏的喜爱,肯定是比不上博客M的博主这种从初中就开始学习编程的制作游戏。但是这几年学下来,学习计算机还是一个很快乐的事情,学起来还是非常有动力的,但是没有博客I这种强烈的驱动力。
第二部分:在计算机系里学习
- 住沙河校区的时候,虽然住宿条件很好,但是比较偏僻,看个电影都需要来回一个小时以上的时间。而住学院路校区,虽然周围是五道口中关村等商业中心,吃饭看电影都很方便,但是宿舍的住宿条件不是很好,尤其是澡堂。然后就是一般专业课的分布不是很好,几乎每年都是要欲仙欲死的抢课,而教务处的网站每到抢课的时候就会崩溃。我理想中的大学教育应该是更多更早的进行方法论的教育,像学习的方法,论文写作和搜集资料的方法,工程化协作的方法,在掌握了这些高效的学习、合作方法之后,在进行知识性的学习、团队项目开发这样子才会有更好的效果,但目前这种方法论的学习的时间还是有点后期。当然大一由于是大班招生,需要让同学们更加了解不同的专业之后再让同学做出选择,所以会有各个专业的基础知识的课程,但是有些课程给人的第一印象着实不行。但我还是觉得越早开设这些方法论之类的课程,对学生学习的帮助越大。我没有参加过交换生项目,没有在外国大学读书的经验。但是根据博客O和博客Q所提到的外国的教学方法,我们的计组、OO、和编译都是采取跟国外类似的工程化的方法,制定计划,单人和团队合作、阶段性的成果考核等等,当然这几门课我的确从中收获许多,但这还是局限于核心专业的这种置课,像我上学期学的安卓程序开发就不具备这方面的课程教学方式,不够普及,当然有可能是教育资源不足的问题,博客Q也提到,这样的教学方式需要很多优秀的助教,还有博客中只提到过这些工程关系密切的科目的情况,没有提到高数、算法这些知识性的课程的情况,不清楚与外国大学的区别。总的来讲我认为是可以做到更国外的学校一样的,我们上过的计组和OO的课程证明了是能够学到国外的教学形式,取得不错的效果的,但还是不够普及,需要进一步推广,同时与国外的的课程还是有一些差距,需要进一步的改革和学习。
- 迄今为止所写的代码的数量应该在1W行左右吧,上学期的编译原理最终编译器的代码行数在5500左右,OO在2k~3k,还有数据结构、计组和一些别的方面的代码,大概在1W行左右,但是我课程之外就没有怎么写过代码。做的最复杂的项目应该就是上学期的类C语言的编译器了。整个项目从词法分析、语法分析、错误处理、中间代码生成和目标代码生成这几个方面逐步迭代开发出来的。总体来说是按照课程的要求一步一步将功能添加到编译器中,虽然模块之间的耦合性有点强,但是也没有需要进行大规模重构的情况的发生,最后还是取得了令我满意的成绩。 - 学线性代数和概率论的时候,你是否有过这样的疑问“我们为什么要学这么多数学,这和我们的计算机有关系吗”,你现在是否还有这样的疑问?对这个问题,你有自己的解答了吗?那么其他学科呢?我没有这方面的疑问,因为我我一直认为数学和算法是计算机专业和软件开发方面的非常基础且重要的知识,像现在很多的人工智能这些,就是算法和大数据之间的紧密结合。在比如很多电子游戏,很多现在有非常好效果的技术以及高效的优化都是基于数学和算法基础的,举个比较经典的例子,约翰·卡马克在雷神之锤3(QuakerIII)的引擎中使用了快速平方根数算法,极大的提高引擎的3D图像的处理能力,算法对计算机专业以及软件开发与数学和算法有着非常紧密的联系的。像其他学科比如说电路、发动机等等乃至生物和医药这些理工科的学科都是与数学有着紧密的联系的,即使是社会学这些文科专业,构建模型都是需要不少数学工具的,更不要说经济学这种对数学要求比我们更高的专业了。
第三部分:未来规划
- 因为我喜欢电子游戏,所以我想从事这方面的软件开发之类的工作。就未来的职业道路规划来说,我想先考研,研究生毕业之后再加入游戏公式做程序方面的开发工作。而技术方面,我是希望在算法、计算机视觉、人工智能方面继续深造,因为我认为这三个对于游戏行业来说是非常重要的。现代的游戏行业,尤其是大型单机的游戏,对于游戏画面方面的要求是非常高的,因此计算机视觉方面的技术对于游戏行业是非常重要的;另一方面人工智能现在虽然还是处于起步阶段,没有太多的应用,但是我非常看好它的潜力,将来无论是用于用于游戏开发方面提高效率,还是放入游戏中提高游戏的乐趣都有很好的前景。
- 虽然我从学会编程开始我就有过开发游戏的想法,但是我从未正式实现过,从未尝试写一个小游戏,所以我希望借助软工的课程尝试开发一个游戏。
- 我是希望在企业内实习,前文中说过,我希望的职业是成为一名游戏开发者,因此在相关的游戏企业内实习,了解他们的工作环境、储备相应的知识都是非常好的。
- 实习经验很重要,像博客A中所提到的,通过实习,可以增加自己对于行业的了解,找到符合自己期望的工作,专心为工作准备,从事真正适合自己的工作,不会像博客L中所说的,从事不适合不喜欢的工作从而浪费时间。有机会的话是可以在不影响学业的情况下尝试实习,一个是尽早找到合适的职业,着手为其做准备,更有针对性的选择专业课和发展方向,另一方面不应该太过急于实习,我认为这个阶段还是积累知识和技术更重要。
参考文献
博客M | 进入2012 -- 回顾我走过的编程之路 |
---|---|
博客I | 我的软件开发生涯 (10年开发经验总结和爆栈人生) |
博客O | 分享下在美国读研期间的一些计算机课程作业 |
博客Q | 软件工程资料 - 优秀的大学怎么教程序开发和软件工程课 |
博客A | 辜新星:时刻调整方向 找到人生的蓝海 |
博客L | 对程序员职业的一些建议 |