2008-10-21

工作札记 (8)

新一轮的开发工作早已经开始,我们又回到了写 weekly report 的时代。由于工作需要,我们基本上要用到四种语言: C, Java, Ruby 和 Python. 其中C和Java乃是官方必备, Ruby用在WebUI, 而Python接口虽然不必全部提供,但也经常需要。

我遇到了一个问题,就是dump出XML-RPC的request. 也就是一段XML表示的调用请求。 用C, Ruby 和 Python 都相当直接而且简单。 对于C而言,只要看看头文件便可一目了然,Ruby和Python的标准库也相当实用并且易懂。 对于Java, 我花了整整一个下午, 一个夜晚(直到午夜),已经今天整整一个上午。最终在gf的帮助下终于搞定。

我曾在大学暑假专心学Java花了一个礼拜,专心学Python的时间只有两个礼拜,至于Ruby,则基本上没花过什么时间瞅一瞅。很容易找到Python和Ruby解决办法的原因在于:
  1. 这两者标准库的文档比较完备,源代码、示例代码等都比较详尽;
  2. 脚本语言,方便调试,并且它们都有非常强大的reflection;
前两者基本上只需要两三行就能搞定,对于Java我最终得到的代码则有二三十行左右。

我必须承认:我不懂OO。因此一个javadoc文档对我而言没有太大的帮助。我更需要的似乎是一张UML图。在一个完全陌生而且稍微庞大的java包面前,像我这样一个Java白痴,采用Emacs加软件包源代码的工作方式,那是事倍功半。我得感谢Eclipse的文档和源代码定位功能,基本上是单步跟踪了一下流程,然后仔细梳理那些类的关系。当然,gf的鼎力相助那是功不可没。

我一直认为OO容易导致设计over-complicated,继承层次太深的时候用户很容易找不着北。另外一点,Andrew Koenig曾经在 ``C++沉思录'' 里面说过:库设计就是语言设计。 就算Java语言本身如何强大,如果缺少我所想要的库,那么我也只能放弃它。 什么是语言? 一种表达方式而已,可以是通用语言,可以是DSL-- PLT-Scheme中可以选择不同语言(包含不同特性的Scheme,甚至是DSL -如slideshow,用于创建和展示slide).

嗯,扯远了。不过我发现自己真的不喜欢Java -- 我习惯于C的简单直接,渐渐也喜欢函数式编程的优雅,却对OO一直没有来电。

周末公司去青岛旅游。没什么期盼,呼吸呼吸新鲜空气,锻炼一下身体而已。

标签: ,

0 Comments:

发表评论

<< Home