更换C低级编程?

时间:2010-12-30 01:41:31

标签: c programming-languages

所以C显然有一个相当优势的低级编程要塞.....但是有什么东西出现挑战/想要取代它?

Python / C#/等似乎都是针对非常高的水平,但当它归结为细节低级别的东西时,C似乎是王道而且我没有看到太多“尝试”取代它? / p>

那里有什么东西,或者对于低等级的东西学习C似乎是标准的吗?

11 个答案:

答案 0 :(得分:6)

如果您的意思是系统级别,那么可能是D Language

答案 1 :(得分:3)

说实话,这取决于你需要“低级别”/“系统级别”以及系统是什么。

正如Neera正确指出的那样,管理语言的趋势越来越明显。

因此,如果您正在编写应用程序代码,除非您实际编写算法和优化,否则您的想法是使用托管代码/更高级别的抽象。在普通平台上,一直需要做低级别的东西,大大减少了。在任何可以访问任何接近良好的API的地方,你可能会有更好的抽象层。

但是,如果要在新体系结构上实现,则可以:使用程序集为该平台生成编译器,或编写从另一个平台(交叉编译)从该平台输出机器代码的编译器。然后,您需要为该平台编译编译器。

可以想象,在这方面,C ++比C更难处理。即使是C实际上也是一项很好的努力。我听说有人说他们喜欢基于堆栈的语言,比如FORTH,因为对于基本的工作,他们可以用非常少的程序集(与c编译器或完整的交叉编译工作相比)来启动和运行。

编辑(因为我喜欢)这是link git存储库的JonesForth。看一看。 Jonesforth是i386汇编中的第四个实现,包含代码注释,引导您完成整个过程。

答案 2 :(得分:3)

答案 3 :(得分:2)

低级别的东西是标准的。 C作品及其已知。 C很快,因为它是低级的,并且使程序员做了很多Python和C#为你做的事情。您可以编写另一种旨在替换C语言的语言,但我不认为除了略有不同的语法之外它会让您到处都是。 (如果你想保持C的速度。)

为什么C这么快?因为它闪亮的汇编程序。对于你需要做得更快的事情,你可以使用YASM或内联汇编程序。

答案 4 :(得分:2)

Google's GO发生了什么?

答案 5 :(得分:1)

实际上有很多东西可以用于低级编程。以下是过去使用的一些优于C.

的优点
  1. Pascal变体(在GEMSOS中使用)
  2. Oberon(用于Oberson System和A2 Bluebottle)
  3. Ada(用于安全关键项目,至少有三个操作系统使用有限的硬件)
  4. PL / 0(MULTICS)
  5. Modula(用于CVSup和一些学术项目以获得正确的系统软件)
  6. Smalltalk和Haskell用于原型操作系统或操作系统替换层。
  7. Cyclone,Popcorn,C0和Typed汇编语言在保留大部分功能的同时做得比C好。
  8. 此外,如果最低级别的部分由另一种语言实现,则可以使用具有运行时的语言。微软的Verve和JX操作系统就是例子。对于一所旧学校,查看Genera LISP机器,这是“优势”。在使用C / C ++工具链的现代系统开发中,你仍然无法做很多事情。 ;)

    因此,即使C不是完全可替换的,在大多数情况下它几乎可以替换而没有太多的性能损失。玩得开心。

答案 6 :(得分:0)

我不这么认为 我喜欢使用旧的Assembly Routines,但C是保存

答案 7 :(得分:0)

我认为C不够低。我会建议汇编语言。据我所知,这是程序员可以达到的最低水平。但是你仍然需要处理汇编器,链接器和加载器。还有许多与目标平台相关的细节事项。

答案 8 :(得分:0)

有特定于平台的低级语言,例如汇编语言和机器代码。通过将这些与C进行比较,C是相当高级的语言。

答案 9 :(得分:0)

最近的趋势是朝向面向对象和托管语言 - 例如,Symbian作为操作系统完全是用C ++编写的,微软的研究也是Singularity OS,它是一种托管编程模型。这个想法是托管语言通过抽象掉这些想法来保护用户免于容易在C中犯错误 - 资源泄漏,指针损坏等。面向对象的范例也有助于编写易于维护的代码。现在C仍然统治嵌入式世界,但是我们可以看到未来十年的变化,越来越多的嵌入式世界将C ++作为首选语言。

答案 10 :(得分:0)

低级别你究竟是什么意思?

C也用于高级等用户界面(整个GNOME桌面,其库GTK用C语言编写)。


我将C放在低级别类别中,因为它可以让您使用实际的机器(例如:原始内存地址,只是为了引用某些内容),只添加一个非常小的抽象层。 / p>

其他编程语言也提供了底层机器的 clean 愿景:

  • 许多都来自C并且与之兼容(C ++,Objective-C)。这些提供了一些工具,通过抽象的东西来缓解你的生活。他们可以替换C,如果您使用这些语言,则会失去兼容性:C不能使用ObjectiveC和C ++接口。

  • 其他人属于完全不同的家庭,除了上述问题外,这些家庭甚至不能直接使用C语言。

因此,在我看来,C不被删除的主要原因是商业原因(再次写入所有内容会花费太多,所以一切都是与其他语言兼容),与COBOL仍然存在的原因基本相同。

还有其他原因,比如事实上C是简单的,简单而快速的解析和编译和东西,但在我看来这些是次要的。


一些能够负担得起重写任何东西的大公司却试图推出C(例如,Apple正广泛使用ObjectiveC,而其他人正在使用C ++)。

我认为将来C会继续存在,因为没有努力选择一个特定的标准语言来代替C使用(如果你编写C代码,它将同时使用C,C ++和C使用ObjectiveC系统,而事实恰恰相反)并且由于C代码的代码库过于庞大。