首页 | 供应信息 | 采购信息 | PDF资料 | 技术资料 | 行业资讯 | 产品展示 | 人才市场 进入会员区
   技术文章分类:单片机/DSP 嵌入式系统 测试仪表 电源技术 接口电路 存储器 传感与控制 通信网络 无线通信 模拟技术 显示与光电 EDA/PLD 汽车电子 消费电子 电子综合
   电子综合工具:PDF资料大全 电子缩略语 IC型号替换 IC厂家 电子电路图 技术参数 设计应用 解决方案
技术资料 行业资讯 PDF资料 IC价格 IC替换 缩略语 IC供应 IC采购
  您所在的位置: IC37首页 > 技术问答 > 单片机 > 教授打渔的方法,C++无敌神功速成大法!

  教授打渔的方法,C++无敌神功速成大法! 

有‘C’程序基础的朋友,要想极速练成‘C++ ’这致高无敌的神功,我提供一个超级入门的方法---->就是解剖VC++6.0 的MFC架构运作原理!

必要准备条件:

1首先要准备候先生《深入浅出MFC》第二版的书。

2准备几本不同作者的C++书籍。

3VC++6.0 编译器。

有了以上的准备,各位离高手已经很近了!


作者:宇宙飞船  2005-7-7 11:16:00

  回复1  看来你是高手了:)61607

看来你是高手了:)
作者:HIGHWAY  2005-7-7 12:00:00

  回复2  还远得很呢61608

还远得很呢
作者:李冬发  2005-7-7 12:02:00

  回复3  .61609

歧路亡羊


作者:fsaok  2005-7-7 13:02:00

  回复4  又见"飞船"61610

没有连续从事 VC++ 6、7年的研究功力,敢说“精通”???!!!

不过,搞电子“硬件”的我们学会使用基于MFC的VC++还是值得推荐的!

学好VC++, 你开发什么电子产品都会如虎添翼! 学好VC++你会爱不释手的!

以下是实用的MFC 程序,抛砖引玉.......

基于MFC的一个实例


作者:kelan  2005-7-7 13:51:00

  回复5  攒些钱买几本书,就是一个中手了61611

攒些钱买几本书,就是一个中手了
作者:john_light  2005-7-7 16:13:00

  回复6  真的假的61612

至少给了些信心我~~


作者:cxc51  2005-7-7 16:24:00

  回复7  hehe,,61613

hehe ,

程序这东西,,咋说呢??

看着vc就有点头痛,,不过觉得不怎么难呀..

无知者无畏???!!!! hoho


作者:sunshine98  2005-7-7 16:44:00

  回复8  做人要厚道61614

宇宙飞船,你老是卖关子,高手要有点风度嘛!


作者:INtoMCU  2005-7-7 19:32:00

  回复9  真的吗61615

要多长时间可以学通啊?


作者:weweiya  2005-7-7 19:37:00

  回复10  俺还是推荐C++builder61616

一般人都有C地基础

就上手速度来讲

C++builder比VC要快得多


作者:后学  2005-7-7 20:11:00

  回复11  如果有可能,我希望一辈子都不要用到mfc61617

俺觉得更重要的是oop的思想.


作者:high  2005-7-7 20:39:00

  回复12  不完全赞同61618

学习 mfc 与学习 c++ 是两回事。个人认为,如果要学习 c++, 最好先不要一头扎入windows 的 mfc 的框架里,要把 c++ 当作一门思想全新的语言而不是 c 的扩展。

推荐 Thinking in C++ 及一本叫<<深入浅出C++>>的1996年中文版(书不在身边,无法告知作者, 这本书每次读都能发现新东西)


作者:IceAge  2005-7-7 20:49:00

  回复13  C++ Primer中文版(PDF档)潘爱民 张丽译61619

PDF文件4.4M.

一本入门的好教材...

http://61.144.28.245/ouravr/bbs/bbs_upload1936813634168761057205070721/files_1/armok0118522.pdf


作者:hotpower  2005-7-7 20:57:00

  回复14  “宇宙”这个字眼是做假证、假公司的代名词61620

办假学历证、计生证....... 都是 “宇宙xxxx公司”

看来这里的宇宙也类似...... 大话连篇......


作者:xyele  2005-7-7 21:01:00

  回复15  看你的题目,就是一卖十三香的61621

别总出来忽悠小辈,老人家厚道些!!


作者:mVA  2005-7-7 21:26:00

  回复16  开始我是用DELPHI2.0,用了几天,61622

只因为自已实在对PASCAL 语言不感兴趣,考虑到末来职场的饭碗,而且当时的电脑报和计算机教育报的吹捧,我决定试用C++builder4,这东东入门真的很容易,很快就做了几个BUTTON 动画玩起来,再想深入去研究时发觉在市面上很难找到有深度的书本,后来得知它的类库是从DELPHI 中移过来的,要深入还得懂点PASCAL,最后我决定放弃。

后来无意中看到台湾作家候先生的书,(注:我当时还不知道候先生的大名)在他书中的目录见到可以用DOS程序仿真一个MFC 的架构(当时我也不知MFC原来指的是C++技术),我是技术迷,想想以后工作可能会有用,就买下了这本书。

一开始我对C++ 技术真的没有兴趣,但是想想如果以后能用MFC的思想来指导单片机和嵌入式的程序设计,再容入一些自已的创作,一定会妙不可言,就这样我接受了这一编程思想。

