Sunshine Alike

半完美主义

  C++博客 :: 首页 :: 联系 :: 聚合  :: 管理
  35 Posts :: 1 Stories :: 56 Comments :: 0 Trackbacks

常用链接

留言簿(15)

积分与排名

  • 积分 - 49747
  • 排名 - 451

最新随笔

最新评论

无聊的下午,来个小小的总结吧,想到哪写到哪,呵呵。

这几天被项目里的MFC折磨在,虽然自己耐着性子又开始在学,但是还是觉得进度非常缓慢。其实去年的时候也有过一次用MFC做的项目实训,但第一次接触MFC的时候就觉得那就是一怪物,纯的!!写起程序来都觉得恶心。于是乎,在心里油然而生的抵抗情绪作用下,我毅然去当了项目组的TL,也不再愿去碰那堆乱七八糟的MFC代码了。


我自从进入大学以来,学习编程已经有近4年了,从一开始我接触到的就是OO的思想,所以到现在为止,在潜意识里仍然还保留着当年老师一遍遍跟我们讲授的经典名言“everything is an object”。哈哈,对这句话真是很有感情啊!

编程语言,最开始的时候我是学JAVA的(好吧,我承认我连C语言都没学过,不要BS我,不是我的错)。学校里安排的课程大多也都是用的JAVA。年少无知的日子是多么美好啊,JAVA曾经一度是我心目中最完美的语言,以致于对第一次在数据结构课上老师所使用的那个被称为C++的东西意见天大。“为什么要使用这么垃圾的语言啊!”,可我当时真就是这么想的,“语法复杂,甚至连标准都不统一,内存都要自己手动管理”。就这么稀里糊涂的过了几年,慢慢的,由于课程需要开始耐着性子看些C++的书,一路看下去却如同哥伦布一样看出了个“新大陆”。从那门名叫“C++高级程序设计的选修课上”开始,我迷上了这门当年让我厌恶不己的语言。准确的说,现在我的JAVA都已经荒废多时了,把博客放到这也是这个原因。


可是梦想成为一个C++高手的路却不是那么好走的。
同寝室的同学一路沿着JAVA那条线走来,现在已经整天研究些ExtJS, Hibernate,Spring,Struts(当年还因为把这个词读成structs被人暴笑 T_T)这些在我看来都已经是两个世界的东西了,更别说那些css,javascript之类他们早已非常熟悉的东东了。寝室有一哥们也就用了两三晚上就用PHP整出一网站出来,虽然知道有模板,但还是让我感觉惊讶不己。
反观我现在,除了会用VS拖几个控件之外貌似就只能在cmd下面研究一下cout,cin了。我都不明白这是为什么?时间也用了不少,可是还是感觉做不出来什么像样的东西。不少人都跟我说,C++是用来做底层的,是要注重效率写算法的,可心里还是非常不平衡啊。

于是这次趁着毕业前的一点空闲时间,我又耐下心来打算学学MFC。看了一点关于windows API的基础知识。一开始写MFC,我,又彻底的晕菜了。某天我想把一个int值转成string显示出来的时候。我被神奇的卡住了,而且还是一上午 T_T  神哪,在JAVA,C#里这算是问题吗?之后经过若干次尝试,求助N本书之后,问题终于解决了。使用stringstream转换成功。刚高兴了没半分钟,问题又来了。显示在CEdit控件里的就是乱码,郁闷呐。最后我把书上的代码拿来抄了一遍,我KAO,居然还是不行!
于是乎,我坐下来,缓了下神。然后,不是开始再次的尝试,而是开始在心中暗骂MS。它娘的,没事整这么多变量啊,宏定义干嘛啊。用string不行么,非要弄出个CString;LPCTSTR这鬼东西不就是个char*,莫非换个马甲就变帅了?

/* --------------- 文中 的确是内心所想,各位看官一笑而过即可,不必与我争论其中正误 ------------------- */

 


BS微软N次之后,我又开始思考一个困扰我很长时间的问题。
对于生性喜欢有挑战性的我来说对新鲜的事物总是想一探究竟。当年我第一次被MFC吓跑之后,我一直对windows下的GUI编程念念不忘。时常想寻找一个比较“完美”的C++实现的方法。也是那个时候,我才知道人们对于MFC的争执。似乎反对派将其说的一无是处(当时看的时候不禁心中暗爽,又为自己不学这个找了个理由,呵呵)也是那个时候,我还了解了QT,VCF,WTL还有wxWidgets等等库。可问题是which one ? 我那个时候连被人烂熟的MFC都一点不会,就开始学这些我听都没听过的东东?这些东西真像我想要的那么好么?就是我学了,别人用这个吗……当时脑子里的问题多多,还纠结了颇久一段时间。无奈后来还是选择都放下了。因为,我要准备考研了……

