java 厌恶_【转载】《为什么java如此招人厌恶-Quora版》

译者

applewood

Sergei Turin, EECS student at Cal (引用了很多其他人的话)199 votes by Shaan

Batra, Hiroshi Ono, Horia Tu, (more)

Sometimes, the elegant

implementation is just a function. Not a method. Not a class. Not a framework.

Just a

function.

java中难以看到优雅的代码实现,有时你遍读源码,只能发现一个优雅的函数,只是一个函数,不是方法,不是类,更没有框架级别的雅致。--

John Carmack

Back when I was starting out in computer science I thought

by today we’d be writing a few lines of code to accomplish much. Instead, we

write hundreds of thousands of lines of code to accomplish

little.

当我刚刚开始在CS系学习编程时,我觉得我们使用很少的代码完成了太多的事情。现在,(java中),我们写了成百上千的代码却只实现了极少的功能。--

Lispian

Such is modern computing: everything simple is made too

complicated because it's easy to fiddle with; everything complicated stays

complicated because it's hard to

fix.

这就是现代计算(编程):简单的东西被摆弄的及其复杂;而复杂的东西继续复杂因为(缺少功力)难以使之简单。-- Rob

Pike

SimpleBeanFactoryAwareAspectInstanceFactory

--

SimpleBeanFactoryAwareAspectInstanceFactory

AbstractInterceptorDrivenBeanDefinitionDecorator

AbstractSingleonProxyFactoryBean

Java

is like a variant of the game of Tetris in which none of the pieces can fill

gaps created by the other pieces, so all you can do is pile them up

endlessly.

java就像俄罗斯方块游戏的变体(Tetris),没有任何一块能够填充到其他块的缝隙,你只能不停的将代码堆砌下去。--

Steve Yegge

Languages that try to disallow idiocy become themselves

idiotic.

(Java)语言本来为了避免(程序员)愚蠢行为,本身却变得相当的白痴。-- Rob Pike

The

problem with object-oriented languages is they've got all this implicit

environment that they carry around with them. You wanted a banana but what you

got was a gorilla holding the banana and the

entire

面向对象语言问题在于它们总是随意带出很多潜在的环境。你本来只想要一只香蕉,但最终你却得到整个丛林中一个拿着香蕉的大猩猩。--

Joe Armstrong

So much complexity in software comes from trying to

make one thing do two

things.

软件中太多的复杂性来源于让本来做一件事情的(方法/类)去做了两件(更多)事情。(缺少内聚)-- Ryan

Singer

The purpose of software engineering is to control complexity, not

to create it.

软件工程的目标是控制复杂性,而不是(像java)创建复杂性。-- Dr. Pamela

Zave

"design patterns" are concepts used by people who can't learn by any

method except memorization, so in place of actual programming ability, they

memorize "patterns" and throw each one in sequence at a problem until it

works.

设计模式是一帮只会死记硬背而毫无学习领悟的人使用的概念。他们没有真正的编程能力和技巧,只会在问题中按部就班的有尝试模式直到找到一个合适的套用。--

Jason Garrett-Glaser (a.k.a. Dark_Shikari)

Under the doubtful

disguise of the holy "code reuse" an insane amount of gratuitous complexity is

added to our environment, which makes necessary industrial quantities of

syntactical sugar to make the ensuing mess minimally

manageable.

在代码复用(令人质疑)的神圣外衣下,太多太多--令人发指的数量,毫无必要的复杂性加入到了我们的环境,导致了工业数量级别上的语法糖,不可避免的完全滑向混乱--

Uriel

It is not that uncommon for the cost of an abstraction to

outweigh the benefit it delivers.

抽象带来的成本往往超过其收益,这十分普遍。-- John

Carmack

The beauty of small and simple code is that you can bend or break

the rules as long it stays small and simple. Rules allow people to write code

without thinking. [And when] you dont think [...] you get bloated code that just

concatenates stupid patterns. People stop thinking and questioning [and] then

its just worshipping some rules without any

pruporse.

代码的简洁之美在于你能遵从或者打破任何规则,只要代码保持足够的清晰简洁。规则模式让人们能够不假思索的写出代码。[但是]当你不加思考时,你的代码臃肿不堪,各种模式的拼接。人们停止思考和问为什么之后,就只能盲目的崇拜各种模式了。--

Cinap Lenrek

The object-oriented model makes it easy to build up programs

by accretion. What this often means, in practice, is that it provides a

structured way to write spaghetti

code.

面向对象模式很容易累积来生成到。在实践中,这意味着它提供了一种结构化的方法来生成有意大利面条式的代码(杂乱纠缠的一丢东西)。--

