中国开发网: 论坛: 程序员情感CBD: 贴子 146106
haitao
4
回复人: feilyzk() ( ) 信誉:100 2005-4-27 14:58:47 得分: 0

成为一个伟大的程序员,可能是一个人一生的追求,不是过来30岁就转行的理由

回复人: thisworld(这个世界) ( ) 信誉:100 2005-4-27 15:39:49 得分: 0

学习,留名!

回复人: zengwujun(月之海) ( ) 信誉:100 2005-4-27 16:49:06 得分: 0

强贴

回复人: tudou614(魔蟹座的SATAN) ( ) 信誉:91 2005-4-27 18:21:52 得分: 0

好文,曾经我再看《深入浅出MFC》的时候,有过N次想把这本书撕了的念头,因为写的太深了

后来看到JJHOU--------号称“门神”,现在我对《深入浅出MFC》有了另一种看法,基本上看

不出来东西还去说JJHOU写的书不好,是极其荒谬的,原因作者说的很明确,不是照顾初学者的

比如:virtual float func()就会出现一个非常奇怪的问题

我要像“门神”的道路进军!!!!!!!!!!!!

回复人: tudou614(魔蟹座的SATAN) ( ) 信誉:91 2005-4-27 18:37:26 得分: 0

以前还收藏了一篇好象是JJHOU在哪个BBS上发的文章,文章的内容大概是JJHOU自己找资料

或者是其它的人,至少应该是和李维比较熟悉的人,因为文章中提到了,从李维那里拿来

什么东西。。。。

本想找来贴在这里给大家看下,找了半天还是没有找到,遗憾。。。。

回复人: tudou614(魔蟹座的SATAN) ( ) 信誉:91 2005-4-27 19:03:42 得分: 0

看到楼上有说“农村出来的如何如何”,我不是从农村出来的,我家属于机械厂里面的

不过你的观点极其荒谬,毛XX是从农村出来的,他是新中国的建立者之一

求伯君也是农村出来的,WPS是他写的........

个人努力的程度觉得最终的效果,不说了..........

华罗庚和鲁迅都是农村出来的,这并没有妨碍他们成为瞩目的人物留名青史.....!!!!!!!!!

回复人: AhBian(阿扁) ( ) 信誉:100 2005-4-28 8:23:53 得分: 0

在 STL 的创建者和追随者眼里,OO 也是荒谬得透顶的东西。

TO who_how(昊昊),按照你的思维逻辑反推,你所说的一切也是很肤浅的。

另外,要真的如你所说,在较短的时间内全部掌握你所提到的各种技术,那么此君必须是天才中的天才,否则估计到了退休的年龄,我也不能保证我做得到。

有些人是为了学而学,而我肯定是为了用而学。
我一开始的学习可能带有盲目性,而我现在的学习和进修基本上是出于解决方案的需要。

如果“who_how(昊昊)”不是一个好大喜功的浮躁程序员,那么肯定是一个天才中的天才。
通过片言只语,很难掂出“who_how(昊昊)”的分量。

回复人: loki2k(loki) ( ) 信誉:97 2005-4-28 9:12:27 得分: 0

高手,这都这么清楚

回复人: who_how(昊昊) ( ) 信誉:100 2005-4-28 19:23:26 得分: 0

"TO who_how(昊昊),按照你的思维逻辑反推,你所说的一切也是很肤浅的。"

我的逻辑?我的逻辑就是“兼收并蓄”、“兼听则明”。从何得出来的荒谬?

我并不是天才中的天才,我曾遇到好些比我要更全面、更深入、更扎实的程序员,并从他们那里学到了不少知识(真是得真心感谢他们)。

另外,我不知道你说的“在 STL 的创建者和追随者眼里,OO 也是荒谬得透顶的东西。”是从何而来的?我非常欣赏 STL,也对 GP 和 MOP 的最新发展非常感兴趣,可以算作一个追随者,但我并不觉得 OO 是荒谬得透顶的的东西,而且我对你说的 STL 的创建者有这种想法也觉得不可思议,我印象中看到过关于作者对 STL 的发展起因的评述,大意是说:OO 不能解决所有问题,因为很多时候用户不仅关心接口,也关心包括效率在内的内在实现(他举的例子好像是 VECTOR 和 LIST 的 PUSH_BACK 方法)


回复人: who_how(昊昊) ( ) 信誉:100 2005-4-28 19:46:50 得分: 0

(续)

OO 是不能解决所有问题,但不代表 OO 就是荒谬的东西,仅 20 年来的软件技术和创新进步很大一部分是建立在 OO 的基础上或与 OO 有关:
1. COM: 更高级别对象抽象:组件抽象
2. CORBA/RMI/DCOM/COM+: 分布式环境下的对象模型
3. XML:通用的对象的层次模型表示法
4. UML:我就不说了
5. C++/ADA/JAVA/DEPHI/PYTHON/RUBY/C#
6. ODBMS 和 RDBMS 的 O/R 映射
......
太多了,老兄你一句话就把打到一大片,我实在不敢苟同。


回复人: who_how(昊昊) ( ) 信誉:100 2005-4-28 20:14:11 得分: 0

(再续)

包括你说的 STL,我们知道 STL 建立的基础是 GP,而 GP 的最新发展之一就是 MOP,MOP 是什么?Meta Object Programming!呵呵,对象又来了。

