Q 3: 你是否认为数学和/或物理是一种很重要的编程技能?为什么?Steve Yegge 数学有很多的分支和程序员相关,他们是“离散数学”和“具体数学”。这些分支包括的学科有,概率论,组合数学,图论,归纳证明,和其它有用的东西。我会鼓励所有的程序员都去学习离散数学,无论能学多少,因为这总比什么都不懂强。 对于传统的数学,我也不经常用,但是我需要的时候这些数学知识会很管用。例如,在我之前的工 作中我就用到了微积分。我需要估计每个小时中某服务的高 峰时间的流量负载,所以,他的负载是跟着太阳走的就像一个正弦曲线一样。最简单的方式就是把每个小时的负载曲线给整合起来。如果我不知道微积分,我就不知 道怎么更为准确地估计。 当年我在开发我的Wyvern游戏的时候,我的平面几何的知识对我非常有帮助。而且经常使用代数和线性代数的知识。但我很少在工作中使用三角学或微分方程,微积分同样也很少。 我想说,简单的数学基础让我的技能比一般程序员好过5%到10%。如果我了解更多的数学,我确信我会比今天做得更好,所以,我每周都会花几个小时学习数学。 我喜欢物理,我还在学习物理,我会花我一生去理解量子力学。但是我个却没有发现物理对我的程序员工作有多有用。当然,如果我从事一些和物理相关的工作,可能会有用,例如:3D游戏编程,或是某种物理特性仿真。 Linus Torvalds 我个人认为有很强的数学背景是一件好事。但我不确信物理是不是这样的,但是我深信懂数学的人会让你成为一个更好的程序员。这些智力模型都是相通的。 David Heinemeier Hansson 根本没用。至少对业务编程和Web应用来说没用。但是数学可能对一个人的写作有很重要的帮助。 Peter Norvig 是的。很多相法都是从数学来的:归纳,递归,逻辑,等等。 Dave Thomas 也许吧。但老实说,我没见到过懂这些学科和好的程序员有很大的相关性。 然而,我见过有音乐背景和好的编程技能有很强的相关性。我不知道这为什么,但是我怀疑大脑中的某个区域可以让人即可以写出好的音乐,也可以写出好的代码。(陈皓注:@Sir阿怪 貌似就是这个例子) Guido Van Rossum 数学,当然(对于一些学科是很重要的,我不关心微分方程,但是代数和逻辑学是很重要的),物理,我不觉得对编程技能有关,当然物理在其它很多地方很有意思。 James Gosling 当然!数学教会了我逻辑和推导……让我有了一双懂分析的眼睛。当我们分析算法的时候,数学是无法被取代的。 Bjarne Stroustrup 这要看程序员自己和项目性质了。以前的数学很有用,物理一般,但是学好物理是是学习应用数学最好的一条路。 Tim Bray 对我来说,在我的编程生涯中我从来都没有用过大学里教的数学。 Q 4: 关于编程,你们认为接下来的大事是什么?X-Oriented编程,Y语言,量子电脑 ?Steve Yegge 我认为Web编程会逐渐变成最最重要的客户端编程。而对于原来传统的客端端编程都会被废弃,如: GTK, Java Swing/SWT, Qt, 当然,所有的和平台有关的东西,例如 Cocoa 和 Win32/MFC/等。 当然,这不会一晚上就发生了。这会在第一个十年内缓慢地发生,而在第二个十年内,Web Apps最终会胜利。工具,语言,协议,和浏览器技术都会进步得非常快,并会完全超出你今天能干的事。每一年都会向前进一步,而从今天开始,我会最终决定 把我所有的应用开发全部切换到基于浏览器的应用。(陈皓注:我也是这么认为的,参看《来信,创业,移动互联网》) 微软和苹果最终不愿意这个事发生,所以,触发这个事的第一步会是一个开源的浏览器(如:Firefox)开始到了支配市场的地位,然后会出现某种Firefox的杀手级应用(这种杀手级应用可能会像iTunes一样,所有的人都会用它,只需要下载Firefox) Linus Torvalds 我并不认为我们会看到一个“大的跳跃”。我们只会看到很多的工作帮助我们把那些沉闷辛苦的工作变得更简单——会有一个更高级别的语言,也许把简单的数据库集成到语言中来会是其中最主要一个。 例如,我个人相信“Visual Basic”在编程方面比“面向对象”做得更多。当然,人们都在取笑VB是一个很烂的编程语言,并且人们在谈论OO语言都十多年了。但我还觉得不是这样 的,Visual Basic 不是一个好的语言,但是我觉得VB那简单的数据库接口比OO更重要。 所以,我认为会语言有很多的改进,并且,硬件的改进会让编程更容易,但我并不期望会有巨大的生产力或是革命性的改进。 至少,你不会开始搞真正的AI的东西,我也不认为真的AI会变成某种你不需要编程的东西。 David Heinemeier Hansson 我从不试图预测未来。我也不相信命运一说。最好预测未来的方式就是去实现未来。 Peter Norvig 大规模的分布式处理 Dave Thomas 下一个最牛的事会被再下一个最牛的事所掩盖,然后再被再再下一个所掩盖,再再再下一个所掩盖……。这是一件没完没了的事,所以,我并不会试图去找最 牛的事,因为这会让人们忘了那些最真实的问题:把基本的东西做对。我们要让用户更满意,专注于交付有价值的东西,自豪于我们做的事。一个程序员可以使用很 多工具把这些事做得更好,而不是去追逐时尚和流行。 Guido Van Rossum 对不起,我没有那么多水晶球。我CGI被发明了5年后预测过它 :-) James Gosling 有两个事是我现在最关心的,那就是要对付并行和复杂。 Bjarne Stroustrup 我不知道,我也不愿猜。 Tim Bray 不知道。 Q 5: 如果你有3个月学一个相对较新的技术,你会学什么? Steve Yegge 我的确有3个月的业余时间,我准备学一下 Dojo (http://dojotoolkit.org) 和高级 AJAX 及 DHTML。我会通过开发一个相当牛的Web应用来学习他们。Dojo 真的酷,并且我确信它会越来越好。 Linus Torvalds 嗯,我真的很爱做 FPGA(可编程芯片),但我部是太忙了而不是坐来来开始学习。我喜爱和硬件打交道:很明显这个原因是因为我最终在做操作系统,因为操作系统(除了编译器)基本上都是在和硬件打交道,但我没有真正地自己去设计和做一个硬件。 David Heinemeier Hansson Mac 的 Cocoa 编程 Peter Norvig 我想把 Javascript 学得更好,然也当然也想学 flash. Dave Thomas 如果“新”是对于我来说,那么我会去学钢琴课。 如果“新”是说技术,我猜 我会选择学习某种和为残疾人服务的有关的技术。 Guido Van Rossum 单板滑雪。 James Gosling 搞点有乐趣的东西,我会学习最新的3D渲染技术。我可能会写一个光子映射渲染器。 Bjarne Stroustrup 3个月只有很少的东西你可以学,我觉得你只能参加某个成熟领域的培训。 Tim Bray 安全,加密,数字签名,身份标识,等等。对我来说,从没学过这些东西对我来说是个很大的问题。 |