痛定思痛
我认真总结经验之后,得出结论,我必需要选择一样了,是好是歹完了之后再说吧,于是就有了我与MFC的第二次搏斗!此外,还有一个很严重的问题就是,关于基本功的问题。以前,我自认为学习C++时间不短了,原来都是井底之蛙。想要精通任何一项技能都是不容易的。更何况C++这门曾经被多少人疯狂研究过的“超级语言”。

基本功差吧,那就补吧。可是从哪里补起呢,据说C++是从C语言里演化出来的,那么从C开始?
No,我的OO神经这样告诉我。
那好,看点C++的新东西吧。于是我看那本评价颇高的C++Primer。嗯,书上这么教导我们:孩子,多使用C++的新特性吧,STL里有容器,用吧;char* 字符串,扔到垃圾桶吧,这里有更好的string……哈哈,看书的时候心里巨爽,这语法,多么美妙。
可是我一合上书就深深体会到一个道理——现实是残酷的!我眼里所看到的代码,全都是各种各样的混合体。char* 的字符串依然满天飞,还有那些C语言里我都没见过的函数。
唉,混乱啊,what do I do ?

呼~~ 这个点不早了,先写到这歇了。明天太阳一样出来,日子照过,慢慢来吧。

posted on 2009-03-28 00:19 Sunshine Alike 阅读(1707) 评论(21)  编辑 收藏 引用 所属分类: 随笔

Feedback

# re: Confused! 总结下心情 2009-03-28 00:51 abilitytao
呵呵 学完了C++ 现在我要开始向着JAVA的方向挺近了 O(∩_∩)O~
  回复  更多评论
  

# re: Confused! 总结下心情 2009-03-28 00:54 likenk
呵呵
我们这届也是只有我一个人玩VC++,其他都是c sharp,java。郁闷啊。  回复  更多评论
  

# re: Confused! 总结下心情 2009-03-28 07:15 jimsmorong
我们哪里是C++必修 Java择修

结果是 我两样都无修  回复  更多评论
  

# re: Confused! 总结下心情 2009-03-28 08:13 brucewuu
哈哈 ,兄弟的经历 可谓同是天涯沦落人啊 。 我也经历过这些呵,现在还是坚持C++,而且准备把MFC丢了,得自己设计UI,路还长的很哦 共勉吧  回复  更多评论
  

# re: Confused! 总结下心情 2009-03-28 08:26 空明流转
我多少也用了6年多的C++了,迄今为止不会用MFC。

准确的说C++的UI Lib我一个都用不好,Qt用的比较熟,不过还是PyQt用的熟。。。  回复  更多评论
  

# re: Confused! 总结下心情 2009-03-28 09:22 匿名人士
加油咯~~  回复  更多评论
  

# re: Confused! 总结下心情 2009-03-28 09:38 yan
深有同感啊~~~
C++是一种多模式的语言,这是优点。但是对于初学者而言,这恰恰如梦魇一般,分外可怕。
好不容易把C学熟了,看到无数的类与构造、析构;费了更多的时间把OO学明白了,又遇到让人晕头转向的流和容器,还有如大海一般深不可测的模板元编程。
C++,要想学好,真的是很不容易。学习C++的时间越长,越痛恨它的复杂难懂,同时对它的感情还偏偏是越深,呵呵  回复  更多评论
  

# re: Confused! 总结下心情 2009-03-28 10:19 E剑仙
JAVA、C#有什么好玩的?上层那些人人都能做的应用搞多了真的有成就感?还是C++好玩,而且尽量使用CLR……  回复  更多评论
  

# re: Confused! 总结下心情 2009-03-28 10:33 Chuck
我认为C++的精髓反而是在最不起眼的cmd的cout,cin上面
不要浮躁,学C++会有比别人更多的收获

JAVA、C#有什么好玩的?上层那些人人都能做的应用搞多了真的有成就感?还是C++好玩,而且尽量使用CLR……

看上面这个仁兄回复的~  回复  更多评论
  

# re: Confused! 总结下心情[未登录] 2009-03-28 10:40 海边沫沫
我想你的郁闷主要是因为你们项目组的人不少,每个人写代码的风格都不一样造成的吧?

其实C++非常美,非常具有诗意的,但是如果你天天看别人写的垃圾代码,那无疑是一种噩梦。MFC并不难,关键是要理解,有很多时候我们并不需要MFC中的大多数特性,只需要用设计器拖放出一个简单的界面,然后和它交互,知道在哪个事件里写代码,知道怎么画图就行了。(事实上,MFC包含的内容远不止这些)

