结城浩(Hiroshi Yuki)

1963年出生,居住于东京都武藏野,有两个儿子。职业为程序员(应该是自由职业)、技术作家、虔诚的新教教徒,对传教很热心。喜爱语言文字、读书(宗教、小说、科普类)、巴洛克音乐。

结城浩先生自己设计的“Thread妖怪娃娃”,作为自己的标志。

1993年出版了第一本书《C语言编程精华》,至今为止共计出版图书44种(含修订版),主要包括:

  • C语言:8种

  • Perl:4种

  • Java:11种

  • 密码学:3种

  • 数学:3种

  • 《数学女孩》系列:12种

目前依旧在写网络连载《数学女孩的秘密笔记》,链接地址https://cakes.mu/series/339,这个系列已经出了7本单行本。

2013年至2015年,在《Software Design》杂志上连载专栏《再发现的思考法》,从一些技术术语中找到新发现,链接地址https://www.hyuki.com/discover/

编者的话:

结城浩先生接到ManBetX访谈的邀请后,第一时间接受了访谈。回答读者提问的过程中,还不时就访谈问题进行沟通交流,让人感到满满的认真负责。编者认为,结城浩先生一定是一位漫画里走出来的、温暖的人吧~

日文版链接

关于写作和出版

ManBetX访谈:您20多年的时间里总共出版了40多本图书,平均一年两本,而且内容和形式非常多样。除此之外,还要写网络和杂志专栏。您认为自己算不算是一个“高产”的作家?您如此高产的秘诀是什么?

结城浩:其实也没有什么秘诀。我本来就很喜欢写作,或者说喜欢将自己的思想用文字表达出来。因此,我并没有刻意地去想着要多写几本书或者是要当一个“高产”的作家,我只是坚持做自己喜欢的事而已。我的性格里有两个看似矛盾的方面:一个是“长期坚持做同一件事而不感到厌倦”,另一个是“一旦感到厌倦了,马上换新的目标”。也许,这两点对我的“高产”有一定的贡献吧。

ManBetX访谈:您在网站上说“我一直在写新书”,能透露一下现在在写的新书是关于哪方面的吗?您还有很多书没有和中国读者见面,您希望推荐给中国读者的下一本书是什么?

结城浩:现在(2016年6月)我正在写的书有两本,一本是《数学女孩》系列的第6本——《数学女孩6》,另一本是《数学女孩的秘密笔记》系列的第8本——《数学女孩的秘密笔记:简单的统计》,其中《秘密笔记》应该会先上市。按照现在出版的顺序来看,中国读者应该会先看到《数学女孩3:哥德尔不完备定理》,但其实我也很想推荐《数学女孩的秘密笔记》系列。《秘密笔记》系列讲的数学知识比较浅显,对话风格也比较活泼,而且它和《数学女孩》系列之间是相互独立的,系列中的每一本之间也是独立的,从任何一本开始读都可以。我希望能够有更多的中国读者阅读和喜欢我的书!

ManBetX访谈:您写的书里面有C语言、Java语言这样的技术书,也有《数学女孩》这样的青春小说,您觉得写技术书和写小说感觉有哪些不同,您更喜欢写哪一种书呢?

结城浩:我觉得这两种并没有太大的不同。我们想要传达的很多价值本身就非常复杂,我喜欢把它们用尽量通俗易懂的方式讲出来。从这一点上来说,不管是编程的话题还是数学的话题,讲法都是一样的。只不过《数学女孩》从体裁上来说不是我来讲,而是小说里面的人物来讲。如果问更喜欢写哪一种,我想说,至今写的所有的书都是因为喜欢才写的,没有任何一本是出于什么义务或者在别人的要求下写出来的。

关于密码技术

ManBetX访谈:《图解密码技术(第3版)》中文版马上就要上市了,这本新版里面有哪些特别值得推荐的内容?

结城浩:第三版在整体上进行了信息的更新,另外增加了一些新的内容,如SHA-3的选拔过程以及其算法(Keccak)的结构、POODLE等对SSL/TLS的各种攻击方式、认证加密、椭圆曲线密码,还介绍了比特币是如何通过各种密码技术的有机结合设计出来的。第三版在日本的反响非常好,即使在算上小说等一般读物的情况下,甚至能够在某些书店里排到综合第二位。

