.
链接:
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程序员到架构师之路.pdf" 以下是对《java程序员到架构师之路.pdf》的详细解读: 一、Java 编程入门类 作为 Java 程序员,快速掌握 Java 基础语法和基本用法是非常重要的。在这个阶段,需要快速过一遍 Java ...
数据库是任何应用的基础,Java架构师需要精通多种数据库技术,包括关系型数据库MySQL、Oracle,以及NoSQL数据库如MongoDB、Redis。此外,对于分布式数据库如Mycat的使用也是必备技能。 安全架构涉及用户认证、授权...
java 高级架构师教程,java 高级架构师教程,java 高级架构师教程,java 高级架构师教程,java 高级架构师教程,java 高级架构师教程,java 高级架构师教程,java 高级架构师教程,java 高级架构师教程,java 高级...
Java架构师之路是一个漫长而富有挑战性的过程,它要求程序员不断地学习和提升自己的技能。以下是一些基于给定书籍推荐的知识点,可以帮助Java程序员逐步成长为一名专业的架构师: 1. **Java编程入门**: - **...
“数据库”是任何应用程序的基础,对于Java架构师来说,MySQL、Oracle、MongoDB等关系型和非关系型数据库的使用和优化至关重要。你需要熟悉SQL语句、索引原理、事务处理以及数据库设计原则。 “JVM调优”是Java...
Java程序员简历模板 C/C++程序员简历模板 NodeJS程序员简历模板 架构师简历模板 通用程序员简历模板PHP程序员简历模板 iOS程序员简历模板 Android程序员简历模板 Web前端程序员简历模板 Java程序员简历模板 C/C++...
本视频教程仅面向有兴趣转型向Java系统架构师,大数据系统架构师的学员,主要包括四部分内容:一、程序员VS架构师 ;二、架构设计与架构师 ;三、架构风格与架构模式 ;四、架构师转型模型 ;五、面向对象设计原则
JAVA 架构师知识点总结 本文档旨在为Java架构师提供一个详细的知识点总结,涵盖了Java架构师所需的知识点,从机器学习到数据库设计、JVM等多个方面。 一、机器学习 机器学习是人工智能的一个子领域,关注于开发...
Java EE 架构师认证指南 本资源提供了 Sun 官方的 Java EE 架构师认证考试所需要准备的知识.pointer。该考试由三部分组成:多选题测试、任务指派和对指派的任务进行陈述和测试。 体系结构 Java EE 架构师需要了解...
引领互联网最新技术潮流,手把手带您轻松月入2万+,三年逆袭Java互联网架构师的经验传授与您~ 〖课程目录〗: 01架构师必备技能之设计模式 02架构师必备安全技能 03从零开始学习多线程技术 04架构师必备技能并发编程...
java程序员简历-14套(含高级工程师,项目经理,架构师等相关经验)java程序员简历-14套(含高级工程师,项目经理,架构师等相关经验)java程序员简历-14套(含高级工程师,项目经理,架构师等相关经验)java程序员...
包含了成为一名java架构师必备技能:从java高级知识点到分布式到容器等都是详细视频讲解
本资源包是专为Java架构师打造的学习辅助资料,包含了与《Java架构师指南》一书配套的代码示例,旨在帮助读者更好地理解和实践书中介绍的理论知识。 首先,我们需要理解Java架构师的角色和职责。他们不仅需要精通...
JAVA互联网架构师 32.12GB,517个视频。包含netty,zookeeper,dubbo,redis,JVM等等,包括视频、文档和资料等等
Java架构师是软件开发领域中的高级角色,负责指导和规划软件系统的整体结构,确保其可扩展性、可维护性和性能。以下是一些基于提供的书籍资源的相关知识点: 1. **J2EE架构师手册**: - J2EE(Java 2 Platform, ...
【架构师的角色与职责】 架构师在IT行业中扮演着至关重要的角色,他们是技术团队的领导者,负责设计和指导系统的整体构建。优秀的架构师不仅要具备深厚的技术功底,还需要有卓越的沟通技巧,以便将复杂的系统设计...
内容包含:并发编程,分布式项目实战视频,Dobbo,zookeeper,redis,Nginx,kafka,RocketMQ.oracle,ActiveMQ,Netty,Jvm视频
java架构师的成长之路,一图在手,一目了然,查漏补缺,逐一对照!