【第八周】回到起点,从头再来

  在这近两个月里的时间里,耗费了几乎所有周末的时间来做项目开发。现在项目开发已经完成,我所得到的一些感想在这与大家一同分享。

  在项目开发伊始,我们就确定了总体的设计框架。本以为这样事情就完成了大半,以为有了大概的框架,我们往里面添加东西就行了,事实证明确实是我想多了。比如,在GUI交互这一块,要怎么实现GUI之间的通信,要怎么添加网络接口给GUI,客户端要怎么与GUI实现交互,客户端要怎么实现消息的同步发送等。一个整体的框架根本解决不了所有问题,其中的细节问题多到让我们难以想象。当然,最后我们还是解决了这其中的大部分,只是花费的时间超出了我们的预期。由这不得不想到,软件工程学的重要性。假想我们一开始就直接编码,期望在编码的过程中实现我们期望的过程,那么这么多细节要考虑,前前后后要进行的调试的次数可想而知。相反,如果采用软件工程的思想——先仔细设计再实现,来进行项目开发,那么很多问题可以提升到整体的层面来考虑,对于诸多的细节问题在设计阶段就想好恰当的解决方案,不至于在编码过程中顾此失彼,还得反过头来重新设计,使得项目开发时间大大延长。

  这次项目开发也看到了自己的很多不足。我是大二转专业到计算机系的,由于正在补修《离散数学》、《数据结构》这两门课,整体的学习情况有点难以兼顾。而且,在真正参与项目开发之后,我才明白离散数学和数据结构这两门课的重要性。这两门课重要在不是它们能够提供多少实用的公式应用在我们的工程中,而是这两门课能够培养我们将现实世界的实体转化成计算机可计算的逻辑实体的能力,同时能够站在计算机科学的角度,为工程的实现提供可靠的解决方案。比如在服务器用户消息转发功能中,采用的数据结构为图。图的键为对方用户的ID,值为对应客户端的socker实例,格式化的消息传入服务器,可通过头部的ID查找对方用户的socket,进而实现消息的转发过程,这样的例子还有很多。这就是计算机科学美的地方,那些数据结构外表看起来复杂、晦涩,但是这几乎是现实世界各种实体、数据最简洁的逻辑表达,它给予了我们在逻辑层面的视角,将问题的来龙去脉看得清清楚楚,现实问题由繁化简,为我们设计解决方案提供了极大的帮助。虽然软件工程这门专业强调的是计算机技术的应用,但是我觉得这种编程的思想,简单来说就是分析问题、解决问题的能力,对于所有计算机行业的从业人员来说都极其可贵,这也是真正的软件工程师与IT民工的区分标识。所以对我来说,这次项目开发结束之后,我不再想去钻研web开发、数据库等等,而是应该好好静下心来,重新回到计算机科学最开始的地方,从离散数学、数据结构重新开始,扎扎实实地打好自己的基础,重新迈入计算机科学的大门。

  以上。

时间: 2024-10-06 22:43:33

【第八周】回到起点,从头再来的相关文章

20135302魏静静——linux课程第八周实验及总结

linux课程第八周实验及总结 实验及学习总结 1. 进程切换在内核中的实现 linux中进程切换是很常见的一个操作,而这个操作是在内核中实现的. 实现的时机有以下三个时机: 中断处理过程(包括时钟中断.I/O中断.系统调用和异常)中,直接调用schedule(),或者返回用户态时根据need_resched标记调用schedule(): 内核线程可以直接调用schedule()进行进程切换,也可以在中断处理过程中进行调度,也就是说内核线程作为一类的特殊的进程可以主动调度,也可以被动调度: 用户

软件工程_东师站_第八周作业

一.PSP Date Type Job Start Interrupt(min) End Total(min) 20160417 助教 黄金点 20:00 5 21:00 55 20160418 助教 黄金点 19:00 12 21:00 108 20160419 助教 黄金点 18:45 100 23:00 155 20160420 助教 团队作业 10:00 35 11:20 45 20160425 结对编程 四则运算 19:00 5 19:30 25 ? 二.进度条 ? 代码行数 博客字数

20145123刘森明《Java程序设计》第八周学习总结

代码托管地址:http://git.oschina.net/null_289/Java2016 教材学习内容总结 一.日志API 使用日志的起点是Logger类,LOgger实例的创建有许多要处理的要素,LOgger类的构造函数标识为protected,不是java.util.logging同包的类不能直接以new创建,要取得Logger实例,必须使用Logger的静态方法getlogger(). 调用getLogger()是,必须指定Logger实例所属名称空间,名称空间以“.”作为层级区分,