顺便讲几句个人感受(纯粹个人感受,错了就拍我):感觉 GP 和 OO 从某些角度来看是完全一致的:都是基于抽象和接口来玩花样,只不过 GP 基于静态抽象来(或者说编译时刻)重用,而 OO 基于动态抽象(或者运行时刻)重用,目的都是为了重用,而其实静态和动态只是需要根据不同场合来使用而已,但我感觉能否重用、是否易于重用的关键的是在于是否是正交设计。

所谓正交设计:就是设定的功能/接口简单而不重复,用户可以通过对这些基本要素进行任意灵活的组装,就像正交的 X 轴和 Y 轴,完全正交,描述的领域不会交叠,但却可以通过 X和Y 描述平面上任何一个点。

比较成功的正交设计我举两个例子。一个是 UNIX:所有命令都非常简单,但是在 shell 下却可以通过管道拼装成非常复杂而强大的功能;另一个是 MS OFFICE:依靠一个接口简单而正交的 COM/VBA 引擎,可以在多个产品(WORD/POWERPOINT/EXCEL/ACCESS/OUTLOOK)中应用混合编辑并可共享诸如拼写检查等通用模块,相当厉害。

一个不成功的例子:PERL,PERL 被认为相当功能上相当强悍的工具,但如果按照一个现代语言来要求它,用别人的话来说就是:“Perl can do everything, and can not do anything well.”


回复人: an_bachelor(一個單身漢) ( ) 信誉:97 2005-4-28 20:47:37 得分: 0

“如果你真的“精通”C++,却不了解面向对象是怎么一回事我只能说你的“精通”的标准太低了”

不了解其他语言,单凭 C++,理论上也是可以掌握面向对象中的大多数概念,但实际上就我的经历和我接触过的人而言,真正对面向对象设计有比较深入的体会,并能在实际过程中优雅和自然的运用的程序员基本上都精通不止一门语言。
---------------

#define a “精通”多種語言
#define b 了解面向对象

呵呵這個嘛,一個人 (a && b),也不能證明是必需得a,才能b喲。

回复人: erben(来瓶蒙牛超级女生的酸酸乳) ( ) 信誉:99 2005-4-28 22:14:26 得分: 0

楼主不愧是教书育人的灵魂工程师,能毫不吝啬的将心得写出来,楼主不仅水平了得,为人更是不错啊!


回复人: HuangRG(.....) ( ) 信誉:98 2005-5-23 15:09:23 得分: 0

MFC是一个不错的在Windows下开发与界面有关的工具,差不多仅此而已了.
个人认为计算机软件的核心技术是各种与数学有关的算法. 基本软件是OS/编译器/DBMS. 国内企业不知道有没有自己OS/编译器/DBMS(大型的),哪个兄弟做这方面的.

软件设计与数学
数学几乎是所有专业的必修课程,只是深浅程度不一而已。究竟什么是数学,是一个很难回答的问题,有一个很权威的回答来自于德国大数学家Hilbert,他说:“所谓数学,就是那些大数学家脑子中想的事情!”,1900年1月1日首次全球数学家大会,Hilbert精彩在演讲中提出了17个问题,使得后人蜂拥跟进,为一个新的100年数学繁荣剪了头彩。
大学里的许多数学牛顿年代就有了,与现代数学差异极大,因此,现代数学的许多思想很难在大范围内传播。在数学家眼里,一个基本粒子,一个时期表现为一个二阶偏微粉方程,另一个时期又表现为一个代数簇,许多人以为,基本粒子是先被观察到的,而事实上,早期的研究却是为了解释某些出现在物理领域的二阶偏微粉方程的意义,而认为某种粒子必须存在。(待续……)

感觉是一串的技术名称,没有具体的分析,不是好文章。
如果各位看过borland传奇,也许你的精神也会四分五裂。

各位朋友:
连日来本人收到许多网友的信件、网络短信,非常感谢这些热心的朋友!由于工作的原因,本人无法做到一一回复,还望见谅!根据许多网友的建议,本人拟结合十几年的工作经历建立一个技术网站(我有独立的托管服务器,就是缺少高人管理、维护),准备在网站中与朋友们进行高谈阔论、技术交流、纵横软件经纬。如果您有好的建议,请告诉我;如果愿意分享本人的经验与快乐,请告诉我;如果您愿意将此网站变成你的一部分或者您愿意协助本人建设好这个网站;一定要让我知道!
每天起来,总会感觉一天的时间很短!每天的开发工作压得我透不过气来,是这个帖子使我回归到过去,我感觉迷失的快乐回来了!我会加倍努力工作,用有价值的工作赢得广大网友的支持。欢迎有兴趣的朋友加盟我的工作。

