[其它] 红旗还能挺多久?C++能用来干什么?

Uranus 2007-05-16
   其实我也有搂主同样的疑问,我以前是做web应用的,现在转入c++,因为我涉及的领域比较少,刚才看了下前面的帖子,觉得c++涉及的领域也很多呀。我个人认为Java现在主要也是web这块比较火,再加上IBM之类的大公司在推,但是反过来说,C++已经走向成熟,它的使用领域已经定型,所以说可以说C++还是要走很长的路。
   我现在公司在做嵌入式娱乐产品,全部都用的c++,linux。
oldrev 2007-05-30
楼主讲的不错,C++在可以预见的将来仍然由一大批稳定的用户。
C++的确非常难,但是掌握了之后就会发现学其他语言只需要看几眼就可以学会了。
pangyi 2007-06-15
如果那C++与Java比谁简单,那要看谁在使他们了。

拳法并无强弱之分,而练武之人有强弱之分!
netpcc 2007-06-20
我觉得C++的发展趋势很不好.
引入了模板和偏特化之后简直在挑战人类智力的极限.

运用boost时,一个error信息有上百行,根本不知道在说什么.Debug极端困难.
wzgme 2007-06-20
呵呵,那本来就是大牛们的绝技,库设计显身手的地方。
平时就调用STL,自己写个Template封装点小算法,很满足了。
bigpanda 2007-06-20
netpcc 写道
我觉得C++的发展趋势很不好.
引入了模板和偏特化之后简直在挑战人类智力的极限.

运用boost时,一个error信息有上百行,根本不知道在说什么.Debug极端困难.


这个macro和template,都是生成代码,凡是生成代码,都是剑走偏锋,简直是邪门武功。代码要经过两次翻译,才能在机器上执行。第一次翻译是在个Abstract Machine上执行。

这个macro还算简单,而且编译器都有开关,可以看看预处理后的结果。这个template,就不容易了,编译器不支持生成template instanization后的结果。所以大脑就得充当这个Abstract Machine,累啊。

要想做到这一点,得通晓C++ Specification,当个语言律师。不然一般书上写的东西都不完整,时不时会遇到新的情况肚子里面嘀咕,这种情况怎么办。

读这个Specification,干巴巴的没劲,它自有一套术语,而且读这个之前还得读C的Specification。时间精力消耗巨大。

关于这个代码生成技术,我所知道的还有Lisp的Macro。对Ruby, Python都不甚了了,不过感觉他们还没超过Lisp的高度。

对函数编程语言也不太了解,不知Haskell里面有什么玄而又玄的代码生成技术。
xjx922 2007-06-20
C/C++的用处我认为目前在这些方面:
1. 操作系统, 谁要是弄个虚拟机上运行的OS, 估计是脑子有毛病。虽然Sun弄了个基本是Java的desktop os,不过是要证明一下Java能勉强做这个事,可毕竟还是离不了C/C++, 否则JVM自己用ASM/Java写,哈哈。
2. 大部份游戏。
3. 图形图像处理和CAD. 除了汇编,没有什么比C/C++更适合操作硬件了。
4. 科学计算。
5. 嵌入式系统。
6. 驱动程序。
7. 没有界面或简单界面的服务程序。
8. 军工。
9. 工业实时监控软件系统。
10. 虚拟机,像JVM, .Net。
11. 高端服务器程序。
12. 语音识别处理。
13. ...
C/C++的缺点是没有各个平台统一简单易用的GUI库、网络组件库、正则表达式库之类。但是离了C/C++, 可以说整个软件工业玩完。
时髦的短平快项目或软件像Web应用,当然不是C++强项。
ASM, C, C++, Java, C#, VB, Ruby, PHP, perl甚至Matlab这样一些语言我都使用过,若说C/C++没用了我一点也不赞同。可以预见,在相当长时间内,在上述特定领域C/C++仍会一枝独秀。
netpcc 2007-06-21
bigpanda 写道
netpcc 写道
我觉得C++的发展趋势很不好.
引入了模板和偏特化之后简直在挑战人类智力的极限.

运用boost时,一个error信息有上百行,根本不知道在说什么.Debug极端困难.


这个macro和template,都是生成代码,凡是生成代码,都是剑走偏锋,简直是邪门武功。代码要经过两次翻译,才能在机器上执行。第一次翻译是在个Abstract Machine上执行。

这个macro还算简单,而且编译器都有开关,可以看看预处理后的结果。这个template,就不容易了,编译器不支持生成template instanization后的结果。所以大脑就得充当这个Abstract Machine,累啊。

要想做到这一点,得通晓C++ Specification,当个语言律师。不然一般书上写的东西都不完整,时不时会遇到新的情况肚子里面嘀咕,这种情况怎么办。

读这个Specification,干巴巴的没劲,它自有一套术语,而且读这个之前还得读C的Specification。时间精力消耗巨大。

关于这个代码生成技术,我所知道的还有Lisp的Macro。对Ruby, Python都不甚了了,不过感觉他们还没超过Lisp的高度。

对函数编程语言也不太了解,不知Haskell里面有什么玄而又玄的代码生成技术。

我觉得C++试图用类库来实现语言层面上的东西,所以才会把事情搞得那么复杂。像Boost中的仿函数,for_each,slot/signals, traits, bind,lambda,typeof等都应该是语言层面的东西,却用类库来实现。

函数重载,运算符重载,Copy构造器,cast重载,虚函数,typedef,模板类,模板函数,偏特化,traits再用macro混在一起。每种都有匹配顺序问题。
一句话后面要转几十个弯。怎么搞得清最后出来的是什么东西。编译一把十几个小时。

实在是太佩服写C++编译器的人了。C++编译器应该是最复杂的编译器了吧?估计在自然语言编译器出现前很难有语言赶超了。
tangfeng 2007-06-21
我们主要用来做煤矿,钢厂里的监控系统!非常赚钱的啊!
cookoo 2007-06-22
金融这块银行系统因为IBM在推,用Java的越来越多,不过核心很多依然是Cobol,还有些遗留的系统基于矢量语言APL。金融分析特别是衍生品建模C++是主流,虽然一直被人诟病non-business细节太多,但为了速度没办法。也有个别公司使用Ocaml的case, Haskell也在尝试杀进这个领域。

bigpanda: Ocaml的meta programming技术是基于操作AST的,应该和Lisp一个级别的。功能很强,但也比ruby/python那样只要eval的复杂得多。Haskell有动态编译技术,类似Erlang的热代码修改,还没机会深入了解。

Global site tag (gtag.js) - Google Analytics