在研究MFC的时候,我会同时是打开几本国外和国内作者编著的C++书籍,一边看着候先生提到的关键技术要点,一边看书,遇到问题再看C++的书时的学习效果就是不一样,收到了奇效!

希望这一奇特的方法能为有C语言基础,但是对C++ 技术还不感兴趣的朋友带来一丝惊喜!


作者:宇宙飞船  2005-7-7 21:31:00

  回复17  学mfc,学完了,你会发现还是mfc...61623

没有必要去剖析mfc的,...


作者:hiberhe  2005-7-7 21:32:00

  回复18  从mfc 入手,会对 windows 的驱动框架有更进一步61624

的了解,但对理解c++,我个人认为甚至有害无益。mfc 为了效率,牺牲了很多,抽象多态等等c++ 的精华几乎没有体现出来。学习c++, 最重要的是应该学习一种新的设计思想--- OOD (Object Oriented Design).

至于框架,更好更简单的,完全体现 c++ 特性的例子/书很多。

当然mfc 的很多想法,可以借鉴到对嵌入式系统的设计里


作者:IceAge  2005-7-7 21:58:00

  回复19  我最欣赏的就是微软MFC的‘牛头马面人身’技术,61625

这种复杂的宏指令,奇特的数据结构和奇特的双向连表的奇弃用法,也只有微软的人才想得出,简直就是把代码编译的最小化实现发挥到极至,如果把这一自动技术应用到单片机和嵌入式系统中必将妙不可言!

各位喜欢钻研技术的朋友,MFC里面有的是:“可能我们这一辈子也想不到的深奥的C++技术的‘总结’和‘结晶’!”


作者:宇宙飞船  2005-7-7 21:59:00

  回复20  候先生书中的DOS版本的MFC仿真程序我在TC3.0中完全编译通过,61626

一开始我怀疑这种特定的语法会依靠VC++的特定编译器才能通过!我不放心就把这些程序语法转到TC3.0 中来,一切顺利,OK!证明这些语法在1993 年就已通过!


作者:宇宙飞船  2005-7-7 22:20:00

  回复21  个人认为BCB好的多。61627

个人认为BCB好的多。
作者:pheavecn  2005-7-7 23:22:00

  回复22  呵呵,飞船不能误导c++初学者啊61628

MFC (Microsoft Foundation Class) 是一个程序框架, 掌握了他无疑对使用mfc 来设计windows application 有莫大好处。除此之外,还有 Borland 的VCL及新的 .net framework. C++ 则是超越在这些平台之上,重要的是要理解和掌握抽象,多态,继承,封装等 ood 设计思想。否则,不如使用 VB6 , 更快,更简单。

另外, 几年后 .net 势必会逐渐取代 mfc.


作者:IceAge  2005-7-7 23:31:00

  回复23  MFC就不要再花功夫了,微软和Borland都.NET了61629

奇怪,这个Borland越来越趴窝了


作者:elelab  2005-7-8 1:08:00

  回复24  对于不喜欢处处受限制,喜欢透明得俺.61630

一直觉得mfc是恶梦.重要得是oo得思想.

还好工作都不要做界面.实际上也做的不好.所以总是有意无意的躲开mfc.

linux能解决的就在linux下搞定,

碰到画图什么的必须要在window下的,俺都是用c语言直接写win32程序.

至于mfc帮助熟悉window的机制,我看不见得.反而看了发昏.应该看programming windos by Charles Petzold.一代大师经典啊.c语言解释.

----

当然对于软件工程师,当我上面在放屁.呵呵.--俺偏硬件,怕误导大家.


作者:high  2005-7-8 1:14:00

  回复25  楼主的本意可能是学习MFC中的一些技术应用到嵌入式系统中61631

而不是讨论在windows环境下用哪种语言,哪种平台来开发


作者:czh  2005-7-8 8:12:00

  回复26  DF61632

高手是怎样定义的?


作者:lichuanfa  2005-7-8 8:19:00

  回复27  那个人叫候捷,61633

生硬地把单片机和mfc,C++这些东西扯到一起

没有什么好处

他们明显是不同层次地东西

以前我是用C++地,Borland C++,C++ Builder,VC我都用过

C++ Builder和VC都写过几千行地代码

给一些小公司做过项目

不过已经三四年没有摸过C++了

只是拿VC写过一些串口调测和其他地小工具

相比之下,我更喜欢用C

不仅因为我做地工作主要内容

而且C++比C地效率和代码差一大截

随着各种开发工具的推广

C++的应用面比以前窄了许多

Java更受欢迎了

平常我还是用TC2.0写些小程序

但是TC也有它的弱点

就是64K的限制,需要建工程文件什么的

现在我习惯在cygwin下用gcc

makefile很好用

写单片机的程序,我还是习惯用汇编

因为一切都可以自己控制

而且我的应用中没有复杂的数据处理

没有用C的必要

汇编写的好的话

也有很好的可复用性

就一般写程序而言

可读性和可维护性是最重要的

当然,也有些特殊的场合造就了一些淋漓尽致的程序

说了这些,只是不希望有人被大牛误导

适合自己的才是最好的

牛刀是好,杀鸡未必好使


作者:后学  2005-7-8 8:43:00

  回复28  后学所言甚是也61634

