第1次作业:no blog no fun
1.先回答老师的问题
第一部分:结缘计算机
读了进入2012 -- 回顾我走过的编程之路后,我试着回顾了我的编程生涯的开始。我最原始的记忆就是老爸教我用电脑玩连连看,那时候的显示器应该是CTR显示器,像电视机一样,屏幕都是凸起来的,没记错的话它应该还在车库里呆着,但是主机好像被家人甩了。一直以来电脑在我手里都是看电影玩游戏,后来在初中,可能是初二还是初三吧,可能是因为想要实现自己想要的功能,我产生了自己编程的想法,于是在网上找C++的教程,因为需要C编译器,得知Linux自带gcc编译器后还尝试了安装Linux,因为不懂虚拟机,英语也是初中水平,于是向老爸请教如何安装系统,然后老爸就不让我动他电脑了。
虽然第一次接触编程就半途而废了,但是隐约还记得“C语言从include开始”。现在学习cs的时候,想起初中开始的编程生涯,总是会感到遗憾。相比优秀的程序员,他们在DOS时代就开始了编程生涯,没有因为业余学习的困难而放弃。如果我坚持学习,经历这么多年,肯定会具备一定的水平的。我觉得并不是坚持很难得,而是我太容易放弃了。我需要做的是谨记这次经历,每一次学习都付出全力,不轻易地放弃。
后来,在三年后,我巧合地被计算机专业录取了。在新学期学习C语言的时候,我才恍然想起来这就是我初中接触过的编程课程。在后来课堂上得知很多人都在高中阶段从事过编程学习,还有些人参加过OI竞赛。跟这些人比起我,我的水平真是太浅了,我们大部分人唯一接触过的编程就是高中数学学习的VB。但是,得益于老师一视同仁的教导,我们这些不具备基础的人都逐渐入门了C语言。当时我还以为学好了C语言就可以工作了,后来,我们逐渐接触了JAVA,JavaEE,Microsoft.NET,我才发现还有这么多编程语言具备C语言所不具备的特性。现在回忆起来我真是目光短浅了,听说游戏都是用C语言写的,就准备用C语言的水平去工作了,想起来就觉得好笑呢。
为什么喜欢计算机呢,因为在学习中,我得知了还有许多我没有学习过的技术,工程师们用这些技术实现了我们生活和学习中必需的各种功能,科研工作者们探索计算机领域的更多技术。我希望我也能成为他们中的一员,实现用户需求的功能,使我的努力和工作发挥价值。我想我现在的水平是远远不够的,还需要先学习计算机领域的基础。
第二部分:在计算机系里学习
结束了高中最后阶段的学习后,进入大学后就失去了当年的勤劳,每天只想躺在床上不想动。我真是太懒惰了,好在后来逐渐找回了对编程的喜爱,有了开发个人产品服务用户的想法,开始加入老师的项目组和课外知识的自学。上大学之后感觉人与人之间都有距离感了,不像高中那么熟悉,所以我觉得沉浸在个人学习中挺好的。国内外的大学区别我也不清楚,不过我认为我们的老师都是很和蔼的,但是我们的课上都是沉默的,而外教上课一般都是踊跃发言的,有留学经历的老师应该感觉更深刻。其实老师上课问问题,我脑子里有想法,但是我不想吭声。我觉得现在的教学我就可以接受,毕竟计算机专业需要靠我们自觉地课后学习。关于国外大学的教育,希望以后有机会可以接触吧。
我学习过的MOOC是Coursera和iTunes U,在Coursera上学习Machine Learning和在iTunes U上学习iOS,但是目前的成果是有限的。MOOC可以自由选择感兴趣的课程,并且没有严格时间要求,而且学习的内容可以立刻采用自己的电脑来自己尝试,可以立刻发现问题和尝试解决问题。但是这种没有监督的学习方式非常自由,我很容易在缺乏时间的时候放置应该进行的学习。而大学课堂学习,每节课都会按时到场,并且可以在课后和老师讨论问题。这两种方式都是可以采取的,我们在学习中可以结合这两种方式,在课堂上学习老师安排的课程,在MOOC中学习个人感兴趣的课程,这样我们业余学习的技能也会具备一定的水平,有利于未来从事相关行业。
其实,Machine Learning和Developing iOS这两门课差别很大,我只看英文字幕的情况下,iOS完全没有问题,而Machine Learning看完都是一脸懵逼,做题得时候需要根据题意在Slide里面找答案,还经常做错。Programing的时候特别费脑,都是靠SOF上面参考完成的。不过,我感觉国外高校的老师上课很有趣,没错,我说的就是Developing iOS的老师,他语速特别快,但是很容易就可以听懂,很感谢iTunes U和Stanford University和Coursera提供免费的课程供我们学习。
学习线性代数和概率论对计算机科学是十分必要的。比如Machine Learning就对我们的线性代数水平有一定的要求,概率论对软件的设计也是有参考价值的。所以学习计算机科学是要保证数学水平的。
第三部分:未来规划
前文有提到,未来想实现用户迫切需求的功能,使我的努力和工作发挥价值。另外替我的家人开发一些移动应用可以方便他们的生活。另外,我和很多游戏爱好者一样,想加入Video Game团队制作受欢迎的游戏。但是,不管从事什么职业,都是可以在自己的职业中发挥个人价值的。马上面临实习了,我认为不管在实验室学习计算机领域备受关注的新技术,或者在企业学习应用广泛的成熟技术都是可取的,我们都能在实习中不断进步,提升个人实力,具备一定的基础进入未来的学习和工作。
2.另外的感想
阅读了博文美国读研期间的一些计算机课程作业后,我认为老师划分检查点实现股票交易系统任务的方式我十分赞成,因为我们学期末一般有课程设计,我们总是倾向于做一个完整且具备一定功能的软件或者系统,但是在限定的一周时间内很难完成,总是耗费大量时间在某些没有意料到的问题上,结果最后很多预期的功能都来不及实现就参与答辩了。但是在老师的指导下,我们可以在课程的学习中逐步实现预期的功能,也有充足的时间来排除意外的问题。我希望在这学期就想好我的课题并且制定计划来分步骤完成,在此途中遇到的问题也可以咨询老师的意见。我打算编写一个MacOS app来方便管理我的相机照片,可以按时间分类照片,添加说明和重命名照片,可以查看照片细节和直方图,可以选择用LightRoom编辑或者用其它轻量的处理软件编辑,可以选择上传到相册或者网盘,这些就是大致上相机管理功能了,其它细节的功能就在之后的阶段来慢慢设想和实现。单元测试对我来说是第一次接触,因为之前的课程设计都是非常简单的,谈不上软件的规模,但是在开发一个具有复杂功能的软件的时候,就需要单元测试来排查问题,通过了单元测试,才能发挥该软件应有的功能。所以,在我即将开发的app基本成型的时候,就需要通过单元测试来保证它的正确性。