Java|所以,C++会消失对吗
文章图片
似乎每个我认识的开发人员都在赞美C#和Java之类的语言时会批评C ++ 。 不要误会我的意思 , 我并没有表示C#和Java不好 -他们是一个伟大的广泛语言 。
但是 , 在我已经学习和使用的所有语言中 , 到目前为止 , C ++是我的最爱 。 我将在下面解释原因 , 并反驳它收到的批评 。
大多数Java / C#开发人员都不喜欢C ++ , 因为它缺少垃圾回收 。 但是我通常只会说“编程时我不会吐垃圾”
更重要的一点是 , 出色的代码不需要垃圾收集器 。 在堆上分配内存时 , 应随后将其删除-这就是重写默认析构函数的目的 。 在使用指针之前和之后 , 都应将其设置为NULL 。
另外 , 自动垃圾收集虽然很方便 , 但是却要付出很高的性能成本 。 这就是为什么不应将.NET语言和Java之类的语言用于密集型计算 , 图形密集型游戏或任何需要大量CPU能力的事物的原因 。 对于Java来说更是如此 , 因为它的字节码在虚拟机中运行 , 同时还处理垃圾回收 。
开发人员还说C ++完全不提供内存泄漏保护 , 但是相反 , STL中包含的类包含许多防止内存泄漏的保护措施 。
例如 , 如果我实现了一个包含对象列表的向量 , 那么我不会简单地在不再使用的元素上使用delete关键字 。 显然 , 这将导致指向垃圾的列表索引 。 向量容器本身具有为此目的而设计的称为擦除的成员函数 , 并且通过向上移动列表的内容以利用释放的存储空间来防止挂起指针/迭代器 。 这可以有效地防止由于矢量导致程序尝试访问已被破坏的元素而导致的内存泄漏 。
如果程序员花时间确切地了解CPU和内存中发生的事情 , 而不仅仅是语言本身的语义 , 那么一切都会变得很有意义 , 并且C ++无疑将变得更容易学习和适应 。
【Java|所以,C++会消失对吗】
与其他语言相比 , 我更喜欢C ++的另一个主要原因是它完全灵活 。 它是一种多范式语言 。 即 , 程序员不限于高级的面向对象的编程 。 它也可以用于过程/底层系统编程 。 因此 , C / C ++用于设备驱动程序 , 内核和整个操作系统的制造 。 实际上 , 如果您愿意的话 , 还可以通过将C ++程序嵌入到内联ASM函数/块中来执行原始程序集 。
您不会看到太多用Java或.NET编写的操作系统 , 内核或设备驱动程序 , 因为它们完全依赖于外部框架 , 在该外部框架中 , C ++生成完全是系统本机的二进制文件 。
- Java|淘宝商家要小心了!取消的“中差评”体系又回来啦!
- W侃科技|因为环保所以不送充电器和耳机?家里多就不送?新用户不配拥有?
- javascript|游戏开发之旅-JavaScript重新介绍
- Java|java多线程并发小demo
- Java|java程序猿如何才能走远,怎么做自己的职业规划
- 蚂蚁花呗|血亏!阿里P8轻易把总结了近一年的java高级特性笔记送人了
- 百度|Java高级进阶多线程学习之路(七)ThreadLocal
- C++|当有这么多简洁的语言出现,你为什么还选择C++
- javascript|家里宽带是300M的,但是实际测速才2M应该这样维权。
- 编程|C++从入门到精通的最佳方法