c - 有哪些了解 C 语言可以让你成为更好的高级程序员的具体例子?

标签 c low-level high-level

我知道问题的存在,例如 this onethis 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/

相关文章:

hadoop - Apache Pig - 说明命令错误

programming-languages - 高级语言应该/将达到多高?

c++ - 如何将 64 位 Long 数据类型转换为 16 位数据类型

c - C 中的 float

c++ - 计算快速线终点

macos - 如何在 OS X 上运行具有硬内存限制的进程?

C 低级 I/O : Why does it hang in the while loop?

python - python和c中的内存分配

c - 这个 C 程序究竟是如何从这个二进制文件中读取数据的?

c - 编译成c的高级系统语言?