日历 

快速登录

+ 用户名:
+ 密 码:

在线留言

友情Blog

程序员的blog

胖子的网摘

google it



WWW Blog

访问统计:26813


胖子不减肥

 

我只是一个人微言轻的胖子,没有成什么大事,也不可能成为大师。只是凭着一点点经验,一点点认真,一点点刻苦,一点点严肃,一点点无私,说一点点自己的实话。
创作共用 (Creative Commons)协议保持一致 1.0。
我的网摘

日志

此处宣布关闭
有开始就有结束。
经过一段时间的总结,特别是在总结javaeye社区讨论的内容之后,我将大家的观点做了一个总结。
我会慢慢的将内容发表在我的新blog上,由于还不成型,因此地址就不公布了,希望大家理解。
谢谢大家的支持和鼓励。

- 作者: ozzzzzz 2006年08月18日, 星期五 13:32  回复(1) |  引用(58)

RoR究竟强在哪里
RoR关注于用户友好??这里的用户是程序开发者。这一点往往被以前的框架所忽视。RoR差不多彻底的使用了MVC的思想,让开发者更加舒服和快速的开发程序。与其说它代表了新的技术走向,不如说它代表了新的思维方式。

- 作者: ozzzzzz 2005年08月6日, 星期六 01:26  回复(4) |  引用(0)

数据的后果
一个简单的例子,对象、特征属性、行为属性究竟应该怎么确定。
这三者之间其实没有什么必然的界限,就如同使用名词法和使用colorUML会有有不同的模型。但是当有些事情确定以后,那么对象就是对象,属性就是属性,行为就是行为。究竟是什么来决定它们的位置呢?环境,环境确定了一切。确定性不是来自数据的内部的某些属性,而是来往环境的影响。

- 作者: ozzzzzz 2005年08月3日, 星期三 12:57  回复(2) |  引用(0)

《好》的定义
这里有三个要素:
  1. 趋近于直接;
  2. 易于理解和应用;
  3. 各个部分缺一不可;
这三个要素是互相制约的,也可以认为这三个要素同时就代表了《好》的三个阶段。也就是在最初,首先要满足能够对问题进行《直接》的解决。但是我们也知道一些直接的方案并不能做到易于理解,同时实施起来也往往会比较复杂(GOF中有大量的例子)。而近一步来说,由于采取了间接的方式,往往也就带来了冗余的可能性大幅度提高。你能把设计做到任何部分都是绝对必要的,是一件需要你投入大量资源的事情,也是你不可能一步到位的事情。增量开发和不断重构,是达到最后阶段的强有力途径。

- 作者: ozzzzzz 2005年07月27日, 星期三 23:10  回复(2) |  引用(0)

过程和数据
开始sicp就说明了过程和数据是程序设计所要操作的两类要素,并且这两类要素之间并没有严格的分裂开来。而随后sicp又解释,“非形式”的说数据什么,过程是什么。为什么会是非形式的解释呢?这也许是在说,那往往意味着数据和过程是不存在一个本质上的明显的界限的。同时我们也可以在lisp语言中看到,确实过程和数据其实根本上来说没有什么必然的不同,他们只是所处的地位不同,所在的地点不同,并且随着地位和变化,地点的转移,它们的过程和数据的属性是可以改变的。
其实在此刻我们就可以使用这个“非形式”的解释理解操作和数据不存在严格的界限。数据是我们要操作的东西,过程是我们操作的这些数据的规则。而规则往往也是一种数据,数据往往也是一种规则。
并且随后我们就看到,构造这些操作过程的规则也同样可以操作各种数据。或者说对于构造过程的原则,也适应于操作数据。

- 作者: ozzzzzz 2005年07月25日, 星期一 21:01  回复(11) |  引用(0)

程序语言的三要素
对于lisp的介绍我就不做分析了,并且今后我也是除非绝对必要否则就不会涉及。因为lisp的语言细节和关注点,sicp介绍的都很清楚明白。我就不画蛇添足了。
1.1节开始就介绍了一个非常有用的内容??程序语言所应该提供的三种机制:
  1. 基本表达式:语言用于表示所关心的最简单的个体;
  2. 组合的方法:通过这个方法把简单的个体构造成复合的元素(也就是复杂是由简单组合而成的);
  3. 抽象的方法:通过这个抽象可以对复合的对象进行命名,并且可以将他们当作单元进行操作;