后学所言甚是也
作者:crazyeda  2005-7-8 9:41:00

  回复29  要不要成为高手是您的事!也请某些因研究MFC运作原理而成61635

为高手的朋友不要误导低手!

这样作个比喻吧!看一般的单片机‘C’ 程序好比是读初中,研究MFC的原理好比读大学,一般人只能见到初中的课本,但机缘巧合(因有我宇宙飞船在此吹牛),见到了一本大学课本,“有缘进修完并且很容易毕业的大学课程”,以您聪明的智慧想想,请问念完大学课程的人再看初中的书本感觉会是怎样的?


作者:宇宙飞船  2005-7-8 10:01:00

  回复30  不建议MFC61636

建议wxWindow类库。这套类库在WIN32/LINUX/MAC OS平台上都有实现,基于此类库编写的程序,不做任何修改即可在三个平台上正确编译执行。

该类库为OPENSOURCE,且提供针对MS VISUAL STUDIO的工程文件,大家可以非常方便的利用VC++的调试器仔细研究一下面向对象思想是如何把完全不同的GUI机制统一成同一API的。


作者:chunk  2005-7-8 10:05:00

  回复31  re61637

我用mfc的时候

都是去查工具书

看看类的成员变量和函数

基本上就知道怎么用了

大家做应用的

没必要太深入

转一片文章,大家看看什么是大牛,谁是高手

我心目中的计算机科学大牛(转载)

