java并发编程:lock_编程的第五个十年:J代表Java

java并发编程:lock

一段非常个人的编程历史中的第五章第一部分

在自己的一类
尽管Microsoft并不认同Oracle对Java的所有雄心壮志,但我们同意它对于软件开发人员来说是非常有价值的工具。
〜比尔·盖茨

Sun Microsystems制定了宏伟的计划。 他们想从工作站的据点转移到个人计算机。 这将使他们最近开发的SPARC处理器的市场(和利润)增长一百倍。 他们与由软件企业家Mitch Kapor创立的公司ON Technology共同创建了Microsoft Windows的替代产品。 尽管该合资企业并未成功,但通过一系列相关事件,Sun最终拥有了用C编写的SmallTalk“克隆”。

Sun继承的SmallTalk克隆包括虚拟机 ,IDE和语法。 它最初是用C ++启动的,但最终是使用Objective-C交付的。 那是Java的基础。

在上一篇介绍Smalltalk的文章中,我没有提到它是使用虚拟机或VM运行的。 虚拟机背后的想法是,与其使用编译器将源代码转换为特定处理器的操作码,不如将其编译为仅作为纸上设计存在的虚拟CPU的通用操作码。 SmallTalk是第一种专门依赖于VM的编程语言。

VM是一个仿真器:它通过将其虚拟操作码转换为其运行的物理CPU的实际操作码来仿真此虚拟CPU。 您可以编写任意数量的虚拟机,它们可以在IBM CPU上运行,可以在Sun SPARC上运行,可以在Intel芯片上运行,可以在手机的ARM芯片上运行。 将程序转换为VM的通用操作码后,它将在所有这些平台上运行。

Sun的营销人员对此做出了很大的贡献,但是Java并不是第一种无需重写即可在许多平台上运行的语言。 在Java之前很久就有ANSI C和USCD Pascal和SmallTalk。 现在,我们有了JavaScript,HTML和其他十二种语言,它们可以非常有效地在任何平台上运行一个源代码。 真的不是那么特别。

闲聊中的橡树壮大

1990年,Sun开发人员之一的帕特里克·诺顿(Patrick Naughton)厌倦了他的团队中“无方向的,热情洋溢的人”,告诉首席执行官斯科特·麦克尼利(Scott McNealy),他即将去NeXT加入乔布斯。 简而言之(长话短说),麦克尼利(McNealy)向诺顿(Naughton)提出了他无法拒绝的要约:大幅加薪,一些存货,并有机会亲自挑选一支小团队并从头开始发明一个项目。 诺顿聘请了他的导师詹姆斯·高斯林(James Gosling),还聘请了为Sun做业务发展的交易员迈克·谢里丹(Mike Sheridan)。

他们将其命名为“绿色项目”,并建立了一个臭鼬工厂¹,并决定制造一种消费类设备。 具体来说,是他们试图出售给有线电视公司的交互式电视设备。 戈斯林决定在SmallTalk克隆产品的基础上继续发展,他在办公室窗户外长出一棵树后,将其重命名为Oak。 他添加了与Objective-C包含的类库相似的类库,并且对其性能进行了高度优化(消费电子产品没有太多的CPU或内存)。 他们为此工作了四年,未能取得商业成功。 然后,Sun做出了当时令人惊讶的举动:他们在Internet上免费发布了SmallTalk克隆供任何人使用。 并称之为Java。

关于Java作为编程语言,没有什么特别的。 我知道不乏Java奉献者随时准备为Java为什么真正伟大而争论不休! 但这确实不是那么好。 没那么糟糕,但也没有那么好。 但是,它确实具有几个非常特殊的优势,从而使其在市场上无处不在。

它是专为中央机构(例如有线电视公司)控制的电视机顶盒而设计的,它擅长两件事:在很小的内存空间中操作,以及将程序作为对象通过网络发送。

这就是网络浏览器公司Netscape决定正式采用它并在浏览器中包含Java虚拟机的原因。 实际上,这是一个很好的决定。 它使浏览器成为与服务器上较大应用程序通信的小型应用程序的传递机制。 这就是使基于Web的应用程序成为可能的原因,因为如果没有它,HTML的第一个版本将无法支持足够丰富的用户界面,以允许Web应用程序与桌面应用程序成功竞争。

Java还包括一个广泛且有用的类库。 正如Objective-C包含的类库使它成为更广泛的程序员使用的更具生产力的语言一样,Java的类库也做同样的事情,并且比C ++更易于使用。