ManBetX访谈:《图解密码技术》一书中提到PGP的作者Phil Zimmermann曾引发了一场关于“密码自由”的大论战,至今依然有人认为密码技术可能成为恐怖分子的帮凶,应该像武器一样进行管制,您个人如何看待这一问题?目前量子密钥分发技术也正在快速发展,中国的京沪广域量子通信专线将于今年年底交付使用,这种“无法破译”的密码技术会不会再一次引发一场类似的论战?密码技术的未来又是什么样的呢?

结城浩:我的知识水平还不足以讨论密码技术的未来是什么样的,不过就现在来看,“认证”比“加密”更重要,进一步说就是“信任”的问题。比如说,当你看到某个人的发言时,你确定发言的人就是你所设想的那个人本人吗?正在和你进行交易的人,真的就是你所设想的那个人吗?

“无法破译”这个词看起来很吸引人,但如果这里的无法破译仅限于“机密性”这个层面的话,大家应该意识到,这种技术只是我们所期望的“安全”中的一小部分而已。恐怖分子固然可怕,那么国家就不可怕了吗?如果说恐怖分子不值得信任,那么国家就一定值得信任吗?讨论到这里,我们已经离技术的话题很远了呢,但无论如何,我认为我们每个人都应该对技术有充分的认识和理解,这一点还是非常重要的。

关于编程

ManBetX访谈:除了作家之外,您还有一个身份是程序员,曾经还开发了一款在日本非常流行的维基引擎。当初您是如何想到开发这个软件的?后来您又开发过哪些其他的软件呢?

结城浩:日本有一款非常流行的维基引擎叫做PukiWiki,这个软件其实并不是我开发的,但它最早的版本是我编写的一个叫做YukiWiki的维基引擎。在YukiWiki的基础上,PukiWiki把Perl移植到PHP。当初之所以要开发YukiWiki,只是因为我知道了维基这个东西,想自己做一个玩玩而已(动机很单纯对吧)。除了这个以外,我自己还开发过一个叫做MakeWeb的软件,它可以将纯文本转换成HTML和LaTeX。开发这个软件是为了方便开发自己的网站。其实MakeWeb就相当于现在的Markdown,只不过我当时写这个软件的时候是1996年(!),那时候还没有Markdown呢。我还编写过其他一些小的工具或者脚本,基本上都是为了方便自己写书用的。

ManBetX访谈:日本的程序员生活是怎样的?工作起来,尤其是进入某个项目后,就不考虑生活中的其他事情,专注工作吗?对于如何平衡生活与工作,您有什么建议?

结城浩:“日本的程序员”还是太宽泛了,不同的行业其工作状态也不同。有些人每天要花很多时间在公司里,也有些人能够很好地平衡工作和生活。我离开公司不做全职程序员已经很久了,当然那个时候确实工作时间非常的长,但自己确实又没有什么办法解决这个问题,感到很苦恼。现在看起来,当时自己还不够成熟,没有办法很好地管理自己的工作,所以其实我也没办法给大家太多的建议。

不过话说回来,“平衡生活和工作”本来就并不容易,要达到这样的状态得有自己的想法,靠“别人说应该如何如何”并不是长久之计。因为工作和生活之间密不可分,同时作为他们作为一个整体又和人的价值观密不可分,对于从事智力活动的人来说尤其如此。单纯地增加私人时间肯定是不行的,或许将时间简单地划分为“工作”和“生活”这样的二元论本来就不是一种合理的思考方式?因此我认为,知难而进、独立思考,这两点都是很重要的,无论工作还是生活,都是人生的重要一部分。

ManBetX访谈:在技术更迭飞快的时代,计算机从业者常常会担心被时代抛弃,因为新技术不断涌现,但自己又对这些技术一知半解,很多人因此患上了“技术恐慌症”,您是否也有同样的感受?对于“如何才能不被时代抛弃”,您有什么建议?

结城浩:我在网上写过一组文章“程序员的心理健康“,其中就有一个关于“信息恐慌”的段落,写的就是新的东西层出不穷,让人们感到恐慌的这样一种心理状态。在那个段落中我给出了一些建议,就是培养一种“其实这是个机会”的心态。感到技术更迭飞快的并不只有你一个人,所有人都是,因此其中一定能够找到你施展的空间,不是吗?

程序员的心理健康——关于“信息恐慌”(译文)