MIT BBS上说微软电话面试的一道题就是“Who do you think is the best coder, and why?”。我觉得挺有意思的,也来凑个热闹。排名不分先后。

  

  &#61548; Bill Joy, 前任Sun的首席科学家,当年在Berkeley时主持开发了最早版本的BSD。他还是vi和csh的作者。当然,Csh Programming Considered Harmful 是另一个话题乐。据说他想看看自己能不能写个操作系统,就在三天里写了个自己的Unix, 也就是BSD的前身。当然是传说了,但足见他的功力。另一个传说是,1980年初的时候,DARPA让BBN在Berkley Unix里加上BBN开发的TCP/IP代码。但当时还是研究生的B伯伯怒了,拒绝把BBN TCP/IP加入BSD,因为他觉得BBN的TCP/IP写得不好。于是B伯伯出手了,端的是一箭封喉,很快就写出了高性能的伯克利版TCP/IP。当时 BBN和DARPA签了巨额合同开发TCP/IP Stack,谁知他们的代码还不如一个研究生的好。于是他们开会。只见当时B伯伯穿个T-shirt出现在会议室(当时穿T-shirt不象现在,还是相当散漫的哈)。只见BBN问:你怎么写出来的?而B伯伯答:简单,你读协议,然后编程就行了。最令偶晕倒的是,B伯伯硕士毕业后决定到工业界发展,于是就到了当时只有一间办公室的Sun, 然后他就把Sparc设计出来乐。。。象这种软硬通吃的牛人,想不佩服都不行的说。据Bill Joy的同事说,一般开会的时候B伯伯总是拿一堆杂志漫不经心地读。但往往在关键之处,B伯伯发言,直切要害,提出漂亮的构想,让同事们彻底崩溃。对了,他还是Java Spec和JINI的主要作者之一。

  

  &#61548; John Carmack,ID Software的founder和Lead Programmer。上个月和一个搞图形的师兄聊天,他竟然不知道John Carmack, 也让偶大大地晕了一把。不过也许搞研究的和搞实战的多少有些隔吧。想必喜欢第一人称射击游戏的都知道J哥哥。90年代初只要能在PC上搞个小动画都能让人惊叹一番的时候,J哥哥就推出了石破天惊的Castle Wolfstein, 然后再接再励,doom, doomII, Quake...每次都把3-D技术推到极限。J哥哥的简历上说自己的专长是"Exhaust 3-D technology",真是牛人之言不我欺的说。做J哥哥这样的人是很幸福的,因为各大图形卡厂家一有了新产品就要向他“进贡” ,不然如果他的游戏不支持哪种卡,哪种卡基本就会夭折乐。当初MS的Direct3D也得听取他的意见,修改了不少API。当然,J哥哥在结婚前十数年如一日地每天编程14小时以上,也是偶们凡人望尘莫及的。对了,J哥哥高中肆业(?),可以说是自学成才。不过呢,谁要用这个例子来为自己学习不好辩护,就大错特错了。那 Leonardo Da Vinci还是自学成才呢(人是私生子,不能上学)。普通人和天才还是有区别的。对了,其实偶们叫“达分奇”是相当不对的,因为Vinci是地名,而Da Vinci就是从Vinci来的人的意思。换句话说,Leonardo Da Vinci就是“从Vinci来的Leonardo”的意思。叫别人“Da Vinci”就不知所谓乐。嗯,扯远了,打住。

  

  &#61548; David Cutler,VMS和Windows NT的首席设计师,去微软前号称硅谷最牛的kernel开发员。当初他和他的手下在微软一周内把一个具备基本功能的bootable kernel写出来,然后说:“who can't write an OS in a week?",也是牛气冲天的说。顺便说一句,D爷爷到NT3.5时,管理1500名开发员,自己还兼做设计和编程,不改coder本色啊。

  

  &#61548; D爷爷天生脾气火爆,和人争论时喜欢双手猛击桌子以壮声势。 日常交谈F-word不离口。他面试秘书时必问:"what do you think of the word '[censored]'?" ,让无数美女刹羽而归。终于有一天,一个同样火爆的女面对这个问题脱口而出:"That's my favorite word"。于是她被录取乐,为D爷爷工作到NT3.5发布。

  

  &#61548; Don Knuth。高爷爷其实用不着偶多说。学编程的不知道他就好像学物理的不知道牛顿,学数学的不知道欧拉,学音乐的不知道莫扎特,学Delphi的不知到 Anders Hejlsberg,或者学Linux不知道Linus Torvalds一样,不可原谅啊。为了让文章完整,就再罗唆几句吧。高爷爷本科时就开始给行行色色的公司写各种稀奇古怪的编译器挣外快了。他卖给别人时收一两千美元,那些公司拿了 code,加工一下卖出去就是上万上十万。不过也没见高爷爷不爽过,学者本色的说。想想那可是60年代初啊,高爷爷写编译器写多了,顺带就搞出了个 Attribute Grammar和LR(k),大大地造福后人啊。至于高爷爷在CalTech的编程比赛(有Alan Kay得众多高高手参加)总是第一,写的Tex到86年就code freeze,还附带2^n美分奖励等等都是耳熟能详的,偶就不饶舌乐。

  

  &#61548; 顺便说一下,高老大爷是无可争议的写作高手。他给Concrete Mathematics 写的前言可谓字字铿锵,堪为前言的典范。他的技术文章也是一绝,文风细致,解释精当,而且没有学究气,不失轻快跳脱。记得几年前读Concrete Mathemathics,时不时开怀大笑,让老妈极其郁闷,觉得我nerdy到家,不可救药。其实呢,子非鱼,安知鱼之乐,更不知那完全是高爷爷的功劳。说到写作高手,不能不提Stephen A. Cook。他的文章当年就被我们的写作老师极力推荐,号称典雅文风的样本。库爷爷一头银发,身材颀长,总是面带谦和的微笑,颇有仙风道骨,正好和他的仙文相配的说。

  

  &#61548; 高爷爷其实还是开源运动的先驱。虽然他没有象Richard Stallman那样八方奔走,但他捐献了好多作品,都可以在网上看到,比如著名的Mathematical Writing,MMIXWare,The Tex Book等,更不用说足以让他流芳百世的Tex乐。

  

  &#61548; Ken Thompson,C语言前身B语言的作者,Unix的发明人之一(另一个是Dennis M. Riche老大,被尊为DMR),Belle(一个厉害的国际象棋程序)的作者之一, 操作系统Plan 9的主要作者(另一个是大牛人Rob Pike, 前不久被google挖走了)。Ken爷爷也算是计算机历史上开天辟地的人物了。1969年还是计算机史前时代,普通人都认为只有大型机才能运行通用的操作系统,小型机只有高山仰止的份儿。至于用高级语言来写操作系统,更是笑谈。Ken爷爷自然不是池中物,于是他和DMR怒了,在1969年到1970间用汇编在PDP-7上写出了UNIX的第一个版本。他们并不知道,一场轰轰烈烈的UNIX传奇由此拉开了序幕。Ken爷爷在1971年又把Unix用C重写,于是C在随后20年成就了不知多少豪杰的梦想和光荣。

  

  &#61548; Ken爷爷还有段佳话: 装了UNIX的PDP-11最早被安装在Bell Lab里供大家日常使用。很快大家就发现Ken爷爷总能进入他们的帐户,获得最高权限。Bell Lab里的科学家都心比天高,当然被搞得郁闷无比。于是有高手怒了,跳出来分析了UNIX代码,找到后门,修改代码,然后重新编译了整个UNIX。就在大家都以为“这个世界清净了”的时候,他们发现Ken爷爷还是轻而易举地拿到他们的帐户权限,百思不解后,只好继续郁闷。谁知道这一郁闷,就郁闷了14年,直到Ken爷爷道出个中缘由。原来,代码里的确有后门,但后门不在Unix代码里,而在编译Unix代码的C编译器里。每次C编译器编译UNIX的代码,就自动生成后门代码。而整个Bell Lab的人,都是用Ken爷爷的C编译器。

  

  &#61548; (6)Rob Pike, AT&T Bell Lab前Member of Technical Staff ,现在google研究操作系统 。罗伯伯是Unix的先驱,是贝尔实验室最早和Ken Thompson以及Dennis M. Ritche开发 Unix的猛人,UTF-8的设计人。他还在美国名嘴David Letterman的晚间节目上露了一小脸,一脸憨厚地帮一胖子吹牛搞怪。让偶佩服不已的是,罗伯伯还是1980年奥运会射箭的银牌得主。他还是个颇为厉害的业余天文学家,设计的珈玛射线望远镜差点被NASA用在航天飞机上。他还是两本经典,The Unix Programming Environment 和 The Practice of Programming 的作者之一。如果初学者想在编程方面精益求精,实在该好好读读这两本书。它们都有中文版的说。罗伯伯还写出了Unix下第一个基于位图的窗口系统,并且是著名的blit 终端的作者。当然了,罗伯伯还是号称锐意革新的操作系统,Plan9,的主要作者。可惜的是,Plan9并没有引起多少人的注意。罗伯伯一怒之下,写出了振聋发聩的雄文 Systems Software Research is Irrelevant,痛斥当下系统开发的不思进取,固步自封的弊病。虽然这篇文章是罗伯伯含忿出手,颇有偏激之词,但确实道出了系统开发的无奈:开发周期越来越长,代价越来越大,用户被统一到少数几个系统上,结果越来越多的活动是测量和修补,而真正的革新越来越少。

  

  &#61548; 就在罗伯伯郁闷之极的时候,google登门求贤来乐。如果说现在还有一家大众公司在不遗余力地把系统开发推向极致的话,也就是google乐。随便看看google的成果就知道了。具有超强容错和负载平衡能力的分布式文件系统GFS (现在能够用100,000台廉价PC搭起一个巨型分布系统,并且高效便宜地进行管理的系统也不多哈),大规模机器学习系统(拼写检查,广告匹配,拼音搜寻。。。哪个都很牛的说),更不用说处理海量并行计算的各式google服务了。Rob在System Software Research is Irrelevant里萧瑟地说现在没有人再关心系统研究的前沿成果了。想不到他错了,应为google关心。google网络了大批功成总是试图吸取系统研究的最新成果。想必Rob Pike在google很幸福。愿他做出更棒的系统。

  

  &#61548; Dennis M. Ritchie, 既然Ken Thompson是我的偶像,新闻组上人称DMR的Dennis M. Ritchie自然也是,毕竟两人共同缔造了UNIX,而Dennis几乎独力把C搞大(当然,C的前身是B,而B是Ken Thompson一手做出来的)。J 两人1983年分享图灵奖,是有史以来少数几个因工程项目得奖的工程师(本来是唯一的一对儿,但Alan Kay才因为SmallTalk得奖,所以就成了唯二的乐) 。一个人一生能做出一个卓越的系统已经不易,DMR的C和UNIX长盛不衰近30年,至今生机勃勃,DMR此生可以无憾的说。

  

  &#61548; D爷爷也算有家学渊源:他老爸在AT&T贝尔实验室工作了一辈子,并在电路设计方面卓有成就,还出了本颇有影响的书The Design of Switching Circuits,据说在交换理论和逻辑设计方面有独到的论述。当然,D爷爷和他老爸是不同时代的人:他老爸的研究成形于晶体管发明之前,而D爷爷的工作离了晶体管就玩儿不转乐。

  

  &#61548; 不要看D爷爷搞出了C,其实他最爱的编程语言是Alef,在Plan9上运行,支持并行编程。Alef的语法和C相似,但数据类型和执行方式都和 C大大不同。说到语言,D爷爷对后来人有非常中肯的建议:抱着学习的目的来开发你自己的语言,不要冀望于它被众人接受。这个建议不光对语言开发有用,也适用于其它大型系统的开发。别的不说,DMR后来领导自己的团队在1995年和 1996分别推出了Plan9和Inferno操作系统,又用多少人知道呢?其实,D爷爷当初也没想过C会风行世界。他开发C的初衷和Eric S. Raymond在Cathedral and Bazaar里阐述的一样,就是要消除自己对现有工具的不爽之处。谁知D爷爷无心插柳,C竟然受到众多程序员的狂热拥戴,连D爷爷自己都大惑不解。在一次采访中D爷爷说大概那是因为C的抽象程度碰巧既满足了程序员的要求, 又容易实现。当然C一度是Unix上的通用语言也是原因。但不管怎么说,D爷爷对编程语言出色的审美意识奠定了C广为流传的基础。

  

  &#61548; 最后八卦一下。D爷爷的业余爱好和NBA大牛Karl Malone一样:开卡车。不过D爷爷更喜欢开NASCAR,而KM独爱巨无霸。J D爷爷自称心中不供偶像,如果一定要说一个,那就是Ken Thompson了。现在Ken爷爷退休当飞机教练去了,而D爷爷当了贝尔实验室系统开发部的头,整日忙于开支票。他俩合作20年,屡屡创造历史。这段令人神往的佳话,也就长留你我心中乐。

  

  &#61548; P.S., 很多人都以为Brian W. Kernighan是C的作者。其实BWK只是写了那本经典K&R C。据D爷爷说,他,Ken, 和Kernighan三人中,Kernighan最能写文章,他次之,而Ken写得最少;但说到编程,Ken爷爷才是当之无愧的老大。

  

  &#61548; Edsger Wybe Dijkstra, 对,就是E.W. Dijkstra. 一提到EWD,很多人就会想起找最短路径的Dijkstra Algorithm,就好像一提到Sir. Tony Hoare,就想起Quick Sort一样。其实这些个算法不过是两个牛人在他们职业生涯中最琐碎的贡献。比如Dijkstra算法,无非是戴爷爷在1956年为了展示新计算机 ARMAC的计算能力,初试身手的成果,属于他的算法处女作。据戴爷爷自述,他搞出最短路径算法的时候连纸笔都没用。当时他和他老婆在阿姆斯特丹一家咖啡厅的阳台上晒太阳喝咖啡,突然就把这个算法想出来乐。而且当时的算法研究还比较原始,牛人们忙着用计算机搞数值计算,对离散算法不屑一顾。那时连一个象样的专注于离散算法的专业期刊都没有。戴爷爷于是推迟发表这个算法。直到1959年,他才把这个算法发表在Numerische Mathematik的创刊号上,权为捧场。 EWD在多个领域牛气冲天,端的是理论和编程两手硬的高手。只不过他的很多工作比较深刻,学校的老先生们觉得本科生接受不了,不给本科生讲而已。

  

  &#61548; 戴爷爷大概因为最短路径算法一战成名,于是有人请他参加另一台计算机X1的设计工作,并且把设计实时中断系统的任务派给了他。现在看来实时中断也许不算什么,但要知到,X1前根本就没有实时中断的概念。实现它简直就是一场豪赌。戴爷爷起初还不情愿,但经不住项目负责人Bram和Carel的轮番 “吹捧”:我们知道实时中断让您工作变得非常困难,但象您这样的牛人肯定能做出来的说。结果戴爷爷被糖衣炮弹彻底击穿,接下了这个烫手山芋。两三年后,他不仅搞出了实时中断,还围绕这个写出了自己的博士论文,顺利戴上博士帽。

  

  &#61548; 让戴爷爷真正成名立万的还是在X1上开发的Algo60,最早的高级语言之一。戴爷爷没日没夜地工作了8个月,就搞出了Algo60,也因此获得了 1972年的图灵奖。因为Algo60,戴爷爷发表了一篇石破天惊的文章:Recursive Programming,于是人们才知道,原来高级语言也可以高效地实现递归,原来从此以后,所有程序员都不可避免地和戴爷爷发明的一个词(应该说是概念)打交道:堆栈。而且Algo60还让戴爷爷深入地思考多道程序设计的问题,最终发明了每个系统程序员都绕不开的概念:semaphore。当然,戴爷爷总是把他发明的概念严格形式化,极具科学家本色的说。和这些成就想比,他提出的吃饭的哲学家问题,也就没什么好说的了。

  

  &#61548; 说来好笑,当时的大学(忘了哪所了)还是觉得戴爷爷没有受过正统的数学训练,也不是专门搞数值分析的,所以最后不太情愿地给了他一个教职。这种小挫折并不能妨碍象戴爷爷这样的牛人创造历史。他一边教数值分析() ,一边开始开发一个新的操作系统,并培养计算机科学家。几年后,THE Multiprogramming System横空出世。THE是第一个支持松散耦合,显式同步的进程并由此使得严格证明系统没有死锁变得容易的操作系统。可惜戴爷爷任职的系不识货,还强行解散了他的研究小组(1972年戴爷爷给他的系主任说他得了图灵奖,系主任的第一反应是你们搞计算机就喜欢乱发奖)。这让戴爷爷相当郁闷,得了抑郁症。在极度郁闷之中,戴爷爷决定用写作来治疗自己的抑郁症。于是经典就诞生乐:Notes on Structured Programming。戴爷爷从此被尊为结构化编程的奠基人,而且他的抑郁症也被治好乐。

  

  &#61548; EWD太牛,结果他的故事也太多。先到这里吧。1973起,他的故事就在美国发生了。

  

  &#61548; Anders Hejlsberg,微软.NET的首席架构师,编程语言设计和实现的顶尖高手。他一手做出了 Turbo Pascal, 也是Delphi, J++(尤其是WFC),C#, 和.NET的主要作者。这些作品的名字足以为他立传。作为一个程序员,我在这样的大师面前实在无语。生子当如Anders的说。李维的里已详细讲述了Anders的传奇故事,我就不用费舌了:http: //java.mblogger.cn/iexploiter/posts/1505.aspx 。Artima上有Anders谈C#的系列访谈。MSDN上有一段Anders导游的录像 。有兴趣可以去看看牛人的丰采。


