恐龙技术生存体验(五 峰回路转)

毕业找工作时纠结了一番,因为同学们几乎都去了互联网bat之类,出路都很好。我作为老家伙,有点不好意思和他们同台演出。而实习的公司想留我,说有一个推理引擎的项目要做。这个公司还是传统的航空航天军工口的,我很不想继续做老本行。谈了一下offer,不满意就拒了。

接着就思考了一番,觉得自己对这种东西很感兴趣,和编译器虚拟机很接近。拷问自己,如果自己有很多很多很多钱,我会怎么生活?我的回答是去个公司做自己喜欢的技术。

于是心想那就去吧,把这个项目干完再说。

这是个移植项目很复杂很爽,像一边攀岩一边做外科手术一样,需要理解前人的精巧设计。数十万代码的杰作架构复杂,搭建了自用的各种工具包和眼花缭乱的无数数据结构,甚至内置了两个编译器、一个推理机和一个包含JIT的虚拟机,我研究过N多复杂程序的积累派上了用场,融汇贯通了很多知识,加深了对复杂系统的理解,提高了自己抽象能力。

这个项目完毕后,大家知道我能啃骨头,然后就陆续帮别人填坑。IBM有个产品叫Rhapsody,是个图形化工具,从画面上来看类似的UML建模工具很多,比如Rose、Together等。Rhapsody是个庞大而完整的MDA(模型驱动架构)/MDD(模型驱动开发)的SysML工具链。我的工作是要做一个模块,把它的模型的活动图、状态图、顺序图抽取出来,搞一个画布画上去,当然还得提供工具栏,让用户能自己画新的图。这个模块还要提供二次开发接口,方便别人集成。

天地良心。不用说SysML,就是UML也只是听说过,我之前画图都是用MS Visio拽几个方框,建模工具这种东西用都没见过,更不用说开发了。SysML里面的模块都不认识谈何提取和绘制?资料又太少,我就查资料先学UML再学SysML,搞清楚怎么用SysML设计建模,弄明白这些视图的作用,图元的意义。

画界面这个事情是我以前很鄙视的,所以没有任何有用的经验,而图形化建模这部分的坑很深,做过的都有体会。这个项目里画模型的部分买了一个很大的第三方库,提供文档和源代码,结构和MFC类似,得硬着头皮读才能用起来。

Rhapsody的模型很封闭,我耐心的翻墙google了所有资料、用了com、perl很多技术去处理、做了很多实验尝试了很多做法,才摸出一个从来没人用过的办法去获取信息拼接模型,然后想办法绘制到画布上。这个软件的设计和编码过程我还用了一些之前读古书时学到的trick。

但是,这个东西做完以后,只交付了用户而已,没有其他任何市场,所以,要明白,方向比努力重要。

另外通过这个项目我搞明白了模型驱动架构MDA和模型驱动开发MDD,很神奇很理性。如果想要描述乃至自动生成系统,就需要比系统更抽象一层。

如果能自动生成系统/软件,那该多好。

于是我想做一个图形化建模工具,描述复杂的结构,非常需要图形化显示,我之前对界面、用户体验关注太少。那个第三方库功能虽好规模太大,后来我调研了所有的图形化建模工具,真的是所有的犄角旮旯的我都找到了,尤其是开源的,看能不能为我所用。

说到这里,讲真,我做了些复杂的软件,从没有刻意使用设计模式,而我那时的上位机主力开发工具一直是VC 6.0,框架是MFC。

这个项目完结后,在公司里我带了一个兄弟做个软件,用的是MDD的想法;带另一个兄弟做多核多模型仿真系统,其实也是古典问题炒冷饭。另外就是专业啃骨头攻关技术难题,研究方案做实验验证,累。

(本节题目所说的峰回路转,是指我通过做图形化模型绘制软件,被迫做了一些之前不感兴趣的图形化、设计模式、架构模式的工作。)

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值