C++是一门被广泛使用的编程语言。在众多的C++开发者中,大多数人用面向对象的方式编写代码:我们日常接触的C++项目基本上都是用这种风格组织的;几乎每一本C++教程都会用绝大部分篇幅来讨论面向对象;每位拥有数年C++开发经验的程序员都会对面向对象有自己的见解。
面向对象在C++的开发圈子里成了一种主流,以至于在有些人看来,C++与很多编程语言类似,只是一种面向对象的方言而已。
但事实上,C++所支持的不仅是面向对象这一种编程风格。它
还支持另一种编程风格:泛型 ,并由此衍生出一套编程方法,即编译期计算与元编程。
今天有幸邀请到了《C++模板元编程实战:一个深度学习框架的初步实现》的作者李伟,让我们听听他对C++编程语言的所思所想。
异步社区:可以介绍一下自己吗?目前正在做哪些事情? 李伟:我2011从学校毕业之后就一直从事软件开发相关的工作。曾经在百度自然语言处理部机器翻译组负责线上系统的维护,目前在微软亚洲工程院从事Being搜索的相关开发。
平时的爱好是读书,特别是编程相关的书籍。喜欢尝试新的语言与技术,但对C++编程情有独钟。
异步社区:是什么初衷开始创作《C++模板元编程实战 一个深度学习框架的初步实现》这本书,写书带给您的最大收获是什么?感觉是心性方面的锻炼吧。这本书讨论了一项更多来说处于探索阶段的技术,可供参考的资料并不多。所以写作的过程也是一波三折的,经常要把很多内容推翻重写。中间数次都感觉写不完了,但最终坚持了下来,感觉整个写作的过程就是一个自我修炼的过程了。
异步社区:《C++模板元编程实战:一个深度学习框架的初步实现》您最想将这本书推荐给谁看?(1)对C++有一定了解,想进一步提升C++编程能力的读者。
(2)从事深度学习框架开发相关工作的读者。对于这部分读者来说,可以参考一下深入应用模板元编程对框架本身产生的影响。
异步社区:创作《C++模板元编程实战:一个深度学习框架的初步实现》过程中遇到的最大困难是什么?时间紧迫:这本书本身是对模板元编程技术的一个探索,写书的同时还涉及到对元编程技术的总结、引入新的技术修改原有框架的设计等等。这些都是利用业余时间完成的,工作量还是比较大的,总是感觉时间不够用。
异步社区:您的大学生涯是如何度过的呢?在清华大学您又接触了怎样不同的教育呢?我的本科、硕士、博士学习分别是在北京工业大学、北京航空航天大学、清华大学3所学校渡过的。在清华大学获得了博士学位。虽然经历了三所大学,但其实在每所大学中是生活都是比较规律的:以看书为主(早期还尝试打游戏,但由于打得不好,经常被虐,所以也慢慢放弃了)。我的专业是电子工程,但业余更喜欢看计算机方面的书。在本科时完成了学校组织的计算机辅修,到硕士期间开始使用MFC编写界面程序,从此开始系统性地使用C++进行程序开发。
我感觉我所就读过的三所大学都给了我很好的学习环境,都非常好。因此,在清华读博士期间,谈不上接收到了什么特殊的教育。反到是因为读博士,让我体会到(1)很多事情只有坚持才能有结果;(2)干完一件事情要写总结。这些都对后续模板元编程的研究以及这本书的写作产生了影响。
异步社区:对于进入IT这一行业,学校专业力量是否重要?我觉得学校专业力量有一定的作用,但并不起决定作用。重要的还是能否保持一种积极的心态,不断地学习与实践。
异步社区:清华大学毕业后您曾先后供职于百度和微软亚洲工程院,哪一段的工作经历带给您的收获最大?为什么?没有所谓的最大吧,每一段经历都有其独特之处,都是一种阅历,一种成长。
异步社区:您目前供职于微软亚洲工程院,您的研究方向是什么呢?您平常每天都做些什么?或者说您典型的一天是如何度过的?算不上研究方向哈,在微软每天主要的工作就是编写代码,跑一些实验,尝试提升系统的速度与效果啥的。每天基本上就是早上坐地铁到公司,开始干活,然后回家带孩子,晚上等孩子睡了后再看一会儿书。可能对于一些人来说,挺无聊的哈。
异步社区:经过这么多年的工作积累,您对计算机编程的感觉是否还如当年一样热衷?如何在繁重的工作压力下,保持初心呢?还是很热衷的。我并不觉得由于工作压力大,就无法保持下去。这是一个兴趣的问题,找一个感兴趣的方向,坚持下来,其实并不是特别困难的一件事哈。
异步社区:针对刚毕业、初入职场的小白,有什么建议?永远不要停止学习。无论每天的工作量多还是少,总要抽出一些时间来学习。无论是从书本上,还是从视频上,坚持学习,每天提升一点。只有这样才不会被社会的进步所淘汰。
异步社区:您是如何平衡工作,写书,家庭?基本上来说,是家庭第一位,工作第二位,学习第三位,写书第四位哈。对我来说,工作赚钱是为了养家;而学习与写书是为了更好的工作,以及充实自身。因此大部分事情的优先级也是按照这个顺序来排列的。
异步社区:对您工作和生活帮助最大的三本书?一定要推荐的?《高效能人士的七个习惯》,《细节决定成败》(好吧,我承认,书中有很多细节问题),《你自以为的极限,只是别人的起点》
异步社区:模板元编程从来都是C++程序设计中被多数人视为畏途的领域,类型设计本就是具备丰富经验的工程师才能操刀的活计,您是如何攻克的?算不上攻克,因为感兴趣,所以一直在看而已。前前后后看了将近小10年,再笨也有点心得哈。
C++模板元编程还是一个发展的领域,我觉得相比面向对象来说,还远远算不上成熟,因此也不能说是攻克。就像我在书的后记中提到的,有很多方面都不完美。编程语言是不断发展的,而标准对模板元编程的支持还有待提升。但相关的研究与改进可能需要来自不同领域的共同努力(比如有些实验可能需要改进编译器才能进行)。
《C++模板元编程实战》李伟 著
本书将以一个深度学习框架的实现为例,讨论如何在一个相对较大的项目中深入应用元编程,为系统性能优化提供了更多的可能。本书分8章,前两章讨论了一些元编程与编译期计算的基本技术,后面六章则讨论了元编程在深度学习框架中的实际应用,涉及到富类型与标签体系、表达式模板、复杂元函数的编写等多个主题,详尽地展示了如何将面向对象与元编程相结合以构造复杂系统。
邀请10名好友关注异步图书10天,即可免费获得异步新书。长按二维码,可以关注我们哟
每天与你分享IT好文。
点击阅读原文,购买
《 C++模板元编程实战》
阅读原文