none
现在一线企业做VC++的主要应用领域? RRS feed

  • 问题

  • 从ISO C++到VC++到MFC到COM到ATL到ACE和DirectX...

    学校生涯快要结束了, 2012就要进入社会了, 想请教一下各位前辈:

    1. 包括微软在内的一线企业(重点是国内), 现在用基于VC的技术, 在windows平台上主要涉及哪几个领域的应用开发? 

    2. 国内企业由于大量VC6的遗留代码仍然使用VC6作为开发IDE么?

    3. 顺便征求一下前辈的意见: 下学期可能要做一个和电台相关项目. 现在出于需求分析阶段, 目标群体是电台的相关工作平台. 我们的负责老师(PM)已经决定使用B/S结构.  基于ASP.net(C#), 当我问到前端播放模块是否考虑activeX的时候, 项目经理告诉我可能会考虑使用silverlight.  我的问题是: 在这个项目中, VC++优势在哪里? 最适合做那块开发? 是数据库(ADO)?  还是数据采集(关联特定专业声卡, 这个完全不懂)?   还是别的?

    4. 其实问题3的问题也反映了问题1,2的问题.  希望各位前辈解惑.

    争取准备明年3~4月的微软暑假实习生项目.

    2011年1月15日 15:09

答案

  • 1) 现在Windows 平台下主要的互联网应用还都是Visual C++, 比如迅雷、腾讯QQ、暴风、MSN Messenger 一类。 国内目前金融、电信行业的一些业务也是Visual C++ 写的比如招行个人银行专业版、中国电信天翼宽带等等。

    2) 就目前来看,仍有很多企业使用VC6 作为开发工具,但微软早已经不对VC6提供支持了。

    3) 其实我觉得用什么语言或者开发工具做,真的不是很重要。Silverlight 可以搞定,ActiveX 也可以搞定。 就算是用ActiveX 也不一定是VC++啊,DELPHI VB也可以写啊。 Silverlight 可能开发效率高一些,但是Silverlight 运行需要安装一个runtime。 如果对于小范围受众可能不是什么大事儿,如果针对全国几千万上亿的个人用户,那么就要考虑清楚了。 其实上面提到的互联网应用用.NET 去实现也不是做不到,但是考虑到部署的问题,VC++ 的程序还是有优势的。 因为runtime (CRT MFC ATL) 都是跟着操作系统默认装好的。 Java .NET 有时候就不具备这个优势。 比如www.imegabox.com 如果你在这个网站上预定电影票,那个页面就会提示你安装JRE,否则订票程序没法运行。 Silverlight 也是一样的情况。

    4) C++ 的代码效率高,编译好的程序易于部署。 从项目实施经验来看,对于.NET 项目,一个有过C++ 编程经验的程序员的代码质量总体要比一个从.NET 直接学起的程序员要好。 尤其在互操作(P/Invoke COM), 性能调优, 内存管理方面优势很明显啊。

    不知道你要申请哪里的intern ? 如果是MSRA、ATC 这些部门,那么你有C++的经验对你应该帮助很大的。 如果是Sales Marketing 部门比如CSS EPG 可能要求就低一些,会更好,不会也没关系会写.NET 代码就差不多了。 如果是GTSC,那么如果你不会C++,可能你就没法为用户分析dump了。


    Would you know my name, if I saw you in heaven......
    2011年1月15日 23:59
    版主

