最新文章
泰课在线 | 微信拼团成功后如何获取课程?
08-09 17:57
Unity教程 | 使用ARKit为iOS开发AR应用
07-31 17:23
Unity Pro专业版7折订阅四选一工具包之VR开发与艺术设计
07-28 11:47
网友使用虚幻UE4实现CAVE 多通道立体渲染的沉浸式环境
07-27 11:57
VR晕动症调查:未来5年内大部分VR晕动症将得到解决
07-27 11:26
AMD CEO:未来3-5年最重要 希望5年达1亿VR用户
07-27 10:44
新编程语言有风险 选择需谨慎
新编程语言的诞生浪潮
2009 年,Google 首次提出了 Go 语言的构思;去年春天,Facebook 引入了 Hack 语言;随后不久,Apple 发布了 Swift 语言。在科技领域,如同战争中胜利者书写历史一般,占据优势的公司往往热衷于创造新的编程语言。互联网建立在开发标准和代码之上,而社交网络和云计算领域被企业巨头掌控,它们正将独特的印记烙在数字科技上,这就如同征服者威廉和他的诺曼人给英语带来大量新词汇,还引入了陪审制度等新事物,影响着当地的法律和语言。
Go 语言:为解决特定问题而生
设计背景与优势
Google 的三位编码大师 Ken Thompson、Rob Pike 和 Robert Griesemer 于 2009 年半开玩笑地提出了 Go 语言的构思。像 C++ 和 Java 这类广泛使用的编程语言,在面对 Google 大规模项目部署时显得效率低下。每次添加或修改代码,都需要等待编译器将代码转换为机器可读的二进制版本,Rob Pike 曾表示等待过程长达 45 分钟,这是非常痛苦的。
Go 语言的构建简化了并发运行代码的工作,由于存在并行编程模式,它被设计用于解决多处理器的任务。每个语言都有独特的标志,Go 语言的标志是一只拗脚的地鼠。
语言设计的权衡
设计编程语言需要进行多方面的权衡。一方面,创建运行快的代码需要程序员付出更多努力,要考虑编写快速代码所花费的时间和精力;另一方面,语言在直接访问机器时提供的内存数量也是重要的权衡点。语言发明者需要在给予程序员自由和提供措施缓解失误之间做出选择。
Go 语言的创造者经验丰富,Ken Thompson 创建了 Unix,他和同伴 Pike 共同设计了被广泛应用于大多数 Web 的 UTF - 8 字符编码风格。他们深知小决策可能产生巨大影响,每增加一条规则可能意味着未来程序员需要进行更多操作,每遗漏一条规则可能导致无数崩溃。
语法规则的选择与争议
编程语言通常使用分号分隔语句,用括号组织相关语句。例如经典的“Hello, World”C 语言程序:
main()
{
printf("hello world");
}
Go 的创造者认为括号至关重要。有些语言(如 Python)允许程序员使用缩进或“隐形字符”来指示代码位置,Go 团队认为这是“深刻的错误”,括号能让程序员明确地告诉计算机如何组合代码。Google 创始人曾建议 Go 的设计人员使用方括号而非花括号,以节省开发者按“Shift”键的次数。
2009 年 12 月,Go 决定停止要求程序员以分号结束语句。分号用于解析器,现在机器会在代码递送到解析器时自动注入分号。这一改变减轻了程序员的眼睛疲劳,但要求程序员更严格地部署花括号,否则分号会注入到错误的地方。
这一选择引发了争议,有批评家认为冗余的花括号破坏了语言,而 Google 的 Andrew Gerrand 回应称,在 Google 的 Python 程序中,曾多次出现因看不见的符号导致微妙 Bug 的情况。
Go 语言的流行
尽管存在争议,Go 语言还是逐渐流行起来。Dropbox 已将大部分后端代码从 Python 迁移到 Go,运营 Wordpress.com 的 Automattic 公司也使用了 Go。Automattic 开发者 Demitrius Kelly 表示,在众多测试中 Go 的表现不错,部分原因是该语言比较容易上手,一个星期左右就能掌握。
Swift 语言:iOS 开发者的新选择
起源与痛点解决
在 Swift 语言出现之前,开发者若想为 iOS 编写程序,必须使用 Objective C 语言。Objective C 虽然有其背后的原则,但语法让很多开发者不满。编写 Mac 操作系统的老将 Andy Hertzfeld 就表示自己一直鄙视 Objective C 的语法,从未真正享受过用它编程。
Apple 将下一代编程语言项目委托给计算机科学家 Chris Lattner,他是 LLVM 项目的主要发起人与作者之一。LLVM 是一个开源项目,其核心库为编译器提供支持,被包括 Apple 和 Google 在内的众多公司广泛使用。Chris Lattner 在加入 Apple 后继续从事 LLVM 相关工作,去年 6 月,他带着 Swift 出现在 Apple 全球开发者大会上。
Swift 语言的特点与前景
Swift 旨在成为“第一款工业级质量的系统编程语言”,开发者可以轻松写出运行迅速的代码,这赢得了大批 iOS 开发者和旁观者的喜爱。Hertzfeld 认为 Swift 缓解了开发者的巨大痛点,iOS 开发者不追求 Swift 是不明智的。
然而,使用 Swift 意味着开发者要依赖 Apple 的整个生态系统。开发者需要通过 Apple 开发和销售程序,程序只能运行在 Apple 机器上,若想在其他平台运行则需重新编写代码。Hertzfeld 抵制用 Swift 工作,除非 Swift 实现开源或支持跨平台。
目前,Swift 的开源问题尚未确定。LLVM 项目的开发者曾就 Swift 的“隔绝自然”问题与 Apple 和 Lattner 沟通,Lattner 表示还未讨论开源问题,有很多人希望它开源并成为 LLVM 的一部分,但短时间内不会有定论。不过,若 Apple 宣称 Swift 是十亿 iOS 设备的未来,那么从长远来看,开发者可能别无选择,只能采用它。
编程语言的发展与选择
主流语言的起源
大型计算机时代的主流语言多起源于大型机构、企业或学校。例如来自 IBM 的 FORTRAN,以及很大程度上基于 Grace Hopper 的 Flow - matic 为 Remington Rand 公司的 Unicac 创建的 COBOL。1990 年,Sun 创建了 Java;2000 年,Microsoft 创建了 C#。
新语言的困境与潜力
创建新的编程语言需要大量资源,是一个漫长的过程,小公司难以承担。自 1960 年以来,计算机行业存在大量重复的编程语言,但程序员不太可能停止设计新语言,也难以达成通用标准,因为语言标准化的努力往往浪费时间且难以让所有人满意。
以 Facebook 的 Hack 语言为例,尽管它是开源的,但本质上是 PHP 语言的变体或扩展,未受到公司外部人士的广泛追捧,目前外界对其持“观望”态度。
开发者的选择考量
开发者在选择新语言时需要谨慎。开发者 Alex Payne 表示,选择新语言时会参考他人的选择,因为依赖于相同的库和文档,要确保进入了正确的“圈子”。
新语言有其优势,它们简化了程序员的生活,融入了新思想,赢得了开发者的尊重。不同的编程语言体现了不同公司的特点,如 Go 语言体现了服务器、开放 Web 和跨平台的特点,Swift 语言则与个人设备、应用商店和 Apple 生态系统相关。
编程语言一旦被广泛使用,其发展往往难以预测。80 年代创造的 Objective C 语言,在 25 年后成为全球移动设备生态系统的重要编程语言;1995 年推出的 Java 原本被认为用于构建浏览器小程序,最终走向了服务器端;同时发布的 JavaScript 曾被广泛遗忘,如今却让很多 Web 实现“移动”。
对于开发者来说,选择编程语言就像选择国籍,除了语法和语义,还涉及到经济、文化以及获取生计和力量的规则。为了避免被“死”语言束缚,开发者在选择时需谨慎。