在 Stack Overflow 播客中,Joel Spolsky 不断地抱怨 Jeff Atwood 不知道如何用 C 语言编写代码。他的说法是“了解 C 可以帮助你编写更好的代码”。他还总是使用某种涉及字符串操作的故事,以及了解 C 如何让您用不同的语言编写更有效的字符串例程。
作为一个懂一点 C,但喜欢用 Perl 和其他高级语言编写代码的人,我从来没有遇到过可以通过编写 C 来解决的问题。
我正在寻找现实世界中的示例,在这些示例中,了解 C 在使用 Perl 或 Python 等高级/动态语言编写项目时会很有用。
编辑:阅读你们提交的一些答案非常棒,但在这方面对我来说仍然没有任何意义:
以 strcat 为例。在 C 中组合字符串有正确的方法和错误的方法。但是为什么我(作为高级开发人员)应该认为我比 Larry Wall 聪明呢?为什么语言设计者不以正确的方式编写字符串操作代码?
Joel Spolsky 使用的经典示例是误用 strcat 和 strlen http://www.joelonsoftware.com/articles/fog0000000319.html,并发现“画家 Shlemiel”的一般算法。
这并不是说您需要 C 来解决高级语言无法解决的问题,而是充分了解 C 可以让您了解所有这些级别的语言背后正在发生的事情,从而使您能够编写更好的软件。因为这样的视角可以帮助您避免编写您不知道的代码,例如,实际上 O(n^2)。
Edit:根据评论进行一些澄清。
知道C并不是获得此类知识的先决条件,获得相同知识的方法有很多种。
懂得 C 语言也并不能保证具备这些技能。你可能精通 C,但仍然用你接触过的其他语言编写出可怕、糟糕、笨拙的代码。
C 是一种低级语言,但它仍然具有现代的控制结构和函数,因此您不会总是陷入繁琐的细节中。如果不掌握某些基础知识(例如内存管理和指针的细节),就很难精通 C 语言,而掌握这些基础知识在使用任何语言时通常都会带来丰厚的回报。
它始终与基本原理有关。
在许多追求以及软件工程中都是如此。使最好的程序员成为最好的并不是秘密咒语,而是对基础知识的更好掌握。经验表明,C 语言知识往往与掌握某些基础知识具有更高的相关性,并且学习 C 语言往往是获取此类知识的更容易和更常见的途径之一。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)