作者:后学  2005-7-8 10:20:00

  回复32  TO:后学,我何来生硬地把单片机和mfc,C++这些东西扯到一起?61638

看看AVR,ARM等的单片机都有C++的编译器,再讲深入研究MFC运作原理就是深入地研究C++技术,这会是硬扯在一起吗?


作者:宇宙飞船  2005-7-8 10:28:00

  回复33  俺从来不把ARM叫做单片机61639

俺从来不把ARM叫做单片机
作者:后学  2005-7-8 10:58:00

  回复34  ?61640

凑凑热闹


作者:农民讲习所  2005-7-8 11:29:00

  回复35  学C++好,因为C++思想好。搞单片机用不上C++,但思想可以用上61641

学C++好,因为C++思想好。搞单片机用不上C++,但思想可以用上
作者:农民讲习所  2005-7-8 11:31:00

  回复36  要学思想的话,大家都该补补软件工程的书61642

要学思想的话,大家都该补补软件工程的书
作者:后学  2005-7-8 11:45:00

  回复37  两码事情,一个是怎么去想,一个上怎么去做,怎么放在一起?61643

两码事情,一个是怎么去想,一个上怎么去做,怎么放在一起?
作者:农民讲习所  2005-7-8 12:42:00

  回复38  MFC和VCL都是对API的封装,哪个更优美?哪个更OOP?61644

