该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
C++很先进吗?C++很优美吗?
lz去看看unix编程艺术那本书会发现c++和*nix之类格格不入。
做系统底层开发,c++比c的优势在哪里?效率和简洁性都不如。
苹果主推objective-c,c++不受其重视;
windows倒是大量使用c++也尝到苦头了,mfc就是例子。所以微软现在主推.net, winRT,
c++还在,但c#占据其主流;
google使用,c++,java,python等。google给的建议是c++只在对性能要求极高的地方使用。google不使用c,因为它几乎不做系统底层开发。chrome OS和android的内核是linux内核。
c++经过这么些年经久不衰,但也没太大的变化,尤其相比c#,java这些。比如代码重构,设计模式,c++相比c#和java来实现这些太难了,因为c++当初的设计问题。
比如重构里面的rename,在c#和java里很容易,但c++里却很容易出问题。c++的头文件,一些变量都是分散于各文件上存在,再加上宏,重构难道更大些。
c++无所不能,但里面隐藏的复杂性也要付出更大的代价。现代语言最明显的特征是有高效的自动垃圾回收器,但c++要手动。手动更高效在现实中只是在少数情况下,对特定的项目和特定的高手。但与此相比产生的内存泄露,内存的调试却是大多数c++程序员每天要面对的。
c++的特长和优势是做面向对象编程,做可视化界面编程,比如开发游戏,客户端。国内以前大部分做c++都是win32,vc++,mfc。
但这些东西,对*nix有何用?unix的编程风格和c++完全是相反的。一个是kiss原则,一个是do everything。emacs是个另类,但也是lisp的风格,和c++不同。
我对c++的感觉就是:能少用就尽量少用,除非对性能非常苛求。底层开发,嵌入式有c;逻辑层面的,有动态语言特性的,c#,java这些更顺手些。
不过,在国内好像c++依然比较吃得开,所以有时候为了就业,也就想不了这么多。总之,用什么语言要看是什么应用环境,要做什么。