计算机的世界瞬息万变,让人感觉似乎不努力往前跑就会被抛弃,的确,现实中真的有因为这样的原因丢了饭碗的人(对吧?)。

于是你得经常看计算机杂志和专业的书籍,还得订阅一些邮件杂志,上网收集各种资料,不然完全跟不上话题,因为新的东西出来得太快,新产品、新编程环境……

但要是长年累月过这样的生活,恐怕神经要崩溃了。其实我也是这么过来的,以至于有时看到专业杂志和书籍都会感觉头疼,现在也会如此。

所谓“信息恐慌”,其根源就是觉得必须得不断的获取新的信息,但又被日趋膨胀的信息量压得喘不过气来。我不知道到底有没有这么一个词,就当是我为自己身上的症状起个名字吧。

那么到底应该如何摆脱“信息恐慌”呢?当我遇到类似感觉的时候,我会想“不,其实这是个机会”。

唉,最近出来好多新的概念,有好多东西要学啊→“不,其实这是个机会”。要学的东西很多,对于所有人都是一样的,如果我能把自己理解的部分很好地讲给别人听,这不就是我发挥价值的机会吗?有了这种积极的心态,就会感觉好多了(至少我是这样)。

还有一种方法,就是当感觉出现“信息恐慌”的时候,能够清醒地认识到自己可能已经太累了,需要调整一下。就好像编译代码的时候看到warning,就要停下来把代码检查一遍一样,当感觉出现“信息恐慌”的时候,也要停下来把自己的生活检查一遍。不要陷入恐慌之中,而是把恐慌当作自己健康状况的一个报警器就好了。

再或者,喝点酒睡一觉可能也是个不错的主意吧。

(1996年10月10日)

关于数学

ManBetX访谈:您写了很多和数学相关的著作,书中的巧妙证明过程,总是给读者以强烈的震撼,大多读者表示自己永远也想不出这样的解法。您认为数学学习和天赋有关系吗?您自己学习数学的经历是怎样的,遇到过什么困难,有什么值得分享的故事?

结城浩:我自己对数学当然也有喜欢和不喜欢的部分,也有擅长和不擅长的部分。对于那些最顶尖的数学家来说,一定的天分和直觉肯定是需要的(当然,我并不是数学家)。不过数学书籍上面写的那些东西,其实都是成百上千年来各个时代最优秀的头脑的智慧结晶,所以我觉得看到这些东西的时候真的没有必要感叹“自己永远想不出”。我的书里的那些内容,抛开展现的方式,其最本质的内容大部分都是引用其他参考文献的。我写书的过程,其实就是从自己读过的很多书中进行思考,并把头脑中闪过的感动用文字表达出来而已。我希望能够将自己从知识中获得的喜悦和感动更多地传达给我的读者。

ManBetX访谈:《数学女孩》描述的高中生活没有围绕成绩、题海展开,反而尽现了追求数学魅力的青春记忆,您当初为什么会想到用青春小说这样的体裁来写数学的故事呢?有读者感叹,如果有这般的数学教科书,数学教育一定会提升一大截。如果改革教科书,您最想从哪些方面入手?您认为日本与其他国家的数学教育有哪些最主要的区别?

结城浩:我写《数学女孩》的缘起和详细经过都写在一本叫《数学女孩的诞生》的书里。最初想着写一本数学读本的时候,脑子里出现的形象就是一个擅长数学的少女,然后我就在网上写了数学女孩的原型故事。其实我也不明白为什么会这样写,好像在我心里,用“故事”和“对话”来聊数学就是一种很自然的风格。

数学故事和教科书所需的要件不同,改革教科书可没有那么容易。教科书的前提是让老师来教,和可以自由阅读的故事书从构成上就完全不同。我不知道其他国家的教科书是什么样的,至少日本的数学教科书中很少有不准确和不恰当的描述,从准确性来说质量还是很高的。我掌握的信息有限,没办法从整体上去讨论数学教育,不过我希望数学教育能够多向学生展现数学的魅力,让他们更有兴趣和动力去学习数学。数学本来是一个很有魅力的学科,我感觉人们过于厌恶它了。

ManBetX访谈:有部分计算机从业者认为,在实际项目中,数学的作用似乎并不大,但与此同时我们也看到,伟大的程序员,如高德纳Linus,却又无不精通数学。作为程序员,您长于数学的背景,带给您怎样的专业收获和生活体验?

