Author:
Benji Smith
Translator:
Evan WangOriginal Link:
Why I Hate Frameworks 我正处于建造一个基于Java的Web应用的规划阶段(是的,必须基于Java,不过我现在还不想讨论其中的原因)。在这个过程中,我评估了一系列CMS应用容器框架,它们大多拥有J2EE门户、采用与JSR相兼容的MVC架构、基于角色等。
然而在花了几十个小时阅读功能列表和文档后,我几乎想戳瞎我的双眼。
首先假设我决定做一个调味品架子。
我以前做过一些小的木工活,因此我知道自己需要以下东西:一些木头和基本工具,包括卷尺、锯子、水平仪和锤子。
如果我想造一栋房子,而不仅仅是一个调味品架,我还是需要卷尺、锯齿、水平仪和锤子(以及其它东西)。
所以,我跑到一家五金店,问一个销售员,哪里能找到一把锤子。
“锤子?”他说:“现在几乎没人要买锤子了。这个已经过时了。”
我很惊讶这样一种发展,于是问他为什么。
“嗯,问题在于有太多种类的锤子。大锤啦,拔钉锤啦,球头锤等等。你买了其中一种,后来发现你还需要另外一种怎么办呢?你下次还得单独买一把。因此,大多数人实际上需要一把能够处理他们一生中可能碰到的所有敲敲打打的活的锤子。”
“嗯,这个听起来挺不错。那么我在哪里能够找到这样一把通用锤子呢?”
“不,我们不再销售了。他们已经废弃了。”
“真的吗?我想你刚才不是说通用锤子是将来的趋势嘛。”
“事实上,如果生产出一种能够处理所有事情的锤子,反倒不能很有效率地处理其中的任何一件。用一把大锤去拔个钉子很费劲吧。并且,你要杀死你前任女友的话,没有什么会比一把球头锤更适合的了。”
“这倒是真的。如果没有人会买这种通用锤子,而你们又不再销售老式的各种锤子,那么你们卖什么样的锤子呢?”
“事实上,我们不卖锤子。”
“那么…”
“根据我们的研究,人们需要的根本不是通用锤子。最好还是用不同的锤子做不同的工作。所以,我们现在销售锤子工厂,它能够生成任何你需要的锤子。你所需要的只是为锤子工厂招聘员工,开动机器,购买原材料,付公用事业费,诸如此类的…这样你就可以随时得到你需要的锤子。”
“但我真的不想买一个锤子工厂…”
“对头。我们其实也不再销售锤子工厂了。”
“但你刚刚还说…”
“我们发现大多数人实际上不需要一整个锤子工厂。比如说,一些人,就不可能用到球头锤。(也许他们就没有前女友。或者他们用冰锥来解决她们。)所以对一些人来说一个能生产各种锤子的工厂是没有什么意义的。”
“耶,这个实际得多。”
“所以,我们开始销售锤子工厂的示意图,以便我们的客户能够建造他们自己的锤子工厂,自行设计只生成他们实际需要的那些锤子。”
“让我猜猜看。你们现在也不再销售这些了。”
“对,真的是这样。实际上,人们不会为了几把锤子去建一个工厂。就像我经常说的,让建造工厂的专家去建造工厂吧。”
“这一点我赞成。”
“对的。所以我们停止销售这些示意图,转而销售建造锤子工厂的工厂。每个建造锤子工厂的工厂都由这方面的顶尖专家建造,所以,你根本不需要操心建造工厂的任何细节。你依然拥有自定义锤子工厂的好处,根据你自己特定的锤子设计做出你自己的锤子。”
“嗯,这个实际上并不…”
“我知道你想说什么!…我们也不再销售这些东西了。因为某些原因,也没有多少人买建造锤子工厂的工厂,所以我们又有了新的解决方法。”
“哇哈。”
“当我们回过头来审查这个统一工具的基础时,发现人们被必须管理和运作一个制造锤子的工厂以及它所生成的锤子工厂给困住了。当你需要处理类似的建造卷尺工厂的工厂,水平仪工厂的工厂,锯子工厂的工厂的时候,这很快就会变得相当棘手。更别提木材生产集团公司了。当我们审查这种状况的时候,我们意识到这对于仅仅想做个调味品架子的人来说过于复杂了。”
“是啊,这可不是开玩笑。”
“所以,这个星期,我们正在推广一种通用的建造工厂,用来建造生产工具工厂的工厂,这样你所有的用来建造不同种类工具的工厂的工厂就可以由一个单一的、统一的工厂来建造了。这种工厂将仅仅生产你所需要的工具工厂的建造工厂,而这些建造工厂将生成一个仅生产你自定义的工具的工厂来。你将得到你要的那种锤子,你要的卷尺,所有这一切仅仅需要按一下按钮(当然,也许你要发布一些配置文件以便它能根据你的期望来工作)。”
“所以,你们根本就没有什么锤子?不是吗?”
“是的。如果你需要一个高质量的,工业标准的调味料架子,你绝对需要这些高级玩意,而不是从那些破破烂烂的五金店里就买得到的锤子。”
“现在所有的人都在这么做吗?当他们需要一把锤子的时候,所有的人都在使用一个通用的能够生产工具工厂的建造工厂的工厂吗?”
“是的。”
“那…好吧。我想这就是我必须要做的。如果这是处理事情的既定方法,我想我最好还是学学怎么来用吧。”
“祝你好运!”
“这些都有文档的,对吧?”
现在我已经自豪地拥有了自己的通用的工具工厂的建造工厂的建造工厂,我很高兴地知道它与GPTBFF 0.97 RC2标准草案兼容,这是“通用的工具工厂的建造工厂的建造工厂”的标准。
很幸运地,面向工具的元工厂联盟里的工人都通过了这个版本的标准的验证。
然而标准之争即将开始:一种名为UXCTBFFF(Universal Trans-Continental Tool Building FFF)很有竞争力的原工厂技术承诺将统一建造工厂的工厂的建造行业,以使之符合那些同时使用公制和当地度量单位的国家的标准。
我的理解是只需要创建一个贯穿用户界面的抽象层的补丁包,就可以使GPTBFF 0.97 RC2与UXCTBFF标准达到95%左右的兼容。
真是太好了!
想必这种新的发展能够提升我的调料架的质量(一旦我搭建好我的工具工厂的建造工厂的建造工厂并使之运行,培训好工人,从柬埔寨进口来原木,在最近的某天,我就要开始做那个调料架了)。
译后记:
首先,洋人这种以调侃方式写的技术文章在国内很少见,国内的“技术专家”都过于严肃了,抑或其实并不了解这些技术的本质而没办法联想,只好照本宣科了。其次,当Java开发领域充斥了这么多的框架之后,你还能把持得住自己吗?在实际的软件企业中,怎样搭建自己的开发环境和平台并不断改进之,而不是盲目地引进最新框架和技术,是所有的技术领导人所要正视的头等大事。不过,在国内,往往重技术而轻管理,当然,这不是这篇文章所要讨论的问题。
相关推荐
"计算机专业外文翻译(Web应用框架)" 计算机专业外文翻译(Web应用框架)是指一种软件框架,旨在支持动态网站、Web应用程序和Web服务的开发。该框架旨在减少Web开发中常见操作的开销。例如,许多框架提供了数据库...
Marian是一个强大的神经机器翻译(NMT)框架,专为速度和效率而设计。它的核心编写语言是C++,这使得它在处理大规模数据时具有极高的性能,同时保持了最小的依赖性,降低了部署和维护的复杂度。这个框架的开发团队主要...
在探讨Cetus源到源翻译器框架的树形结构图之前,我们需要了解几个关键概念。首先,Cetus是一个由普度大学开发的源到源翻译器框架,它主要用于将C语言源代码转换成抽象语法树(AST)形式,并对树形结构的每个节点进行...
spring框架毕业设计英文翻译,用于毕业设计的外文文献翻译
SSM框架介绍及应用 Spring框架是当前最流行的开源应用程序框架之一,旨在解决Java EE开发中的许多问题。本文将对Spring框架的基本思想和核心组件进行剖析,并介绍其在实际开发中的应用。 一、Spring框架的基本...
Spring框架基础 Spring框架起源于Rod Johnson在2002年出版的《Expert One-on-One J2EE Design and Development》中的代码。这个框架融合了Java企业版(JEE)开发的最佳实践,与一流的第三方框架集成,并提供了简单...
基于pytorch框架Transformer的机器翻译项目python源码+项目说明.zip基于pytorch框架Transformer的机器翻译项目python源码+项目说明.zip基于pytorch框架Transformer的机器翻译项目python源码+项目说明.zip基于pytorch...
关于Spring的外文文献加翻译文献名:Introducing the Spring Framework
2. **Spring上下文**:这是一个配置文件,为Spring框架提供上下文信息,如企业服务(JNDI、EJB、邮件服务、国际化、验证和调度)。 3. **Spring AOP**:Spring的面向切面编程模块,使AOP集成到框架中,方便事务管理...
C# WinForm开发框架是一种基于.NET Framework的桌面应用程序开发工具,它为开发者提供了一套完整的控件、设计模式和架构,使得创建具有丰富用户界面的Windows应用程序变得更加便捷和高效。这款框架尤其适合初学者,...
总之,"免费漂亮的WPF界面框架"结合了FirstFloor.ModernUI的优势,为开发者提供了一个强大的工具,用于构建既美观又功能丰富的WPF应用程序。其自定义字体功能、响应式设计以及丰富的组件库,使得开发过程更加高效且...
总的来说,【Winform快速开发框架】是一个强大的开发工具,它通过预设的三层架构、基类封装、自定义实体和轻量级控件,为Winform应用开发提供了高效的解决方案。开发者可以借此快速搭建应用,减少重复工作,将更多...
SSH2框架,全称为Spring、Struts2和Hibernate2的集成框架,是Java Web开发中的一个常见组合。这个实例源码使用的是Spring 3.2、Struts2 2.3.4和Hibernate 4.2这三个框架的较新版本,提供了一个基础的用户登录和用户...
2. 翻译模型:这个模型的目的是将源语言的句子转换为目标语言的句子。它需要一个翻译引擎来进行实际的翻译工作,这个引擎可以基于规则、统计或者神经网络方法。 3. 后处理:翻译完成后,往往需要通过后处理来优化...
这个框架的安装包合集包含了适用于不同Android版本的版本,为用户提供了一个灵活的方式来定制和优化自己的设备。 首先,我们来看一下提供的三个安装包: 1. **de.robv.android.xposed.installer_3.1.1_39.apk**:...
注意:请正确下载相应版本。如果当前应用为32位,下载32位框架;如果当前应用为64位,下载64位框架。并且请只在这里下载,保证控件和框架版本相对应,否则会提示不支持的版本!
然后,框架会自动加载对应的翻译文件,使所有的系统消息和错误提示都显示为中文。 此外,为了确保全面的本地化,开发者可能还需要考虑日期和时间格式、货币符号、数字分隔符等文化差异,这些都是汉化包需要涵盖的...
本文将深入探讨名为“MNVVisionCk”的Halcon视觉通用框架,该框架的出现极大地简化了Halcon的使用,并提供了丰富的预封装算子和停靠功能,旨在提升开发效率和用户体验。 首先,我们要理解Halcon框架的概念。框架在...