除了驱动程序有时用用VC编译外,绝对不用VC

也就是说,一两本书说不明白的东西,就找一两本书能说明白的去用

有看MFC的时间,也许能找来非常漂亮的控件和控件包,这样的懒不偷太可惜了

专业程序员不方便偷懒,可咱们是什么东西啊,拿烙铁去焊MFC?


作者:elelab  2005-7-8 12:47:00

  回复39  呵呵61645

呵呵
作者:农民讲习所  2005-7-8 12:51:00

  回复40  API的运用才是正道61646

对于硬件工程师来说,我认为掌握API的工作机制远比MFC有用,MFC是可看可不看的东西。MFC隐藏了太多的技术细节,对于写惯单片机或DSP程序的工程师而言,如果花很多时间在上面不值得,因为它对你的软件水平不会有纵深度提高,顶多是横向增加一些软件知识。

候先生那本《深入浅出MFC》,早几年刚出版时就买,感觉写得确实好,但自己没有那么多时间“深入浅出”!我估计大陆目前没有人达到候先生的境界。

话又说回来,真正专业的软件工程师(针对VC),据我所知用MFC的比例很少.我司的VC软件人员没有人看得起MFC。


作者:dpjmxd  2005-7-8 14:05:00

  回复41  MFC只是一堆破烂61647

