2008-10-31

underrun on pipe B!

将ubuntu升级到intrepid后Xserver似乎有点问题,这一点从GDM的闪烁可以看得出来。X11程序运行有点迟钝 -- 而本来我的wmii窗口管理器有运行如飞的感觉。网上随便一搜,果然这是intel集成显卡驱动的问题。典型的,在X的日志里面有如下信息:
(EE) intel(0): underrun on pipe B!

一直想把ubuntu换成archLinux,不过懒的折腾。将就着吧。

标签:

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一直没有来电。

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

标签: ,

2008-10-12

Beating the Averages

The Averages, 即 ``the average programmers' '是也。标题所指文章以前应该看过,再次细读了一番,颇有``余音绕梁''之感。

教科书中常把编程语言划分成低级语言和高级语言,这容易给人造成一种误解:高级语言大致都是等价的。其实不是!并没有一个鸿沟,明确的将一边划为低级语言,另一边是所有高级语言。每一种语言都提供了一个抽象层次,层次越高便越强大。虽然在图灵机的角度来看,它们是等价的,但是在实际生活中,程序员更关心的是语言的表达能力和表达效率。

``奇文共欣赏'',热爱程序设计的朋友们不妨仔细一读。