是否有没有C陷阱的C++风格的语言?

jmu*_*llo 11 c++ language-design

如今,使用C++而不是托管语言的主要原因是为了获得C++带来的好处.C++的支柱之一是"你不为你不需要的东西买单".可以说有时候你不想支付与C的向后兼容性.许多奇怪的C++怪癖可以归结为这种向后兼容性.还有哪些其他语言,"你不为你不需要的东西买单",包括向后兼容C?

编辑/澄清:对我来说,真正的杀手是第二句话.是否有一种真正设计的语言,并没有强加你不想要的代码?C++将其作为其设计理念:不想要RTTI?它不存在.不想要垃圾收集?它不在那里.C++的问题在于它(IMO)在拒绝与过去相冲突时违反了这一要求.我不希望与20岁代码的向后兼容性阻碍我的前进.C++不愿意这样做.什么是/有?

编辑2:我想我应该更清楚一下成本是多少.有多种潜在成本.我最初关注的是运行时成本.

在C++中,通过虚方法的多态性有成本.但并非所有方法都支付这笔费用.调用非虚拟C++方法,其运行时成本与普通旧C函数(具有至少一个参数)相同.C++不要求您使用多态.在其他OOP语言中,所有方法都是虚拟的,因此无法避免多态性的成本.

运行时成本是最重要的,但其他成本可以减轻这种影响.汇编语言显然会有最少的运行时开销,但汇编语言的编写和维护成本是一个巨大的打击.

考虑到这一点,我们的想法是找到提供有用抽象的语言,这些抽象在不使用时不会影响运行时成本.

Igo*_*kon 23

D语言

D是通用系统和应用程序编程语言.它是一种比C++更高级的语言,但仍然保留了直接编写操作系统API和硬件的高性能代码和接口的能力.D非常适合与开发团队一起编写中到大规模的百万行程序.D易于学习,提供了许多帮助程序员的功能,非常适合积极的编译器优化技术.

D的一般外观就像C和C++.这使得学习和将代码移植到D更容易.从C/C++过渡到D应该感觉很自然.程序员不必学习全新的做事方式.

D删除C源代码兼容性.已经完成了维护源代码兼容性的C扩展(C++和ObjectiveC).如此多的遗留代码阻碍了该领域的进一步工作,不太可能实现重大改进.