楼主才不要误导别人了


作者:河外星系  2005-7-8 14:54:00

  回复42  学MFC确实不如学API,或者就用BC的VCL好了。61648

学MFC确实不如学API,或者就用BC的VCL好了。
作者:农民讲习所  2005-7-8 15:00:00

  回复43  所长的高见,61649

API是纯C写的,所长叫大家别学MFC了,改学VCL,所长说话果然石破天惊。

请问所长VCL是啥东西?过两手给我等后辈。


作者:潜艇8421  2005-7-8 16:04:00

  回复44  主要看你自己想干什么?61650

拿C++写单片机程序是不合适的

拿汇编写数据库是不合适的

拿.NET写驱动程序是不合适的

……


作者:后学  2005-7-8 16:11:00

  回复45  大家都在学Linux还有人会搞MFC?楼主简直是白痴说梦话!61651

不过有传闻Linux是IBM公司手上的一个棋子,我们是否会上IBM的当?


作者:潜艇8421  2005-7-8 17:07:00

  回复46  棋子不棋子地,那么多人支持呢,怕啥!61652

棋子不棋子地,那么多人支持呢,怕啥!
作者:后学  2005-7-8 17:30:00

  回复47  AVR我全用C++编程,味道好极了...61653

AVR我全用C++编程,味道好极了...
作者:hotpower  2005-7-8 18:46:00

  回复48  MS那个回调,本质不安全61654

封装了半天,命不在里边,过来的是肉包子还是石头不管

QT的插槽,OOP方面比MFC怎样?

微软现在也就吃我们这些不思上进的老家伙了,不过不是靠MFC,是WinCE的实时和$3授权费这次没让扎进Linux怀里,下次可不一定了


作者:elelab  2005-7-8 20:35:00

  回复49  楼上的在讲些啥呀?我咋不明的?能说明白点吗?61655

楼上的在讲些啥呀?我咋不明的?能说明白点吗?
作者:zhousd  2005-7-8 22:38:00

  回复50  牛比轰轰~~~61656

牛比轰轰~~~
作者:最爱韶涵  2005-7-8 22:52:00

  回复51  看灌水贴子令人精神振奋,这两天出差的闷气全消了61657

今天收获不少。。。!


作者:zhousd  2005-7-8 23:15:00

  回复52  第一次听说,用MFC是上大学,C是上小学61658

有人说,C++是不同于C的一门新语言,其实我觉得,思想弄明白了,管它C,C++,Java,C#,basic都是差不多的.其实每种语言本身都是很简单的,但用它做东西就难了.

基本的C和C++才是根本呀,学好的,其实都就那么回事(可惜上大学的时候,没有体会到C的好处,总觉得有什么用呢,现在才知道,C太有用了).

其实MFC没吹的那么牛的,真上大学的,是用基本的C和C++啦,除非想一直呆在windows.首先还是把基本的东西学好吧,当然,MFC也是一种学习的方式,但我觉得没有太多的必要去研究它,除非精力的确够.否则做偏硬的还是多了解一些底层一点的东西,比如DDK之类更有用.

我的感觉是,做偏硬的,其实写的蛮多都是与硬件什么有关的,很多都是一些算法呀之类的,MFC相关的一些界面倒是其次.能直接用API的还是用API,能用C++标准库的还是用标准库,比如MFC的线程类,临界区类,不比直接用API好多少的;MFC的CList不比C++的list好用的.涉及到界面的地方,就用人家现成的类界,要想漂亮一点,找到界面库,如Xtreme toolkit之类.

在上大学的时候,还是不要把小学的东西忽略啦~~~

直到于MFC中的宏么,既是恶梦,但也非常精妙,像消息映射宏,以及以前见过的一个调整控件位置的宏,的确是很"博大"的.虽然好像在C++里不是怎么推荐用#define,不过觉得在开发嵌入式软件的时候,define还是非常好用,非常有用的.


作者:hiberhe  2005-7-9 0:07:00

  回复53  是不是这里的人都有C的基础?61659

搞单片机 C语言是不是基础的基础啊? 我们只学过C++ 是否学起C来会容易一些?最近在实习,老师吩咐要用C51编程序... 哥们儿还是一头雾水呢啊!


作者:holyfreeze  2005-7-9 10:13:00

  回复54  你不会骗人吧61660

你不会骗人吧
作者:bs1234  2005-7-9 10:34:00

  回复55  倒转经脉练功,小心别走火入魔就是了!61661

成了魔王后,能跳出三界外,不在五行中时别怨我就是了。。。