实际上我们的编程活动也就是以这三种要素为核心进行的智力活动,而并不仅仅是构造一个程序设计语言才会关心它们。我进一步认为,一个语言如果在这三个方面可以更大限度的提供给编程者以帮助,其功能就会更加强大。但是这也必然带来对于其依赖性思维习惯越大,或者细节的繁森性越大。这两种必然会取其一,并且近取其一。而构思一个语言,也就应该在这两者之间进行权衡。而目前所正在逐步走热的面向语言的编程??LOP,很大程度上需要我们有构造一个领域特意性的语言的能力。当然在LOP的场景下,细节的繁森性是必须避免的。而这往往会带来思维习惯被强制性的约束在一个狭小的范围内,而这恰恰是面对一个特殊的领域所拥有的优势,而非劣势。而这就是一种辩证法,所谓强大的并不一定就是好的,弱小的并不一定就是坏的。
三个要素的观点并不是sicp所要阐述的一个核心的观点,但是确实是一个我们经常需要面对的关注点。

- 作者: ozzzzzz 2005年07月25日, 星期一 20:48  回复(0) |  引用(0)

sicp是解释计算过程的
一开始sicp就点明了主题??计算过程。
计算过程并不是说,1-2是怎么计算出来的,而是在解释程序是如何思考“-"这个操作的,并如何把它实现出来的。所以从某种意义上说sicp是写人工智能的,就如同lisp主要应用于AI领域一样。或者通俗的解释,sicp是解释机器是如果思考计算的。
这样的一个过程,确实如同sicp所说类似于一种巫术。这个过程我们自然不能看到,或者说它是非物质存在的。但是就如同思想是确实存在的。我们不能说表示思想的语言和文字本身就是思想,也不能因为这些不是思想,就认为思想不存在。因为我们确实的感受到了思想,并且认识到思想的能力。
或者用我自己的话说,sicp是站在计算机的角度,解释计算机的认识论和方法论的。

- 作者: ozzzzzz 2005年07月25日, 星期一 20:08  回复(3) |  引用(0)

为什么会是lisp的方言scheme
本来我看书都是从前言开始,并且绝对不会越过。但是sicp,我建议大家阅读完前言何序言以后,先不要着急理解,因为sicp完全就是对这些内容的解释。或者完全等等看完全书之后再去阅读。
不过对于序,大家可以先看看后面介绍lisp的内容。尤其是最后的说的,lisp的语法简单带来的后果。lisp的语法简单,而且功能不是强大,而是弱小。而恰恰就是这样,才让大家什么事情都要自己的构思,什么事情都要自己去设计,从而可以更加深入的理解计算过程。所以说弱点有的时候就是优点,恰恰就是什么事情都需要程序员自己去做,也恰恰可以让程序员看到,事情究竟是怎么发生的,进展是如何构成的。

- 作者: ozzzzzz 2005年07月25日, 星期一 19:57  回复(0) |  引用(0)

一点说明
我希望大家有问题,可以到javaeye的论坛进行讨论。这里不太适合进行讨论,谢谢大家。可以到软件工程栏目或者java企业应用栏目都可以。

- 作者: ozzzzzz 2005年07月25日, 星期一 19:46  回复(0) |  引用(0)

数据和操作的背景
这些天大家在讨论数据和操作的问题。我这里来说明一些背景的资料。我的说明,并不是要解释数据为什么就是操作,或者操作就是数据。而是要说明数据为什么和操作会被多数人看作不同的两种事务,并且这样的认识从软件编程一产生就已经存在了。
我们如果从程序在内存中存在的形态来看,数据和指令是分别被以不同的区域和方式存在的。比如在86的体系下,指令存在于由cs寄存器所指向的段,而数据一般会存在于由ds所指向的段和ss指向的段。并且除非是由特别的原因,你不会把你的数据和指令用其他的寄存器去存储指向,更不会用数据的指向操作的,操作的指向数据的。当然你确实可以这样做,并且你也确实可以把操作之类存储在数据段中,而且这样的做法在某些领域是经常发生的事情。但是这样的做法,并不是一种堂堂正正的做法,而是一种歪门邪道。类似的java的情况也是一样,其他的我所知道的系统也都类似。而如果对指令进行不断的重写,将会带来可能难以预测的结果。当然这样的做法,确实可以产生某些我们需要的效果,别如加密和修改正在运行的程序。
数据和操作的分裂可以说从软件开发开始存在的那个时候,就开始了。但是sicp中告诉我们,其实数据和操作之间的界限并不是那么清楚,而且更不是不可跨越。

- 作者: ozzzzzz 2005年07月25日, 星期一 19:38  回复(0) |  引用(0)

