我知道问题的存在,例如 this one和 this one .让我解释一下。
阅读 Joel 的文章后 Back to Basics并且在 SO 上看到许多类似的问题,我开始想知道在哪些情况下了解 C 之类的东西可以使您成为更好的高级程序员的具体示例。
我想知道的是这样的例子有没有很多。很多时候,这个问题的答案类似于“了解 C 可以让您更好地了解幕后发生的事情”或“您的程序需要坚实的基础 ”,而这些答案并没有太大的意义。我想了解您将从了解低级概念中受益的不同具体方式,
Joel 举了几个例子:二进制数据库与 XML 和字符串。但是两个例子并不能真正证明学习 C 和/或汇编是合理的。所以我的问题是:了解 C 可以让你成为更好的高级程序员的具体例子有哪些?
最佳答案
我教学生和与只学习高级语言的人一起工作的经验是,他们倾向于在某个较高的抽象层次上思考,并且他们认为“一切都是免费的”。他们可以成为非常称职的程序员,但最终他们不得不处理一些存在性能问题的代码,然后这些问题就开始折磨他们了。
当您大量使用 C 时,您确实会考虑内存分配。您经常考虑内存布局(如果这是一个问题,还考虑缓存位置)。您了解某些图形操作如何以及为什么会花费很多。某些套接字行为的效率或低效程度。缓冲区是如何工作的等等。我觉得当你知道它是如何在底层实现的时,使用高级语言的抽象有时会给你“额外的秘诀”,当你考虑性能时。
比如Java有垃圾收集器,你不能直接把东西直接赋值给内存。然而,您可以做出某些影响性能的设计选择(例如,使用自定义数据结构),原因与这在 C 中会成为问题的原因相同。
此外,更一般地说,我认为对于高级程序员来说,重要的是不仅要知道大 O 表示法(大多数学校都教授),而且在现实生活中的应用程序中常数也很重要(哪些学校尝试忽视)。我的轶事经验是,具有两种语言水平的技能的人往往对常量有更好的理解,这可能是因为我上面所描述的。
此外,我见过的许多更高级别的系统都与较低级别的库和基础设施交互。例如,某些通信、数据库或图形库。某些设备的一些驱动程序等。如果您是高级程序员,您最终可能不得不冒险,这至少有助于了解正在发生的事情。
关于c - 有哪些了解 C 语言可以让你成为更好的高级程序员的具体例子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2077913/