你可以到我的博客看看,我写过一个俄罗斯方块的游戏,只用了一点点MFC的知识,但是我认为我的C++代码设计得很优美。
http://www.cppblog.com/youxia/archive/2007/12/16/38605.html

用到了STL中的deque,用到了Factory模式,用到了多线程和线程同步的知识,用到了GDI绘图,但是没用多少MFC的东西。  回复  更多评论
  

# re: Confused! 总结下心情 2009-03-28 12:36 Sunshine Alike
@abilitytao
呵呵,那以后我又有C++方面的疑问就向你请教了 ^_^  回复  更多评论
  

# re: Confused! 总结下心情 2009-03-28 12:40 Sunshine Alike
@jimsmorong
其实我现在觉得,从C类语言开始学编程,还是不错的。
至于学OO,那就是另一回事了  回复  更多评论
  

# re: Confused! 总结下心情 2009-03-28 12:43 Sunshine Alike
@likenk
@brucewuu
@yan
看来有这类似经历的大有人在啊
不过,大家最后都在坚持着自己的C++之路,用brucewuu兄的话说 与君共勉吧  回复  更多评论
  

# re: Confused! 总结下心情 2009-03-28 12:48 Sunshine Alike
@空明流转
等我这阵忙过了,也许会研究点别的UI,不知道Qt上手起来感觉如何?  回复  更多评论
  

# re: Confused! 总结下心情 2009-03-28 12:53 Sunshine Alike
@E剑仙
@Chuck
嗯,学习C++不容易,还得耐心一点点的积累。
不过CLR不是.net里面的东西么
用这个写的C++代码是不是别人所说的“托管代码”?  回复  更多评论
  

# re: Confused! 总结下心情 2009-03-28 12:58 Sunshine Alike
@海边沫沫
好东西,呵呵,收下慢慢学习,谢了
搬到cppblog来之后还看过您的博客,对那篇“高起点C++学习之路”印象颇深呐。 我想,真正好的C++代码应该也会非常有美感吧,我得多多努力了  回复  更多评论
  

# re: Confused! 总结下心情 2009-03-28 17:56 陈梓瀚(vczh)
我也很痛恨MFC,但是光痛恨不行,我也要写GUI啊。于是狂读MSDN,将相关的Windows API都搞得差不多的时候,自己封了个库。  回复  更多评论
  

# re: Confused! 总结下心情 2009-03-28 22:40 Sunshine Alike
@陈梓瀚(vczh)
我新学不久,您现在写GUI也还用API的函数吗?会不会在开发速度上会比较慢呢  回复  更多评论
  

# re: Confused! 总结下心情 2009-04-04 17:05 runsisi
aha, god bless u :)  回复  更多评论
  

# re: Confused! 总结下心情 2009-04-15 16:51 Alex-Lee
@Sunshine Alike
陈梓瀚(vczh)是牛人,我们需要好好向他学习。我也是到现在这C++做界面真是郁闷得要死。咱两可以一起学习。  回复  更多评论
  

# re: Confused! 总结下心情 2009-04-22 11:32 abettor
@E剑仙
“上层那些人人都能做的应用搞多了真的有成就感?”

我也是学C++出来的,MFC用了不少,稍微有一点经验。现在也常做Java项目,研究些所谓“上层那些人人都能做的应用”。

E仙剑哥哥的说法我觉得还是不太准确的,看你要研究什么方向了。如果一辈子都只是coder的话,把C++呀、语法呀、技巧呀研究得透彻一些也就够了;但是如果需要自己去设计一些东西,(不管是上层还是底层),都要在很高的层面上设计一番。比如写操作系统、设计驱动程序,够底层吗?恰恰是这些东西最需要先在“上层”精细的设计。

我与仁兄一样鄙视那些做着重复工作没有一点创新还天天喊着“我们这是高科技”的人们,更知道C/C++的牛X之处,但是C#和Java里边的某些思想确实值得我们借鉴。C#我是不懂的,但Java我知道一些,他的很多机制和设计思想值得大家学习,比如反射。IoC、AOP等等技术,都基于这个机制。甚至,反射可以让Java在Runtime自动变成任何东西,比如一个会不断自动“学习”并添加新功能的智能机器人。(关于上述智能机器人,不瞒各位,我现在正在设计,已经有了一个初步的思路。)

也许你会跟我讲,Java是用C/C++写的。这我很清楚,但问题是,我在这里没有说什么语言比什么语言好,想表达的意思是,程序的灵魂是设计思想,而不是具体的语法和使用的技巧。  回复  更多评论
  


只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理