呵呵!


作者:宇宙飞船  2005-7-9 11:40:00

  回复56  MFC和VCL谁更优?61662

从逻辑上说,VCL优越许多,实现一个代码也很容易。

但是我在工程上还是不得不用那个难懂的、晦涩的MFC。用MFC写出代码的稳定性远高于VCL。这会不会是MS又在用当年Word的手法就不得而知了。

补充:

MS是Borland的是大股东。


作者:李冬发  2005-7-9 12:21:00

  回复57  ??61663

??
作者:21mpu  2005-7-9 14:34:00

  回复58  在网络时代mfc好象快过时了61664

去学.net,ejb吧!将来的发展趋势,呵呵!!


作者:香如故  2005-7-9 15:28:00

  回复59  买本书就离高手近了?61665

怎么看都象是滞销书的宣传广告!


作者:cf100  2005-7-9 16:17:00

  回复60  hehehaha61666

hehehaha
作者:weweiya  2005-7-11 8:38:00

  回复61  太简单了,没有苦练是不行的了61667

太简单了,没有苦练是不行的了
作者:Denorth00  2005-7-11 15:23:00

  回复62  搜索队61668

多看书


作者:cdxy  2005-7-12 12:09:00

  回复63  我很想学会c++,就是看不懂类的方面,请指教61669

我很想学会c++,就是看不懂类的方面,请指教
作者:lu111  2005-7-12 13:35:00

  回复64  还是要花时间的~~~~~~~~~~61670

还是要花时间的~~~~~~~~~~
作者:fantasywjy  2005-7-12 16:10:00

  回复65  呵呵,今天刚借了一本61671

呵呵,今天刚借了一本
作者:zhangqi61  2005-7-12 16:36:00

  回复66  其实还是要下些苦功的61672

马克思一个星期就掌握二门外语,人家是天才。我们还是认真下些苦功吧,不要三脚猫功夫就为高手。


作者:YuanChong  2005-7-14 21:29:00

  回复67  教授打渔的方法,三脚猫神功速成大法!61673

教授打渔的方法,C++无敌神功可以速成,但这搞笑的胆色人家很难速成吧!


作者:YuanChong  2005-7-15 10:56:00

  回复68  哎61674

我是学了c

到vc就纳闷了

刚刚开始的时候感觉还ok

可是到后来就。。。。

越来越头大

郁闷


作者:渴望无限  2005-7-15 16:09:00

  回复69  跟没有说一样一样的61675

跟没有说是一样一样的阿,谢谢


作者:napoleonon  2005-7-15 20:04:00

  回复70  楼上的楼上,能否说点失败经历来听听,61676

您当初是如何学习MFC的,学到后来为何头大了?告诉大家一点失败的经验,这是很难得的经验呀!希望不惜赐教这里想学MFC的菜鸟们,好让他们打住脚步,别再上MFC的当了!


作者:宇宙飞船  2005-7-15 20:27:00

  回复71  长用才行.61677

长用才行.
作者:qhp  2005-7-18 9:51:00

  回复72  能有速成的吗?61678

能有速成的吗?
作者:tao_xu99  2005-7-18 12:12:00

  回复73  说的倒挺容易!61679

我最讨厌别人说什麽捷径啊!无敌神功啊!全是骗人的......!


作者:wsj0902  2005-7-18 14:23:00

  回复74  我一直用C语言不知道++好在哪?61680

我一直用C语言不知道++好在哪?
作者:21icligang  2005-7-19 14:38:00

  回复75  gege 请问C++比C好在哪?? 我是初学者61681

gege 请问C++比C好在哪?? 我是初学者
作者:21icligang  2005-7-22 14:51:00

  回复76  你说的是VC++,不是C++61682

你说的是VC++,不是C++
作者:guyanmim  2005-7-23 0:51:00

  回复77  为什么是MFC, 而不是TURBO C++或Bloard C++61683

为什么是MFC, 而不是TURBO C++或Bloard C++
作者:victorymay  2005-7-24 1:52:00


我要投稿 注册会员
客服咨询热线:0755-26000950 0755-26007355
 相关技术问答
·谁能给我提供一个测试RAM..  2005-7-6
·问个问题:为什么一般的编程..  2005-7-6
·谁有CF12864-3 V..  2005-7-7
·求助:EM78P447SB..  2005-7-7
·请大家帮个忙,很急!!(5..  2005-7-7
·running with ..  2005-7-7
·求救:我是新手,向学C51..  2005-7-7
·模块化编程的分层设计经验  2005-7-7
·还是串口通讯问题.  2005-7-7
·usb转的串口和计算机上面..  2005-7-7
·模拟电路和数字电路有没有严..  2005-7-7
·怎么连接电平不一样的IC.  2005-7-7
·板子可以收到电脑发送的数据..  2005-7-7
·16点阵汉字字库是什么格式..  2005-7-7
·求大家推荐一款单片机  2005-7-7
·P2M1,#00H,P2M..  2005-7-7
·请教:贴片IC如何烧写?  2005-7-7
·新手求助:帮忙选一款单片机  2005-7-7
·求助:KEIL编辑界面汉字..  2005-7-7
·请教关于CAN的问题  2005-7-7
·LM317  2005-7-7
·2051输出高电平电压不够..  2005-7-7
·致宇宙飞船!!!!  2005-7-7