首先说说c++和c#的用途区别:
毫无悬念的,c++拥有很多低级语言的特性,最明显的是,可以让开发者自由支配内存(搞过汇编的都知道,设备其实都是映射到内存的,所以某种角度来说支配内存就是支配硬件),所以c++绝对适合于底层开发,例如:驱动、服务、网络通讯,甚至于直接用来写操作系统。而c#,算了吧,这辈子也就是个“高级语言”的命了!
再说语法:
c#更时尚,更新潮(甚至还“所见即所得”),很好很强大。c++则背负了太多语法和结构上的负担。比如一个函数,必须先声明,后使用,代码编写顺序上一点都马虎不得;还有共有和私有函数的摆放,绝对无象c#那么灵活自如。
嗯,你觉得这是c++的缺点么?
悄悄相反,正是他的优点啊!你你可以在递归的时候懂得“现场”,你可以在函数调用的时候明白“堆栈”,你可以在编写窗口的时候懂得“资源”(此处有别于c#的“资源”概念)。而c#的使用者,甚至几乎没听过这些概念!于是乎——“技术专家”慢慢退化为“产业工人”了!
再谈谈性能和功能吧,虽然.net框架一再优化试图赶超c++(性能和功能2方面),但是这几乎是个不可能完成的任务。想想c++中的“内联函数”(c#中现在还没有,因为那个“不面向对象”?),再看看c++的“模板”(相当于c#的泛型),OK,一个新潮的语言,正在不停的追赶古董语言,说明什么?
当然,C++也不是十全十美的,它虽然不用依赖于.net框架,但是还是要依赖于运行库的。
另外,不得不说,学习c++(学到精通,而不是大学的谭浩强C)真的很难,你需要一颗能驾驭CPU的大脑
毫无悬念的,c++拥有很多低级语言的特性,最明显的是,可以让开发者自由支配内存(搞过汇编的都知道,设备其实都是映射到内存的,所以某种角度来说支配内存就是支配硬件),所以c++绝对适合于底层开发,例如:驱动、服务、网络通讯,甚至于直接用来写操作系统。而c#,算了吧,这辈子也就是个“高级语言”的命了!
再说语法:
c#更时尚,更新潮(甚至还“所见即所得”),很好很强大。c++则背负了太多语法和结构上的负担。比如一个函数,必须先声明,后使用,代码编写顺序上一点都马虎不得;还有共有和私有函数的摆放,绝对无象c#那么灵活自如。
嗯,你觉得这是c++的缺点么?
悄悄相反,正是他的优点啊!你你可以在递归的时候懂得“现场”,你可以在函数调用的时候明白“堆栈”,你可以在编写窗口的时候懂得“资源”(此处有别于c#的“资源”概念)。而c#的使用者,甚至几乎没听过这些概念!于是乎——“技术专家”慢慢退化为“产业工人”了!
再谈谈性能和功能吧,虽然.net框架一再优化试图赶超c++(性能和功能2方面),但是这几乎是个不可能完成的任务。想想c++中的“内联函数”(c#中现在还没有,因为那个“不面向对象”?),再看看c++的“模板”(相当于c#的泛型),OK,一个新潮的语言,正在不停的追赶古董语言,说明什么?
当然,C++也不是十全十美的,它虽然不用依赖于.net框架,但是还是要依赖于运行库的。
另外,不得不说,学习c++(学到精通,而不是大学的谭浩强C)真的很难,你需要一颗能驾驭CPU的大脑