星期四, 九月 28, 2006

见到了 Java 之父 James Gosling

居然能和 Java 之父 James Gosling 一起合影这对于一个 Java Developer 来说是多么兴奋得事情!James 来公司作客,公司组织了一个讨论会,虽然很多同事都不是 Java 开发人员,但对于 Java 之父的到访还都是很感兴趣的,大家也都纷纷提问。我也凑了个热闹,提了个问题。

Q:As you mentioned functional programming, which gets ideas from mathematics. They have many language spotlight like continuation, closure and so on. Does java consider introducing these features in the future?

似乎 James 对这个问题也是颇有感触,他说 Closure 和 Continuation 的支持现在更多的是一场争论,似乎无穷无尽。函数式编程的确是一件好东西,可以有效地减少代码数量,但是同样他带来的一个缺点就是晦涩难懂。做 Java 的一部分开发人员其实并不是纯粹的计算机出生,所以他们并不一定有扎实的数学基础,对于函数式编程的理解可能比较困难,不自然。不过嘛,虽然 Continuation 没什么戏了,我们依然可以通过 Inner Class 或者 Anonymous Class 的方式凑活当 Closure 用吧。

会上还有同事提到一些关于现在高性能计算的问题,也是最近双核 CPU 的出现,大家对于双核甚至多核比较关注。根据 James 的介绍,Java 的线程方式对于多核的支持非常完善了,在数百个 CPU 上的多线程表现也算不错,但是在上千个 CPU 上的尝试还是不太理想,毕竟这么多 CPU 有很多无法预料的情况产生。当有人问及未来会不会出现一种具有更高生产力的编程语言是,他回答道如果未来可能产生一门语言在并行计算上具有压倒性优势的话,那么这门语言就是最有希望的。目前除了 Java 之外,FP 和基于消息的语言(类似 Smalltalk 的理想模型)是三种主流趋势,他看好 Java,毕竟后两种语言绕开了共享内存的缺陷,但是要想让大众接受比较困难一点。

时间比较短,而且大家也都是问得比较随意,没有刻意去准备,再加上 James 估计也就是走个过场,座谈会就匆匆结束了。

能够与 Java 之父面对面,还是一件很高兴得事情!

给笔记本装了个 FreeBSD

公司发了个新本 Dell D420,本身带的是 WinXP,我给分了一下,按个 FreeBSD 玩玩。

找了张 FreeBSD-6.0 Release 的盘把系统作了一下,因为 FreeBSD 需要一个主分区来安装,所以事先要预留以下。因为安装完后 FreeBSD 会把 MBR 重写一遍,所以理论上先装好 WinXP 再装 FreeBSD 比较好。

安装完启动 FreeBSD,进入命令行界面,默认是 C Shell,而且发现连个 ls 色彩都没有......在 FreeBSD 的世界里,自己动手吧。

给 ls 加颜色
vi ~/.cshrc
添加 alias ls ls -G

有了好看点的颜色之后,开始安装一些常用软件。FreeBSD 的 pkg_add 安装二进制软件包非常方便。X Window 默认已经安装上了,接下来按个 gnome 使用 pkg_add -r gnome2。装完之后执行 echo /usr/X11R6/bin/gnome-session > ~/.xinitrc,以后就可以用 startx 来启动 gnome 了。

进了 gnome 之后就开始装自己的软件吧,像 opera, thunderbird, openoffice 等都是必备的工具哦。

星期三, 九月 27, 2006

目前想学的东西

感觉自己现在又陷入了一个学习的谜团,暂时不做 Java 了,到了一个新的环境,想接触一些新的东西。大概整理了一下,觉得下面的一些东西将作为我目前阶段学习的目标。

  • FreeBSD - 虽然还是非常喜欢 Linux,但是在新环境里学习 FreeBSD 显然是一个更好的选择,有这么多高手可以请教,并且自己也很感兴趣,应该是个不错的选择。
  • PHP - 随着 RoR 的兴起,各种类似 RoR 的框架应运而生,CakePHP 是一个不错的 PHP 框架,目前业余时间拿它和 ShiningRay 一起做做有意思的东西。
  • Python - 一直是最喜欢的语言之一,虽然没有正式用它做过什么东西,决定看下网络方面的内容,譬如一些类 RoR 框架,如 Django。网络方面比较有名的 Twisted 有时间也想好好看看。
大概就这么些了,东西还是很多的,光是 FreeBSD 就是一个庞大的知识库,不过只要有兴趣在,我相信学起来还是很有意思的。

星期日, 九月 24, 2006

The Depth of Dream

昨天睡到中午12点才起,我妈来北京看我了,住我那,大早上的在帮我洗衣服,所以一大早我就隐隐约约的听到洗衣机和其他东西的响声,不过实在太困了,断断续续的睡着。

我睡眠一直不好,多梦,而且非常容易做梦,并且有些时候我都可以知道自己在做梦。做梦很累,尤其是当你发现原来你的梦其实可以具有 depth 属性的时候......

