这可能听起来有些幼稚,但是在足够的代码基础上,是否有任何数据结构/算法不能在C中构建?我理解图灵完备的论点。我也知道拥有优雅的解决方案以及时间复杂度的重要性(即在Ruby / Java / C# / Haskell / Lisp中实现更具表现力或简洁)。我研究或使用过的所有语言似乎都是基于C编译器、解释器和/或虚拟机创建或随后重构的。一些复杂的数据结构只能通过解释器和/或虚拟机实现吗?如果该虚拟机或解释器是基于C的,那么这不就是底层C代码的另一种数据结构抽象吗?即C具有简单的类型系统,但作为动态类型系统的基础。我惊讶地发现可以使用预处理器(ioccc.org Immanuel Herrmann)在C中实现元编程。我还看到了一些迷人的C算法,模仿Erlang的并发模型,但不记得来源了。
这个问题的灵感来自于StackOverflow帖子(不太知名但有用的数据结构)和Patrick Dussud在channel9上的采访(垃圾回收 - 过去、现在和未来),解释了他们如何编写第一个CLR垃圾回收器(用Lisp编写,针对JVM,从Lisp编译为C++用于CLR)。
所以说,归根结底,在我完成打卡后,我想这个问题可能更多地涉及C编程语言设计,而不是编程方便性和时间复杂度。例如,我可以在Prolog中实现一个非常优雅且难以通过其他方式理解的高度复杂的算法,但我仍然受限于另一端的汇编指令和计算机架构(开/关),所以我会在这里待一整晚。
这个问题的灵感来自于StackOverflow帖子(不太知名但有用的数据结构)和Patrick Dussud在channel9上的采访(垃圾回收 - 过去、现在和未来),解释了他们如何编写第一个CLR垃圾回收器(用Lisp编写,针对JVM,从Lisp编译为C++用于CLR)。
所以说,归根结底,在我完成打卡后,我想这个问题可能更多地涉及C编程语言设计,而不是编程方便性和时间复杂度。例如,我可以在Prolog中实现一个非常优雅且难以通过其他方式理解的高度复杂的算法,但我仍然受限于另一端的汇编指令和计算机架构(开/关),所以我会在这里待一整晚。