购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

推荐序1

半夜突然接到陈冀康先生发来的微信消息,希望我能给《C++模板元编程实战》写一个推荐序。由于我本人对C++模板元编程有非常浓厚的兴趣,外加以前只是略知深度学习的皮毛内容,从来没有系统学习过,所以想借此也开阔一下自己的视野,于是欣然接受了陈先生的邀请,然后就有了下面的文字。

学习编程是一个长期的过程,如果要快速提高自己的话,就需要走出自己的“舒适区”。只有不停地给自己找很多颇具难度,但又不至于难到写不出来的任务,然后利用时间逐个实现这些任务,自己的编程技能才能得到最快速的提高。本书中造的这个“深度学习框架”的轮子,就很适合读者自行尝试开发实现。尽管本书会提供源码下载地址,但是建议读者先别看源码,而是自己跟着书做一遍,把MetaNN实现出来。在成功或者放弃之后再去看作者的代码,相信会有更深刻的领悟。

在阅读本书的过程中,我把大部分时间都花在了前两章。这两章介绍的是C++模板元编程的技巧,作者写得非常出彩。第1章开篇就点出了读者应该如何去了理解模板元编程。想当初我在学习 C++ Template Metaprogramming 时就走过不少弯路——由于该书的讲解不够通俗易懂,外加当时经验欠缺,最后竟然是通过学习Haskell语言才彻底把C++模板元编程弄明白。如果当初看的是本书的第1章,相信会节省下很多时间。

从第2章开始,作者就已经是布置“大作业”了。而从第4章开始,则开始正式介绍使用C++模板元编程的技巧来实现MetaNN——也就是一个简单的深度学习框架——的过程。如果读者没有很好地理解前两章内容,则从第4章开始应该会觉得非常吃力。当然,这也不是坏事,起码这可以说明两点:自己技术水平确实有不足之处;本书中确实有真材实料,可以让自己学到很多干货。

需要多说一句的是,本书的技术难度相当大,读者最好具备一定的C++模板知识,而且也需了解C++ 11和C++ 14中的一些基本内容,以免在阅读本书时不停地查询相关资料,打断思路。退一步讲,即使各位读者已经学习过模板元编程,在阅读本书时也需要勤加思考,并踏实练习实践书中内容,从而切实提升编程技能。

最后想说的是,本书的代码还是写得相当不错,可能是作者在长期的编码工作中已经把C++的很多最佳实践都潜移默化成自己的本能了,所以没有花费很多笔墨来完整地介绍代码中各个方面的细节。大家在阅读本书的过程中,可以尝试思考一下,为什么作者要这样编写(而不是采用其他方式),以及书中的代码跟其他C++图书介绍的最佳实践有什么异同之处。这也是一种学习的过程。

学而不思则罔,思而不学则殆。预祝各位读者阅读愉快,获益匪浅。

陈梓瀚(vczh)
2018年9月 tv9CnWRALFhF7JKUnSzddyZzcXoOYUzJ1JbLyUca/Q2RDQ/LVyqwUk6vjKM4+wRm

点击中间区域
呼出菜单
上一章
目录
下一章
×