早上半梦半醒具体都梦了啥到现在已经都忘了,以后决定要把梦到的东西第一时刻记下来,挺有意思。不过让我记忆比较深刻的是我做梦醒来睁开眼看到了前面的门,但是有一点很重要,虽然我看到如此真实的一幕,可事实上这还是在做梦。我的梦中的场景和真实场景一抹一样,但是这的确是梦,我梦见自己睡在床上,并且是从梦中醒来,其实也就是我梦见自己在做梦,很奇妙的感觉。正像我朋友所说的,你在梦中看到的东西越清楚,你会发现醒来越累,毕竟你的大脑为了达到如此真实的效果进行了非常精细的渲染。我的梦中梦梦见了我在树林里玩,和我的好朋友一起,微微细雨,看看水面还有纹理效果。我还坐上过山车,坐真的过山车在进行360度回旋的时候我都不能清楚地记得那是什么感受,但是梦中梦却把这真实的一幕呈现给我,并且让我感到真实的失重,计算得如此精确。

早上醒过来真是特别的累,不过我还是喜欢做梦,或许梦能够给人一种精神寄托吧,毕竟这都不是真实的。

Organize your life

“Organize your life!” Palm 设备的经典广告语了,我觉得很有意义。忙碌的项目接近了尾声,现在比之前的两个星期稍微轻松了点。

其实很多时候我们每天工作8小时,面对着电脑,并不是8个小时完完全全是在工作,人毕竟不可能长时间集中尽力干一件事情,总有打岔的时候。就像大多数人喜欢上班时看看新闻一样,我在工作中也总是要抽点时间看看自己感兴趣的东西,譬如上上 TSS,JavaEye,Python 社区等等。

说实话,做某种技术一旦长时间不接触就会手生,我已经很久没写过 Java 代码了,不知道现在写会不会手生。虽然非常喜欢 Python,但是并没有用 Python 正经做过东西。现在就写 JavaScript 熟,但是毕竟 JavaScript 没有太多令人期待的功能。总是有很多东西想学,又总是感觉时间不够,其实细细想想,并不是时间不够,而是自己不会规划自己的时间。每天会在网上闲逛,看看帖子,总想着以“高手”的身份上去说教一番。如果能够合理的安排时间,那么每天会有更多的长进。手边放一本记事本,随时写写,对每天的8小时进行一下合理的分配,尽可能的按照自己规划的时刻表走,那么每天将会有更多的时间用来学习。

感觉合理规划时间是应该着手去做的,就从下周开始吧!

星期五, 九月 22, 2006

QQ 也太过分了

今天在 QQ 里面想向大家推荐几个 Ubuntu 的源,没想到输入 3322.org 居然会被屏蔽,很不理解 QQ 的这种行为!

我们需要动态语言因为它足够灵活

写了一段时间 JavaScript,感觉比写 Java 思维更开阔。虽然 JavaScript 提供了非常有限的 API,但是灵活的语法可以让人有更多的自由空间。

Java 的语法的确很死板,因为需要编译,并且是强类型的语言,所以类型问题经常能够困扰人。虽然也提供了 Hashtable/Map 之类的数据类型,但是严格的语法限制了人们发挥想象。

很多时候我们希望能够动态创建一些对象,因为对象的属性是未知的,这时候用 JavaScript 可以绝对的方便,当然我们还可以为这个对象添加额外的函数。

函数式编程可以有效的缩短代码长度,虽然 Java 也可以通过匿名类的形式模拟内嵌函数,但是对类型的依赖使得语法绝对不够灵活。

不需要明确声明类型有时候的确比较困扰人,但在很多场景中确是非常灵活的。JavaScript 灵活的类型使得整个编程模型异常简单,很多时候,我们只不过就是在几张变量符号表中操作操作而已,一切就是这么简单。

灵活的代价是缺乏规范,没有类型,没有接口,就需要良好的代码结构和文档来进行多人开发,这也是脚本语言开发的一个弊端。下面的一种方式我觉得很不错,从dojo里面看来得。
function swap(/* string */a, /* string */b) { .. }
或许有时候注释一下类型会让代码变得稍微清晰一点,当然了,多积累点单词,把函数、变量命名的易读一点才是正确的方法。

JavaEye 中一篇有趣的文章

原文在:http://www.javaeye.com/topic/24453
最近似乎因为 RoR 的缘故,上 JavaEye 总带着异样的眼光,这不刚去 Ruby 专区看看又有感慨了。
Render 一词毫无疑问翻译为“渲染”,在 Web 开发中用的实在常见,居然遭到质疑,不可否认怀疑的态度是好的,但是有点过了...

星期四, 九月 21, 2006

原来同时更新多个 Blog 如此简单

最近发现 email 真是好东西,不觉喜欢上了这个。于是乎学习 ShiningRay 同时更新多个 Blog,因为每个 Blog 都提供 email 更新,所以通过 email 相互发送更新成立了一件非常有意思的事情。

新的 Blog 足迹

很多朋友开始用 Blogger 了,居然可以用 Google 的帐号登录,很感兴趣!随着 MSN 的一次失败升级,那个糟糕的界面实在无法让人忍受了,迁移到 Blogger 上来啦!