我知道嵌入C用于与其他语言沿微控制器。但如果该控制是从PC,以及我有两个可能的候选者(Java和C ++)

Java是简单,也容易开发者友好,当涉及到线程或GUI,当然C ++的是这么多更好的性能(我知道电脑速度越来越快,而且性能依赖于良好的算法),但编译生成文件,共享库和交叉编译浪费很多,当我应该在其他重要问题进行技术性工作时间照顾的。

但我仍所面临类似的Java不支持,并强迫你使用clone()或复制和时来到阵列,这是一个巨大的烂摊子常量引用,

请注意:我将使用反向运动学,也许神经网络模式识别。这需要吨计算。但正如我说我还关心项目(开发,性能,用户友好性和快速部署的速度)

的整个生命周期

我语言之间摇摆,我打算长期学习的过程,所以我不想浪费在错误的语言或假设(不要求),所以请大家帮忙,我希望这个问题不会被认为是主观的,但一个参考。

欢呼声

有帮助吗?

解决方案

我个人倾斜朝向C ++。 Java有一个垃圾收集器,它可以随意把你的应用的睡眠。在C ++中我一定要收集我自己的垃圾,这给了我激励产生的却很少。此外C ++允许宏,我知道已经宣布的坏事的通过Java的nistas,但我为缩短代码,使之更像一个DSL的方式使用。使代码更像一个DSL是我缩短开发努力和最小化引入错误的主要途径。

我不认为Java是固有的速度低于或者C ++或C IME缓慢(和量纲)不是来自他们如何旋转周期,但是从设计的做法,他们鼓励你跟随。好东西,他们给你,像集合类,通常都是精心打造的,但是,这并不来自使用-他们,因为他们是如此的方便阻止你。

IME,性能良好的秘密在于有尽可能少的数据结构尽可能(即最小的垃圾),并保持它作为归一化成为可能。这样一来,你尽量减少需要保持它通过消息波一致。该数据必须未标准化的程度,最好是能够容忍暂时的不一致,你定期打补丁,而不是试图保持它总是通过的通知(其中面向对象的语言鼓励你们这样做)是一致的。除非仔细监测,这些使它非常容易引入性能的bug。

下面是一些这些点的一个例子。

其他提示

为什么你消除C 2

为什么你认为Java有更糟糕的表演,然后C ++?有些东西一样好,C ++,并且很容易在不同的平台使用java程序没有什么麻烦。

只要拿起你感到舒服的语言和你有最丰富的经验,并用它去了。

我不会太担心,在首场演出 - 写任何一种语言,你觉得舒服的代码,然后重构必要

您可以随时使用像JNI调用出来的C / C ++如果需要的话,虽然Java和之间的性能差距C / C ++是隔靴搔痒这是什么?

根据您的情况,Java是没有更快的部署比C ++。这主要归结为:你保证你的测试平台相同的环境,你是在生产?随着各种现代化的补充,C ++的,有什么理由表明Java是对开发者更加容易,除非你还在新的C ++语言。

这一边,你有性能问题。除非它是一个实时系统,没有任何理由,以消除任何语言只是还没有。如果智能编码你的Java(例如,尽最大努力避免复制的对象并在最常用的部分创建垃圾),性能差异将不会受到太大明显的计算密集型进程。

总而言之,我觉得你过分集中于这两种语言的教科书的定义,而不是实际使用。你还没有真正给予任何理由来选择一个比其他。

Java是更加便携一些,但据我所知的唯一真正的因素这样的事情是个人喜好。

这将真正如果您更加详细地描述你的问题的帮助。

您愿意用IK,这可能暗示一些机械臂操作。什么不说是你的实时性要求。如果它要在A级生产线,这将是很难逃脱被垃圾收集语言。

Java是巨大的。有一些非常成熟的NN库(Neuroph,Encog)这可以为您节省大量的编码时间的。我不知道任何IK库,但我敢肯定,也有至少好矩阵运算库的帮助。

在Java中的垃圾收集是越来越好。最新的一个(G1)是很多比什么都好,但即使是最好的你可以得到是的的实时性。所以,你不能指望自由暂停运行。

在另一方面,你可能也想看看一些专门的环境 - 用MATLAB的工具箱的机器人和人工智能。我认为这将产生最快的原型。

如果它要生产比你几乎用C或C ++卡住。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top