关于Richard grimes
这几天,国内媒体突然多了个热点人物:Richard grimes,看到这个名字,我只好暂时放下已经拟好的待续回帖:“软件设计与数学”。Richard grimes,是Dr. Dobb's Journal的著名撰稿人,同时也是以下书籍的著者:
Programming with Managed Extensions for Microsoft Visual C++ .NET 2003
Developing Applictions with Visual Studio .NET
Professional VC++6 MTS Programming
ATL Programmer's Reference
Professional ATL COM Programming
Beginning ATL COM Programming
Professional DCOM Programming
看了以上图书,你可以找到理由,为什么他关于.NET的言论,何以引起震荡!其实这个言论已不是新闻,国外在2月1日,就发表了。
最早知道这个名字是2002年2月,一个关于WTL的网页:http://www.idevresource.com/com/library/articles/wtlarch.asp。应当说,Richard grimes作为一个专业作家、Microsoft技术的布道者,为Microsoft的COM技术以及.NET技术的推广立下了汗马功劳。我很喜欢《Programming with Managed Extensions for Microsoft Visual C++ .NET 2003》,从中学到许多知识。由于Richard grimes十分精通Microsoft的开发技术,他的文章、书籍流传很广,因此Richard grimes的言论势必影响许多Microsoft技术的开发者。本人看了CSDN对Microsoft中国的资深人物的专访,被采访的人物是微软(中国)开发合作部的软件开发首席专家曹严明,在该采访中,曹严明谈到:“是的,我已经读过了。我想发表一些我个人的看法。这个人我并不认识,也没有看过他的作品,但我觉得他更多的是一些他个人的看法,很片面。他过去是用VB的,后来转到.NET平台上,并且写了一些书和一些文章。我觉得他对于.NET平台的了解并不是很全面。而且对于.NET Framework和我们的(VB.NET)语言了解不是很深。他的很多结论都只是他自己的一些猜测,他总是认为微软如何如何。他的结论恰恰是相反的。……”。看到这番谈话,我特意注意到“……很片面。他过去是用VB的,后来转到.NET平台上,并且写了一些书和一些文章……”,你看看我列出的Richard grimes写的书以及任选的一个在网上发的文章,你感想如何?我很想知道如果曹严明不是微软(中国)开发合作部的软件开发首席专家,他会如何评论此事。作为Richard grimes的一个读者,我认为Richard grimes十分精通VB,但更精通诸如.NET、ATL、WTL等等Microsoft精华技术,事实上Richard grimes是一个技术上的全才,本人以为Richard grimes对.NET技术的失望可能来源于Microsoft推广.NET策略方面表现出的含糊不清,作为布道者,此人接触的是一线的开发人员、技术杂志的读者以及庞大的专著读者群,从他发表的言论中可以看出,他认为Microsoft从COM技术过渡到.NET技术的途中策略混乱,因此感到失望,特别是谈及从VB6过渡到VB .NET,Microsoft的做法十分糟糕,我们可以从原文中体现这个看法:“Some people regard VB.NET as wonderful. I really don't see the reason for the language. There are a few features that other languages do not have (exception filters and renaming interface methods are two), but these are not good enough reasons for a new language. There is the argument that VB developers would be more comfortable with VB.NET, but as I've said, VB.NET is not VB, and since a developer would have to learn principles of OOP and .NET principles like threading, exceptions, and delegates, the developer may as well learn a new language. C# is the natural language to use for .NET and there was no need for VB.NET. Semicolons and braces are not so difficult to get used to! Instead, we have a language that's .NET, but not quite all there. In my opinion, the Common Language Specification (CLS) was created simply to make sure that other languages could create code that would work specifically with VB.NET code, rather than making all languages work with each other. I understand that signed integers are useful, but so are unsigned integers! I do not understand why VB.NET cannot have unsigned integers as part of the language. I think that case insensitivity is juvenile, there is no excuse for using Option Strict Off (“late binding” is a synonym for “hard to find run time bugs”), and it’s easy to lose track of your variables if you don't explicitly declare them. VB.NET has serious flaws that are not counteracted by the few benefits it gives.”
本人是Richard grimes的忠实读者,但并不赞同他的观点,客观的分析,Richard grimes的观点可能对Microsoft带来更多的好处,因为由于Richard grimes的言论,Microsoft必须努力解释好.NET究竟是什么,Microsoft必须为早期的草率付出代价。Richard grimes的观点可以泛起涟漪,但不至于掀起风浪,Microsoft .NET的战车需要一系列类似的观点调整前进的方向,对Microsoft来说,好的消息依然不断,成功收购Groove得到Note的鼻祖对Microsoft而言就是添花一笔,Richard grimes的观点会不会是一剂苦口的良药呢?



关于微软对C++语言修改的动机,Stan Lippman在其文章《转换指南: 将程序从托管扩展C++迁移到C++/CLI
》的开头和附录“推动修订版语言设计”里面讨论了改进语言的必要性——以及当时的一些考虑

我们继续致力于和标准一致。尽管如此,我们意识到对CLI动态对象模型的支持表现出了一种全新的强大的编程范型。我们在原版设计以及设计与发展C++语言的经验使我们确信,对这个新范型的支持需要它自己的高级关键字和标记。我们想提供一个新范型的一流表达方式,整合它并且支持标准语言。我们希望你会感到修订版语言设计提供了对这两种截然不同的对象模型的一流的编程体验。

附录太长了,贴不上来。有兴趣的可以去http://blog.csdn.net/jiangsheng/archive/2004/10/18/140450.aspx看


