谷歌发明新编程语言Go并不令人意外,其它厂商不是也都在这样做吗?但是,尽管Go语言听起来非常有趣,我却怀疑谁会真正去使用它,以及为什么使用它。
上世纪80年代,我开始学习编程,当时新学生在学校中学习的是Basic语言。
每一个品牌的计算机都支持某一个版本的Basic,其中很多计算机甚至将其嵌入到ROM中。每一个版本的Basic具有细微差别,但相似之处更多,人们可以轻松的从一个平台切换到另一个平台。
后来我又学习了Pascal和C,它们是编译型语言而非解释型语言,它们提供了诸如结构化编程和直接访问硬件等高级功能。不过,它们的普及型依然非常强,随便选择一个平台,你都可以看到两者之一。
现在的情形已经和那时不一样。在后C语言的今天,程序员选择语言的标准,往往更多取决于他们的程序所支持的IT系统是什么。
举例来说,如果你希望编写运行在Mac OS X上的软件,那学习Objective-C是更佳选择;如果你是Windows应用开发者,可能要更多的使用Visual Basic或C#;而在IBM和甲骨文中间件控制的企业数据中心领域,Java是首选语言。
当然,你也有很多其它选择,不过多数情况下会是失败结果。数年以来,几家主流平台厂商已经统治了主流应用程序开发,并将该领域分裂成几个不同的阵营。我们是否真正需要谷歌再另立门户?
除了谷歌之外Go无人欣赏
在设计Go语言时,谷歌采用了类C语言语法,然后根据自己的看法增加和删减部分功能。换言之,谷歌Go语言设计者的理念,与C#、Java和Objective C设计者的理念非常相似,更不用说C++、Perl、Ruby和其它所有现代类C语言。
谷歌承认Go与上述其它语言并无大的差别。它的既定目标是编译更快、运行更快,融合动态语言的易用性和静态语言的强大性,同时提供支持诸如多任务处理等高级功能。
另外,Go语言创建者也并非编程新手。Ken Thompson是最早的Unix黑客之一,这决定了Go语言与C非常相似。他的老搭档Rob Pike发明了Limbo语言,并长期在Unix和Plan 9操作系统上开发。而Robert Griesemer则在Sun帮助开发了Java HotSpot虚拟机。
但是Go似乎并非第一款由资深程序员设计的语言。举例来说,C#也提供了C所没有的重大优势,它的主要设计者Anders Hejlsberg是Borland公司Turbo Pascal编译器的创造者。
Go语言不仅仅是一个新的框架、代码库或运行时环境,而是一门全新的语言,谷歌似乎在说现有的类C语言无法完成Go语言的目标,不管是C++、C#、Java、Objective-C或其它任何语言。
谷歌或许会说到做到。同时,现在还有无数专门的程序员在研究那些语言究竟可以完成什么任务。我想不仅仅是谷歌在这样做。
开发者应忠于什么?
不要误解我的意思。多元化选择并不存在什么错误,我们肯定尚未看到编程语言的终极能力。但是,让我困惑的是,越来越多的语言似乎执着于某一个特定厂商的观点或商业模式。
正如C++之父Bjarne Stroustrup所言,“C和C++取得成功的重要原因是AT&T没有试图独占这些语言。..在C或C++被人们接受之前,没有谁大规模的推销它们。C和C++的这种非商业性传播对许多程序员来说具有很强吸引力。”
我非常担心将来计算机科学教育中包含多个编程哲学课程:有苹果,有微软的,有甲骨文的,还有谷歌的。
对开发者来说,最应该忠诚的是高质量的代码,而不是提供工具的公司。在Basic、Pascal和C的时代,非常容易实现这个标准。但是当面临在C#、Objective C、Java和Go中做出选择时,我开始怀疑是否还能做到这一点,它们都非常相似,但从根本上说又互相不兼容。