windows程序设计读书笔记(Java的缺点)_Windows 程序设计:第5版书评-查字典图书网
查字典图书网
当前位置: 查字典 > 图书网 > 编程 > Windows 程序设计:第5版 > windows程序设计读书笔记(Java的缺点)
liujunsong Windows 程序设计:第5版 的书评 发表时间:2008-11-22 06:11:21

windows程序设计读书笔记(Java的缺点)

看了有一周的windows程序设计了,今天总结总结.
其实这本书我2003年就买了,也大概看了看,可惜当时技术掌握的不够牢固,很多地方根本看不懂,也没有认真去啃一啃,随便就放下了.
现在又过了5年了,再看起来,感觉果然不一样的很.
看看windows API设计的,再比较比较Java语言的设计,很明显能看出高下之别.
Windows API设计的时候,是基于C语言来进行设计的.其中大量用到的是结构,而无论是结构也好,函数也好,指针也好,这些东西都是可以直接基于汇编语言进行转换的.
结构就是一段内存,每个字段占据其中固定位置的内存空间;
函数就是一段内存,函数指针指向内存的开始点,调用函数时,通过堆栈压入变量,调用结束后弹出堆栈;
指针就是内存地址,传递指针就是传递内存地址.
所以在windows API的设计中,没有类的概念,没有对象的概念,纯粹是结构定义,函数定义,指针传递的概念,在这个概念的基础上可以搭建出宏伟的建筑出来.
操作系统负责底层的具体工作,对外公开的就是所有的标准API,你可以通过任何语言来访问和调用这些API.

而Java语言呢,从一开始设计就是独立于操作系统的.独立于操作系统没有关系,但不好的就是他是完全基于对象的一个语言,这样即使两个对象的定义内部结构是一样的,仅仅因为他们的名字不同,就不能直接传递和复制,而必须手工编码进行转换,这个实在是太繁琐了.
java语言在设计的时候,没有把结构这个元素考虑进来,为了所谓的方便性,直接用Object取而代之,结果就是在程序设计实现时,有很多低效的代码转换来转换去.

也许Java应该好好研究研究windos API的设计思路,再改进改进.

windows的全部API,不过几千个,可现在Java的标准类库,广类就不下一千个,这还不考虑这些类之间复杂的继承关系,以及重载带来的理解上的困难和混乱.

windows API是没有继承这个概念的.我的问题是,既然完全不使用这个概念,仍然可以设计出类似Windows这样复杂的系统出来,或者说能提供如此复杂的功能调用API出来,那么我们自己设计系统的时候,提供给外部那么复杂的调用接口,是否真的有那个必要呢?

很多系统设计的如此复杂,以致于难以维护和升级,这些问题不仅仅是水平问题,更重要的恐怕是思路问题。如果沿用java提供的标准方式,恐怕设计出来的系统就难免走在复杂的老路上。

既然windows的API设计的都如此简单,我们自己又有多少理由来把系统设计那么复杂呢?

暂时没有标准答案,继续思考学习中。

展开全文
有用 4 无用 2

您对该书评有什么想说的?

发 表

推荐文章

猜你喜欢

附近的人在看

推荐阅读

拓展阅读

对“windows程序设计读书笔记(Java的缺点)”的回应

zhuangit 2010-01-31 19:12:44

我也曾经有过这样的疑问:)
有了c为什么还要那么复杂的c++;
有了api为什么还要有mfc;
有了dll为什么还需要那么复杂的com.;
有了com为什么又有.net;
我的理解是,他们都是为了提供更高的抽象,让你在更高的层次解决问题
靠!

ghosert 2009-09-27 23:14:50

楼主大概还在学校读书吧。没出来混过就是见解独特。

corpsefire 2009-08-18 16:38:12

根据楼主的观点,微软根本就不应该搞什么 .net 和 c#

六个九十度 2009-07-23 12:43:19

楼上,win32 API包含大量的GDI函数,xnix的对应物都放在X11里了

你知道的,X11的API更恐怖。

bluecrystal 2009-05-23 10:56:16

你如果把win32api和xnix的系统api进行对比,你会觉得win32api好恐怖,好复杂 ~v~

clzqwdy 2009-04-18 12:30:31

对于楼主的有些看法,我更愿意支持楼上的观点!

不过这段话写得很不错啊:
“ 结构就是一段内存,每个字段占据其中固定位置的内存空间;
  函数就是一段内存,函数指针指向内存的开始点,调用函数时,通过 堆栈压入变量,调用结束后弹出堆栈;
  指针就是内存地址,传递指针就是传递内存地址.”

moria 2009-01-27 12:18:17

楼主将Windows API和java 类库比较是不恰当的。你把MFC和java类库比较更合适。
底层的设计简单是需要的。但如果楼主认为“简单”的就是最好的选择,那么汇编语言,或者01代码应该比Windows API更加简单,但为什么越来越高级,抽象层次更高的语言涌现出来呢?
答案就是:使用的舒适性和平滑的学习曲线。
虽然使用很简单的API构建了window这个复杂的系统,但是构建的过程是复杂的,而这个过程是可以反复重用的,那么就把这个过程的某些部分形式化为固定的代码类库,程序员可以在更高的抽象层次上工作,达到舒适和易学习的目的。

文中所说的java没有考虑“结构”这个因素,我理解楼主的意思,应该是没有指针吧,因为类天生就是融合了结构的。

忽然之间 2008-12-09 23:45:27

兄弟,你这本书能转让给我看一下吗?
我的MSN:soonfly@hotmail.com
诚心想读这套书
电子版看着太费力了,而且不方便标注