结城浩:其实在很多领域,数学知识都能够直接在编程中派上用场。比如说,如果不懂离散数学、集合、逻辑、进制的相关知识,可能没有办法很好地编程;如果不懂三角函数等函数以及几何学、矩阵和简单的微分方程,可能也很难去编写游戏方面的程序;对于最近流行的人工智能和机器学习,如果不懂概率和统计的话也很难下手。然而,对编程有用的并不只是数学“知识”,还有学习数学所接受的“训练”过程本身。将现实中的事物转化成模型,用抽象的概念和人造的语法与规则去表达出来,从这一点来看数学和编程其实是非常相似的智力活动呢。

ManBetX访谈:今年AlphaGo引爆了机器学习和人工智能相关的领域,这是否意味着对于程序员来说,学好数学变得越来越重要呢?对于程序员如何学好数学,您有哪些建议呢?

结城浩:“由于人工智能和机器学习的兴起,对于程序员来说学好数学变得越来越重要了”,对于这一点我觉得很难简单地做判断。程序员很善于对功能进行封装,就算是人工智能和机器学习这种看似高深的东西,将来必定会出现很多面向“用户”封装好的系统和服务。当然,精通数学并没有坏处,我也不是说数学就没那么重要了,我只是想说数学一直都很重要,和当下流行什么东西没有什么关系。

关于对读者的建议,我就简单说说吧。很多程序员对数学,特别是数学公式有一种抵触情绪。我认为即便不懂具体的理论,也应该养成遇到公式都仔细看一遍的习惯,平常先掌握一些基本的数学知识,遇到需要深入学习的部分再去探索就好。

关于个人

ManBetX访谈:您是基督教徒,能简单介绍一下这方面的经历和感受吗?您又是如何看待信仰与科学技术之间的关系呢?

结城浩:我在20多岁的时候有过一段非常痛苦的时期,在此之前,我一直相信人可以靠自己的力量在这个世界中纵横驰骋,但后来我发现自己的这个想法太傲慢了。当遇到自己无论如何也无能为力的状况时,除了苦恼真的无计可施。就在那个时候,我开始信圣经中的基督,并成为了一名基督教徒。此后,我每周都去教堂,读圣经,过着信仰上帝的生活。

我写了很多技术方面的书,但是我却信基督。对于这一点可能很多人抱有疑问,他们可能觉得信仰上帝是一种不科学的行为。我认为信仰上帝和用科学方法去思考这两者并不矛盾,因为它们各自所涉及的范围不同。相信圣经上的文字,这一信仰是用来回答“我为了什么活在世上”这个问题的,而无论再怎么学习科学,也绝对无法回答“我”这个特定个体应该如何行动这样的问题。科学的目的是解开“世界的奥秘”,无法解开“我这个人的奥秘”。我自己的人生何去何从,这其中的奥秘是需要通过信仰来学习的。

ManBetX访谈:您似乎在网上从来不公开自己的照片,而是一直用一个小妖怪的头像。您不喜欢抛头露面的主要原因是什么?用这样一个头像背后有什么故事吗?

结城浩:我一直不公布自己详细的生平经历和照片,用的那个头像名字叫作“Thread妖怪娃娃”,是我自己画的,其中thread一词的意思是多线程编程里面的“线程”。我写《用Java语言学习设计模式:多线程篇》这本书的时候,在书里画了这么一个角色当作运行代码的主体,从此之后我就用这个形象来代表自己了。我的推特头像,以及我在书上签名的时候都会用这个形象。之所以不公布照片,主要还是出于信息安全的考虑,我不喜欢主动公开自己的隐私。

ManBetX访谈:感谢结城浩先生,希望您能带给读者更多的精彩书籍!

结城浩:最后我想说,感谢大家喜欢我写的书,也感谢大家对我的工作和个人报以如此的兴趣。我今后还会积极地写更多快乐和有趣的作品,希望大家继续支持,谢谢。

ManBetX访谈特约记者: 周自恒, IT、编程及自然科学爱好者,资深技术图书译者,专栏作者,科研媒体关系户。 译有《图解CIO工作指南(第4版)》《大数据的冲击》《代码的未来》《30天自制操作系统》《图解密码技术(2、3版)》《家用游戏机简史》《有趣的二进制》等。

更多精彩,加入ManBetX访谈微信!