前几天,慕名买了一本关于C++的一本书, 即Scott Meyers 的《Effective C ++》。 这本书给出了如和提高编写C++程序和设计的效率55个items , 可以说这些items or suggestions 是教会我们如何从一个普通的程序员, 想要快速掌握有经验的程序员的必备素养。 掌握了这些忠告, 能够是你的代码易于理解, 易于维护, 避免犯下低级错误。
出于兴趣, 我搜到了关于本文作者Scott Meyers 的一个采访。 名字是《 a unique perpestive on C++》。
在采访中, 我了解到Meyers 拥有Brown University 的PHD in compuer science。 他本人在去读研究生之前确实工作在软件行业的第一线(in the trenches), 编写很多代码, 发布软产品等等, 简而言之, 就是一个十足的software developers。 后来, Meyers 在graduate school 期间, 做了一门关于software engineering 的course的TA。 这门课的教授认为C++ 相比于C而言, 是一个更好的software engineering language。 这也是Meyer开始学习C++的原因。 当时的时间是1988。
几年后, Meyer开始利用自己的专业知识, 业余时间为公司员工进行C语言的培训。 后来转向C++ 的培训。 虽然钱并不多。 Meyers说, “That's when you really learned a language when you try to teach it” 。 注意当时, Meyers 还只是一个graduate student.。
这本Effective C++ 正是源于Meyers在教授周培训课上使用的的的培训材料。 Meyer 仅仅花了几周时间写下了这本后来成为C++的经典之作。
Meyers 谈到, 就有CS的专业背景知识使得他能够很好地理解很多概念。 许多程序员根本不知道compiler, linker 都是干啥的, run time systems 干啥的, operating systems 是干啥的。 所以当他们试图解决程序中出现的一些问题的时候,
很难入得其法。
关于C++ 的发展前景, 为什么要使用C++, Meyers 表示他是一个Proponent of choosing the right tool for the job, and C++ is a tool。虽然C++ 相比于其他语言, 这个工具相当的complicated, difficult to learn how to use it correctly。 但是 C++ 相比于其他的编程编程语言, 例如Java等, 具有如下优点(reasons for choosing this big complicated tool):
(1)对performance要求高的场合。 例如as fast as we can, space 越小越好, 更好的兼容性, 当我们的数据是format的, 我们需要一些数据结构准确的读取这些formated data等等。 当对于一些demmand 很难满足的时候, C++ 就能够很好地解决。
(2)如果你想你的程序运行足够快, 那么C++ 也是一种好的选择。 假如说, 你想编写一个just in time compiler that generates the executable instructions, ie compiler for java, .net program, 都需要用C++ 编写。 大多数的Java, 。net 等等的编译器是用C++编写的。
(3)嵌入式(embedeed world)一般对于运行时间, 空间能性能要求也很大, 他们的CPU不是很强大, memory也不是很大, 所以需要很好的组织分配硬件资源等等, 这时候, C++ 就能很好的完成这个工作了。 C++ 可以和底层硬件很好的“对话”。
当然还有其他的特性, 这里不再赘述。