.
链接:
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架构师需要精通多种数据库技术,包括关系型数据库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架构师打造的指导书籍,它涵盖了从基础到高级的多个方面,包括但不限于设计模式、并发编程、分布式系统、微服务、性能优化以及框架与工具的使用。 在Java开发中,设计模式是架构师必备的知识,如...
资料及代码 一、互联网并发编程 ...五、数据库设计与优化 四、Linux部分 三、JAVA虚拟机 七、互联网框架应用 六、互联网中间件架构设计 二、互联网网络通信编程 八、互联网分布式综合项目实战
本视频教程仅面向有兴趣转型向Java系统架构师,大数据系统架构师的学员,主要包括四部分内容:一、程序员VS架构师 ;二、架构设计与架构师 ;三、架构风格与架构模式 ;四、架构师转型模型 ;五、面向对象设计原则
Java架构师在提升技能时,必须掌握并发编程这一核心领域。并发编程涉及到多个线程同时访问和修改共享资源,因此确保线程安全至关重要。线程安全的类或方法能够保证在多线程环境下正确地执行,避免数据不一致和竞态...
018最新JAVA架构师培训视频教程(附笔记、源码、视频教程 全网盘链接) 内含完整资料及代码: 一、互联网并发编程 二、互联网网络通信编程 三、JAVA虚拟机 四、Linux部分 五、数据库设计与优化 六、互联网...
JAVA 架构师知识点总结 本文档旨在为Java架构师提供一个详细的知识点总结,涵盖了Java架构师所需的知识点,从机器学习到数据库设计、JVM等多个方面。 一、机器学习 机器学习是人工智能的一个子领域,关注于开发...
Java EE 架构师认证指南 本资源提供了 Sun 官方的 Java EE 架构师认证考试所需要准备的知识.pointer。该考试由三部分组成:多选题测试、任务指派和对指派的任务进行陈述和测试。 体系结构 Java EE 架构师需要了解...
JAVA互联网架构师 32.12GB,517个视频。包含netty,zookeeper,dubbo,redis,JVM等等,包括视频、文档和资料等等
java程序员简历-14套(含高级工程师,项目经理,架构师等相关经验)java程序员简历-14套(含高级工程师,项目经理,架构师等相关经验)java程序员简历-14套(含高级工程师,项目经理,架构师等相关经验)java程序员...