学vc/c++之前应三思

 转自一个论坛大家的讨论:

1.打好坚实的基础十分重要的,但这并不一定表明一定要学习VC才算打好基础,我认为,如果你的天分不是太高(自己心里一定要清楚),自己对金钱的热爱高于对程序的热爱,那么我认为你还是选择一种快速开发工具(这儿不包括bcb),把C++/VC作为一种业余爱好比较好一点的。
  用C++做开发,对人的素质要求很高,但开发效率却无法大幅度提高。
  中国是学C++最厉害的国度,却是使用C++最少的国度,找过工作的人都清楚,每个公司都是在用快速开发工具做开发,delphi,pb,vb,jbuilder,c#也算是一种快速开发工具。为什么哪,可能与中国人的思维有关,中国人最爱面子,好像如果不学C++就等于承认自己没水平,智商不高,从网上论坛可见一斑,到处是对快速开发工具的攻击,其实我倒觉得,程序员应该把精力放在程序的功能上,比如一个报表软件就应该让会计用着舒服,不需要太多的计算机知识,只需要会计知识就够了,会计也不会关心你这个程序使用delphi,还是vc做的。不过现在情况好了一点,和C++具有相同因子的C#面世了,既满足了国人的面子,也满足了国人快速开发的需要。其实,在C#之前JAVA也是一个不错的选择,可是当JAVA刚刚面世时,速度的确也太慢了,给人留了一个不好的印象。微软也常以此来攻击JAVA。不过,微软现在却推出了一个JAVA的孪生兄弟c#,不过比尔盖茨有言在先,开发软件就要假设硬件会升级。
   C++在工业控制,游戏、系统开发等几个领域有不可替代的优势,其他领域就不用考虑了。
   一个人有多大成就,取决于她的目光前瞻性。
   很多产品 都是在假设硬件会进步的前提条下开始开发的,比如,永中Office使用JAVA开发的,决定使用JAVA是三年前,那时候的计算机是什么级别,当时,如果第一天做决策,第二天产品就开发出来,这个产品可肯定的完蛋,可是开发是需要时间的,现在在考虑这个问题,当初永中的选择是正确的,因为硬件也的确进步到可以自己用JAVA开发的应用程序了。并且由于编译技术的提高,JAVA程序的运行速度也有了显著的提高。并且,JAVA先天的网络优势和跨平台特性,使解决网络办公易如反掌。
   如果,我们也来个假设,硬件会进步,那么我们可不可以用java开发游戏,答案是肯定的,现在许多网络小游戏就是用java开发出来的,将来可能所有的游戏都要给自己贴上网络标签,那么java将使他们的选择。c++的游戏使长江灰以比较快的速度失掉,估计不超过十年,c++将不再是游戏开发的主流语言。
   系统及开发,到目前为止,还没有人用 编译形之外的语言做过,就以操作系统为例,如果用java 做一个桌面操作系统,就现在客户端及其而言,估计大多数用户,恐怕都无法忍受它的蜗牛速度。
   工业控制,讲究一个安全,实时。是否 b/s 结构并不重要,java的网络优势并不明显。
   总而言之,c++不会消亡,但其应用范围,以不可能扩大,总体趋势日益缩小,最后将固定在那么几个领域。
    补充一下,还有一个领域,我没有提到,那就是底层通信领域,不过,在这个领域我看不到c++和c相比有什么优势。

2.我认为在选择工具之前,应该先考虑你想做什么,然后才能考虑语言和工具的选择。

如果你只想学习,并且不明白要做什么的话,那么 c# java 是你应该选择的语言。

如果你选择了上述语言,那么相对应的开发工具,c#可以使用 vs c# 或 c# builder.net,
如果 你选择了 java 那么 没有 比jbiulder 更合适的了。至于原因码,你可以 到 csdn
上转一圈或买几本 程序员杂志就明白了。

