title: Software Engineering-HW1

date: 2017-09-13 15:41:13

tags: HW

---

阅读随笔

<徐宥:掉进读书的兔子洞>里面, 讲述的非科班经历让我很有感触. 进入大学, 才认识到人与人的差距真的比人和猴子的要大, 认识到自己在数学方面可能真的没有天赋, 别人听一遍就能搞懂的我还要看好几遍. 但同时, 也发现了自己也有更加擅长的方面--计算机. 课程需要的C, R, matlab等我都能快速地上手, 这时我也有了以后当一名码农的想法. 找到方向才是重要的.

.net程序员工作两年总结 里面, 作者在刚开始学习的时候遭遇的非常浅显的问题我也遇到过很多. 自学的初期的确非常痛苦, 编译链接到底是什么, 不是我F5一下就出结果了吗? IDE和那个记事本文件到底是什么关系? . 各种各样的问题堆在面前, 都要靠自己去找答案, 一个小小的问题都能卡住好久.

还有就是, 感受到自学的重要性在计算机这方面应该是无出其右的.

阅读和思考

第一部分:结缘计算机

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

我的本科是数学系, 进入大学的前两年和大多数数学系的同学一样, 打算着出国读研, 只不过读什么去哪读都没什么概念, 一直有去从事IT行业的想法但也只是想想. 做出改变的时候是快要大三, 当时觉得如果再不仔细想想可能就真的没机会想了. 于是差不多在接近半个月时间里, 就一直在权衡, 评估, 向老师学长询问, 最后做出了决定是: 不能让我本科的数学知识白费 虽然也没多少, 研究生阶段去一个交叉学科. 后来保研落选, 考研失利, 坚定二战, 过程曲折但还是最后还是走进了计算机学院.

关于条件如何, 当时想的就很清楚, 和科班出身的比我显然是在基础知识有许多的不足, 但在数学知识方面有一定优势, 所以最开始考虑的是密码学这种联系比较紧密的学科.

我觉得比较没什么意义. 非要说的话, 有一个可以说是激励着我的人: 梁斌penny. 从淮海工学院到南京大学再到T大, 从几年前的某博士到今天的梁厂长, 可能说的不太好听就是一部小人物的奋斗史, 我想我的起点已经比二十年前的他高许多了. 但是跟周围同学比起来就低多了.

计算机是你喜欢的领域吗?

喜欢. 这几年, 有三次让我感觉热血沸腾或者说是学习的激情, 一次是开始学习抽象代数, 一次是第一次接触到python, 一次是深度学习方面的知识.

很开心啊, 上周看完Hung-yi Lee老师的课后, 就立刻全心投入到了学习中, 很久没有这种朝八晚十然后离开图书馆还意犹未尽的感觉了, 很久了. 这一年的考研生活的磨砺, 让我看到书本就是本能的厌烦, 但现在又找回了学习的激情. 希望以后的我, 如果在学习上遇到挫折的时候, 也可以回想起这天的自己.

这是我几个月前的晚上写下的, 虽然有点矫情但是我当时真实的感受. 但非要说这是热爱计算机, 热爱写代码, 我想更多的是喜欢这个过程.

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

你对你的大学生活有什么想要吐槽的地方吗?你理想的大学教育应该是什么样子的?跟学校给你的有什么区别?比较你在中国大学的经历,你的老师和学校能做到和国外那样吗?如果不能,请分析一下为什么。(必答)

没能在大一就对以后有个长远的规划. 理想的话, 每个人都可以在老师和过来人的指导下制定自己短中长期的计划.

还有一点就是教学质量参次不齐. 本科时候的三门课, 高等代数, 概率论基础以及实变函数, 老师或是照本宣科或是有严重的口音. 最后要么去跟其他老师的课, 要么跟着网络课程修习. 尤其是在有一个非常棒的数学分析老师做对比的时候.

这点我认为中外不会有太大差异, 而且这几年网络课程的兴起也可以说解决了这个问题.

迄今为止,你写了多少代码,描述你做的最复杂的软件项目/作业。(必答)

对代码行数没什么概念, 因为没做过项目. 大致上照着python cookbook做了半本书, 然后最多写的就是各种计算或者模拟用的小脚本. 最多的大块代码就是给毕设写的算法, 不到200行的样子.

所以我想选这门课, 看看到底一个完整的软件是怎么写出来的.

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

"我们为什么要学这么多数学, 这有啥用啊" 这个问题大概是低年级数院所有人共同的问题了(笑), 当然到后来各种课程完全打消了我们的疑问. 非要说的话, 更有一种润物细无声的感觉. 机器学习和深度方面的书可以看的很顺畅.

第三部分:未来规划

这还是个蛮沉重话题, 经常聊起这个, 最后大家都对国内的环境持了一个悲观的态度. 梦想的话, 是可以没有经济压力的想去学什么就学什么, 把我感兴趣的领域都深入研究, 然后能做出一点微小贡献就更好了. 当然这是梦想了. 就规划来说, 这两年的目标就是能有一份好工作, 先成为一个合格的螺丝钉

