Chinaunix首页 | 论坛 | 博客
  • 博客访问: 483018
  • 博文数量: 120
  • 博客积分: 3052
  • 博客等级: 中校
  • 技术积分: 1755
  • 用 户 组: 普通用户
  • 注册时间: 2007-06-01 09:43
文章分类

全部博文(120)

文章存档

2011年(20)

2010年(3)

2009年(52)

2008年(45)

我的朋友

分类: 项目管理

2008-04-18 09:55:04

好久不用 java 写东西了。
2006年以来,java 只用了3个月不到,先后用 perl,shell,elisp,ruby 来写一点东西,现在突然用回 java, 都有些不习惯了。
虽然很早就听到,但是好像是突然间就悟到,语言真的只是工具。
要写一个东西,一旦有了思想,实现它就只是体力活了。
用哪种语言,除了客户要求(我现在是这种情况),就是个人喜好问题了。
《人月神话》中说"There is no silver bullet。"
结构化程序设计不是,面向对象不是,面向 aspect 不是,……不是……也不会是……也永远不会有。
我是先学的“结构化程序设计”,后来才去了解OO,但是 perl 和 shell 对我的影响无疑是巨大的,是它们让我知道“原来程序还可以这样写。”
而 lisp 对我而言,无异于 shock。
以致于现在发现有些东西OO做得有些过火了,说是为了“可扩展”“易重用”,可有时我只要一个简单的功能,用一行或几行shell就能搞定的东西,用OO却麻烦的很。
用java更是麻烦。(想到那一堆的 exception 就……当然,人家是为了“安全”嘛)
我很懒,被我妹妹称作“大懒”,现在发现我更懒了,被我的 Linux 给惯坏了,哈哈。
语言只是工具,思想才是重要的。
数学家的语言真是……
一个问题,用数学的语言解决起来,太简单了,而我实现起来,笨得要死。难道是我的境界还不够?
说了太多的空话,举个例子吧。
最近在写的这个东西要用到集合相关的运算。
在java的API里找来找去,知道它有 Collection 和 Collections 两个接口,是不一样的!居然!
想找一个现成的集合的实现,虽然有Set接口和一些不错的实现,可是:
我想要实现:
0,两个集合相等与否的判断
1,两个集合“交”“差”“并”的操作
2,集合中元素个数的操作
知道些java知识的人请先不要急着骂我,想清楚了再说……
为什么卖这个关子呢?

注意,我只说是两个集合,没有说这两个集合里的元素是什么。
这有什么奇特的?考虑下面的情况:
1,如果我指的多层嵌套的集合呢?
2,如果集合中的元素不同类呢?
3,如果集合是如此的大,以至于内存+硬盘都不够大呢?
也许是我孤陋寡闻了,我但愿是我孤陋寡闻了。用砖来拍我吧。
我甚至发现,
当有shell 时,一切简单的事都能简单的做。
当没有shell 时,我会用 perl 来做一些shell的工作。
当没有perl时,我会用C来做一些简单的事(注意,从perl到C对我而言是如此的痛苦,以至于我很少这样做)
当不得已的情况下,我会用java来写一些东西。
但是,我又发现:
用 perl 时,我用了很多 shell 的思想。(shell还有思想?是的,不懂shell的人是不会知道,它的思想是如此的深刻以至于我轻易都不敢写东西,怕会 reinvent the wheel)
用 C 或 java  时,我不仅在用 shell 的思想,也用了 perl  的很多思想(伪懒惰,伪傲慢,哈哈,当然不是。我惊叹于 perl 只用 $ @ % 三种结构就能做几乎所有的事情,还有TIMTOWTDI,还有……)
然而,用思想可以,千万不要试图用一种语言来模仿另一种语言,那会是很痛苦的(但愿有很多人来反驳我的这一观点)。
lisp 我只学了一点点,但是,它的影响比以上任何一种都要大。
我会继续学下去,它一定不会让我失望的,哈哈。

 
阅读(1608) | 评论(1) | 转发(0) |
给主人留下些什么吧!~~

chinaunix网友2008-04-24 23:31:54

哈哈, 俺大鼻子, 拍砖来了,我拍