3.用JAVA开发游戏倒不是不可能,也许以后的网络游戏服务器端用JAVA开发是个不错的选择,不过硬件的进步和游戏相比起来永远要慢一拍。小游戏不说了,大一点的游戏,程序员只担心硬件不够用,再说游戏开发也不仅限于PC游戏,PS还有GBA等TV游戏平台的游戏开发几乎没有JAVA立足之地。说十年之后C++会失去优势还言之尚早。每种语言都有先天的优点和不足的,不是随着时间就可以轻意改变的,以后的发展将是各种语言各显身手,说哪种语言会被取代有些过于偏激。
学什么语言都要基础是没错的,这点我深有体会。不过也不用说得太吓人了。我12岁开始接触编程的,当时因为自己目标是开发游戏,又因为那一句“不懂C语言的程序员不算程序员”,所以选择了这个最难的语言,我用的开发工具是Borland公司的C++ Builder,版本忘记是多少了,后来买了学VC的书,转到用VC。当时我还是在读初二。
我现在18岁了,6年的努力也终于让我明白了开发程序倒底是怎么一回事,倒底应该怎么样去做。现在虽然什么东西也没做出来,但是感觉学语言方面没什么难处了,只要付出时间,总会有收获。
我刚刚成年,也还算个小孩子,不敢说什么大话教训别人。说说我的经验,只是想许多人不需要再像我一样走很多弯路。
第一点就是基础,基础好学什么都好,但基础不好也不要害怕,想当年我才初二,数学成绩也不好,说我有多少基础,还是一样学。但是不怕不等于不管,基础也和其它知识一样,可以学的,而且要花很多心思来学,想做程序,数学,英语决不可少,但这两个东西学起来比学编程要枯燥得多,而且要损失很多时间,对于大人来说,也就是会损失很多金钱的。看你能不能忍了。有句话长辈唠叨无数遍的,这里再说一下我想也没什么大碍——吃得苦中苦,方为人上人,很简单的道理。
第二点就是要多交流,和前辈,同辈交流经验,我就是因为没有多交流,所以走了许多弯路,直到最近两年来到网吧工作,接触网络多了,功力才突飞猛进,但是仍然感觉交流不是很直接,所以今年准备去读大学(我初三辍学的)。一为了基础,二也是为了更多更直接的交流。
第三点就是多余的了,但既然写了这么多,不在乎再多几个字——坚持!贵在坚持。我虽然从12岁开始学习编程,但是真正在学的时间算来还没超过一年,其中因为家境原因受到不少影响,但自己懒惰也是不可否认的原因之一。现在极度后悔以前浪费的时光。学习编程几乎是一个无限的过程,不会像大学一样有毕业,也不会像修行一样有结束的一天,学得越多,你才发现自己知道的东西原来这么少,所以想有所成,贵在坚持。
不再废话了。

2.我认为学什么语言并不重要,倒是看你拿到一门语言后,能不能很快上手.如果能的话你就好好的学下去,如果不行的话,那你可能就要考虑其它的了.每一门语言都有他的优势和不足,所以没有必要在选什么语上花费太多的时间.就算哪一门语言特别流行,但同时它也是很难掌握的.比如,java和C#,传说中它们的能力都很强大,但学起来都不那容易,而且对系统要求比较高,像java用的jbuilder起动一下就要好长时间,不像vc一点就出来了,而且jb光写一个hello world就要好都步周,用studio.net也同jb一样.两者的帮助文档都不是太好用...
学一门语言,一是要有兴趣,二是你要学得进去,三才是有钱途.如果你现在学的是一个很不入流的东东,但你学精了之后,再来看这些主流我东西就简单多了

3.Java和C++各有千秋,没有孰高孰低之分,想成为一流的程序员就必须学会C++,而想成为一流的设计师,学Java是一条捷径,如果你拿C++来学软件工程、来学软件架构或者设计模式,只会事倍功半,而且象现在流行的XP开发模式、单元测试驱动、每日构建、UML模型驱动以及重构都是以JAVA为基础的,然后再发展到C++上。
JAVA已经能够取代C++实施在企业级应用上,但它至今在实时系统、硬件控制上还很不完善,或者说这些领域根本就不适合JAVA,JAVA不象C++是个全能语言。而且在游戏上,象如今的RPG或者3D游戏,大概没有一个是JAVA编的(除了小型的掌上机游戏或者俄罗斯方块、围棋什么的)

4.我不是程度专业人员,但我由于时间太闲才玩玩VB打发时光,我觉得VB才是最好玩的开发工具!竟可以将别人的源代码和思路进行大段地偷窃,加以有机组合将几十个人的东西居然变成了自己的了!不到两天就可以开发出非常实用的程序!而且开发时直观性很强,象小孩玩家家非常好玩!不过,在控制系统上和编游戏不怎么好!但是还提个醒,VB可以利用它独有的特点编自己特点的游戏!就好象画画,国画,油画,水彩,工具都不同,不能说谁好,只要你会用,什么工具都可以画出好画来!

5.许多数学大师都说过:学数学一定要掌握数学方法和数学思想,但是一般来说数学思想要比数学方法重要的多。我想学语言一样,最重要的是掌握应用语言的思想,而不仅仅是要学最前沿的语言.

