哪些项目不能在C中完成?

时间:2009-02-25 17:41:11

标签: c

我想知道在C中无法完成哪些项目。

我知道编程可以更快更直观 其他语言。但我想知道什么功能 在C中缺少会阻止项目的 完成得很好。

例如,C中只存在很少的Web框架。

9 个答案:

答案 0 :(得分:29)

和许多其他语言一样,C是Turing Complete

如此简单的答案是:没有。

但是,C ++模板元编程符合相同的标准,因此“有可能”不是选择工具的好标准。

答案 1 :(得分:19)

第一个C编译器?

答案 2 :(得分:10)

halting problem

的有效解决方案

答案 3 :(得分:4)

好的,这是一个:你不能在C中编写x86引导扇区。这是在ASM中必须编写的事情之一。

答案 4 :(得分:2)

没有。

不同的语言为您提供不同的说话方式。对于某些类型的问题,给定语言可能更具表现力和/或简洁性。是否有项目你应该从C中选择一些东西?当然是。但是说你在C中做得不好会产生误导。最好问哪种语言是手头问题的最佳选择,并且使用不熟悉的东西是值得的吗?

答案 5 :(得分:2)

任何事情都可以用几乎任何语言完成。

那说有一定程度的实用性。随着系统复杂性的增加,您需要更好的工具来管理它。

问题仍然可以解决,但你开始需要更多的人和更多的设计努力。我不是说其他​​语言不会从设计中受益,我说可能不需要同样的水平和对细节的关注。

由于我们的程序员是人(至少我是),我们在一个或另一个领域遇到麻烦。我最大的是记忆力。如果我可以将我的代码可视化为对象,那么操纵我头脑中的大模块会变得更容易,我的大脑可以处理更大的项目。

当然,甚至可以在C中编写好的OO代码,模式是在C中通过手动管理调度表(指针表更新以指向不同的方法)开发的,所有编程都是如此。来自更高语言的结构 - 它们可以用任何语言完成,但是......

如果要在C中实现对象,那么您编写的每个类都会产生大量的样板开销。如果您进行了某种形式的异常处理,则会暴露更多的样板。

更高级别的语言从你的代码中抽象出这个样板并进入系统,简化了你必须考虑和调试的内容(C中的调度表可能需要大量的调试,但在C ++中它不会失败因为工作编译器生成的代码将是无错误和隐藏的,你永远不会看到它。)

我想我会说这是低级和高级语言之间最大(唯一?)的区别,你隐藏了多少样板。在最新一批动态语言中,他们真的隐藏了语言中的循环结构,所以更多的东西看起来像:

directory.forEachFile(print file.name); //不是任何真正的语言

在C语言中,即使你在函数内部分离了部分循环,设置函数指针和东西仍然需要一些不明显的代码,这些代码无法解决你的主要问题。

答案 6 :(得分:0)

没有一种算法无法用C语言编写。

答案 7 :(得分:0)

取决于您希望投入多少资金(时间/金钱/能源)来实现这一目标。否则,我会说没有。有时候使用别的东西会更容易。

答案 8 :(得分:0)

OS内核是用C语言编写的,所有内容都在它上面运行,所以你可以用C语言编写所有

需要ASM的引导扇区:-),我认为你不是那个意思。