数学、软件与Tangram(七巧板)
现代数学考虑问题的方式,与经典数学大不相同,经典数学大多偏重计算性的问题,而现代数学更侧重于结构刻画以及描述作用于特定数学结构的作用模式。大学阶段能够接触到的一些基本的数学结构,如:向量空间、群、环、域等能够初步体现一些早期的近代数学的思维模式。数学结构的基本特点是:一、以一个集合为基础(例如,向量空间的一个经典的例子是由所有n维数组形成的传统n维空间;整系数多项式环的承载集合是全体整系数多项式等等);二、在这个集合上可以定义一组运算,使得这个集合中的元素按照给定的运算产生的新的结果依然属于这个集合(运算的封闭性)。从某种角度上看,数学结构可以类比为一个C++的类,不同的是计算机科学不支持无限集合的描述,而数学结构往往是无限集合(而且大多数是无限维对象)。
经典的MFC由于提供了很好的Wizard机制,因此简化了学习曲线,毕竟传统SDK的开发模式,使得人们很长时间都很难开发出一个图形模式的Hello Windows!但MFC的局限是显而易见的,例如,MFC提供了真正的Document/View模式,却也受制于Document/View模式,一个基于MFC框架的系统,一般说来仅支持有限个模板的加载,因此,绝大多数基于MFC的系统均表现为一个由模板构成的有限子集,因此提供的软件功能被极大的限制住了,MFC的另一个弊端是,人们必须用C++代码去实现一个特定的文档结构以及该文档对应的窗体格局、构造等等。经常有人问我,数学与软件,究竟有什么样的关系,如果我们将来要么Coding,要么进行系统分析,我们干吗学那么多的数学?数学与软件,究竟有什么样的关系,不是吾辈应该回答的,因为我等的权威不够。但数学思维的确能够深刻印象软件设计,这一说决非经验之谈!数学对软件设计众所周知的应用比比皆是。
1998年Microsoft发布了Visual Studio 6.0当这套软件寄到我手中的时候,兴奋感仅仅停留了几天,因为MFC的版本是4.21,也就是说,与我当时用的Visual C++ 4.2差别不大,日复一日的MFC设计真使人感到厌烦,当时著名的BCG库正处在萌芽状态,可以说,我是最早的用户之一,并且也是该库开发者最早的测试用户之一,也可能是中国大陆少有的正版用户。现在很流行的类库Xtreme Toolkit Pro,的作者,当时还仅写些小玩意儿,这些东西在一段时间内使我感到新鲜,因为,可以为你的软件穿上漂亮的衣服,能使别人感到你的软件很Cool,与众不同!后来,我又成了Stingray Object Tool Kit Pro. 的正版用户,这些类库至今依然十分活跃,可是这些东西,除了好看、除了能够扼杀你的个性(你很方便的就做到了专业化),你什么也得不到。2000年后,我帮朋友完成截至至今的最后一个项目(国家税务局的出口退税审核系统),我发誓再也不做项目了,再做工程,我可能就疯了!就成了工程机器。我曾经想过开发一套很漂亮的界面库,因为我读过许多类库的源码(全部正版),我不反对我们用D版,可是我在1997年后几乎没有过D版。1999年,我开始认真地考虑做些什么了,漂亮的界面库很快就被否了,因为太多了!而且这些类库的内部机制大体一致,真是你有我有全都有。有一天我突然想,如果能将MFC的CView(以及CView的派生类)、ActiveX Control以及Active Document放在一起会怎样?无疑这是个庞大的集合,按照现代数学的思考方法,这可能是一个什么空间的“基”,而一个MFC的Frame对象正是由这些元素合成的,具体的说,一个Frame(CFrameWnd的派生对象),本质上是由一个有限集(x1,x2,……,xn)决定的,这些x对象要么是一个C++的View类对象,要么是一个ActiveX控件、要么是一个Active Document(VB Document等),其几何布局可能有差异,可能是由类似Splitter(分割用户区对象)、Tab(用于层叠用户区的对象)复合成的(事实上,很多硬的C++代码都是实现这些对象的),于是,我有了自己的思路,基本想法就是寻求一种办法,来解决MFC的CView(以及CView的派生类)、ActiveX Control以及Active Document的无编程复合问题,如果这个问题得以解决,那么就可以将符合一定条件的MFC的CView(以及CView的派生类)、ActiveX Control以及Active Document放在一起,形成一个集合,以这个集合为基(就如同线性代数中一个向量空间的基一样),生成新的对象,那么如此开发的一个系统,其内部将包含一个组合规则,凡符合条件的对象,均可组合,以形成系统新的用户界面(相当于一个对某类运算封闭的代数系统)。这个组合规则的作用域(基空间)决定了软件内容的丰富度。2002年,这个系统基本完成,我将这个系统命名为:“Tangram”,中文名称为“七巧板”,其含义就是用MFC的CView(以及CView的派生类)、ActiveX Control以及Active Document以可视化的方式组合你的应用系统,在这个系统中我们定义了一个庞大的软件对象空间,我称这个空间为软件功能空间,其中包含符合一定规则(这个规则很弱,极其宽松,几乎包含任意CView的派生类)的MFC对象、ActiveX控件、.NET Control等等,这个空间中元素的有限组合,几乎可以模拟已有的大多数软件界面形式,这个空间是公共的,一个软件系统可以认为是对这个空间中对象的一种浏览、表现或表示……,目前一个软件自身其实很“硬”,是一种二进制的“硬件”,我认为,软件内部集成软件再生能力(软件内容的制作,完全不应受制于具体的应用,应由特定的编辑机制完成),可以使得软件摆脱软件功能特定的约束,根据我的工作,软件功能的加载,只需符合规则,并不约束内容,就像浏览器一样,只有是网页,原则上就可以浏览,本人认为,软件完全可以实现基于“功能”的浏览模式,不同软件的差别只是约束规则的强度不同而已。Tangram的核心是一个C++类库,提供全功能的Microsoft风格的Wizard,与Visual Studio .NET集成在一起,Tangram提供对VBA集成的自然支持。基于Tangram的MFC系统内部自然集成软件的再生能力……(待续)



