学习C++/CLI的一些资源
近来收到很多朋友的来信,询问学习C++/CLI的一些资源。我在这里总结了一下,希望能对大家有所帮助。基本上来讲C++/CLI的学习需要两方面扎实的基础,即ISO-C++和CLI(.NET Framework),有了这些基础才能谈C++/CLI,为此我做以下三方面总结:
1。在ISO-C++方面,我的朋友荣耀先生曾经为此开出了一个相当完备的C++书单《C++程序设计之四书五经(上篇)》和《C++程序设计之四书五经(下篇)》,虽然并非所有的书都要读完才能学习C++/CLI——我就没有阅读其中的几本,但是一个基本的量还是需要的。当然如果这些书对你来讲并不陌生,那么学习C++/CLI显然会有一个比较好的优势——好像目前这个阶段喜欢C++/CLI的人大多如此。
2。在CLI方面,具体到微软平台上也就是.NET Framework或者更严格地讲为CLR。我曾经在以前版本的blog上开出了一个.NET的学习书单《.NET程序设计之四书五经》。在这里我把.NET Framwork相关的再列一遍:
Applied Microsoft .NET Framework Programming
by Jeffrey Richter(中文版,影印版)
Inside Microsoft .NET IL Assembler
by Serge Lidin(中文版)
Essential .NET, Volume I: The Common Language Runtime
by Don Box(中文版,影印版)
Compiling for the .NET Common Language Runtime
by John Gough(国内未出版)
Shared Source CLI Essentials
by David Stutz, Ted Neward, Geoff Shilling(国内未出版)
The Common Language Infrastructure Annotated Standard
by James S. Miller, Susann Ragsdale(国内未出版,但MSDN/ECMA文档中有部分可参考)
在这些书中间,Applied Microsoft .NET Framework Programming 和Inside Microsoft .NET IL Assembler个人认为是属于学习CLI的入门书,Essential .NET,Compiling for the .NET Common Language Runtime,和Shared Source CLI Essentials属于提高类的杂书,而The Common Language Infrastructure Annotated Standard则属于集大成者——个人认为在CLI领域此书有Bjarne的The C++ Programming Language一书的地位,都具有相当权威的spec味道。
谈点题外话,.NET领域(特别是底层技术)虽然在工业界发展的如火如荼,但是在书籍市场这两年却乏善可陈——相较于C++出版领域的群星闪耀来讲,在最初的几位先锋派作者挥洒之后,就一直沉寂了下去。连天才巨星Anders Hejlsberg也只是匆匆把C# Specification打包出版,而没有更伟大的著作贡献——不是C# Specification不好,实际上我认为这本书是学习C#不可多得的好书,我最早时候学习C#就啃的是这本书(微软的.NET Framework SDK Beta文档中就有它),只是觉得Anders应该有更好的表现,不过人志不在此,不能强求。
恐怕唯一值得期待的是Effective C#: 50 Specific Ways to Improve Your C#(Addison Wesley已经放出目录了,但是迟迟不见出版日期)。还好,从目录来看,这本书和我筹划中写作的Effective .NET (in C#)(暂定名)重叠并不多,它的出版不会对我的写作造成多大的影响:) 不过由于很多事情在身,我的Effective .NET短期内是难以出版了(也许要两三年都说不准),我期望这是经过我认真思考,反复打磨的一本书。我也会在适当的时候把我想好的目录放出来,希望得到各位朋友的指正和修润。
3。具备了C++和CLI两方面的技术背景之后,就可以具体来着手C++/CLI的学习了。这方面目前市面上还没有书籍出版。不过还是可以找到相关的学习资料。首当其冲的是C++/CLI Standard Draft。微软的网站上有1.5版的草案(http://msdn.microsoft.com/visualc/homepageheadlines/ecma/default.aspx),不过不是最新版本,网上能够得到的最新版本是1.8版本,可以到http://www.plumhall.com/ecma/index.html上下载。不过即使是最新版的标准草案,很多主题都还没有涉及,必须借助其他手段。
还有一本,大家目前还看不到,不过值得期待,就是Stan Lippman先生的C++/CLI Primer (最后的名字可能叫C++/CLI INTRODUCTION: A TUTORIAL AND REFERENCE),我这段时间在帮Stan Review这本书,大概明年就会出版——如果有国内的出版社拿到这本书的版权,也许我能做到和英文版同步出版:) 这本书个人感觉和Essential C++的定位比较类似,比C# Primer高,但比C++ Primer低。
再就是几个blog和newsgroup:
http://blogs.msdn.com/slippman/(Stan Lippman的blog)
http://pluralsight.com/blogs/hsutter/default.aspx(Herb Sutter的blog,建议用firefox浏览器,不知道为什么IE浏览它很慢)
comp.lang.c++.moderated新闻组
可以到http://www.newzbot.com/上找一个免费的新闻组服务器用Outlook Express看,或者直接使用google提供的聚合http://groups-beta.google.com/group/comp.lang.c++.moderated。
还有曾毅先生创办的C++/CLI Community:http://blog.cpp-cli.org/,很不错的一个学习园地
另外,我和几个朋友搭建的“梦溪e谈”(www.dreambrook.com)上也将在C++/CLI方面有一些投入,欢迎各位朋友申请“梦溪e谈·博客在线”(http://blog.dreambrook.com,当然欢迎任何技术背景的,并不拘泥于C++/CLI),具体申请办法见(http://www.dreambrook.com/Default.aspx?tabid=28)。
当然微软的MSDN网站:http://msdn.microsoft.com/和http://msdn2.microsoft.com/library/default.aspx (Visual Studio 2005 Beta 的文档)也是应该常去看看的,虽然上面的资料目前并不多。
最后,别忘了到微软的C++网站上(http://msdn.microsoft.com/visualc/)下载最新版的C++/CLI编译器,Visual C++ 2005 Express Beta 和Visual C++ 2005 Tools Refresh:)