`

Google首席Java架构师谈数学与程序员的关系

    博客分类:
  • SSH
阅读更多

.
链接:http://developer.51cto.com/art/201012/238798.htm

部分文摘:
数学是一切哲学、科学的基础。数学与程序员是永远都分不开的话题,我们曾介绍过《Perl数学函数用法大全》和《并行计算的难点与数学原理解析》,本文是Common Lisp专家Peter Seibel对Google公司首席Java架构师Joshua Bloch的访谈,谈到API对设计流程的影响和Google的Java观,以及数学、散文与程序员的关系。
数学与程序员的关系

Seibel:你认识有什么伟大的程序员不会数学或者没有接受过良好的数学教育的吗?要成为一个程序员,学习微积分、离散数学和其他的数学知识真的那么重要?还是做程序员只需要一种思想方式,即使没有受过这些数字训练,也能拥有?

Bloch:我觉得是思想方式,学不学数学都能拥有这种思想。但是学一下确实有好处。我曾有个同事叫madbot,Mike McCloskey。他很懂数学,但是没有学过数论。他重写了BigInteger的实现。原来的实现是C语言函数包的封装,他发誓用Java重写,要达到基于C语言版本的速度。后来他做到了。为此他学了大量的数论知识。如果他的数学不行,他肯定搞不定这个项目,而如果他本来就精通数论,就无需费力去学习了。

Seibel:但是,这本来就是个数学问题啊。

Bloch:对,这个例子不恰当。但是,我相信即使是跟数学无关的问题,学习数学培养出的思维方式对编程来说也是必不可少的。例如,归纳证明法和递归编程的关系非常紧密,你不理解其中一个,就不可能真正理解另外一个。你可能不知道术语基本情况和归纳假设,但是如果你不能理解这些概念,你就没有办法写出正确的递归程序。所以,即使是在与数学无关的领域内,不理解这些数学概念的程序员也会遇到很多困难。

你刚才提到了微积分,我觉得它不那么重要。可笑的是这么多年来似乎已经成为了一种思维定势了,只要你受过大学教育,那么人们就认为你应该懂微积分。微积分中有很多美妙的思想,可以让人展开无穷的想象。

但是,你可以以连续或者离散这两种不同的方式思维。我觉得对程序员来说,精通离散思维更为重要。例如我刚提到的归纳证明法。你可以证明一种假设对所有整数都成立。证明过程就像施魔法一样。首先证明它对一个整数成立,然后证明针对这个整数成立意味着针对下一个整数也成立,这样就能证明它适用于全部整数。我认为对程序员来说这比理解极限的概念要重要得多。

好在我们无需选择。大学课程里这两样都教得不少。所以即使你用微积分用得没离散数学那么多,学校里还是会教授微积分的。但是我认为离散的东西比连续的东西更重要。

散文与程序的关系

Seibel:前面你提到写程序和写散文有许多相似之处。尽管数学和计算机、编程的联系一直很紧密,但是不是可以认为,写Web框架或者基于Web框架的Web应用程序所需要的技能跟写作的关系更为紧密呢?

Bloch:是啊。前面你提到Java程序员有两个不同的社群。编写库、编译器和底层框架的社群,更需要数学知识。而如果你是在底层框架之上编写Web应用程序,那么必须了解如何进行沟通,言语上的、视觉上的沟通都需要了解。遇到那些令我操作失误的网站我就很恼火。显然有些人完全没有考虑过用户怎么使用他们的产品。所以实质上,编程能力是一系列不同技能的结合。你擅长哪些技能,决定了你擅长编写什么样的程序。但是,即使是库、编译器以及底层框架也需要代码可读、可维护。如果你不擅长写作,你就很难达到你的目标。
分享到:
评论

相关推荐

    Java架构师视频教程

    Java架构师视频教程 Java架构师视频教程

    java 高级架构师教程,java 高级架构师教程,java 高级架构师教程,java 高级架构师教程,java 高级架构师教程

    java 高级架构师教程,java 高级架构师教程,java 高级架构师教程,java 高级架构师教程,java 高级架构师教程,java 高级架构师教程,java 高级架构师教程,java 高级架构师教程,java 高级架构师教程,java 高级...

    Java架构师面试题

    Java架构师面试题涵盖了许多关键领域,包括J2EE开发、大数据处理、日志管理、权限分配、服务扩展性、负载均衡、性能调优、系统整合、软件开发模型、云计算理解以及框架比较与安全性分析。以下是对这些知识点的详细...

    系统架构设计程序员向架构师转型之路

    业务理解是架构师与普通程序员的区别之一。架构师不仅要关注技术实现,还要理解业务需求,将业务逻辑融入到系统设计中。他们需要与业务部门密切合作,了解业务流程、目标和痛点,设计出能够支持业务发展的系统架构。...

    java程序员到架构师之路.docx

    Java 程序员到架构师之路 Java 程序员到架构师之路是指 Java 程序员从初学者到架构师的成长道路。这个道路需要程序员不断学习和实践,掌握越来越多的技术知识和技能。在这个过程中,选择合适的技术书籍是非常重要的...

    《Java架构师指南》 配套代码

    作为一本专为Java架构师打造的指导书籍,它涵盖了从基础到高级的多个方面,包括但不限于设计模式、并发编程、分布式系统、微服务、性能优化以及框架与工具的使用。 在Java开发中,设计模式是架构师必备的知识,如...

    架构师系列:程序员如何向大数据架构师转型?(课件+视频)

    本视频教程仅面向有兴趣转型向Java系统架构师,大数据系统架构师的学员,主要包括四部分内容:一、程序员VS架构师 ;二、架构设计与架构师 ;三、架构风格与架构模式 ;四、架构师转型模型 ;五、面向对象设计原则

    2018最新JAVA架构师培训视频教程(附笔记、源码 、视频 网盘链接 详细)

    018最新JAVA架构师培训视频教程(附笔记、源码、视频教程 全网盘链接) 内含完整资料及代码: 一、互联网并发编程 二、互联网网络通信编程 三、JAVA虚拟机 四、Linux部分 五、数据库设计与优化 六、互联网...

    蚂蚁java架构师第七/八期含项目

    2021年蚂蚁java架构师第七/八期含项目(169G) 〖课程介绍〗: 2021年蚂蚁java架构师第七/八期含项目(169G) 〖课程目录〗: 01架构师必备技能之设计模式 01.站在架构师角度分析Java动态代理模式(61分钟) 02.CGLIB底层...

    蚂蚁java架构师(第七/八期含项目) |课件完整|完结无秘

    引领互联网最新技术潮流,手把手带您轻松月入2万+,三年逆袭Java互联网架构师的经验传授与您~ 〖课程目录〗: 01架构师必备技能之设计模式 02架构师必备安全技能 03从零开始学习多线程技术 04架构师必备技能并发编程...

    java程序员简历-14套(含高级工程师,项目经理,架构师等相关经验).rar

    java程序员简历-14套(含高级工程师,项目经理,架构师等相关经验)java程序员简历-14套(含高级工程师,项目经理,架构师等相关经验)java程序员简历-14套(含高级工程师,项目经理,架构师等相关经验)java程序员...

    Java架构师指南配套代码资源

    本资源包是专为Java架构师打造的学习辅助资料,包含了与《Java架构师指南》一书配套的代码示例,旨在帮助读者更好地理解和实践书中介绍的理论知识。 首先,我们需要理解Java架构师的角色和职责。他们不仅需要精通...

    JAVA免费互联网架构师教学视频内附带网盘密码

    JAVA互联网架构师 32.12GB,517个视频。包含netty,zookeeper,dubbo,redis,JVM等等,包括视频、文档和资料等等

    java架构师(必修书籍打包)

    Java架构师是软件开发领域中的高级角色,负责指导和规划软件系统的整体结构,确保其可扩展性、可维护性和性能。以下是一些基于提供的书籍资源的相关知识点: 1. **J2EE架构师手册**: - J2EE(Java 2 Platform, ...

    99本JAVA架构师必学资料

    在IT行业中,Java架构师是软件开发领域中的高级角色,他们负责设计、实施和优化复杂的系统,确保软件的高效运行和可扩展性。本压缩包文件"99本JAVA架构师必学资料"包含了丰富的学习资源,旨在帮助Java开发者提升到...

    上千集超牛JAVA架构师课程-动力节点最全官方原版推荐 140G完全从零到架构师JAVA课程

    上千集超牛JAVA架构师课程,是一套非常强大的JAVA从零学起的课程,课程的容量也是非常的罕见。如同学们所了解的,JAVA的学习并不仅仅是一门语言,可能需要学习的是整个技术圈的内容,所以非得系统化的学习不可。课程...

    MCA JAVA后端架构师-2023版.xmind

    MCA JAVA后端架构师-2023版.xmind

Global site tag (gtag.js) - Google Analytics