VC6的MFC版本是6.0。
VC5的MFC才是4.21,那是Visual Studio 97的一部分。
MFC的版本和VC的版本一时同步一时不同步,个人一直觉得很混乱

友情修改一个BUG,以不使这篇帖子留下瑕疵:

VC6 的MFC版本是6.0。(看的潘爱民的书上的)


想起西太后……
据说,西太后垂帘时期,洋人曾送给她一量火车,慈禧看过后,大骇,以为妖魔……。火车进入中国,最初可能也是引起争议的,大多数百姓都对此怀有惧怕的心理,时间长了,也就自然而然的接受了。
想想Windows,最早也就是1983-1984年间出生的,到现在充其量也就20几岁,Linux大概比Windows小十岁。Windows来自一个贵族家庭,家长是Microsoft;Linux来自一个单身“母亲”,成长环境是一个社会,正可谓一个是贵族娇儿、一个是山野村夫。在洋人的世界里,Windows与Linux正如火如荼的争斗着,就跟人类历史上贵族与平民之间的争斗一样。我们很看不惯许多贵族娇儿,往往拿平民子弟的良好习惯与之比较,这一点都不奇怪。然而,我们平民阶层却有培养贵族的愿望,Linux社会也是如此,Linux社会已经分化出许多贵族了,为了各自的利益,面和心不和的联盟不知结了多少回,历史告诉我们,如果Windows死了而且如果Linux社会繁荣了,Linux社会就会出现一个贵族来接替Windows(叫不叫Windows无所谓,改朝换代吗)。某次,与国内一著名软件研究所的几个朋友一起进餐,谈到了Linux,话题自然很多,话题之一就是中国的Linux,朋友们笑曰:“……,自主知识产权的操作系统,也就是对开源代码内核的汉化,……”。人们可以列举许多关于Linux的强大之处,比如著名的电影《泰坦尼克》的特技制作,高性能计算Linux操作系统占据绝对主动等等……,其实对了解Linux的人而言,这一点并不奇怪:为某一特定的任务定制的Linux很容易剔除许多不必要的服务,这就好比轻装上阵,事实上,如果可以将许许多多的不必要的“虚拟”服务卸掉,Windows的性能并不差(Windows要加载许多虚拟服务),其实,即使Linux专家也承认,如果Windows允许向Linux一样可以按要求订制,许多弱点也许就不存在了,但市场也就是另一回事了。
回到我们国人的立场,本人以为,没必要太多的对比Windows、Linux,如果我们Linux领域很强或者我们创造了Linux(毕竟这些都是洋玩意儿),倒也罢了,事实上,我们在Linux领域也不比Windows领域光彩多少,我们的许多人愿意用Linux说话,可是我们在Linux上拿出让我们立足的工作了吗?看看Linux社区就知道了!我们为什么不能把Windows、Linux都当作进入中国的两种新型火车而客观对待呢?在外交礼仪、航海公约以及种种标准等方面,我们已经潜移默化的接受了,为什么?因为我们弱势。Linux也是别人的,与Windows没什么区别。我们真正应该做的,是接受并使自己强大,许多网友给我回信,认为我的观点偏激或奉Microsoft为神,其实不对!只有认识一个强大的令你敬佩的敌人,你才有激情去强大自己。谈论Microsoft越多,其实客观上是对其承认越深,如果Microsoft不够强,就没必要拿它说话或对比,Microsoft给世界带来太多的负担,任何一个操作系统想战胜它,前提是必须兼容它给这个世界已经带来的积累,因此Microsoft很可能是无疾而终,铁木真的王国,是巨大无比的(据说他要讨伐一个对象,路上要在他的疆土内走上一年的时间),可并没有谁灭了这个王国,是自己灭的。我们认为铁木真是中国历史上的人物,可是有些国家认为是他们历史上的人物。其实只要客观对待Windows、Linux,能够正确定位他们的应用环节,Windows、Linux就都是好的东西!
我们应当更多的看到,IBM、Microsoft等的崛起,是公司行为,这些公司为美国创造的不仅仅是辉煌,而是国力!我们的软件,依赖国家行为的投资(我们的软件研究所拿出什么来了?),靠国家的资助,却抱怨别人在垄断,多可笑!我们应当搞清楚我们在食物链中的层次,然后再指责别人。你不强大,你就受人欺负,拳头是硬道理。看看我们的北大青鸟,如果你看了他们的组件工厂的论述,你会觉得这是世界上最好的东西,可是你看到市场上北大青鸟在干嘛?我们有太多的自欺欺人的东西,有太多的世界领先、国内首创的鉴定,可是回头来,我们不得不清醒了……


我觉得你的那个集合部分说得很好,不过能够把功能和结构分开做吗?现在Mozilla不是在用XUL来描述软件界面吗?微软好像也有XAML的.我觉得还是XML好,结构化的数据,然后用样式表来表现出来.(当然这样做的感觉还是太零散,界面跟个人的表现能力有关,没有界面部件的标准化,也很难组合.分与合总是很矛盾的)

