使用 Linux 学习 C++

作者:Jeff Tranter

面向对象编程是当今计算机行业的热门话题,大多数专家都认为 C++ 是主要的面向对象编程语言。许多程序员熟悉 C 编程语言,并希望转向 C++,但他们觉得缺乏必要的工具和资源,尤其是在必须在自己的时间进行培训的情况下。

因此,得知 Linux 是学习 C++ 的理想平台应该是一个好消息。本文介绍了 Linux 下可用的一些 C++ 编程工具,并将读者引导至其他资源,其中许多资源可在互联网上免费获得。

资源

我所说的资源是指可以帮助您学习 C++ 并解决编程问题的信息来源。

有大量关于 C++ 和面向对象设计与编程的书籍,其中一些比另一些更好。我在这里推荐的三本是专门针对 C++ 的书籍中最受欢迎的;您或许可以从当地的公共图书馆、学校图书馆或公司图书馆借阅副本。由于这些书更侧重于 C++ 语言本身,您可能希望用涵盖面向对象分析和设计的书籍来补充它们。

  • C++ 编程语言(第二版),Bjarne Stroustrup,Addison-Wesley,1991年

  • 带注释的 C++ 参考手册,Bjarne Stroustrup 和 Margaret Ellis,Addison-Wesley,1990年

  • C++ 入门(第二版),Stan Lippman,Addison-Wesley,1989年

有许多与面向对象编程相关的出版物,包括以下内容

  • C++ 报告

  • 对象杂志

  • 面向对象编程杂志

对于那些可以访问 Usenet 的人来说,这些新闻组是相关的,并且非常有用,既可以作为特定问题答案的来源,也可以用于了解 C++ 和面向对象编程的最新发展

  • comp.lang.c++

  • comp.std.c++

  • comp.object

以下常见问题解答 (FAQ) 列表会定期发布到 Usenet,并且可以通过匿名 FTP 从 Internet 存档站点获得(括号中列出)

  • C++ FAQ(sun.soe.clarkson.edu:/pub/C++/FAQ)

  • G++ FAQ(rtfm.mit.edu:/pub/usenet/news .answers/g++-FAQ/plain)

  • comp.object FAQ(rtfm.mit.edu:/pub/usenet/news .answers/object-faq/*)

工具

这里列出了一些有用的 C++ 编程工具。如果您使用标准的 Linux 发行版之一,您可能已经拥有了其中的大多数工具,否则您可以从主要的存档站点获取它们。为了节省时间和磁盘空间,我建议获取 Linux 二进制文件,而不是从源代码构建它们。

标准的 Linux C++ 编译器是来自自由软件基金会的 GNU g++。它遵循不断发展的 ANSI C++ 标准,并支持 AT&T cfront 3.0 编译器中的大多数功能,包括模板。它尚不支持异常。

与作为预处理器的 cfront 不同,g++ 生成本机代码。由于编译器发展迅速,我建议获取最新版本。(在撰写本文时,大多数 Linux 发行版都包含 2.5.8 版本;2.6.0 版本刚刚发布。)

Gdb 是 GNU 符号调试器;您可能已经使用它在 Linux 下调试 C 程序。它支持大多数 C++ 数据类型和语言构造,并透明地处理 C++ “名称反混淆”。Gdb 在 Emacs 中运行良好,或者您可以在 X 下使用 xxgdb 图形用户界面。gdb 的文档(info 格式)描述了特定于 C++ 调试的功能。

程序员首选的编辑器 Emacs 具有 C++ 模式,可协助编辑。它与 gdb 和 g++ 结合使用效果良好,允许您在编辑器内编译和调试。

类库

如果您想运行任何有意义的程序,例如教科书中的示例或您自己的代码,您将需要一些类库。Linux 下提供了许多 C++ 类库。

GNU libg++ 库提供了标准的 C++ iostream 类。它还包括许多其他有用的类,从复数到通用堆栈、队列和集合对象。由于源代码是免费提供的,您可以阅读它以了解库是如何实现的。Libg++ 在包含的 info 页面中有详细文档。

InterViews 是一个面向对象的工具包,用于 C++ 中的图形用户界面编程。它作为 Slackware Linux 发行版中的 “iv” 系列包含在内。新版本的 InterViews 包含在最近发布的 X Window System(X11R6)修订版 6 中,名称为 Fresco。Fresco 已成功使用 GNU g++ 2.6.0 版本编译。

NIHCL,美国国立卫生研究院类库,是由 NIH 的 Keith Gorlen 编写的 Smalltalk-80 类库的可移植 C++ 翻译。源代码可在互联网上从 FTP 站点 alw.nih.gov 的 /pub/NIHCL 目录中获得。在撰写本文时,NIHCL 无法在 g++ 下编译;这应该在未来的版本中得到纠正。

ObjectBuilder 是 OI C++ 工具包的图形用户界面构建器。它旨在简化基于 X11 的用户界面的开发。Linux 版本以二进制格式免费分发;ParcPlace Systems 将同一产品商业销售给其他计算平台。

如果像一些专家建议的那样,您想接触“纯粹”的面向对象语言,您可以研究 GNU Smalltalk。GNU gcc 编译器还支持 Objective-C,另一种基于 C 和 Smalltalk 的面向对象语言。这两种工具都可以作为 Slackware Linux 下的软件包获得。

结论

精通 C++ 需要时间和精力,但通过使用 Linux 自学,您可以获得职业优势。我建议尝试一种迭代方法,在阅读书籍和编写自己的代码之间交替进行。您可能还需要考虑一些正式的培训。

理想情况下,在您开始 C++ 教育时,您将能够找到一位导师来指导您并回答问题。更可能的是,您会发现自己成为同事的导师,他们将从您的错误中学习。祝您旅途顺利。

(Jeff.Tranter@Software.Mitel.com) 是一位专业程序员。他目前与 Linux 相关的兴趣包括 C++、LaTeX 和多媒体。

加载 Disqus 评论