在这个年龄段的多种语言,似乎是一个伟大的语言的只是每个任务,我发现自己的专业斗争的一个口头禅"什么,但C快",在那里快真的是意思是"快不够"。我的工作非常理性的开放态度的人,谁喜欢比较数字,以及所有我们的想法和意见。你能不能帮我找到我的方式去主观意见并进入"现实世界"?

你会帮我找到研究为什么如果其他任何语言可能会被用于嵌入式和(Linux)系统编程?我很可能推动一个虚假的假设,并将大大有更好的研究来展示我这个。能不能请你链接或者包括良好的数字,以帮助保持"这就是他/她的意见"的意见至最低。


因此,这些都是我的特别要求

  • 记忆不是一个严重的制约因素
  • 可携带性不是一个严重的问题
  • 这不是一个实时系统
有帮助吗?

解决方案

"没有什么但是C快[足够的]"是一个早期优化和错误的对所有原因,早期优化是错误的。如果你的系统具有足够的复杂性,其他的东西比C是可取的,然后将有系统的一部分,必须是"快速足够"和部件与较轻的约束。如果编写代码,例如,在蟒蛇会得到项目完成得更快,更少的错误,那么你就可以按照与一些或C会代码,以加速时间的关键部分。

即使事实证明,整个码必须C编写或组装,以符合性能要求、原型设计的语言喜欢蟒蛇能有真正的好处。你可以把你的工作Python原型和逐渐更换零件C码,直到达到必要的性能。

所以,使用这些工具,让你得到的发展工作做了最正确和最迅速,然后利用真实的数据确定你需要的最优化。这可能是C最适当的工具开始的时候,但是肯定不是总是,即使在嵌入式系统。

其他提示

以我的经验,使用C嵌入式系统程序不一定是性的问题-这往往是一个可携带性的问题。C往往是最便携式,以及支持语言上的几乎每一个平台,尤其是关于嵌入式系统的平台。

如果你想使用其他东西在一个嵌入式系统,这是经常的事搞清楚什么可供选择,然后确定是否业绩、存储的消耗,图书馆的支持等,都是"足够好的"您的情况。

使用C嵌入式系统已经得到了一些很好的理由,其中"表演"是唯一一个未成年人。嵌入式非常接近于硬件、你 需要 手册的记忆寻址与硬件。所有Api和软件开发工具包提供给C。

只有几个平台,可以运行为Java VM或单,这部分是由于性能的影响,但也是由于昂贵的执行费用。

除了性能,还有另外一个考虑: 你会最有可能处理的低级别Api,设计用于在C或C++.

如果你无法使用某些SDK,你只会让自己陷入困境,而不是节约时间与发展中采用更高水平的语言。至少,你会重做一堆功能的声明和不断的定义。

C:

  • C经常是唯一语言,是支持一个编译器处理器。
  • 大多数图书馆和例码的概率也在C。
  • 最嵌入开发商已经多年的经验C但是很少的经验,在其他任何东西。
  • 允许直接硬件接口和手册,内存管理。
  • 很容易整合与大会的语言。

C是要在多年的到来。在嵌入式发展其垄断地位,窒息任何试图在改变。语言需要一个像Java VM或Lua是永远不会去的主流中嵌入式的环境。编译的语言可能会站一个机会,如果它提供令人信服的新的特点在C。

有几个基准上网之间不同的语言。他们中的大多数你会找到一个C或C++的执行工作的顶端,因为他们给你更多的控制,真正优化的事情。

例如: 计算机语言的标准的游戏.

这是很难说的对C(或其他程序的语言,如Pascal调制-2,Ada)和大会嵌入。有一个大的成功历史与这些语言。一般来说,要删除该危险的未知数。试图使用任何其他C或大会,在我看来,是一个未知数。有的说,没有什么不对与一个混合模型中使用的一个方案转到C,或蟒蛇或Lua或JavaScript作为一个脚本语言。

你想要的是能够迅速和容易地转到C,当你有要。

如果你说服队去的东西,未经证实的给他们,该项目是你的cookie。如果崩溃,它可能会被看作是你的错。

这篇文章 (由迈克尔*巴尔)谈到使用的C、C++、汇编和其他语言中的嵌入式系统,包括图形显示出的相对使用情况的每一个。