分久必合,合久必分.

感觉在认识层面,信息的墒值就是慢慢扩大,然后来它一个集合,把墒值减小,随着集合数目的增加,墒值又增加了,然后又出现了集合的集合,墒值一下子又小了下来,如此反复.....

在编程的时候,我感觉就是元语言,零散结构化,后来就面向对象,再就是面向对象的对象,面向事务什么的...我自己讲不清楚...



在95-98年时,我根本不认为Windows会认为主流操作系统!
但现在了..
以前也没觉得Windows怎么怎么样.但当我学了MFC的windows编程,跨平台的qt编程(用在Linux,Sun Solaris).后来又学了WDM的设备驱动编程,Linux下的设备驱动编程...这才发现Microsoft确实是很厉害的公司.Linux和Windows根本没法比!
Linux是小平房,而Windows是结构严谨的摩天大厦,只有学过驱动设备编程的人才会体会到这点!
如果Linux也做到Windows这样功能强大,肯定比Windows要差很多


强烈反对,感觉楼主说说这,说说那,思路不是很连贯,和标题明显不符,不知道你到底要说什么.说实话,我一般遇到观点不同的,我很少说话,但是我不想楼主说到最后都不知道自己在说什么了.本来开始的几篇还是不错的,后来思路就乱了.既然要写一个系列,就要有点条理,讲出深度,不要一会说mfc,一会看到网上讨论.net就马上转向了.可以从dos,win3.2,mfc,com,.net等一路说过来,层层剖析,现在看来这个系列是毁了.
我并不否认Microsoft是一个比较好的公司,也有比较有深度的技术.但是有一个方面,负面影响太大了.我相信很多人说到操作系统就是windows,说到c++还以为vc就是,说到计算机发展的历程就以为是从dos->windows->.net Operate System这么过来的.PC和Microsoft的软件就象一口井,很多中国人就是这口井里的蛙,这样下去中国的计算机产业永远发展不起来.相反,美国计算机的教育就不一样,一开始教育用的操作系统就是unix,还有人为了让学生理解清楚,自己动手写一个操作系统,这样出来的学生才优秀,才可以做出比较有分量的设计.dos是个一开始就是个过时的操作系统,不过在pc上用比较方便而已,适应pc的低配置.Windows NT是比较先进的操作系统,它的设计人原来就是DEC公司的,原来做unix的.其实微软也卖过unix,后来失败了.苹果的操作系统就是unix系列的.可以说他们都是从unix上吸取的营养.所以linux出来,我觉的对于中国的计算机教育是很不错的,在windows上是没法进行计算机教学的.
对于c++,为什么很多人讨厌c++\cli,就是微软让一个通用的语言打上了微软的标记,行,你微软发明什么别的语言,只要好,我们大家都用也没关系,可是c++是一个通用的语言,打上了你的标记,以后怎么发展那,我们需要的是一个标准的c++,而不是一个贴上微软标记的c++.微软牌c#我是喜欢的,但是对c++的改动我实在觉的没有什么必要,除了一个理由,就是为了兼容.
还有java,.net的这些思想,我想学习过编译原理的对这个虚拟机这个思想一定不感到有什么大不了的.因为当初讲编译的时候,最后的实验就是把一个小的语言,比如说pascal的子集,编译成一种中间的汇编,然后执行这个中间汇编,这个,不就是虚拟机最初的雏形么.所以,.net的通用语言框架,java说的跨平台,从技术上来说,也不是什么新技术,也不是推动它发展的原动力.真实的原因就是,对软件的组件化的需求.Corba是一个很好的开始,COM做的也不错,但是这些还不够,对于设计应用的程序员和信息管理人员,这些东西和计算机技术绑的太紧了,想理解这些东西也很难.试问,有多少人写COM组件没有经过痛苦的学习的,而且,这些组件的应用起来也不是很易用.比如COM,用起来就比较难,还好有微软提供了很多的开发工具.而.Net,java写组件就方便很多,他们屏蔽了计算机的很多东西,让人们在一个虚拟的平台上开发,把最大的精力放到关注应用设计上,组件化的设计是软件开发的将来.这样,开发的层次就很清楚,开发应用的人员,不需要很多组件是怎么来的,只要专心的写自己应用的组件,他们对应用很懂,可是对计算机技术就不需要那么懂了,只要了解这个虚拟平台就可以了.而底层的开发人员,就开发底层工具和这个虚拟平台,他们对计算机技术很了解,可是他们对具体的应用确不什么都不懂.最理想的状况将来可能这样,比如,做一个财务软件,那些对财务很了解的人,不需要很了解这个组件他用了多少内存,会产生了一个叫做死锁的东西,他只要用这个虚拟平台写组件,就可以写出好的财务软件.还有一类人,可能就对这个平台是怎么工作的很了解,他就做这个平台的扩展和技术支持,但是他对财务一窍不通.让一个计算机的人去理解财务的东西是让他很难受的,让一个财务系统的信息人员去理解进程是如何工作,也会让他很难受.有人说.net目标不清楚,我觉的很清楚啊,我们这个世界并不完美,我们需要一个完美世界,这个就是一个虚拟的平台.