Paul Graham

we ignore the real problems and instead invent problems

for which we know how to solve–and create a spaghetti tangled mess instead,

thinking that our ‘invented’ problem is more interesting. We then even go on to

congratulate ourselves for solving the “fake” problem, leaving the real problem

alone.

我们看不到问题真正的症结所在,而是人为的去创造了一些我们已经解决方案的问题。(尝试解决真正的问题)不去构建一大堆糟糕头顶的代码,我们选择思考我们熟知的问题。我们声称我们已经解决了问题(假的),而真正的问题却搁置一边。William

Woody

Brien Colwell, Java for research (Berkeley), profit ...28

votes by Tracy Chou, Aaron Chiu, Richard Shin, (more)

There's a culture

of bloat in the Java community. Architectures like

,

Spring

Hibernate

,

OSGi

, and even web

frameworks like Play propagate this bloat with too many configuration files and

too many abstractions. Configuration files offend the idea of static types, and

too many parts offends basic human psychology that there's a limit to how many

pieces of information can be in working memory. Each moving part is literally

taking the place of some valuable work being done effectively. The next

generation of

JVM Languages

like

Scala

eliminate

some of that thinking in the language: make singletons easy, automate idioms,

make it possible to write C-style "global" programs succinctly. I hope this

direction continues for succinct, lean-and-mean libraries for the

JVM.

臃肿不堪的代码已经成为了Java社区的风气。典型的例子有Sprint, Hibernate,

OSGI的架构,甚至一些(本来应该轻量级)web框架也喜欢通过巨多的配置文件和巨多的抽象让自己膨胀起来。配置文件与静态类型的思想想左,而且太多的组件和模块又完全不符合人类的心理感知能力--同一时间,只能处理一定量的信息。这些动态组件取代了本应该能高效完成的有价值的工作。基于JVM的下一代的语言比如Scala消除了很多语言中类似的思考障碍:单例很简单,自动化(构建)原则,可以写出类C风格的全局简洁代码。我希望这个趋势能够为JVM共享出简洁,简约和平衡的lib库。

Adam

Smith, Entrepreneur, hacker 36 votes by Rishabh Sharma, Paul Artois, Eunji Choi,

(more)

(I would have ended that last sentence with an exclamation mark,

but my language doesn't allow me to use them. Hm. To achieve the same effect,

I'll just repeat: it's way way way way way way way way, very way way way way,

super way way way way way way toooooooooooooo verbose.)

Because it's way

way way way way way way way, very way way way way, super way way way way way way

toooooooooooooo

verbose.

因为Java的方式方式方式方式方式方式方式方式,特别的方式方式方式方式,特别特别的方式方式方式方式方式方式实在太罗嗦了。

(我本来想用一个感叹号来结束强调,但java没有这样的支持。为了表达同样到效果,我只好采用重复的方式:方式方式方式方式方式方式方式方式,特别的方式方式方式方式,特别特别的方式方式方式方式方式方式实在太罗嗦了)

Joshua

Levy, Trust me. I'm a professional.18 votes by Joshua Engel, Charles Banas,

Robert Rapplean, (more)

I think Steve Yegge illustrated Java's

noun-oriented thinking most colorfully with his adaptation of this classic

nursery rhyme [1] as recited in Javaland. His article is one of the best

explanations I've seen about Java's shortcomings, and worth reading in full [2].

我认为Steve

Yeg通过下面首借用修改的儿歌很好的说明出了java的面向名词思考的风格。他的文章是我见过的对java不足的最后说明之一,值得全文拜读。

See

also:

What are the main weaknesses of Java as a programming

language?

For the lack of a nail,

throw new

HorseshoeNailNotFoundException("no nails!");

For the lack of a

horseshoe,

EquestrianDoctor.getLocalInstance().getHorseDispatcher().shoot();

For

the lack of a

horse,

RidersGuild.getRiderNotificationSubscriberList().getBroadcaster().run(

new

BroadcastMessage(StableFactory.getNullHorseInstance()));

For the lack of

a

rider,

MessageDeliverySubsystem.getLogger().logDeliveryFailure(

MessageFactory.getAbstractMessageInstance(

new

MessageMedium(MessageType.VERBAL),

new

MessageTransport(MessageTransportType.MOUNTED_RIDER),

new

MessageSessionDestination(BattleManager.getRoutingInfo(

BattleLocation.NEAREST))),

MessageFailureReasonCode.UNKNOWN_RIDER_FAILURE);

For

the lack of a message,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值