JavaScript是新的Perl?

JavaScript是新的Perl?

(尽管有上述的疑问)但别误会,我其实还是很中意Perl的,我觉得它是一款非常强大且值得琢磨的语言,只是在没把面向对象这一特性正儿八经做好之前名声没那么好罢了,,另外,人们不喜欢它的理由还因为它太难维护并且在某些方面有点诡异(strange我觉得可能是指它设计不合理不好用的地方吧)。所以如果真要说说那些诡异的语言,就先看看JavaScript吧,它比Perl还要Strange10倍。Perl至少还有一种稳定类型推断((javascript也有javascript.options.typeinference)和强制性的命名空间!(我猜你又要和我没完没了的争论强制性的命名空间有多糟了。。。直到今天全局变量在Javascript中作为解决客户端安全问题的根本依然还在使用。。

(不理解全局变量和客户端安全的关系 :()

你就说,对于一些已经经历过计算机科学界几种语言的盛衰和语言范式转变的人来说(即使我那相对较短的14年工作经历),javascript和Perl有很多共同点,如果你对于代码维护不热心,那么js的潜在维护将是你的恶魔。 但是我却喜欢javascript和Perl,javascript仅仅是在等待即将出现的新技术,使它可以像今天的Perl那样存在!

Perl 从来没有像 Javascript 如今这样火过, 一方面是因为在创业文化中Perl没有理由火起来, 即使当时创业文化里, 一个十几岁的少年能在他的卧室里做出下一代令人追捧的twitter. 别一方面是当时技术还不够流行或还不够普遍.

如果你看现在的Perl的趋势,Perl确实已经在很大程度上被Python和Ruby(相似的动态语言)所取代,因为Python和Ruby解决了一些维护问题和Perl程序员的一些抱怨。我想javascript也可能会经历相似的生命回轮,接下来可能被Dart和Coffeescript所取代,javascript的运用在很大程度上仅仅起辅助作用!

对于javascript,我们都发现了和Perl相似的对于缺少包(或者库)机制的弊端,这种弊端导致了CPAN的发展,你可以将CPAN看作一种类似jQuery插件的生态系统,这种插件系统既不是正式的,可靠的,也不是方便的。javascript还有另一个相似弊端,就是javascript在服务器端和其他语言中的运行会导致一些兼容性和运行时间的bug.可能现在你还没感觉,但是如果你尝试在windows中运行Perl或者是通过Rhino将javascript运行在java中,你将会理解上面我谈论的一些问题。现在,这些在javascript和Perl中问题都应该寻求方法以求改善,和javascript相比,Perl是更加稳定的,但Perl在过去的一段时间已经作了改善。

将jQuery和PerlCGI比较,是不是仍然不能相信javascript将会是下一个Perl?没有人真正的会抱怨javascript作为web语言,这是真的吗?他们会用核心语言吗?是,但是,我们不再直接将javascript死板用在html中。jQuery像胶水一样将javascript的整个系统粘在一起,不得不承认它确实做了很多漂亮的工作。然而,可能不用多长时间,这种语言结构的缺陷,如:强制的命名空间边界和随着项目做大语言的混乱。这种缺陷将在公司的一轮轮开发中都将会出现,大点的公司可能会尝试解决这些问题,但明显花费会很大,然后放弃!

现在又有人把一个老话题“如果构建大规模应用”拿出来讨论,讨论如何避免掉进一个已经存在很久蛇窝,蛇都长成碗口粗了(一个很久的坑,还不断有人掉进去喂蛇)。前人已经总结了很多经验和准则,它们可以应用到各种语言上,Perl,Python,Java都是适用的。现在就JavaScript来讨论同一个老话题,我看你是没有长记性。

我们都比较懒惰,大部分人都几乎忽略任何较好的实践,或者当任务最后时间到达时忽略我们的初衷。没人会在项目结束 或者当他们调去其他新组后回来修复他们的错误。当与企业的懒惰结合时, Java已成为现代编程语言中唯一能有较好生成能力的语言。

因此,像你所说的,如果Javascript注定会成为下一个Perl的话,那么我们在接下来的时间里该做些什么?

我们一直在坚持自己的打法,因为这是发展的必然步骤,我们将继续投资Javascript,另外,像 Errai and GWT这两个技术,谁能像2000年时的java那样“火”.

我们应该辩证看待javascript现阶段非常流行的事实,它确实有我们不能忘记,忽略和应该“枪毙”的程序和战略的一些缺陷。如果你能展现一种javascript长期稳定的解决办法,能够跨越团队/语言固有的局限性和能够促使企业盈利不至破产。鉴于应用大小增长时的缺少竞争和懒惰,我想那时将乐意将javascript运用在比较大型的项目中。

继续的尝试最新的javascript框架和漂亮的UT插件,继续的尝试为几种主流浏览器的 阻抗失配搭桥,设法找出那些因素会让javascript离开我们!像perl今天一样,我们仍然运用它的一些apps,我们不用管那种动态语言将会取代javascript(CoffeeScript可能性最大),但这种可能性会发生,就像perl被Python和Ruby取代一样!

然而,你也没有看见许多大的Python和Ruby项目,除非CoffeeScript能够提供像java那样的安全特性,他将可能成为一个取代者像Python和Ruby一样。实际上,很多的对于javascript/perl/Python/Ruby的比较都忽略了这篇文章所持的观点!

Java

Java已经使大多数动态语言黯然失色。虽然我们每天都可以看到一些基于Java虚拟机的动态语言提供一些语法糖来提高生产效率(译注:用少量代码即可实现复杂的功能,主要是提高生产效率),但是在大规模(企业级)项目上,Java仍然是不二之选.

现在如果把Java所面临的挑战映射到Javascript上的话,会得到异曲同工的结果.

为了支持大规模项目,我们不仅看到了一些Javascript实验替代品(如:Dart, CoffeeScript或javascript本身的一些必要的增强),同样也可能看到浏览器的一些革命性解决方案.

GWT是一个不错的开始,但发展太慢了,就好比是2002那一年的Java。我们足足等了10年,才看到了今天强大而有用的Java。现在,Java毫无疑问地拥有着世界上最大的共享库生态系统。大家都用Java。绝大多数的大学和学院都上Java课。就算你想说,在某些学校“Python比Java更受欢迎”,那也不是因为Python的能力比Java强,而更多的是因为学校想教给学生们更一般化的编程知识( http://thinkingdigitally.com/archive/the-case-for-replacing-java-with-python-in-education/),但这对我们的商业环境来说并没有什么实际的用处。函数式编程、变量替换、不需要编译,Python的这些特性,再加上一个shell语言解释器,使它确实成为一种非常吸引人的教学工具。但这并不会影响企业在日常工作中采用什么样的语言。

举例来说,当我拿到计算机学士后,在进入Red Hat之前,曾在全美排名前5的一个公共基金公司任职,那是一家大银行。老大给了我一个任务,此前大家用Java都做不了,我跟他说“好吧,我用Perl可以搞定。”然后我就搞定它了。

成功,还是失败?这是个问题

如果你能搞明白代码背后的一切——万事ok。但是前不久当我短暂的告别我的团队,我发现没有人清楚如何修改咱的代码,没有人想到要问问我是不是运行环境的变化引发了错误……于是悲剧发生了,在程序发布的前几天,他们重新用java写了一遍我所负责的代码。难道这是对于perl唯一的解决方案?神都不会同意这个观点的!相反的,还有很多方案,比如用一些更加安全的技术,用技术强制施行一些“好的”编程方式(“training wheels” of type-safety,译者注:这个似乎是一种训练方法,可以看出来是关于类型安全的训练),或者使用行业普遍的技术。javascript的使用企业都更新很快,所以不要担心这种情形姗姗来迟。

不管怎么说,javascript对于我们来说都是有益的。是它促使我们做得更好,是它让我们的思维跳出了条条框框,也是它促使我们重新去考虑我们过去所做的一切。我们没有理由忽视它,同时我们也必须承认,它是非常受欢迎的。但是,就像Perl亦或者Python,它不是终结者。我们还没有看到我们的“浏览器中的Java”,但除了等待,是的,我们会看到的。

相关推荐