好像有一段时间没有更新这个贴子了,一时心血来潮,打开邮箱一看,依然反馈不断。几天前,太平洋电脑网的一位编辑来信要求转载,心中的确犹豫良久,心想你一介草民还会有什么高论?!犹豫再三,还是同意了。发这个帖子的确是无心的(稍有悔意,有点不好收场),今后还有多少妄言,的确没数……
我有一个十分富有的同学(家资过亿,也许还要多,多到连老婆都不知道究竟有多少财富),当同学们相聚的时候,此公便大谈国事,多是些背景很深的政治要闻、野史、时弊等等。人的生活总是这样,当你在一个圈内久了,你的谈论自然进入了一个层次,就连自己都很难察觉,软件人议论软件事,自然!网络世界十分奇妙,你可以听到别人对你的评论而不知其身份,这与批判会的感觉迥异,十分痛快而不觉难堪。
有几位网友来mail说:“你为什么那么高看Microsoft,Delphi就比Microsoft的技术更好!只不过你不了解罢了。”,有时候,面对这类的问题,你真的无奈,Delphi优秀吗?Delphi的确十分优秀,到今天我依然使用Delphi,可是Delphi的优秀并不代表你的强大!我们中的许多人不原意承认许多事情,与其有精力抨击Microsoft,不如研究Microsoft是如何强大起来的,我们为什么总是将学习Microsoft与顺从Microsoft视为等同?我们经常给人讲老虎与猫的故事,可是我们经常在成人的世界里犯婴儿般的错误。记得一次我给学生讲概率论中的方差、协方差等内容,其中有一个公式:D(X+Y) = D(X) + D(Y) +2Cov(X,Y),我对学生们说:“这就是初等数学中关于三角形的余弦定理,如果Cov(X,Y) = 0,就是著名的勾股定理。”,过后,有学生问我:“难道概率论是另一个世界的初等几何?”,我说是的,只要建立适当的公理体系,概率论等学科就是另一种描述的初等几何。回头来谈MFC与VCL,事实上这两个体系是等价的,只不过作用域不同,对真正有实力的人而言,它们毫无区别,可是它们都不是我们的,我们只能用它们来强大自己,犯不上讨论孰优孰劣,Borland在与Microsoft竞争中已经迷失了自己,Novell与Microsoft的竞争导致其拳头产品(NetWare系列)无疾而终,这一切意味着什么?中国的历史有多次同化异族的现象(元、清等等),为什么在软件方面不能这样?
其实,我们需要客观的对待Microsoft,客观的对待印度现象,当评论Microsoft、印度模式的时候,先冷静下来,看看自己,我们对印度的软件评论已经很不客观了(已经贻笑大方了),就像我们的许多电影,把我们的大侠们写得十分厉害,洋枪洋炮都奈何不得。我们的软件已经很落后了,可是我们却依然在谈论我们的优势(阿Q?),当有人谈论“平台”时,号称平台的软件就像雨后春笋一样现世,当有人谈论SOA时你会看到许多的号称SOA的软件浮出,太多的时候我们在自欺欺人,几天前在海淀图书大厦看到一本小册子,即国内一位海归写的软件涅磐三部曲,我想如此好的想法为什么在海外没有见到他们的产品?如果我们仔细的、深入的理解eclipse(IBM 的开源项目)、Web Logic我们会对国内类似的产品说不!
再过几天,我自己的开源软件就公布了,我希望朋友们能喜欢,如果有朋友希望提前预览并提出批评建议,可以通过sunhuizlz@hotmail.com与我联系。




今天草写了一篇介绍文章:"Tangram:一个基于MFC框架的柔性软件开发系统",发在我的blog上,可以如下访问:“http://blog.csdn.net/sunhui/archive/2005/04/05/336604.aspx”,里面有即将发布的软件的若干信息,有批评意见的请予以斧正。


我的Blog中给出一些图片,可以显示基于Tangram的MFC程序的运行时的一些特征,请访问:http://blog.csdn.net/sunhui/archive/2005/04/05/336647.aspx


CSDN网友,你们好!计划中要发布的几个帖子:
一、十年MFC经历认识的Microsoft开发技术-多文档界面开发技术:此贴讨论一类多文档界面,主窗口是一个单文档界面,如果你愿意,你可以将多文档窗口作为主窗口的一个视图(CView)显示,这类多文档界面支持无限多个文档类型(即可以加载任意多个文档模板),支持(基于COM、.NET)二次开发技术以及VBA集成;
二、十年MFC经历认识的Microsoft开发技术-可视化文档界面设计技术:此贴讨论MFC Document/View 机制的可视化实现,将给出一种所见即所得的Document/View 设计机制;其中包含如何集成ActiveX Ctrl、.NET User Control、MFC CView类对象以形成一个MFC窗体;
三、在MFC程序中如何有效的使用HTML、flash,例如,可以实现flash动画作为一个程序的Splash以增强程序的感染力,使用HTML、flash动画作为MDI程序的MDI用户区的背景等等……;
四、十年MFC经历认识的Microsoft开发技术-MFC .NET组件开发技术:介绍如何使用MFC类库开发.NET组件,例如可以用MFC开发WinForm对象,然后用于VB.NET、C#等等。
已经作为一个开源框架的一部分,大约3-4天内发布,相关的信息请访问http://blog.csdn.net/sunhui,
希望大家能够喜欢!感谢大家对本人的支持.



