如何用编程解决问题

2018.07.27

大致分为六个步骤:

  • 分析问题

    分析问题的计算部分————想清楚

  • 划分边界

    划分问题的功能边界————规划IPO(Input,Processing,Output)

  • 设计算法

    设计问题的求解算法————关注算法

  • 编写程序

    编写问题的计算程序————编程序

  • 调试测试

    调试程序使正确运行————运行调试

  • 升级维护

    适应问题的升级维护————更新完善

昨天被三个Boss带去其他公司学习,也是感叹公司一个能带带我的人都没,全靠自己摸索,之前只接触过简单的Python爬虫,这次直接上手数据分析和机器学习了,吴恩达的课听了两节,讲到数学部分开始吃力,转战了其他课程,虽然涉及算法的东西跳过了,但是过一下知识点还是不错的,吴恩达那个课程翻译的的确有点难受。

昨晚开会大致有三波人:提出这个项目需求的公司,做这个项目的一个学校(某博士带领他们学校实验室的本科生),还有我们公司(不过这个项目也就我一个人在跟进)

这周前三天大致也学到无监督学习的聚类问题,昨晚另一个项目团队聊到他们这个项目已经进行的差不多,也是用聚类来分析这个项目(对新闻进行贴标签并分类),将每一个新闻看成一个节点,而且自身有多个属性,这样每个新闻在某一维(昨天他们排除了二维空间,并没有指明几维空间,我推测为三维)空间中就有个距离,通过度量这个距离就能发现一些什么。再往深处就没说了,可能涉及到他们攻克的技术难点。

中间那个导师聊到一个方法论挺有意思,跟我最开始写的大致差不多。拿到一个项目需求,首先要定义核心问题(即在什么样的过程中达到什么目标),然后分析问题,再求解目标(即影响问题的因素),之后选合适方法,也就是找算法。

之前做学校项目的时候,也被老师说过,当提出一个功能的时候,写代码不是最主要的,思考功能如何实现才是,毫无设计就开始写,就算功能实现了,代码也是一锅粥。

他们不仅有成果了,还有两套解决方案,一套是基于关键字,另一套是基于语义推理。

不得不说那个博士还是挺厉害的,能带本科生做这个,想想自己学校的老师,差距不是一点半点,连个像样的实验室都没,不过我在创业园有个工作室也算还行吧,就是渴望有大牛能带带。

今天跟同学聊到,好像学校有个数据挖掘实验室,那里还想有个博士生老师,只不过不教课所以基本没接触,下学期开学我要尝试联系下他,毕设想做这个相关的。

想想每年暑假实习其实都是每学年的承上启下,既能将去年一学年接触的领域用到实际的落地,也能给接下来一学年的学习提供方向,非常棒。