总而言之,它是轻量级的(最初),解决了一个实际问题(丰富的Web UI),带有良好的库,并得到了一家非常稳定的公司的支持,该公司将永远存在(在当时看来)。 而且与SmallTalk不同,任何人都可以免费使用它。

随着基于Web的应用程序成为规范,大型组织的IT部门对Java的采用呈指数增长。 我曾经在一个网络论坛上读过的人曾经说过(毫无判断)Java是新的COBOL,“因为它已经成为企业应用程序的事实上的新标准”。 我喜欢这种比较。

由于它的受欢迎程度,已经在改善Java的原始缺陷(主要是技术方面的东西,太无聊而无法理解)方面投入了很多精力。 从结果的角度来看,Java做得非常好。 但是,我仍然不喜欢它。 称我为小资,但就像COBOL一样,对于我来说太冗长了。 (对我而言)阅读Java就像是去参加社交活动并被那个家伙迷住了。 一个持续不断地自我介绍的单词,用十美元的单词来表达,只要五十分的单词就可以了。

这是Java中的“ Hello World”:

public class Main {
public static void main(String[] args) {
System.out.println(“Hello, World!”);
}
}

它在Python中。 我喜欢Python。

print(“Hello World”)

在我非常个人的看法,Java的占有传统3GLs地方(如之间的灰色地带梅尔 ,你不需要知道,因为别人已经完成了大部分的工作适合你),你一定要了解如何计算机工程,以及第四代语言。 Java比各种C语言要多得多,是一种普通的程序员可以使用杂技编程来启动和运行似乎一开始就可以运行的程序,但其中包含由不加区别和不知情的复制和粘贴创建的定时炸弹的语言。代码。

货物崇拜

维基百科对此说:

货物崇拜编程是一种计算机编程样式,其特征在于仪式性地包含没有实际目的的代码或程序结构。 货邪教编程通常是程序员不了解他们试图解决的错误或表面上的解决方案的征兆...货邪教程序员一词可能适用于技能不熟练或新手计算机程序员(或一个不熟悉手头问题的计算机程序员)复制了一些从一个地方到另一个地方的程序代码,很少或根本不了解它的工作方式或在新位置是否需要它”。

它增加了:

“货运邪教一词,作为习语,最初是指第二次世界大战后在南太平洋生长的土著宗教。 这些团体的做法集中在建造精美的飞机和军事起落跑道的模型上,以期召唤在战争期间带来奇妙货物的神似飞机。 该术语在计算机编程中的使用可能源自理查德·费曼(Richard Feynman)对某些实践的描述,即“货物崇拜科学”。

太多的Java程序员(例如LISP koan的新手)并不真正理解他们正在使用的库,或者他们在Internet上找到的代码或从其他项目中复制的代码,看起来似乎可以完成这项工作。

公平地说,对于使用任何SmallTalk派生工具工作的程序员来说,情况都是一样的,这些派生工具与大量的类库打包在一起,并且拥有大量的公共领域软件。 除Haskell以外,几乎是1990年以后引入的所有流行语言。

与最接近金属的编程相比,大多数现代语言都能使没有才华的程序员进行懒惰编程。

“我认为Java是21世纪的COBOL。 它有点笨拙,冗长,每个人都喜欢讨厌它……尽管不是每个人都承认这一点。 但是经理有点喜欢它,因为看起来您已经完成了很多工作。 如果100行Java代码完成一项任务,那么就好像您已经写了100行,即使使用另一种语言,也可能只需要5行。”
〜PERL语言的创建者Larry Wall
https://www.youtube.com/watch?v=LR8fQiskYII
<-该系列的上一篇文章

[1]臭鼬工厂(也称为臭鼬工厂)是一小组以非常规方式从事项目的人。 该小组的目的是在最小的管理约束下快速开发某些东西。 http://searchcio.techtarget.com/definition/skunkworks

[2]特别公平的是,我将自己描述为一个狂热的程序员。 如果不复制并粘贴他人的代码,我将无法编写有用的应用程序。 在好日子里,我明白了。

本文摘自我即将出版的《混沌工厂》 ,该书解释了为什么大多数公司和政府无法编写“有效”的软件,以及如何对其进行修复。

翻译自: https://hackernoon.com/the-fifth-decade-of-programming-j-is-for-java-5694bf59c5ae

java并发编程:lock

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值