软件柔性
如果你买了房子,一般来说你会按你的意愿进行装修(至少大多数人会有这样的念头),如果可能,你会尽力满足你的个性化需求,软件也是如此!随着用户的软件修养的提高,对软件的柔性要求就越强。大多数软件基本上是二进制级别的硬件,很难体现其“软”的一面,如果人人都穿绿军装,会令人想起“文革”那个只有阶级而无色彩的年代……(细节内容见http://blog.csdn.net/sunhui)



通常我们所描述的“柔性”软件系统应该具备以下特点:
(1)随需应变。
扩展性良好的软件系统应当能够适应用户不断提出的要求,这种适应是动态的、即插即用的。一个软件系统经常会伴随着业务流程的变更而调整,新的功能模块有时会因某种需要被添加进来,因此,用户需要能够在自己的能力范围内调整软件系统的行为,定制自己的业务逻辑,这种机制可以保证用户要求得到更加及时的响应。软件系统的随需应变的特性是对于软件开发者和用户两个方面而言的。第一,在软件未交付使用以前,开发者需要对软件系统进行尽可能多的松散耦合设计,将软件功能作为多个独立模块进行开发和测试。软件的开发这需要仔细设计这些组件之间的连接和组合机制,发现和加载机制,以便开发人员可以后续动态修改、替换和附加新的功能单元和业务逻辑。用户有许多临时的使用需求,而要在与对手的激烈竞争中依赖软件供应商提供的方案做出应对。软件供应商必须充分认识到这种责任,在系统的构造中做好准备,保证用户在自己的能力范围内对原生系统进行定制;第二,软件系统应该能够及时适应用户的需求变化,僵化的版本控制,往往是通过发现问题→向软件系统提供者提出要求→开发人员进行开发和测试→重新部署和使用的流程调整软件系统,很难适应用户动态多变的需求。过去的情况是用户不得不去反过来适应开发者的约束,而不是相反。而现在,随着用户软件驾驭能力的逐步提升、用户企业内部的技术支持部门的建立以及业务流程的日趋合理,软件系统应该为用户提供 “随需应变”的保障机制。
(2)稳定性。
良好架构的软件系统使用一致的方式来对待原生系统功能和新增加的业务逻辑,它并不会因为新业务的添加导致应用程序本身的运行流程改变,以致影响系统的稳定性。软件功能模块/组件是一种很成熟的选择,独立的模块开发和测试更容易发现问题。
(3)进化与逐步累加。
软件的交付和使用过程是一个不断补充与淘汰的过程。在理想情况下,一个柔性应用系统应该由一个运行核心外加多个功能单元组成。运行核心本身应与业务逻辑分离,它起到的是一个支撑的作用。运行核心拥有一套对象模型,以维系整个系统的运作,系统中的每一个功能单元,不管是已有的还是新增加的,都能够在系统内协作/协同。同时,它应该提供二次开发机制(如宏语言机制),以保证多类型的功能单元/应用实体之间的通讯可以描述驱动。具体的功能组件可以被运行核心按需动态加载以进入相关的工作流程。从某种意义上来说,这时候软件就无所谓表现形式,因为它的具体功能体现于特定功能组件的提供以及各种组件之间的协作模式。可能随着原生功能组件的逐步淘汰,新功能组件的不断补充,软件系统的最初形态早已经面目全非……



Tangram与软件的组合构造
Tangram是中文“七巧板”的英文对应物,大概老外们认为“七巧板”是唐朝人的睿智游戏,而海外唐朝就象征着中国。“七巧板”表现出明显的朴素的构造化思想,以7个元素为基,尽情的造你能所造。最早开发Tangram的时候,这个系统取个什么名字,颇费一番脑筋,好的创意一定得有相配的名字。七巧板的想法就是给一个软件系统一个充分大的“基”,在这个“基”的基础上允许你进行符合规则的构造。软件功能的组合构造是一个十分有趣的问题,首先你必须提供组合构造的基础,其次你必须制定组合构造的规则,然后你必须给出参与组合的成员元素之间的调度、交互方案……(细节内容见http://blog.csdn.net/sunhui/archive/2005/04/06/337997.aspx)


一个预览版本的Tangram已经发布,您可以通过http://www.apptemplate.com/opencn/downloads.asp下载,欢迎批评指正!

感谢您对Tangram的支持,Tangram要求安装VS2003,如果安装VS2003,您可以重新编译提供的源程序,另外,我们的网站上有个论坛http://www.apptemplate.com/opencn/Community.htm,您可以提问,或给我发邮件:sunhuizlz@hotmail.com.Tangram推荐的操作系统是WindowsXP……
我的blog:http://szhaitao.blog.hexun.com & http://www.hoolee.com/user/haitao
--以上均为泛泛之谈--
不尽牛人滚滚来,无边硬伤纷纷现 人在江湖(出来的),哪能不挨刀(总归是要的)
网络对话,歧义纷生;你以为明白了对方的话,其实呢?

您所在的IP暂时不能使用低版本的QQ,请到:http://im.qq.com/下载安装最新版的QQ,感谢您对QQ的支持和使用

相关信息:


欢迎光临本社区,您还没有登录,不能发贴子。请在 这里登录