全部回复

  • 1) 现在Windows 平台下主要的互联网应用还都是Visual C++, 比如迅雷、腾讯QQ、暴风、MSN Messenger 一类。 国内目前金融、电信行业的一些业务也是Visual C++ 写的比如招行个人银行专业版、中国电信天翼宽带等等。

    2) 就目前来看,仍有很多企业使用VC6 作为开发工具,但微软早已经不对VC6提供支持了。

    3) 其实我觉得用什么语言或者开发工具做,真的不是很重要。Silverlight 可以搞定,ActiveX 也可以搞定。 就算是用ActiveX 也不一定是VC++啊,DELPHI VB也可以写啊。 Silverlight 可能开发效率高一些,但是Silverlight 运行需要安装一个runtime。 如果对于小范围受众可能不是什么大事儿,如果针对全国几千万上亿的个人用户,那么就要考虑清楚了。 其实上面提到的互联网应用用.NET 去实现也不是做不到,但是考虑到部署的问题,VC++ 的程序还是有优势的。 因为runtime (CRT MFC ATL) 都是跟着操作系统默认装好的。 Java .NET 有时候就不具备这个优势。 比如www.imegabox.com 如果你在这个网站上预定电影票,那个页面就会提示你安装JRE,否则订票程序没法运行。 Silverlight 也是一样的情况。

    4) C++ 的代码效率高,编译好的程序易于部署。 从项目实施经验来看,对于.NET 项目,一个有过C++ 编程经验的程序员的代码质量总体要比一个从.NET 直接学起的程序员要好。 尤其在互操作(P/Invoke COM), 性能调优, 内存管理方面优势很明显啊。

    不知道你要申请哪里的intern ? 如果是MSRA、ATC 这些部门,那么你有C++的经验对你应该帮助很大的。 如果是Sales Marketing 部门比如CSS EPG 可能要求就低一些,会更好,不会也没关系会写.NET 代码就差不多了。 如果是GTSC,那么如果你不会C++,可能你就没法为用户分析dump了。


    Would you know my name, if I saw you in heaven......
    2011年1月15日 23:59
    版主
  • 谢谢Michael版主的认真解惑...

    3.1) 我说一下我对于您对我的第三个问题回答的想法. 也许我在程序员这条道路上还差得很多. 未曾领略到高人领略到的, 也就是前辈所说的"其实用什么语言或者开发工具做,真的不是很重要" 的境界. 我之所以希望我在新项目里担任我所熟悉语言技术开发的责任, 可能我觉得: "我熟悉VC++, 我有较完整的vc代码库, 我不用过多的考虑IO, 异常, 容器, COM等语言细节的东西, 可以专注于完美我负责的模块的设计, 而且是我认为优雅巧妙的设计". 而如果开始学习c#, siverlight(我对C#.net技术的理解可以说只限于当初使用c#做了一节课的设计模式的报告)则完全不是这么回事. 我欠缺快速学习一门语言并且投入生产的能力, 总觉得要相对深入了解语言内幕后才能开始设计项目, 有点完美主义倾向了.

    3.2) 我知道我这样的想法是不对的. 我有一个朋友和我一样, 熟悉vc++的开发, 但是在去新浪实习后, 马上转为python语言的开发工作了, 而且适应良好. 我也希望利用过完年后开学的这个ASP.net的项目, 通过对c#, siverlight的学习, 适应这种快速转型, 投入生产的能力. 希望前辈能在这个问题上给予一些建议.

    至于申请哪里的intern, 我现在在着手整理我的个人经历和项目经历, 还没有明确申请部门. 但是我个人优势我还是很明确的. 我个人同时热衷于技术和演讲. 所以如果我以后能有幸加入微软, 希望能走技术转型市场的路线. 也希望前辈能如何进入微软这个门槛提供一些建议.

    2011年1月16日 3:26
  • 我说一点儿小体会啊。 我觉得各位为团队的贡献不在于你会什么,而是你为团队做了什么。 如果大家都不会VC++,又或是大家都觉得用Silverlight 好呢? 如果你一味的坚持,你就会被边缘化。 这在任何团队都是一样的。 反过来,如果你能做团队中其他人都做不了的事情,而团队又很需要这个技术,那么你在团队中就非常重要了。

    我前阵子做了一个Visual C++ 的项目, 其实,我也没写太多的代码。 而且我也承认我绝不是团队中Visual C++ 代码写得最好的人。 后来这个项目放出去公测,发现了很多的bug,异常退出,甚至蓝屏。 我就边学边做用Windbg 为大家查找问题, 到最后几乎就不怎么写代码了。 我这么做,第一可以帮助同事加快定位问题的速度,第二可以为团队省掉大笔的GTSC 开case 的费用。 这就是我在团队中的价值。

    设计模式真的很重要。 但反过来说,并不是应用了越多的设计模式的软件架构,就越是接近完美的架构。 这就是所谓的过度设计问题。

    从个人发展来说,你欠缺的能力,恰好就应该是你最需要弥补的。 短板理论就不再赘述了。

    如果你想通过intern,进而成为微软的FTE, 那么你需要做好长期打算的准备。 一般来说,微软转FTE 第一要看表现, 第二要看老板是否有足够的headcount。 intern 一般都是打短工,邮箱都是t- (temp)开头。 如果做得好,就有可能给一个中间职位 v- 或者 i- 又或者a-, 工资可能不高,保险福利近乎没有。  如果表现优秀,并且老板有headcount,那么才有可能把你alias 前面这些零碎去掉, 成为FTE。 我说的这个过程也许很长也许很短, 要看你个人的表现和运气。 有的人i- 了几个月半年就是FTE了。 有的人一直v- 或者i- 几年都没动静。


    Would you know my name, if I saw you in heaven......
    2011年1月16日 23:41
    版主
  • 正如Michael 所说,不要不思想局限于一种语言。一种语言再精妙也只是实现的一种方式。对于你说的可以专注于完美我负责的模块的设计, 而且是我认为优雅巧妙的设计。我倒觉得你提到的这些语言把底层的一些细节封装得很好。你不需要牵扯精力在维护内存泄漏等方面。可以更好的对系统进行设计。例如我以前用.net,在codeplex上用到的企业库。还有WCF以及WWF都给我的系统实现提供了良好的框架和引擎。思想很重要,而不应该排斥过程中使用的语言或技术。
    麻烦把正确答案设为解答。
    2011年1月17日 1:45
    版主
  • 谢谢Michael版主和SplendourG版主的解答.

    最后一个问题.

    假设你们没有接触过c#.net和siverlight技术, 但是项目组又已经决定要使用这些技术进行开发, 你们会如何快速的学习并且投入开发呢?

    2011年1月17日 6:55
  • 学习加实践。Hello world

    去codeplex上面找最佳实践,都有Hand on lab或者quick start

     


    麻烦把正确答案设为解答。
    2011年1月18日 2:24
    版主
  • 我也是在考虑这个问题,在学校的时间已经不多,总是希望能集中自己的时间学习好一个语言。。
    2011年3月3日 17:28