写在前面的话
我准备写点sicp辅助阅读的文章,但是并不代表我对sicp有比大家更加深刻的理解,更不代表我比大家理解的更加正确。我要写的是我阅读中理解sicp的过程,就如同这本书写的是计算过程一样。权威的理解大家可以到sicp的网站,那里有教材,也是讲课的视频。我所要写的只是我阅读sicp中对于其内容的认识,并且主要是解释我是怎么得来这些认识的。我可以保证我的认识肯定和sicp的作者的本意有所区别,并且很有可能有些认识还是完全不同的。这些不同的认识,并不能说明我比那些作者更加有理解力,而只是说明我处于我的场景,使用我的思维习惯,得到了一些我的结果。如果你想真正的理解sicp,还是应该以作者的意思为参照。我的意见只是告诉你,我会这样解释,以及我为什么会这样认识。这中间,无疑会暴露我自己的种种浅薄和无知,以至于愚蠢和狂妄。但是这样的暴露,对于大家能够深刻理解sicp是有好处的。
我这个人已经是半个废人,因此不害怕暴露自己的种种无知和笨拙,如果这样能够为大家提供一个能进步并成熟起来的途径,那么我的这些付出就是有价值的。让我来自己戳穿我自己的马甲好了!

- 作者: ozzzzzz 2005年07月25日, 星期一 19:23  回复(1) |  引用(0)

从直觉到自觉的迈进
SICP之所以被我所推崇,并不是因为它是MIT的一门课程,而是在于它对于我产生了莫大的影响,并且我相信任何一个认真阅读过其任何部分内容的人都会受到其内容的感化。sicp并不是一门教你如何编程的课程,而是教你如何思考编程内容的课程。
天才是存在的,他们天生就知道他们应该干什么。而我不是天才,我需要知道我为什么应该这样做,而且还想知道事情为什么会如此。所谓知其然还想知其所以然。直觉可以让我作出正确的选择,并且随着年纪的增长,这些直觉也在增长。但是满足余直觉是不够的,我喜欢能够自觉的作出正确的选择。而让我能从无理由的直觉,走向有理由的自觉的关键,就来自SICP。最近有许多新的概念产生,而原来的概念依然还让人觉得迷惑,SICP就是解答我这些疑惑的最佳指引。SICP的内容如此丰富,以至于随便一个注释都会给我以启发。我会自觉的使用其提供的观点,来解释错综复杂的现实。
一个简单的例子,SICP告诉我操作也是数据,或者用我的话说,一切其实都是数据??数据是数据,操作是数据,数据之间的联系也是数据。在关系数据库中,数据是存放在表格中的,表格也可以被认为是一种关于数据结构的数据。而键也是一种数据,并且也是存在于表格中的数据??关系数据库管理系统会把表格的结构和键存放在其核心的数据字典表中。AOP是一种新的编程范式,然而Aspect其实也还是一种数据。属性特征表达的是对象的状态,操作特征表现的是对象的行为职责,而Aspect无非就是贯穿于多个对象的特征??它们都是数据的不同表现,并且都可以用数据的形式进行表达。这些只是SICP中最平常的一个观点,带给我的启发。其深刻的内涵,无时不在给我的解释着不同的新的环境。
现在SICP已经不需要再通过网络才可以去学习,裘宗燕先生给我们带来SICP的简体中文翻译版本。裘先生的翻译值得我们信任,其翻译的多个作品都是经典的作品。而我认为这部作品无疑将会是最为成功,影响最大的一部。

- 作者: ozzzzzz 2005年07月21日, 星期四 01:08  回复(4) |  引用(0)

赶快去学习sicp
我不知道有那部书对于我的程序人生观有比sicp更大的影响。裘宗燕先生又给我们翻译了一篇好书。
虽然我不能说看了sicp就可以让你的工作更加顺利,但是我可以说看来sicp会让你在工作中更少的面对编程理论自身的种种疑惑。

- 作者: ozzzzzz 2005年07月19日, 星期二 12:44  回复(4) |  引用(0)

KISS
忙了一个星期,业务上没有任何进展。不过我最初的判断得到了证实,KISS原则也适应于商业过程。
由于保密的原则,我不能透露具体的情况。他们的一个完整业务流程需要有40个业务角色,并且这些角色必须有不重合的人来担任。业务环节在最短的情况下也有87个。这样的一个过程在实施起来非常的难于控制,而且制定各个环境的控制指标也非常困难。在一开始我就认为他们的做法比人会失败,但是由于我只是对软件的支持给以建议,所以我的忧虑并未得到重视。而通过这个星期的使用,基本上我已经可以确定最后必然会失败。
KISS看来需要被大多数人接受才好。当然他们的出发点也是有道理了,毕竟这样的一个业务过程如果可以实施成功,那么竞争对手是很难进行copy的,而自己的copy则会非常容易。

- 作者: ozzzzzz 2005年07月11日, 星期一 22:50  回复(0) |  引用(1)

openoffice
新的openoffice确实很好,界面和功能都还领我满意。希望等2.0正式推出的时候,能够完全让我脱离ms的office。

- 作者: ozzzzzz 2005年06月29日, 星期三 00:59  回复(0) |  引用(0)