1. VC实际上没有想象中那么流行,有被夸大的成分。国外我不了解,只谈国内。
曾经连续若干年,无论是学校图书馆,还是新华书店,还是XX培训班,VC绝对是主力。
很多大学在开设C/C++课程时,要么还停留在TurboC时代,要么就是一律VC++,鲜有
其它开发环境。图书馆和书店,铺天盖地都是VC++,都是24小时精通,都是速成,都是
深入浅出,都是内幕云云。几乎看不到其它开发工具的影子。这给我们一种错误的讯息,
VC很强大,整个社会都在用VC。当我第一次看到Linux的时候,甚至有些恐惧,竟然还有
这么不一样的windows。当我头一回用GCC和Vim的时候,惊慌失措。我想,很多人应该跟
我境遇差不多,身边充满VC的影子,多到让人窒息。其实,脚本语言也挺流行的,只不过
大环境让我们直到工作后才体会得到。2. VC真的在没落。
桌面软件的开发,曾经是VC独步天下,C#刚出来的时候,被不少人当作笑柄,要装一个巨大
无比.net才能使用。直到现在,使用C#开发桌面软件仍然是少数,至少我电脑里只有一个索
爱手机的管理软件。这种情况将要得到改写,因为Vista开始,.net已经默认集成到操作系统
中了,就跟以前的MFCxx.dll和MSVCRT.dll一样。用过C#的人都知道,C#很方便,无论是对OO
思想的支持程度,还是做GUI的RAD,都非常方便。再看VC,MFC渐渐淡去,这么多年也几乎没
多少进步,微软对之支持力度也是远远不如.net, WTL是好东西,可是没有官方支持。即使是
VC.net,也比不上C#,毕竟C#是为了.net而生的。3. VC在很多方面开发效率不高。
并不是说VC在退步,而是他进步缓慢。在很多领域,取代VC的工具渐渐崭露头角,Python的快速
开发能力相当惊人,Java也有非常丰富的库支持,本来用VC做的一些小项目,拿他们来做,节省
了大量的开发时间。微软的VC类库,倒是很多年没大动静了。特别是涉及到互联网功能的地方,
VC被很多工具超越。其实,与其说VC/MFC在没落,倒不如说是微软对产品的定位更加正确和清晰了。
在Windows驱动开发领域,在性能非常重要的地方,在游戏开发上,VC还是会继续发挥作用的。
只是,他不再被当作全能选手培养了,他有自己专注的地方。尽管如此,我估计,VC在国内教育界还是会火热下去,中国国情不同嘛
DOS, QBasic, TurboC等等 哪一个不是在国外衰退后,还狠狠到中国来流行了几年现在很多没有历史遗留问题的项目,已经开始用C#,Java,QT,Python,Ruby,Php之类了
当然,桌面个人软件,VC估计还是要继续一段时间,毕竟Windows7不是那么快就能取代XP的这些年来,没有那么快被淘汰的,却是被人诟病的所谓大学里的没有用的基础理论就我个人经历而言,算法和设计始终贯穿我所有的项目,它们是不可替代的东西
即使有替代,也只可能是A算法代替B算法,或者A设计代替B设计最近看招聘信息,VC的踪影已经越来越少
曾经连续若干年,无论是学校图书馆,还是新华书店,还是XX培训班,VC绝对是主力。
很多大学在开设C/C++课程时,要么还停留在TurboC时代,要么就是一律VC++,鲜有
其它开发环境。图书馆和书店,铺天盖地都是VC++,都是24小时精通,都是速成,都是
深入浅出,都是内幕云云。几乎看不到其它开发工具的影子。这给我们一种错误的讯息,
VC很强大,整个社会都在用VC。当我第一次看到Linux的时候,甚至有些恐惧,竟然还有
这么不一样的windows。当我头一回用GCC和Vim的时候,惊慌失措。我想,很多人应该跟
我境遇差不多,身边充满VC的影子,多到让人窒息。其实,脚本语言也挺流行的,只不过
大环境让我们直到工作后才体会得到。2. VC真的在没落。
桌面软件的开发,曾经是VC独步天下,C#刚出来的时候,被不少人当作笑柄,要装一个巨大
无比.net才能使用。直到现在,使用C#开发桌面软件仍然是少数,至少我电脑里只有一个索
爱手机的管理软件。这种情况将要得到改写,因为Vista开始,.net已经默认集成到操作系统
中了,就跟以前的MFCxx.dll和MSVCRT.dll一样。用过C#的人都知道,C#很方便,无论是对OO
思想的支持程度,还是做GUI的RAD,都非常方便。再看VC,MFC渐渐淡去,这么多年也几乎没
多少进步,微软对之支持力度也是远远不如.net, WTL是好东西,可是没有官方支持。即使是
VC.net,也比不上C#,毕竟C#是为了.net而生的。3. VC在很多方面开发效率不高。
并不是说VC在退步,而是他进步缓慢。在很多领域,取代VC的工具渐渐崭露头角,Python的快速
开发能力相当惊人,Java也有非常丰富的库支持,本来用VC做的一些小项目,拿他们来做,节省
了大量的开发时间。微软的VC类库,倒是很多年没大动静了。特别是涉及到互联网功能的地方,
VC被很多工具超越。其实,与其说VC/MFC在没落,倒不如说是微软对产品的定位更加正确和清晰了。
在Windows驱动开发领域,在性能非常重要的地方,在游戏开发上,VC还是会继续发挥作用的。
只是,他不再被当作全能选手培养了,他有自己专注的地方。尽管如此,我估计,VC在国内教育界还是会火热下去,中国国情不同嘛
DOS, QBasic, TurboC等等 哪一个不是在国外衰退后,还狠狠到中国来流行了几年现在很多没有历史遗留问题的项目,已经开始用C#,Java,QT,Python,Ruby,Php之类了
当然,桌面个人软件,VC估计还是要继续一段时间,毕竟Windows7不是那么快就能取代XP的这些年来,没有那么快被淘汰的,却是被人诟病的所谓大学里的没有用的基础理论就我个人经历而言,算法和设计始终贯穿我所有的项目,它们是不可替代的东西
即使有替代,也只可能是A算法代替B算法,或者A设计代替B设计最近看招聘信息,VC的踪影已经越来越少
VC继续会火 这个事肯定的 百足之虫死而不僵
毕竟 大量的软件的更新 维护 都是要靠VC来做的
从汇编语言充当主流开发工具
到C语言被人接受并广泛采用
到C++的广泛使用
到Java的大面积应用
到脚本语言的大行其道软件开发中的一些思路正在转变
开发效率在大部分时候都显得比运行效率更重要
更低硬件消耗带来的利益 很容易被更高的人力成本消除曾经 我们非常强调性能
甚至为了优化流水线和分支预测写出晦涩的代码
现在大概只能在OS源码级别,才能见到那些东西
做普通应用软件的时候,你会努力提高cpu cache命中率吗?然而 现在为了提高可读性和降低维护成本
甚至可能会使用增加硬件消耗的方式完成任务
好几种重构方式会降低运行性能如上面有人所讲,“社会分工”正在越来越清晰,软件业的生产工具越来越牛掰
合适的工具做合适的事情,正确的方法解决正确的问题,这是最理想的顺便调查一下
现在还有多少人 为了减少软件体积或是增加性能
选择 纯粹汇编 + INVOKE Win32API?
各有利弊的。
我用VB一年,DELPHI半年,C#.Net三年(做Windows开发)VC也只是熟悉而已。
觉得哦!
C#.Net跟VB差不多,简单容易上手,但是比VB功能强大的多。
C#.Net跟DELPHI比,还是有些类似的地方,可能就是两个工具都只能开发操作系统上的开发吧!
C#.Net跟VC比吧!对于Windows开发我觉得各有利弊而已。只是VC在移植方面做的比较好吧!
再有就是怎么说呢
只能说哪个工具提供的类的多少而已!
你要是厉害用NET也可以呀
你只能用基础类型
别的任何类都不用
还不是跟C语言一样!
就拿嵌入式开发来说吧!
他也只适合于单片机而已,一个芯片就那么大,你不可能定义个类型比较大的吧!
我自己的理解!
开发工具的不同是方向的不同
可是语言都是一样的
一个会C#的程序员,未必能在1个月内学会VC,
这就是区别
替代VC?应该还不可能吧。
再说了,VC也好、JAVA也好、C#也好、DELPHI也好,都是一个工具而已,我以前遇到个牛人是做DELPHI开发的,但我问过他C#的问题,问过他VC、MFC的问题,人家照样能从容不迫一一解答,掌握原理什么工具都好用。
控制什么呢? 是直接操作硬件还是调用系统API?
我觉得软件到现在这种程度,大部分精力应该是花在处理业务逻辑上,而不是跟业务没有关系的技术细节。
一个写浏览器的程序员,犯不着自己实现一遍TCP/IP,更不用关心网卡电平信号是如何变化着的。
什么是精准呢? 用其它语言开发出来的东西,不方便实现精准吗?
我觉得没有一个软件是允许不精准存在的,如果程序不能精确的照意图运行,它就是错误2. C/C++更稳定更健壮.
C/C++的编译器比其它语言的编译器更加稳定? 还是说同样逻辑的代码,编译出来的二进制更稳定?
虽说编译器和CRT对稳定性健壮性有一定影响,但更多的时候,依赖的不是编译器也不是CRT,而是人和机器
人可以写出更健壮的代码,机器可以存在一定冗余,非常重要的关键性应用,没几个不带灾备的吧?3. 其它编译器都是C/C++写的,所以C/C++不会没落。
实际上并不是所有编译器都是C/C++写的,例子很多,就不赘述了
任何主流语言都可以写编译器,只要支持字符串处理就可以
以前编译器都是汇编语言写的,以后C/C++也会被新事物取代
编译器和操作系统,这是没有其它语言可以太多竞争的地方,它也是C/C++所擅长的
但是这种基础设施在整个软件环境中,能占多大比例呢?4. VC/MFC更加底层,可以随心所欲。
是的,确实相对底层一些,控制力也更大一些,但是软件开发的重心已经不是底层了
而是跟底层最好没有关系,完全针对业务相关的东西进行开发
即使拿做界面来说,能调用系统API的语言环境并不只有VC,delphi也可以调用API
Freepascal也能调用API,MFC终究还是要调用API的,都是调用API,哪里来的更底层
的控制呢?5. VC/MFC更加灵活.
如果这个灵活是指封装的弹性,那么很遗憾,MFC虽然流行,它的封装却不是很突出,至少在2009这个时间
GTK,WxWidgets,QT,甚至几年前的OWL,VCL,或者说现在比较强悍的WTL,都不属于MFC吧
顺便指出一个概念性问题
我提出的观点是VC/MFC的没落,而不是C/C++的没落,两者不能混为一谈
如果微软给VC整合了跟QT一样丰富和强大的库,我也就不会说它没落了从我自身角度看,学校和社会很多年来,都在孜孜不倦的向我灌输VC天下无敌的思想
以至于当我接触到Linux,GTK,QT之类东西之后,我居然有一种莫名的恐惧感
一直坚信的神物,不得不重新审视,请它走下神坛来ps:
我刚工作时,一切都想用C/C++来做,后来没能如愿,全部都是php+python+java+bash
即使偶尔用到C/C++,也只是封装一些很底层的东西,并不用其实现业务逻辑
VC则是完全没动用过,先后两家公司,我们的东西都是Linux/UNIX上的,开发环境也不在本地
需要ssh登陆上去做开发,只能Vim和Emacs二选一,不过Vim编辑起来是要比VC舒服些业余时间写点东西,我还是会使用C/C++,那是我最熟悉也最喜欢的工具
只知道,用VC可以做些小东西
省去我工作中好些麻烦的事情~
可以用他来写c++类
真犹豫要学那种界面开发库呢,
大家指教下哦,我不太喜欢搞界面编程
觉得搞算法挺有意思的,哎,天不随人愿,没机会。
负载均衡,多机热备,快速切换等等,跟具体的语言没什么关系
与内核相关的时候,C++的特性被完全剥离,C语言就足够了
正因为实时性和可靠性的要求 底层的实现要求非常稳定和健壮
使用C++来做这个事情 会带来相当的复杂性和不必要的开销
所以流行的操作系统没有用C++实现的 全是C+汇编你说的那些底层的东西,也是在system call以上,线程池,内存池等等都是封装了一组系统调用
为了项目修改通用的OS内核,使用自己的调度器,使用自己的资源管理方式,往往是得不偿失的
从呼叫系统调用看 C++跟其它语言比 除了声明和参数类型外 并没有多少方便之处
资源管理这类相对底层的东西,除非是在做驱动或者做OS内核,业务为核心的系统中,比重应该是很小的
即使用到了,也是C比较多,threadpool, libevent,memory pool等等,都是C语言封装的
几乎所有的libxxx,提供的都是C接口况且,那些都是C/C++,跟VC/MFC扯不上什么关系
为什么VC要跟MFC一起说呢,因为这两个东西结合最紧密
抛开VC谈MFC是空谈 抛开MFC谈VC 倒不如说cl编译器或者C++随着Linux和嵌入式平台的发展
很多时候,我们都要求有跨平台的能力
这种需求之下,VC/MFC直接被无视了
连QQ都出Linux客户端了,迅雷Linux版也快了题目倒不如改成没落的MFC,这样就更加准确,避免误解了
但是很多软件的开发包都支持VC开发,但不一定支Delphi或者VB
mfc的特点是和windows共享了部分类库,并跟os同步,提供了os的风格。对于mfc而言,继承封装,消息机制都还是不错的,不需要用户特别管理,只能说mfc包装的这一套现在的确是不流行了
还有mfc使用了文档-视图的结构,作为ms的ide,内嵌mfc,可以缩短用户学习的周期,对简单的应用不需要
构造基本代码。容易上手,这也是当初流行的原因。
说mfc存在问题,是肯定的。类库复杂,程序结构不太清晰,深入开发困难大。
这其实是降低入门的一个负作用。但是下功夫吃头mfc,改用其他平台基本不存在什么难度。所以如果是短期上手的话VC肯定是不行的,不过如果深入学习写代码,尤其和windows相关的,vc/mfc肯定不会没落(个人观点)
另外就是算法和数据结构和开发语言和框架没有任何关系,再有就是现在高校里据我所知没有VC/mfc相关的课程了,基本上都是有门软件工程之类的课程,作个类似于管理系统,大部分人用的确实是java
本来是想学习VC的 但是我觉的用VC来做有点小题大作 还有我有一定的VB基础 就选择了VB 单片机的程序一般是用汇编和C来写的 我怕学了VC 把VC和C的语法弄混
就是故意不去开发如同Windows优化大师之类的软件去清理系统
他们完全可以做到,为什么微软还要这样做呢?赞同楼主部分观点。
然而,google的搜索引擎运行在Linux主机上,跟VC扯不上什么关系
操作系统是C和汇编 ,UNIX类系统则是gcc派的,跟VC没任何关系,跟MFC更加没关系打个比方,如果一个地产商曾经垄断了全国楼市,而现在只在一两个小城市里有能力垄断,算不算是没落呢?VC的门槛高吗?
徘徊在语言和工具层次的人群来说,门槛是高了些,那些人用什么工具都一样,不容易得到高薪水的职位
3年工作经验的人,做php/python开发的,也有很多年薪>15万的,VC也有很多年薪连5万都拿不到的
真正的区别应该是内在,即那些与语言和工具无关的部分,语言和工具的掌握,比起内在要简单多了
程序员金字塔的结构中,排在什么位置,并不是看用的什么工具,而是算法,设计,系统原理等等基本功举一个VC比.net简单的反例并不能证明VC就更方便
我随便举个例子,将一个整数的字节序改变一下
汇编程序员只要 bswap 一条指令就完成了
高级语言恐怕没那么容易,甚至有些人不知道该怎么做
platform independent是软件开发的趋势之一
从机器指令到汇编,到C/C++,到Java,到脚本,每一次需要了解的底层都更少
越接近人类活动,就越跟底层无关,工具自身的发展,是接近人类,而不是让人类去适应C++程序员并不比Delphi程序员优越,也不会比VB程序员优越,也不会比html程序员优越
越来越多的公司认识到了这一点,所以现在招聘的时候,好点的公司已经不要求掌握XX语言了
只要思维好,只要基本功好,掌握任何一种计算机语言都是能接受的,甚至跟他们业务不怎么相关的语言
===============================
算没落。但它既然还有垄断的地方,就还不会死。VC的门槛高吗?
徘徊在语言和工具层次的人群来说,门槛是高了些,那些人用什么工具都一样,不容易得到高薪水的职位
3年工作经验的人,做php/python开发的,也有很多年薪>15万的,VC也有很多年薪连5万都拿不到的
=================================
1、薪水好像不能用田忌赛马的方式来比较吧。
2、关于门槛,不仅仅是指技术上。从语言本身来说,目前只有C/C++语言才是最纯正的平台无关语言(别提微软的CLI,那是他们自己加上的),它的任何规范都只考虑语言因素,平台相关的内容通过C运行时库和C++运行时库单独定义,超出的部分则由平台提供自己的库,体现在Windows平台上,[C++] + [API] = [VC++],API是Windows库,跟语言是分离的。纵观其它语言,其实都是根据现有平台的特点(例如GUI)来设计和发展自己的语言。想学好VC,就必须同时学习C++和API,其它平台也是类似的。真正的区别应该是内在,即那些与语言和工具无关的部分,语言和工具的掌握,比起内在要简单多了
程序员金字塔的结构中,排在什么位置,并不是看用的什么工具,而是算法,设计,系统原理等等基本功
=========================================
1、真正搞算法的人只有极少数人,所以不能比较算法
2、设计很重要,但是设计脱不开语言和开发环境,而且只有对语言和工具很精通才有资格搞设计
3、关于系统原理,难道还有哪种语言不需要掌握系统原理?举一个VC比.net简单的反例并不能证明VC就更方便
我随便举个例子,将一个整数的字节序改变一下
汇编程序员只要 bswap 一条指令就完成了
高级语言恐怕没那么容易,甚至有些人不知道该怎么做
================================
再次解释,VC肯定没有.NET方便,我的例子也不是反例,而是我的亲身体会。platform independent是软件开发的趋势之一
从机器指令到汇编,到C/C++,到Java,到脚本,每一次需要了解的底层都更少
越接近人类活动,就越跟底层无关,工具自身的发展,是接近人类,而不是让人类去适应
================================
就因为了解的底层太少,出了毛病才找不到原因,就像人类需要医生来解决身体遇到的问题,但不需要每个人都去做医生。C++程序员并不比Delphi程序员优越,也不会比VB程序员优越,也不会比html程序员优越
越来越多的公司认识到了这一点,所以现在招聘的时候,好点的公司已经不要求掌握XX语言了
只要思维好,只要基本功好,掌握任何一种计算机语言都是能接受的,甚至跟他们业务不怎么相关的语言
================================
1、实话实说,我多少有点优越性,但这种优越性建立在我了解其它语言的基础之上的,只有对比才能发现真相。在CSDN我回答过许多跨语言调用代码的问题。
2、好像我还没见过有哪个公司招人时对语言没要求的(学生除外),当然JAVA/.NET/ASP/PHP的招聘确实比C++多得多。