2011国庆总结——代码不是写出来的,是设计出来的

           国庆前第三天,被叫到办公室。我觉得应该把“文言文翻译”这件事情做好。时间紧迫,11月份就要结题了,阳光明媚、悠闲自在的十一长假肯定是没了。

           国庆前一天下午就没课了,我就开始准备如何入手。本来想按照和老师讨论出得方案做下去的,但是已知的词库太小了;分词问题我们是想了一种“偷懒”的方法;现在关键是解决一词多义问题;查找了好久的资料,机器翻译共有两种方法:基于规则的和基于统计的。而且解决一词多义问题的最好方法是统计模型,但是统计翻译模型必须掌握比较大的语料库,和样本才行。在search的过程中,偶尔发现有一个网站居然有很多古文的全文人工翻译,还有一部文言文词典。我马上用软件把整个网站下载下来,开始研究如何把网页中的资料导入到数据库中,这非常重要。因为只要有了数据库,做其实验来就轻松多了。

            到了第二天,我开始写程序建数据库。一写就是7天,还没有成功得把网页中的资料导入到数据库中。这个和5月份的“智能体”大赛是同一种情况——写着写着就没法继续往下写了,因为代码太乱了,条件判断语句太多了,整个下来只有一个函数。并且不是所有web页面的数据都很规则,有些就是不同、出来捣乱。第到第4天的时候,最好的结果是:能把前50个页面的数据读进去,剩下的就得自己要么去改web页面,要么该程序。开始的时候我是该web页面,后来发现改的频率太高了,况且总共有3890个htm文件,根本就没法一个一个去改,改程序的话,我怕越改越乱。没办法,我知道我犯了一个同样地错误,必须改正,必须让自己写代码这件事是可持续的。以前做数据结构,算法题总感觉C语言比较好,c++太麻烦,现在感觉做稍微大一点的程序,如果不面向对象,代码将把你这个人淹没。

             我开始反思,并寻找出路。我刚开始认为是我对网页、文本信息的处理技术不了解,我也深刻的知道到致我写不下去的原因和上次“智能体”比赛时发生的情况差不多。但我更希望做些“感觉高级”的事情,于是我先研究自然语言处理、网页信息抽取、人工智能等知识。现在我发现我一直在犯同一个错误:好高骛远、舍本求末。找得结果是我什么都没找到。网上的资料太过于简略,而且一般是:只讲思想,从来就没有代码,没有人知道这个到底能不能实现。现在,我不得不会回到起点,去探索怎样才能让写代码可持续。

             我找了一个研究AI实现的小例子,发现简单的AI其实可以很简单,但是关键是要把情况分清楚。当初我搞“智能体”的时候,一上来就想吃成胖子,没有全盘可持续编程的细想,只看重眼前利益,结果是作茧自缚。我又找了一个决策树的示例代码下载下来研究,还有,把当初Eric的AI代码找出来一起研究,到底如何实现那些逻辑性很强,需要大量判断,有很多条件的智能,想看看他们是如何实现的。主要研究“决策树代码”和Eric的AI代码。

                研究了一天了。说实话,没看懂。因为数据流比较长,可能也是没耐心。但是看他们的代码让我感觉很舒服,很清楚,层次分明,整个代码设计得很周到。一般一个函数(方法)不会超过15行。而我为了“省事”、为了快速看到效果,有时候我的一个函数就是200行,自然,这种代码是没法发展下去的,光你去维护以前的堆砌的东西就够你受的了——难道这就是所谓的作茧自缚?

                显然,这些代码是经过设计的,没有整体框架的设计能力,是没法一写就能写2千行代码的。不要急,不要怕写子函数,也许一时没用,但是随着代码的增多,认识的加深,情况的复杂、逻辑量的增加,这些原来的子函数就可以为你分担负担,写代码就不会那么累。

                当然,要想让你的代码可持续发展,最重要的是先整体分类,把一些东西抽象出来,先占个坑,以后有东西就是这些已有东西的细化,那时自顶向下开发,代码自然就可持续了。遇到解决方案,最急的不是写代码、看效果,而是设计代码编写策略、实现结构、问题抽像、只有从整体上有把握,才能让代码编写可持续,才能最终写出好的代码,实现相应的功能。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值