[其它] 红旗还能挺多久?C++能用来干什么?
bigpanda
2007-04-29
Adobe宣布Flex 2开源了,于是去看了两天。初步结论,Flex/Flash的威力是强大的。
当初觉得天天对着计算机搞底层的东西太枯燥,想着写商用程序可以和人打交道,而且要掌握行业知识也算是跨学科,于是上了这条贼船,现在发现这行的本质是在数据库里读读写写,还是底层的东西更有趣些。不过一家人等米下锅,商用程序也是衣食父母,那么就虔诚的静心写好商用程序。 现在的商用程序,几乎都要有个web界面,HTML本身交互手段简单,于是现在Ajax大行其道。 我对Ajax不算精通,也没有努力去搞过,因为这门技术的局限性太大,很多事情做不了。比如想写个像样点的editor,就很困难。Ajax里面没法控制Cursor。 FCK editor用的都是Brower本身带的HTML editor。现在Ajax的应用,已经逼近这门技术的极限。 而Flex,才刚刚开始。 我这两年一直断断续续在写个小型CMS。有些Ajax做不到的事情,打算用C++写Browser plugin, 得写两套,IE的ActiveX一套,FireFox一套。现在看来可以用Flex来做了。 以前我说Web三板斧,一是regular HTML form,二是Ajax,三是Browser Plugin,现在看来要改成三是Flash 9了。 那么我就在思考,用C++能来做什么呢? C++的优势在什么地方? 我想来想去,只想到一点,执行效率。 不过这一点也不是永恒不变的。 Java在Server端的执行效率很高,这个Hotspot在运行中观察代码是如何运行的,把最热点的函数直接嵌套到呼叫者去,不用setup stack。 .NET的程序,安装时可以选择是否编译成native代码。 这种不直接生成native代码而通过中介转一下的方式,保证了二进制代码可以对本机的CPU进行优化,AMD还是Intel,哪个型号的CPU,这种优化方式是C/C++静态编译无法做到的。 内嵌式,实时编程,这还是C/C++的天下,总结一句只要资源不够,没法跑虚拟机,就得用C/C++。那么一般PC机呢?在这上面编程,什么地方还能用上C/C++? GUI程序是用不上了,要找跨平台的解决方案,用flash,Windows上,WPF。 数据库程序和Web,呵呵,更别提了。 打开我们的计算机看看,除了CPU,内存,磁盘,还有三大卡,声卡,视卡,网卡。 高端服务程序,目前还是要靠C/C++,这些程序都要用网卡。音频,视频方面的程序,也要用C/C++。编游戏就更别提了。 写虚拟机,编译器,当然C/C++也有用武之地。 圈子里的朋友都在用C/C++做什么呢?大家交流交流。 我们学习C/C++的目的是什么呢? (在我个人来说,JVM是C++写的,将来想研究研究源代码。另外方面希望有天能够在裸机上,用汇编写写程序,个人爱好吧。) |
|
wzgme
2007-04-29
我是开发PC平台的地震解释处理系统。涉及很多复杂算法,大规模数据处理,并行计算,三维可视化。追求高效稳定快速。目前看非C++不行。
|
|
shi5jin
2007-04-30
呵呵。斑竹不用这么悲观的。c/C++不会那么快就被历史所淘汰的。如果真是那样,我相信那些大牛们也不会有那么多时间再出个C++0x
恰恰相反,正如BS教父所说的那样,C++有一个稳定的使用群体,而且这个使用群体的规模在稳定的增长。可能不如java以及一些时髦的新技术那样是爆炸式的增长,不过,这是由于C++的基数大而造成的。好比美国和中国的GDP增长速度,没有什么可比性。可以相信,C++在可预见的未来,还是一些高端用户的首选。 不过楼主的考虑也有一定的道理,归根结底就是C++的主要应用领域是什么。我们不得不承认,没有哪种语言是万金油,可以在所有领域内大兴其道。坦白讲,我不熟悉java语言,不过用过好多java语言写出的软件,最有名的就是IBM出的eclipse。完全动态的一个软件,用起来感觉很方便。但是不容忽视的2个问题就是第一,极其消耗资源。如果“效果”全开的话,对CPU、内存的要求是相当高的。第二、稳定性有待商榷。我不是CS科班出身,可能没有理性的认识。但个人认为,想java、ajax、php、脚本语言,他们的设计哲学,可能不是开发健壮、高效、易维护的程序,而是高效、容易的开发程序。他们的主要目的是能快速、大批量的“生产”软件。如果拿服饰行业来说,更像是成品衣,批发外带零售。而C/C++,或者其它底层语言,其语言本身所包含的哲学就是要安全、简洁、高效、优雅、易维护,不断的追求这些方面 的技术极致。这就好比我们去裁缝店量身定做一件高档西服,体贴、合身、个性与品位。这和其它的应用是完全不同的领域。前者固然有NIKE、华伦天奴这样的知名品牌,你完全也可以考虑。但是,有些场合这些领子上贴着铭牌的衣服是穿不得的,只能考虑量体裁衣。 并不一定是资源不够的地方才用得到c/c++,就好比不是我们穷的只能买便宜货。恰恰相反,如今c/c++应用最活跃的IT、电信、金融业无一不是最烧钱的产业,可是为什么在这些领域的关键部门大家都毫不怀疑的使用c/c++?真是由于资源的原因么?我所用的开发平台基于ATCA架构,每个刀片上拥有2个3.0G intel双核CPU,配有2G的内存,80G硬盘,可是我们依然使用c/C++。而且不仅仅是我们,在我所接触到的这个领域,几乎所有厂家都在使用c/c++。我不是资深人士,不能更深的讨论这个问题。不过这种现象一定尤其内在的原因的。我的理解是,好比那些真正有金钱、有地位的人,他们的衣服,可能都是定做的,而不是什么NIKE或者金利来。 所以我们坚定的相信,c/c++在可以预见的将来,依然会是极富生命力的语言。就像他们在以往20多年当中一样,依然以稳健、坚定的步伐,默然前行! 当流行已成为历史,经典必然闪现光芒! |
|
bigpanda
2007-04-30
To wzgme:
你做的东西比商用程序好玩多了。 To shi5jin: 我这不是悲观,我是在思考C++的应用领域。 电信业里面,Erlang很火呀。当然Erlang VM可能也是C/C++写的。金融业我不熟悉。 C/C++看来得当OS,VM,编译器的DSL了。:D 你说的ATCA是指Advanced Telecommunications Computing Architecture? |
|
shi5jin
2007-04-30
是的。
|
|
simohayha
2007-04-30
越来越不喜欢java了,不过没办法,还要靠它吃饭。
在python中国邮件列表里的一个老大发的感慨: 嗬嗬嗬,影响力不是自个儿说的, 自由世界中的影响力和贡献成正比的, 俺不是C程序员,对于这些好软件的直接补丁根本没谱, 顶多在Py 扩展上作点儿事儿…………这也是外国公司拼力影响中国高校不要教授纯C 的本质原因-- 人家根本没有打算你中国人掺合核心技术的开发来, 而中国也就相信JAVA C# 等等高级语言是主流了^__^ 俺也是受害者之一,只是发现并喜爱了Python 而已; 呵呵,俺也只恨当年在学校里没有好好学c.现在正在苦读中。 要说为什么学c,一句话只是兴趣。 |
|
qiezi
2007-04-30
效率就是很大的优势了。
公司做的是WEB项目,原来人少时,100万用户以下,php就可以应付了。现在用户超过6000万,同时在线就有近百万,每天几亿PV,为了保持用户在线聊天,用户不断发ping包每秒就有几十万次,这时候php/python/java都不好用了,底层数据库对于前端PHP根本不可见,要经过多个不同功能的cache,hibernate这类根本用不上。因为效率的原因需要用C++去实现底层平台,再让上层的php/python/java这些胶水们调用。。你也可以用java去实现,不过需要的服务器数量肯定是C++的3倍以上了,而且这种底层的东西java未写编码比C++快。 java/python/php/ruby比C++的最大优势就是字符串处理,WEB项目大部分时候又都在处理字符串,查询数据库写业务逻辑什么的java并不比C++有优势。C++库太不齐整了,如果标准库里有线程、网络、正则表达式这些常用的东西,哪还有java的份?一次编译到处调试和一次编写到处编译有什么不同?无非是对于新手入门的难度不同罢了,但java项目一般也不是java新手在做。 这几年刚好赶上互联网发展快的时候,做项目几乎都是做WEB项目,于是这些语言都发展起来了。C++做的项目数目实际上也一直在增加,增加的速度比不上java/python而已,但C++的传统地位并没有动摇。硬件再怎么发展,只要C还是开发操作系统的首选语言,这个地位就动摇不了。你可能说,硬件速度以后提高100倍,用java写的程序也比现在用C++写的快,但需求总是不容易满足的,那个时候我对于系统的实时性要求也提高了100倍,成本也想降几倍,这时候就只能去比较是人力成本高还是硬件成本高了。。。不过那时候估计搞C++的都在拿低保了,公司大概还是愿意雇这些便宜的程序员吧。。。不好说。。 |
|
wzgme
2007-04-30
在石油行业中,从勘探解释处理的,油藏数值模拟的,地质绘图统计的.............行业软件基本都是C++的,而且主要是引进国外,主要是在Unix/Linux工作站上的。还有虚拟现实解释中心,并行计算中心,上边基本都在跑C/C++的程序。去年国内超级计算机排第一的就是大庆引进的一套HP集群。
至少在石油工业界,C++的行业软件一定是多数。 to:bigpanda 我做的也算商业软件,虽然现在是国家出钱让搞。但是我们希望能够最后商业化,和国外的软件比,能够抢到一份市场。 |
|
simohayha
2007-05-01
呵呵,python的话,它有一个巨大优势,和java,ruby相比就是和c良好的结合。
|
|
小帽子
2007-05-11
学校一开始学的就是C++ 到大3才开始接触JAVA 或者C#
|