【发布时间】:2010-11-19 03:08:39
【问题描述】:
我从事 Java 和 VB.Net 程序员大约 4 年,从事 C# 程序员大约 6 个月。我还使用了许多动态语言,例如 Perl、Python、PHP 和 JavaScript。
我从来不需要预处理器。
我的问题是:为什么您会在 C、C++ 和 Objective-C 中看到如此广泛地使用预处理器,但在 Java、C# 或 Scala 等语言中却很少(或从未)看到它?
【问题讨论】:
-
我们从 C 中学习。使用 C/C++/Objective-C,他们得到了 C 编译器,然后就在它之上构建,因为这样更容易。最近的语言只是从头开始设计得更好。我认识的大多数具有 C 背景的人都对预处理器感到恐惧。不利于速度,搞砸你的设计,损害理解。除了让你编写更糟糕的代码之外没有任何优势——为什么有人会故意复制它?
-
我有几个 C++ dsp 程序,每个周期都很重要(是的,真的)。预处理器在优化过程中帮助了我很多。我不将它用于其他任何事情。我喜欢它。你不能把它从我手里抢过来。你用那些动态语言做过很多实时 dsp 编程吗?请记住,无论您完成了多少种编程,您都只是触及了可以完成的各种编程的皮毛。
-
@Nosredna:哦,我完全同意,因为我不需要预处理器,所以我永远不需要它。我只是好奇为什么你看到它在 C 和 C 超集语言中的使用如此之多。
-
我个人非常喜欢用于 C/C++ 测试的预处理器。我发现使用预处理器编写/扩展测试套件比用其他语言做类似的事情要容易得多。我个人在使用其他语言时会想念预处理器。 (当然,在日志记录中使用
__FILE__/__LINE__和条件编译是我唯一需要使用预处理器的时候。)
标签: c# java c preprocessor