过去十年间,你对于C编程实践的想法有哪些变化?

10

面向对象编程似乎很有趣。他们不仅每两年就能享受到主要框架的修订,每五年就有新的、改进的语言,还可以处理与其编程风格相适应的设计实践。从测试驱动开发到设计模式,面向对象程序员有很多东西需要跟上。

相比之下,C编程世界显得更加平静。该语言的最后一个重大修订是在1999年,下一个版本可能会远不如此。许多人仍认为K&R第二版是一本不错的入门书籍,尽管它现在已经20年了。

如果我们作为C程序员,已经发展和改进了我们的技能和实践(我认为我们可能已经做到了),我们似乎并不擅长沟通这些。 我们没有出售这些书籍,没有在博客上发布它们的内容,也没有组织围绕它们的研讨会。这是其他软件开发领域看起来很常见的做法。

所以,让我们分享一下。

你喜欢使用哪些“现代”C编程实践?

你是否像C++程序员那样使用“模板”,使用长而复杂的预处理器宏来挤出硬件的最后一寸性能?你是否使用像halloc这样的分配库来最大限度地减少管理内存所需的时间,或者你是否使用完整的自动垃圾收集器

当然,如果你从1987年开始就一直在使用这些东西,也请随时发言。这个问题的重点是分享那些不同寻常但可能对他人有益的实践。

你喜欢使用哪些“现代”C软件设计实践?

当然,设计考虑因素至少同样重要。你是否借鉴面向对象世界的设计实践?你是否使用UML?或者您选择以语言中立的方式来整理规范(流程图、Z、最弱前置条件演算等)?

4个回答

7

如果有可能,我会尽量使用现成的库来实现基本功能。我发现 glibGTK+ GUI框架的一部分)在通用数据结构等方面非常出色。不再需要编写自己的 哈希表链表动态数组 或其他。

我也认为 GTK+ 工具包中的面向对象思想很棒,并经常以相同的方式组织我的代码。没有什么可以阻止你在 C 中采用范例,它足够灵活,可以表达许多其他语言中“一等公民”的东西,即使这样做通常涉及一定的...冗长,当然。


我只能补充说,像这篇文章一样的帖子是我在撰写问题时考虑到的答案类型之一。 - Michiel Buddingh

5

虽然我是一名使用C++进行面向对象编程的新潮派程序员,但这并不是一个真正的C编程实践,但是:

面向对象编程并非万能药

我希望我的公司有更多纯C语言程序员,能够教授初学者了解面向对象编程以外的技术。


5
老实说,我最终屈服于C++,经过长时间的抗争。 我已经开始真正享受它的优势。
我喜欢能够让编译器处理OO(面向对象)的管道,使用异常和RAII代替在各处散布返回代码和资源释放,不再重复实现链表、自动扩展向量或更智能的字符串库,而是使用运算符重载代替到处使用vector_add()等函数。虽然在C中有许多这样的库,但似乎这些库存在竞争解决方案之间的碎片化问题。在C++中有这些设施的标准化真的很好。
好处是,如果我觉得这是适合程序的最佳方法,我仍然可以自由地下降并执行我可能在C中执行的所有操作。没有像Java那样的面向对象限制。

2

1999年:使用C语言,它快速、低级别、高效。

2009年:使用Python语言,它足够快速、高生产力、跨平台、流行且有趣。


3
我不想听起来很无聊,但对于其他有同感的帖子,只涉及C++/C#/ruby/Erlang/等等,你们能否编辑/点赞这个答案? - Michiel Buddingh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接