20145301 《Java程序设计》第八周学习总结

20145301 <Java程序设计>第八周学习总结 教材学习内容总结 第十五章部分 - 通用API 通用API 日志: 日志对信息安全意义重大,审计.取证.入侵检测等都会用到日志信息 Logger java.util.logging包提供了日志功能相关类与接口,使用日志的起点是logger类,Logger类的构造函数标示为protected,不是java.util.logging同包的类不能直接以new创建,必许使用Logger的静态方法:名称空间层级相同的Logger,父Logger组态会

不再年轻,仍从头再来

近日我的两个宝贝相继过生日,给我很多感触,被生命和生活所感动,被各种爱和各种细节所激动,我是一个可怕可恨的工科男,有时敏感,有时性情,有时忧郁,有时愤青,有时假装文艺,有时也很装,这些五花八门乱七八糟的怪里怪气注定了我无法达到常人所想象的高度和境界,我只能在那个小小的圈子世界里偶尔闹腾一下,这是悲情的,但依然未放弃做大做强的梦想,梦想这个东西,有时就是人的一口气,没气也就挂掉了,因此一定保持这口气,并不够地充气. 我马上38岁了,这个年龄应该是春风得意的时候,可我还是处于潜力阶段,这很可笑,假如

学习IPC进程间通信的总结(第八周)

10月24日晚上,回到宿舍准备写这周的总结时,看了下课表突然意识到这已经是第八周,不得不说时间过得真快,与前两年轻松的.无任务的课程相比,今年真是充实了太多!这也许是感觉时间过得快的原因,但是最近我也遇到了许多问题,当接触的知识多了以后,发现自己要学的东西太多了,仅仅上课所学远远不够,所以课后自学了一些课程,遇到的问题一是自己好高骛远,总想急于求成,这看一点那看一点,没有系统的全面的琢磨一本书,问题二:对于应用方面的知识学到手很快,但也会很快的忘记,到了应用时只记得一些概念了.对于这两个问题,我

第八周技术博客

简单的贪吃蛇 (function() { var canvas = document.getElementById("canvas"); var ctx = canvas.getContext('2d'); ctx.fillStyle = "#0f0"; ctx.strokeStyle = "#f00"; //按下键盘的响应参数 var keyList = { 37: [-1,0], 38: [0,-1], 39: [1,0], 40: [0,1

一十八周入侵前端进行时!

现在的时间是:2015年3月28日 18:06:06,刚刚从图书馆飞奔归来,坐在图书馆想了一个多小时,嗯,整个计划应运而生,十八周入侵前端! 先介绍下我自己吧,我是一名大三的学生,在大连,大二的时候开始接触编程,从JAVA到PHP,在到前端,都曾涉猎,但是样样都是门外汉,今年年初的时候,决定毕业以后奔往帝都,以前端工程师的身份进入互联网行业,未来的职业生涯规划也将以此起步. 从年初到现在,断断续续的,乱七八糟的,现在有些太浮躁,所以决定静下心,不再朝三暮四,处处牵挂,就是一个字儿:前端工程师!

20145311 《Java程序设计》第八周学习总结

20145311 <Java程序设计>第七周学习总结 教材学习内容总结 第十四章 NIO与NIO2 高级的输入输出处理,可以使用NIO(New IO),NIO2是文件系统的API 第十五章 通用API 15.1日志 15.1.1日志API 使用日志的起点是Logger类,要取得Logger类,必须使用Logger的静态方法getLogger(),Logger.log()方法可以用来输出信息. 默认的Logger还会记录时间.类.方法等信息,Logger是记录信息的起点,还会经过一些过滤才会输出

## 20155336 2016-2017-2《JAVA程序设计》第八周学习总结

20155336 2016-2017-2<JAVA程序设计>第八周学习总结 教材学习内容总结 第14章 NIO与NIO2 NIO简介 NIO使用频道来衔接数据结点,在处理数据时,NIO可以让你设定缓冲区容量,在缓冲区中对感兴趣的数据区块进行标记,像是标记读取位 置.数据有效位置,对于这些区块标记,提供了Clear().rewind().flip().compact()等高级操作. NIO2简介 NIO2文件系统API提供一组标准接口与类,应用程序开发者只要基于这些标准接口与类进行文件系统操作,