K&R 访谈摘录

来源:互联网 发布:程序员打字都是盲打吗 编辑:程序博客网 时间:2024/05/07 06:22

      百无聊赖,读了Koenig和Moo的书,厌烦的时候,将电子书拖到了最后,才发现了一段有意思的访谈,反复体会,既深刻又精辟。

 

 提问:二位怎样看待C++教育的现状?

 Koenig: 太糟糕了,很多教材都是C语言书结尾贴上一点点C++材料,误导读者字符串乃是定常字符数组,应该用标准库中的STRCPY和strcmp来操作,一个程序员一旦开始就掌握这些东西,就会根深蒂固,挥之不去。C++是个非常低级的语言,唯有利用库,才能写出高 层次的程序,初学者不能构造自己的库,要么利用现成的标准库,要么写低层次的程序。

 Moo: 库,优于语言细节,学习者可以包装低层次语言细节,更容易建立整体语言的全局观念,了解其真实威力,知道如何使用库,很容易去理解类和构造类,唯有抛弃语言细节,才能真正理解C++,更多的利用库,而不是指针漫天飞。

 

 提问:C++希望面对把实用性放在首位的群体,但在实践中,很多程序员抱怨要形成一个好的C++程序设计太难,对奉行实用主义的C++程序员有何建议?

Koenig:中国也会有这样一句谚语:糟糕的手艺人常常责怪自己的工具,还有一句就是,当你拿着锤子的时候,整个世界都变成了钉子。编程问题彼此不同,一个问题产生良好的设计方案的途径,就是使用一种允许你进行各种设计的工具,这样一来,你才可以选择最适合该问题的设计方案,如果选择了一样工具,就要负责选择合适的设计方案。 所谓面向对象编程,就是使用继承和动态绑定机制编程,如果知道有一个很好的程序使用了继承和动态绑定,你能做出怎样的判断?在我们看来,这意味着该程序中有两个和两个以上的类型,至少有一个共同的操作,也至少有一个不同的操作,否则就不需要继承机制。此外,程序中必然有一个场景,需要在运行时从这些类型中挑选一个出来,否则就不需要动态绑定机制。 我们所写的东西实际上是想战士我们这样的观点,除非你首先掌握了良好的构造类的技术,否则急忙去研究继承就是拔苗助长。

 

提问:在C++沉思录这本书里,反复强调的一句话:用类来表示概念,假设我能再记住一句话,你们觉得应该是什么?

 Koenig,Moo:避免重复。 如果你发现自己在程序的两个不同部分里做了相同的事情,试着把这两个部分合并到一个子过程中,如果你发现两个类的行为相似,试着把这两个类的相似部分统一到基类或模板中。

 

提问:有时编写平台无关的C++程序比较困难,而且开发效率也不能满足需求,您是否认为吧C++和其他语言,尤其是类似Python和TCL/TK那样的脚本语言合并使用是个好主意?

是的。我最近在学习Python,得出的看法是,Python和C++构成了完美的一对组合,Python程序比相应的C++程序短小精悍,但C++程序执行更快,因此,我们可以用C++来构造那些对性能要求很高的部分,用Python将其粘在一起

 

提问:最后一个问题,我们希望中国的读者都成为更好的C++程序员,请给我们你们认为最重要的建议,好吗?

 Koenig,Moo: 1:避免使用指针;  2:提倡使用程序库; 3:使用类来表示概念

原创粉丝点击