和这里的另一条款,恰当的标题为 贫穷的原因拒绝C++.

在有些情况下需要的实时性,特别是在嵌入式系统。你还有严重的存的约束。语言状C让你有更大的控制的执行时间和执行的空间。

因此,这取决于你在做什么,C很可能是"更好"或更适当的。

看看下面的文章

Ada是一个高级别的编程语言,这是设计用于嵌入式系统和关键任务系统。

这是一个快速的安全的语言,具有数据的检查建的无处不在。这是什么自动飞行员在飞机编程。

这个链接 你有一个之间的比较Ada和C。

你可能想看看 D 编程语言。它可以使用一些性能调整,因为有一些领域蟒蛇可以超越它。我不能真正点,你要基准比较,由于没有保持一个列表,但指出,由彼得*Olsson 基准和语言实现的 已D数字火星。

你也可能想看看这些可爱的问题:

C是无处不在,可用于几乎任何建筑,通常的一天-一个处理器可用性。C++是靠近第二个。如果你的系统能够支持C++和你拥有必要的专门知识,用它优先于C-这是所有得C是,多,因此有几个原因不能使用它。

C++是一个更大的语言,并有结构和技术支持,可能会消耗资源或行为不能接受的方式在一个嵌入式系统,但这不是理由不使用的语言,而是如何使用它适当。

Java和C#(上Micro.Net 或畏缩)可以可行的替代品用于非实的时间。

我不是一个真正的系统/嵌入程序,但它似乎对我的嵌入程序一般需要确定的业绩,立即排除了许多垃圾收集语言,因为他们是 的确定性。然而,有工作上的确定性的垃圾收集(例如,节拍器Java: http://www.ibm.com/developerworks/java/library/j-rtj4/index.html)

问题是一个制约因素做的语言/运行时满足确定性、存储器使用等要求。

C真的是你最好的选择。

还有一个差异对于写作的便携式C码和太深入的酥油飕飕的特点的一个具体的编译器或情况的语言(所有这些都应该避免)。但是,便携性的编译和编译版本。雇员人数,将能够发展或维持代码。编译器要有更容易的时间和产生更好的、更清洁、更可靠的编码。

C是不会去任何地方,与所有新的语言正在设计要解决的缺陷所有现有语言。C,与所有的缺陷,这些新语言是试图解决,仍然强劲。

这里有一些文章,比较C#C++:

http://systematicgaming.wordpress.com/2009/01/03/performance-c-vs-c/

http://journal.stuffwithstuff.com/2009/01/03/debunking-c-vs-c-performance/

不正是你要求,因为它没有一个专注于嵌入式的C节目。但这很有趣不过。第一个演示性C++和福利的使用"不安全"的代码,用于处理器的强化任务。第二个有点揭穿第一个并且表示,如果你写的C#码有点不同,则性能几乎相同。

所以我会说,C或C++的可获得性能而言,在许多情况下。但是,往往时间的保证金是渺茫。是否使用或C不是另一个话题。在我看来这真的应该依赖于手头的任务。但嵌入式系统往往没有太多的选择。

几个人已经提到的Lua。人们我知道曾与嵌入式系统已经说Lua是有用的,但它不是真正的自己的语言本身,而是更多的图书馆可嵌入在C。它是有针对性的对使用嵌入式系统和一般只想叫Lua码从C。但纯C使用更简单的(虽然不一定容易)维护,因为每个人都知道这一点。

根据嵌入式的平台,如果存的约束是一个问题,你将最有可能需要使用非垃圾收集编程语言。

C在这方面可能是最众所周知的团队和最广泛的支持与提供图书馆和工具。

事实是-并非总是如此。

它似乎。净运行时(但是任何其他运行时可以作为一个例)规定了若干MBs的运行开销。如果这是你所有(RAM),那么你的运气了。JavaME似乎更为紧凑,但它仍然一切都取决于资源您有在您的处置。

C编译器要快得多,甚至在桌面系统,因为几langage设有相比,C++,因此我想像的差别是非微不足道嵌入式系统。这意味着更快的次迭代,虽然另一方面你没有便利设施的C++(例如集)这可能会减慢你的速度在长期运行。

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