6.我觉得C++是一个很具有技术性的语言,B。S。的设计理念,思维方法,治学态度都是我一直深深钦佩的,如果想写出一个尽可能少出错、而又功能强大的程序来,我觉得C++是目前最好的选择。学习她可以让你的感到对真理探索的乐趣,当然,任何语言都是有先天的优缺点的,我很同意这句话,但问题是他的缺点是无故加上的,还是为了保证某些更大的优点而暂时牺牲的。这样的优劣搭配是不是最和谐的,符合客观原理的。我认为C++在这些方面做得非常好。
  看了很多留言,很高兴有那么多同-学,其实语言的好坏之分,还要看你当前的需求,如果只想用一种东西实现一个拼结功能,目的的大部分在于能用,那么C++也许便不是你最好的选择。每一个语言都无可避免地在技术上的严谨性 和 经济-简易性作出选择,C++的严谨正是她困难所在。VB是功能与简简便易用的成功典例,Delphi却有很中性。至于C#没有接触后,不敢发言。
  因此,我觉得C++也许不是每一个人心中最好的选择。但其背后体现的的理念却是每一个好的语言所必需的、是立言之本。
  看了FlyMagic的。。 感触颇深,也很高兴。希望和大家一起学习,进步。

7.其实学习C语言也不是很难,当初我用了一年的时间自学,并且用C语言开发很多程序,比如对BIOS的保存和恢复,读取硬盘的柱面数、扇区数、磁头数,还编写了一个侵蚀EXE文件的程序。当然,除了把C语言学好外,还应该看一些最底层的东东,因为用C语言开发底层的东东是非常方便的。
学习C语言最难的莫过于指针和指针数组,从表面上来说,这两个地方并不难,但是真正要把它的原理搞懂,还是要花费一些时间的。至于怎样才能真正学好C语言,我想首先在开始学习阶段,把书上的程序在自己的计算机上运行,看是什么结果,只有这样你才能真正掌握C语言的语法,其次应该多动手写一些程序,多看别人写的程序,我现在搜集了很多用C语言开发的病毒程序,因为我对这方面很感兴趣。
我觉得只要把C语言学好了,学习C++就很快了,因为C++的类跟C语言的结构差不多。所以我认为你只需把C语言学好,在其它操作系统中都带C语言,比如UNIX、LINUX,并且现在很多黑客程序都对这两个操作系统感兴趣,因为它们的安全性能都比WINDOWS高,如果把这两个系统攻破,就能说明你水平已经很高了,而这两个系统都带有C语言。
最后我想说的是,不要只学一门语言,还应该多学几门,因为在编写程序的时候,如果是比较简单的,不对底层进行编程的,可以用其它语言来开发。我现在在开发程序的时候,先是考虑这个程序复杂不,需不需要对底层进行访问,如果不需要,就可以用其它语言开发。例外如果你对底层编层比较感兴趣,我觉得除了学习语言以外,还应该对操作系统了解,因为很多底层开发都需要调用DOS中断。

8.如今的程序能实现功能是最基本的,更注重的是运行效率,想要编出效率高的程序,就必须具有灵活的逻辑思维能力,而逻辑思维能力又基于深厚的基础之上,当我们熟练了用C++来编写各种功能之后,是否应该回过头来重新看一下如离散数学,C++基础,算法与设计模式,编程思想以及那些经常被我们忽视却又是编程所必备知识。如果你想成为C++高手,千万不要忽视高等数学,离散数学,数据结构与算法,二进制十六进制等的基础学习,如果编出只能实现功能而完全忽视运行效率的程序,这样的程序员很快会被淘汰。

9.BLOCKQUOTE>引用“第21楼”所言
<Q>Visual c++是我学习的对象,但我总觉得不知道如何深入进去,希望哪位高手能为我指点迷津,    希望能和大家共同探讨,我相信C++的前途是光明的!我的选择不会变,永远不会!    我的e_mail:sunway2008cn@hotmail.com</Q></BLOCKQUOTE>

                                 我的回复


首先    先学好c++的面向对象的方法,搞清楚它所包含的理念,尤其是虚函数,继承,多态等关键点
其次    学习mfc,通过现有书籍和msdn,明白mfc的层次结构,初是化过程,rtti运行时类型识别,动态创建,serialize(),消息映射,命令传递等
再次    win32程序的基本概念,如开发流程,以消息为基础,以事件为驱动的含义,窗口(核心->进程->线程)的诞生与死亡,资源。
再再次   熟练使用vc集成环境,这一不虽不起眼却有事半功倍之效果。
最后才是开始学习visual c++ 语言的时候 ,你要搞清楚,c++语言是c++语言,vc是vc,一个问题两个概念。
总之,你今天学的少一点没关系,明天少一点也没关系,但是前完不要停顿。你每天打死一只苍蝇,十年之后也能有牛头那么大的一块肉。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值