Pau*_*ang 7 c++ java programming-languages
在此之前,让我首先澄清一下,由于我的知识有限,以下的想法纯粹是我的个人意见.我没有任何意图说C++不酷.
我已经编程C++一年了,我认为它确实有一些很酷的功能.然而,我觉得有点空虚和失望,因为我没有真正从C++中学到任何"改变思维"的东西,从一个碰巧以前学过Java(作为第一语言)的人的角度来看.
根据我读过的很多帖子,人们更喜欢C++,因为它更快.对于像我这样没有编写过时间关键应用程序的程序员,我还没有机会欣赏这一点.
到目前为止,我所学到的似乎都是关于语法的.这就是我们用Java编写类的方法,以及如何用C++编写它.这是如何在Java中继承,以及在C++中如何做等等.(我知道,多重继承很酷,但对我而言,并不是一个改变思维的事情.我认为很酷的是能够回答为什么Java没有/不能支持多重继承,这应该是更通用的比单继承).
不知何故,对我来说,所有这些只是语法,到目前为止,我的思想在编写C++之后似乎没有增长.我认为我的问题是用"Java-mind"编写C++程序.正如许多人所说,我真正想要的是在学习一门新语言后改变我的思维方式.我还没有用我的C++来解决这个问题.
我还可以编写几个小的Python程序.但是,我觉得害怕对它有更多的了解,再次,它只是学习一种新的语法,一种新的做事方式,只是不同而不知道原因.
我打算学习C来真正了解事情.我认为这将是一种非常"涉及"的语言.
让我知道你的想法,请给我一些建议.
PS:顺便说一句,C++中有一个我想确认的特定问题.在C++中,如果我是正确的,以下面的方式写入效率不高:
private A computeAndReturnA(){...}
Run Code Online (Sandbox Code Playgroud)
相反,将其写为:
private void computeAndReturnA(A& a){...}
Run Code Online (Sandbox Code Playgroud)
与第一种方式一样,复制返回的值(当我们指定b = compute ...时)并引入一些低效率?(在Java中,我认为第一种方式在含义上是明确的,在效率方面还可以,因为它通过引用传递内容)
简而言之,你完全错了.事实上,与Java相比,C++提供了大量的自由.
例如,您可以在堆栈上分配类.Java不提供这一点.您可以在编译时计算某些值.模板提供的功能远远超过泛型.您有能力将某事物作为参考或价值.在Java中,所有这些选择都会从您身上移除.就像在C++中,您可以扩展多个类.您不必强制扩展Object.如果您愿意,确定性资源清理.我可以继续下去.
如果您所做的只是学习语法变体,那么以完全可以接受的方式使用C++是完全可能的.但是,C++提供了许多你在Java中看不到的东西.
简单的事实是,Java更像是C++的一个子集,具有更大的标准库,加上反射和运行时代码生成,我想.
我更喜欢C++,因为坦率地说,Java充满了任意限制.你知道为什么Java中没有"朋友"声明吗?因为詹姆斯·高斯林认为这违背了他的原则.大.棒极了.现在我需要将我的实现分成两个类,并且必须假装它是两个具有单独封装的实现,因为他在十年前认为这不是正确的事情.这就是为什么Java糟透了的个人例子 - 你编写了James Gosling所说的应该如何,而不是你想要的方式,或者在很多情况下,你应该如何实际应该如何.
另外,我看了你的PS.这就是为什么C++有一个合适的编译器.实际情况是,几乎所有编译器都会将第一种形式转换为第二种形式,而其他一些你不想知道的令人费解的优化也是在幕后完成的.
| 归档时间: |
|
| 查看次数: |
397 次 |
| 最近记录: |