Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/139.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从Java转向c++;_Java_C++ - Fatal编程技术网

从Java转向c++;

从Java转向c++;,java,c++,Java,C++,在过去的3年里,我一直在开发基于C#(.net)和Java(J2EE)的应用程序 但现在我觉得,Java、C#让你变得跛脚(从学习的角度来看),你可以快速开发应用程序,但你无法理解编程的基本概念 >我试图学习C++,但是我发现它有点“混乱”,因为指针、多继承、一些约定和C++中不存在的其他概念在java中不存在。你们有什么建议?我该怎么想 谢谢 P:我是一个学生,在世界上一直都有这样的变化。 < P>我认为,你应该先学习C,以便正确理解C++的基础。拿起Kernighan和Ritchie的《C

在过去的3年里,我一直在开发基于C#(.net)和Java(J2EE)的应用程序

但现在我觉得,Java、C#让你变得跛脚(从学习的角度来看),你可以快速开发应用程序,但你无法理解编程的基本概念

<> >我试图学习C++,但是我发现它有点“混乱”,因为指针、多继承、一些约定和C++中不存在的其他概念在java中不存在。你们有什么建议?我该怎么想

谢谢


P:我是一个学生,在世界上一直都有这样的变化。

< P>我认为,你应该先学习C,以便正确理解C++的基础。拿起Kernighan和Ritchie的《C编程语言》,这本被广泛认为是该语言的最佳参考书,开始阅读。一旦你完全理解了C,你就有了所需的底层基础。

C++与任何其他现代编程语言相比都不再是“基本的和底层的”。它有一个计算机模型(一个平面内存地址空间),但操作系统和CPU仅使用多层缓存和分页来模拟该模型,因此它不是“真实的”。结果是,同一操作有时可能需要比其他时间长1000倍的时间才能完成

现代C++也有许多强大的抽象,它们与计算机如何工作没有直接关系,而不是爪哇和C语言中提供的抽象。OP提到了多重继承——显然没有其他OO语言中的继承那么简单。从Java中省略C++的许多其他特征是高级抽象(或者允许您构建它们),因此java java在某种程度上是较低级的语言。在java中,操作符符号的含义总是相同的,而C++中,一个简单的<代码>=< /COD>可能会生成一个对象,该对象将被用来生成SQL表达式而不是在进程中执行。 < j>和CLR运行时(几乎可以肯定)用C和/或C++编写,所以从这个意义上讲,它们显然是在今天形成层的。但是在C/C++层,您仍然将在一个抽象中工作,而不是“机器如何真正工作”,因此您将真正学习一组不同的抽象,而不是“现实”。并且可以专门设计操作系统(或者实际上是硬件芯片),使JVM或类似CLR的运行时成为系统的本机底层;在这样的系统上,C/C++运行时需要“高级”(昂贵)仿真层才能工作


因此,学习如何在“现实”中编程可能不值得。现在没有人真的这么做;这是浪费时间。您最好学习编程抽象如何帮助您编写正确的程序。如果一种语言让你的生活变得困难,那并不能证明你在做“真实的事情”。这只意味着你为你要做的事情选择了错误的语言。

我建议先学习汇编语言。这将为你在低水平发生的事情提供一个非常坚实的基础。这也有助于强化“一切都只是一个地址”的观念

选修一门专注于汇编语言的课程是明智的,因为它会“强迫”你学习汇编语言(就我个人而言,我不认为ASM很有趣,但我选修这门课是值得的(也是毕业的要求)

在了解汇编之后,继续进行C和C++。


祝你玩得开心

继续学习。它有更好的对象。这是一个虚拟机。除非你想要一台真正的机器,否则请看绿色阵列或矶鹞/约翰·里布尔

自由线程解释版本遍布“网络”。为了练习。理解后,编写自己的直接线程版本。或者看看福思公司,为你的机器买一台,或者使用他们的免费windows版本

Java是Forth/C的混合体,因此,如果你想使用Java,你将拥有一些东西

教育:

开始前进-布罗迪 思考-布罗迪

第二本书对任何语言都很好,因为它是我所知道的关于保理的最好的书。在网上免费提供这两个版本

如果你想做一个硬件/FPGA的第四代堆栈机器:Koopman的新浪潮


上述所有书籍都是免费的。

听起来你在避免大多数人犯的第一个错误,那就是假设新语言与旧语言相同。C++是不同的,应该作为一种新的(W)语言学习。 我建议在我的大学中使用介绍C++类的参考。

之后,再看看前面编写的java软件,看看如何将它们翻译成C++。语法可以很容易地从中引用。在执行此操作时,重要的是要记住所有不同的语法代表什么,以及它如何改变软件中正在发生的事情(即两种语言之间的差异)。这样做的另一个好处是,您可以看到两种语言(以及一般编程语言)的底层体系结构是如何表示的。我不知道有哪本好书能在封面下解释编程语言是如何工作的,或者我推荐这本书

然而,如果您对学习编程工作方式感兴趣,那么汇编语言将是一个很好的起点。是我用来学习汇编语言的,它非常有用。

汇编语言


从Z-80开始。然后添加“x86”。那就试试68000吧。然后介绍了ti320系列DSP。您可能还希望添加Z-8。看看不同的机器是如何做到的

如果你想了解编程语言的基本概念,我建议你读一本书,比如约翰·米切尔的《编程语言中的概念》。接下来,为简单语言编写一些解析器/解释器。另一个很好的资源是SICP,它