第四部分:课程期望

期望就是, 能够知道一个软件, 项目是如何从无到有的产生出来.

15H.

付出更多时间和精力的话, 要看实际情况, 精力总是有限的, 有不得不现在就去做的事也有不那么重要可以推后的事.


分析软件

选取了三个软件, Wox, Steam, PLAYERUNKNOWN'S BATTLEGROUNDS. 分别是工具, 平台, 游戏.

Wox

Wox是一个Windows平台类Alfred的软件.

Wox是一款启动器。用于快速搜索本机安装的各种程序,文件。也可以通过插件快速搜索网络内容,比如今天天气如何,某某电影的评分是多少等等。

  1. 因为看到同学Alfred的效果想找一个Windows平台的类似的软件, 就搜索到了Wox. Wox是一款开源非盈利的软件. 作者的开始目标是方便自己.
  2. 时间是今年七月, 通过下载
  3. 按作者说,他提出了想法后, 渐渐有一群人加入这个项目中来. 大量第三方插件都是众人pull的. 为什么免费使用, 大概是开源精神(?). 武汉本地软件工程师五年经验月薪15K, 年薪应该20W+.
  4. 通过看说明文档学会用的.

    极大的简化了操作, 提高了效率, 尤其有道插件配合按键宏为我读文章提供了很大的便利.

    bug处理, 主要靠用户自行重启软件.

    更新方法, 应该是自行去GitHub下载(因为我用以来还没更新过).

    版本更新速度, 在今年四月的稳定版本之前是两到三个月, 今年四月之后还未更新.

    预计一次更新要 1人天.

    我和同寝室的要做出类似的主程序和系统插件可能需要四到五天的工作量, 但加上第三方插件的话就要很久了.

    人月, 一个平均水平的程序员在面对平均难度水平的工作时一个月能完成的工作量.

  5. 同类软件没有竞争. 还在使用. 同类软件中, 因为只有这个是符合'快速启动'要求的,
  6. 如果五年后还是这个电脑的话, 硬件不变. 这个软件可能五年后就会消失, 因为我怀疑作者已经停止维护项目了.
  7. 有大量的第三方插件. 因为人的需求是复杂的, 也就造成了软件的复杂性.

Steam

Steam平台是Valve公司聘请BitTorrent(BT下载)发明者布拉姆·科恩亲自开发设计的游戏平台。Steam平台目前是一款全球最大的综合性数字发行平台。玩家可以在该平台购买、下载、讨论、上传和分享游戏和软件。

  1. 我自己凑上去的, 没得选, 只有他. Steam起初的目的是成为Valve公司自己游戏的分发平台, 随着其他厂商的加入成为了综合性数字发行平台, 当然盈利是重要的一环. 来自两部分, 厂商在steam售卖游戏的销售分成, 以及玩家通过steam市场交易的税收.
  2. . 时间是2014/03/06, 通过网络下载.
  3. steam虽然是免费软件, 但vavle免费给我们用是为了赚游戏玩家手中的钱.
  4. 阅读steam吧的教程贴. steam让人更加方便的去获得游戏, 坏处是.

    更新是软件内置了更新模块. 强制更新大概一至两个月一次.

    更新一次大概要5人月. 因为传闻valve只有三个程序员

    三四个人可能要一年以上.

  5. 同类软件有EA的UPLAY(play you)平台和橘子平台. 竞争的主要方式是靠独占游戏的发行. 还在用, 不存在非要用哪个, 主要看游戏在哪卖.
  6. 可能会有变化, 不排除出现新的一款搭载steam平台的主机出现. 软件依然存在, 因为就现有模式来看没有太大的缺点, 而且竞争对手不是一个量级.
  7. 可变性. 随着厂商的加入, 有了越来越多的游戏.

PLAYERUNKNOWN'S BATTLEGROUNDS

绝地求生(PLAYERUNKNOWN’S BATTLEGROUNDS)是大逃杀类型的游戏,每一局游戏将有100名玩家参与,他们将被投放在绝地岛(battlegrounds)的上空,游戏开始跳伞时所有人都一无所有。

游戏展开的方式是:玩家赤手空拳地分布在岛屿的各个角落,利用岛上多样的武器与道具。

随着时间的流逝,岛上的安全地带越来越少,特定地区也会发生爆炸的情况,最终只有一人存活获得胜利。

游戏的每一局比赛都会随机转换安全区,这样玩家的很新鲜与紧张感会更加强烈。

  1. 周围的同学都在玩, 所以才购买. 目标是盈利.
  2. 2017/09/07. 通过steam购买下载.
  3. 游戏是买断制一次付费.
  4. 游戏没有会不会的, 就是周围同学玩的游戏从一个换到了另一个.

    bug很多, 在更新之前玩家把非恶性bug当作feature. 恶性bug当天通过更新修复.

    更新速度是每周更新, 最近放缓到每两周更新.

    通过steam进行增量更新.

    预计60人月(Bluehole工作室目前有120人).

    三四个人做到死都做不完, 做着做着画质革新又要推倒重新来.

  5. 目前无同品类竞争对手.
  6. 五年后依然存在, 作为一款千万销量的现象级游戏, 即使考虑极其悲观的情形, 五年后依然会在运营.
  7. 类似于黑盒的概念. 玩游戏的人不需要知道图像为什么产生, 数据为什么传输, 只要知道摁下哪个键会发生什么.

