`
阿尔萨斯
  • 浏览: 4186837 次
社区版块
存档分类
最新评论

闭包会简化Java吗?

 
阅读更多

Will Closures Make Java Less Verbose?

March 29, 2008

要是没看过的话,这里是他这篇文章的链接。他的观点是,Java已经太过于追求“到处都是对象(everything is an object)”了,使其在思想表达上不够简洁、清晰。他将Ben Franklin诗中的“因小失大(For want of a nail)”巧妙地用到了Java上面,更好地传达了他的意思。

而我的问题是,如果闭包可以让你多用一点动词、少用一点名词(按照Yegge的思路),那么程序员会因此创建更易于阅读的程序吗?或者说,十多年根深蒂固的文化会让任何解决该问题的尝试付之东流吗?即,无论有了多少额外的语言特性,Java程序还会继续保持它的原样吗?

如果在这个问题上没有弄清楚的话,之后再怎样修补也无法挽回Gosling等人早期出的决定(即认为使Java“打入市场”要比试图增加泛型和闭包使之更像一种语言要重要得多)。

这是任何软件系统架构的决定性因素,也是影响系统中所有东西的核心决策。这些更是你所作出的必须正确的决定,而其他问题可以晚些时候通过战略构思来解决。这些决策必须由拥有丰富经验的架构师来完成,他们知道在做什么,也会有很多疑问,但这恰恰是他们的职责所在。

Java 3K

2008Java非正式研讨会Java Posse Roundup '08)的最后一次技术会议上,我们再一次讨论了Java的未来。我们基本上得出这样一个结论,向后兼容性起初是为服务一些公司而保留下来的,但不管怎样这些公司是不会升级到Java最新版本的。

最成功的语言都从已有语言轻松转变过来了,因此程序员的知识仍然不会贬值。C++之所以如此成功就是因为它让C程序员能够轻易地过渡过来。Java同样如此成功也是因为它能从C++过渡过来。

到底应不应该发布一个“Java 3K”呢(学一下Python 3000Guido Van RossumPython可向后兼容的修复版本起了这个名字,今年晚些时候会发布)?一个仍在JVM上运行且语法和老版Java相似的新版Java没有受任何向后兼容性问题的羁绊,因此它实现了真正的泛型、闭包且去除了基元(primitives)等等。如果一个公司不想投入到Java 3K的怀抱这样的公司也往往没有升级到Java 5—那么它便继续用已有的那些东西。但那些饱受老版Java的旧问题和糟糕的旧决策困扰的程序员们便可以轻松地转移到Java 3K上面了,他们只需一条短小的学习曲线,且对生产力没有丝毫影响。

你怎么看呢?

(原文链接网址:http://www.artima.com/weblogs/viewpost.jsp?thread=227728

分享到:
评论

相关推荐

    JAVA中的1.8新特性-质问老程序员你确定你看得懂java代码吗?

    写关于java8系列文章的目的在于梳理和分享java8新增的主要特性,开发时也可以用作参考 lambda表达式是java8新增的主要特性之一,lambda表达式又称闭包或匿名函数,主要优点在于简化代码、增强代码可读性、并行操作...

    疯狂JAVA讲义

    学生提问:为什么即使我没有给多行文本域编写右键菜单,但当我在多行文本域上单击右键时一样会弹出右键菜单? 418 11.7 在AWT中绘图 418 11.7.1 画图的实现原理 418 11.7.2 使用Graphics类 419 11.8 处理位图 ...

    java源码stringbuffer-javolution:用于实时和嵌入式系统的Java核心库

    “简化的能力意味着消除不必要的,以便必要的可以说话。” - Hans Hofmann,Bootstrap 简介,1993 Javolution - Java 革命? Javolution 的实时目标很简单:使您的应用程序更快,时间更可预测! 高性能- 具有 ...

    apache-groovy-sdk-3.0.9.zip

    了解 Groovy 对 Java 语法的简化变形,学习 Groovy 的核心功能,例如本地集合、内置正则表达式和闭包。编写第一个 Groovy 类,然后学习如何使用 JUnit 轻松地进行测试。借助功能完善的 Groovy 开发环境和使用技能,...

    apache-groovy-sdk-2.4.11

    了解 Groovy 对 Java 语法的简化变形,学习 Groovy 的核心功能,例如本地集合、内置正则表达式和闭包。编写第一个 Groovy 类,然后学习如何使用 JUnit 轻松地进行测试。借助功能完善的 Groovy 开发环境和使用技能,...

    groovy-官网翻译.docx

     支持函数编程、闭包等语法,代码更易于阅读和维护  对OO(面向对象编程)和Ant DSL 支持更好,在语法层面支持编写、编译shell脚本  减少结构性代码。开发web/GUI/Console程序,效率更高  简化单元testing ...

    Groovy 教程

    本教程适合于不熟悉 Groovy,但想快速轻松地了解其基础知识的 Java™ 开发人员。了解 Groovy 对 Java 语法的简化变形,学习 Groovy 的核心功能,例如本地集合、内置正则表达式和闭包。

    plovr:plovr:一个闭包构建工具

    它旨在简化Closure开发并使其更令人愉悦。 Plovr需要Java 7或更高版本。 下载Plovr 您可以找到要下载的Plovr JAR。 从源头构建Plovr Plovr构建需要Java Development Kit(JDK)7或更高版本, 和zip 。 遵循,请...

    java企业订单管理源码-mx:用于开发Graal项目的命令行工具

    通过导入关系的传递闭包从主套件可到达的套件集合形成了mx操作的集合。 运行 mx mx可以直接运行(即python mx/mx.py ... ),但更常见的是通过mx/mx bash 脚本调用。 将mx/目录添加到您的 PATH 可以简化执行mx 。 应...

    grava-speed-test

    此处提供的代码是一个简化示例,显示了通过使用集合闭包的简单循环和过滤发现的问题之一。 如果您有关于如何提高Groovy性能的建议,请向我发送拉取请求,我很乐意将其放在分支上进行并排比较。 我们的团队正在考虑...

    Grails权威指南

     4.1 简化的orm和grails对象关系映射(gorm)  4.2 gorm基础  4.3 设置属性可选  4.4 gorm中的关系  4.5 执行crud操作  4.5.1 创建书签  4.5.2 读取书签  4.5.3 更新书签  4.5.4 ...

    放弃:超轻量级的UI运行时

    放弃Forgo是一个4KB的库,它使使用JSX(如React)创建现代Web应用程序变得非常容易。 与React不同,很少有框架特定的模式和术语...使用degit可以简化此过程: 对于JavaScript: npx degit forgojs/forgo-template-java

    adamant.tools.compiler.bootstrap:Adamant语言的编译器

    它还将提供一个平台,用于试验如何最好地支持语言功能,例如异步编程,类扩展,闭包,异常和效果类型。 基本的面向对象子集计划包括一组最少的功能以支持编程。 以下列表应作为一般准则。 一些非常基本的语言功能...

    javascript实现网页子页面遍历回调的方法(涉及 window.frames、递归函数、函数上下文)

    提炼于本人手写的纯 JavaScript 工具程序,用于遍历当前网页的所有子页面 并执行迭代回调,且回调函数返回值可用于结果回传,有助于减少闭包变量~ 其特点在于 —— 递归遍历时只检索子页面的 Window 对象,不立即...

    javascript 面向对象编程 function是方法(函数)

    遇到复杂功能,应该想着把它简化、组件化,把小功能封装成小组件,小功能块可以任意的组合得到千变万化的复杂功能。function就可以帮助我们把功能进行封装。那什么是封装呢。要我说,只要把具体实现给打包,对外提供...

Global site tag (gtag.js) - Google Analytics