Software Engineering-HW1的更多相关文章

  1. Software Engineering: 3. Project planning

    recourse: "Software Engineering", Ian Sommerville Keywords for this chapter: planning sche ...

  2. 第二篇——The communication during software engineering.

    I've learned a lot in my software engineering class about how a program comes out.That's also a esse ...

  3. Software Engineering: 2. Project management

    resources:"Software Engineering" Ian Sommerville For most projects, important goals are: D ...

  4. Software Engineering: 1. Introduction

    Resource: Ian, Sommerville, Software Engineering 1. Professional software development 1.1 Software e ...

  5. SENG201 (Software Engineering I) Project

    SENG201 (Software Engineering I) ProjectSpace ExplorerFor project admin queries:For project help, hi ...

  6. 个人阅读作业2—《No Silver Bullet: Essence and Accidents of Software Engineering》读后感

    在进行了一次结对编程.一次团队编程和一次个人编程项目后,读了<No Silver Bullet: Essence and Accidents of Software Engineering> ...

  7. Software Engineering at Google

    Google的Fergus Henderson在Software Engineering at Google中介绍了Google的软件工程实践. 软件开发 源码仓库 单一源代码仓库,除了核心配置和安全 ...

  8.  Go is more about software engineering than programming language research.

    https://talks.golang.org/2012/splash.article Go at Google: Language Design in the Service of Softwar ...

  9. 10. Software, Software Engineering, water fall (瀑布模型),Code Complete等名词的来源

    ①.Software-软件”一词是20世纪60年代才出现的,软件Software——1958年由贝尔实验室的著名统计学家John Tukey 提出软件与硬件一起构成完整的计算机系统,它们是相互依存,缺 ...

  10. SEMAT[软件工程方法和理论 Software Engineering Method and Theory]

    Agile software development Agile software development is a group of software development methods bas ...

随机推荐

  1. C#属性的使用--C#基础

    1.属性的作用:保护字段,对字段取值与赋值进行限定 2.属性的使用: _name(属性名)public [对应字段类型] 属性名Name{ get{return _name;} set{_name=v ...

  2. Xampp apache与mySQL开不了 解决办法

    Xampp安装后,打开Xampp control panel. 点击Apache对应的Start,开不了.原因是系统的服务占用了80端口,所以要么结束系统服务,要么修改apache端口. 个人比较喜欢 ...

  3. CSS黄金三段--消除边框的影响

    以前常常因为padding.margin等影响了整个边框的大小,只能傻傻的算大小.现在的黄金三段真的是帮了大忙了,下面的代码放在CSS相应的内容中,就可以使得边框的大小就是你设置的width的属性值. ...

  4. python 常见算法

    python虽然具备很多高级模块,也是自带电池的编程语言,但是要想做一个合格的程序员,基本的算法还是需要掌握,本文主要介绍列表的一些排序算法 递归是算法中一个比较核心的概念,有三个特点,1 调用自身 ...

  5. 同一台电脑同时装Oracle客户端和服务端

    1.如果之前安装过Oracle,Win+R输入Services.msc,关掉以Oracle开头的服务(卸载Oracle服务端和客户端步骤一样,见另外一篇帖子) 2.Win+R输入regedit打开注册 ...

  6. wcf类库及宿主

    说起wcf,一直以来总是直接创建wpf的应用程序,这样默认的宿主是IIS.如果想更换宿主,那么我们首先得创建wcf类库. 这个类库会自动创建一个app.config文件.到最后部署的时候,把它移到宿主 ...

  7. 移动端造json假数据时的坑(转义符问题)

    最近在 Json 数据的解析上碰到了一些坑,特此记录一下. 正文 迭代开发中,经常出现服务端接口还没开发完成的情况,所以经常需要移动端自己在本地造一些假数据. emmm,虽然说好像造假数据也不是什么很 ...

  8. Error:Execution failed for task ':app:processDebugGoogleServices'. > No matching client found for package name 'com.fortythree.sos.flashlight'

    Q:导入json文件时的包名不对 A:包名存在的位置是app build gradle中的applicationID

  9. jqgrid 单元格引入时间datepicker控件

    简述原理:引入jquery-ui插件,设置好表格所需的字段变量以及字段属性1.设置colName与colModel colNames: ['过期时间''] colModel:[{       name ...

  10. 利用Java泛型实现简单的泛型方法

    问题:编写一个泛型方法add(),当传入不同数字类型的值时,能够进行加法运算,(如可以传入int.long.float.double类型,但要对传入的值做一定的限定,如必须是数字). 解决:利用泛型编 ...