写点什么

Swift 和其他语言的开源故事

  • 2015-06-15
  • 本文字数:2199 字

    阅读完需:约 7 分钟

首先我要认个错,其实严格来说,编程语言是不存在开源一说的,语言是一种规范,是一个标准,任何人都可以实现这种规范,我们通常说的开源语言,其实指的是它的官方基础类库、开发工具、编译器、解释器、运行时环境等等,所以咱就不深究措辞了哈。

最近苹果的 WWDC 大会上爆出的一条消息让我被强制刷屏,感受到了“视觉疲劳”——Swift 2.0 开源,据说当时现场响起了最热烈的掌声。“最”这个字用地很好很微妙,也从某种程度上反映出开发者们在苹果长期以来相对封闭的生态圈里看到了一丝开放的苗头。索性咱们就聊聊几个语言的开源故事。

Swift

先说说风口上的飞猪——Swift,刚刚一周岁的小家伙,由于出身苹果的正统名门,一出生就受到了移动开发者的强烈关注,学习的人很多,实践的例子也有,但是由于 Object-C 多年积累的成熟生态圈的固守,所以生产环境中的应用比例一直不是很高(之前看过一个报告,貌似在 10-20% 左右)。这一年苹果为了推广 Swift 也是拼了,各种优先规则都用上了,开源也是最新的大招。为啥,简单解释下:

  • 开源本身就是一种营销策略。铺天盖地的新闻报道已经是明证,特别是对于苹果这样的企业来说,一点广告费不用花,Swift 已经名声在外了。
  • 开源表明一种开放的态度,有利于吸引开发社区的参与。现在不玩开源的企业都已经 out 了,技术选型的重要标准之一就是是否开源。所以 Swift 的开源让开发者特别是苹果生态圈的其他公司更加放心,虽然我打赌没有多少开发者或者公司会去查阅哪怕一行 Swift 源代码,但是放在那里看着也安心,对吧。
  • 开源有利于生态圈的快速发展。没开源之前,Swift 的各种工具基本都依赖于苹果原创,但是开源之后,社区就可以提供各种开发工具,生态系统可以快速构建起来。

总之,苹果的目的就是让更多的开发者赶紧用 Swift,麻溜的,让你没有不用的理由,就是这么任性,而且还支持 Linux,目的是“成为主流开发语言”,好大的一盘棋,从开源起步~

Rust、Go

插一句,出身真的很重要(如果不是最重要的话),前几天和朋友聊起 Rust 语言的发展现状,是又爱又恨,挺好的一语言,发展的太慢。我们都感叹:唉,出身差了些,如果把后面的金主从 Mozilla 换成 Google,那肯定是另外一番景象了。

说到 Google,它推出的几门语言都是开源的,其中包括著名的 Go 语言,其实对于天生带有互联网基因的公司来说,开源语言是一个非常自然的决定,不需要太多的业务分析,所以也就没有太多的故事可以展开说。

Python、Ruby

除此之外,还有哪些开源的语言是自然之举?想一下(请思考 10 秒钟)。

时间到,还有那些由“个人发明”而不是“公司行为”的编程语言,比如 Python、Ruby,它们均来自于极客们的自我创造,没有过多的商业利益,也就没有束缚,所以开放给社区是自然而然的选择,事实上,这些语言的生命力也非常顽强,在自己的一亩三分地里耕耘地很不错,也体现了开源的强大力量。

Java

说到底,那些“诞生于公司”而后又开源的编程语言的故事更八卦一些。这里面主要就是两家,Java 和.NET(抱歉,我把.NET 家族算作一门泛语言了)。

刚刚过完 20 岁生日的 Java 算是命运多桀。诞生于 1995 年的它赶上了互联网发展的第一波潮流,快速成长为最主流的编程语言之一,并长期保持着大佬地位。可惜,背后的大树 Sun 公司也有日薄西山的时候(说到这里我忍不住插一句,江湖上传言 Sun 对自己的员工太好了,做技术做的太好了,以至于忽视了公司是需要盈利的,唉,做技术做到这份上也真谢谢它了),后来被财大气粗的 Oracle 收购。

收购是发生在 2009 年,不过 Java 在 2007 年的时候就开源了。从时间来看,开源应该是个无奈的选择,当时的 Sun 已经日渐式微,虽然贵为 Java 的领导者,但是始终没有在 Java 身上找到很好的商业模式,说白了,就是不知道如何更好地从 Java 身上赚钱。有读者会问了,做语言哪有图赚钱的?没错,做语言本身可以不赚钱(除了卖企业授权和衍生品之外),但是作为企业生态系统的一部分,一定要在商业模型中体现其价值。

Sun 的问题在于,没有想清楚 Java 的定位和价值,反而成了负担。开源 Java 的目的一方面是减轻自身的负担,另一方面也是为了增强 Java 语言的地位。可以说,Android 系统给了 Java 第二春,在移动开发领域也占据了半壁江上。Oracle 对待 Java 的方式和 Sun 完全不一样,以社区来推动 Java 的发展,自己承担的职责(成本)减少很多。同时,又利用 Java 相关的一些专利牵制了部分对手。所以 Oracle 是想的比较明白的。

就以今年的 20 周年庆祝活动为例,有熟悉的朋友告诉我,Java10 周年(当时 Sun 主办)的庆祝活动在国内当时是全民狂欢的级别,烧钱很多,而今年的 20 周年活动缩水很多,不可同日而语。或许,这就是两者最根本的区别吧。

.NET

说完 Java,当然也要说说它的老冤家对头.NET 了,微软这些年虽然有些坎坷,被互联网巨头冲击不小,但依然是 IT 巨无霸之一,最近又提出了移动和云优先战略,对开源技术也持开放的心态,逐渐把.NET 家族的上上下下开源出来,对社区的震撼不亚于苹果开源 Swift。有关.NET 开源的故事,我在另外一篇文章《.NET 开源,且行且珍惜》中已经做了详细的介绍,这里就不重复了,感兴趣的读者可以回复“.NET 开源”查看。

一句话总结

开源的势头势不可挡了,逆着激流会被吞没,不如顺着激流同化为激流。

作者的微信公众号“技术风向标”,关注 IT 趋势,承载前沿、深入、有温度的内容。感兴趣的读者可以搜索 ID:jishuqushi,或者扫描下方二维码加关注。

2015-06-15 08:441679
用户头像

发布了 501 篇内容, 共 257.4 次阅读, 收获喜欢 61 次。

关注

评论

发布
暂无评论
发现更多内容

SUSE 加速汽车行业智能化发展

Rancher

Kubernetes k8s rancher

持久,redis 持久化有哪几种方式,怎么选?

知识浅谈

redis持久化 8月月更

佛山复星禅诚医院黄汉森:云边协同,打造线上线下一体化智慧医疗

阿里云弹性计算

弹性计算 分布式云 云盒 异地双活

直播预告丨阿里云佐井:关注预警6要素,帮助用户实现精准监控和告警

阿里云弹性计算

监控 预警

Rancher 2.6 全新 Logging 快速入门(2)

Rancher

Kubernetes k8s rancher

Spring Security系列教程17--注销登录的实现及原理分析

一一哥

spring security spring-boot 注销登录

Docker杀掉了容器?问题分析与解决过程全面复盘

程序员欣宸

Docker 8月月更

数字藏品app开发:数字藏品发行制作的关键

开源直播系统源码

NFT 数字藏品 数字藏品开发 数字藏品系统 数字藏品软件

MySQL查询重写插件

TimeFriends

8月月更

Selenium 中的 JUnit 注解

FunTester

【CSS 盒子模型(上)】:width、height、overflow、border

翼同学

CSS html 前端 8月月更

mysql基础

楠羽

#开源

面试突击79:Bean 作用域是啥?它有几种类型?

王磊

Java 常见面试题

如何通过经纬度坐标获取附近的地址信息?

HarmonyOS SDK

定位

混迹职场10多年的数据开发老鸟,居然被一个职场新人上了一课

雨果

数据工程师

超大规模跨域集群统一监控实践

移动云大数据

什么?MySQL的等值查询竟然出错了??

转转技术团队

MySQL

【CSS 盒子模型(下)】:padding 和 margin

翼同学

CSS html 前端 8月月更

弹性云端新算力,驱动沉浸新交互 |2022阿里云金融创新峰会

阿里云弹性计算

计算巢 云盒 倚天实例 专属Region

记录一次数据库CPU被打满的排查过程

京东科技开发者

数据库 cpu cpu飙满 调优 慢SQL

开源,无禁止即可为

Databend

开源社区 大数据 开源 #开源 databend

【CSS关键字】:inherit、initial、unset分别有哪些作用?

翼同学

CSS html 前端 8月月更 学习分享

【CSS】什么是外边距的重叠?常见的有哪几种重叠情况?

翼同学

CSS 前端 编程语言 8月月更

源码解析 kubectl port-forward 工作原理

张晓辉

Kubernetes 云原生 源码解析

技术分享 | 黑盒测试方法论—场景法

霍格沃兹测试开发学社

亚马逊云科技与TalkingData携手助力美妆巨头数字化营销闭环安全合规地提效

Lily

【CSS】怎么理解层叠性、继承性和优先性?选择器的权重如何叠加?

翼同学

CSS html 前端 编程语言 8月月更

极简云上分析,释放数据价值|Kyligence 邀您参加2022秋季线上论坛

Kyligence

数据分析 数据价值 数据管理 智能多维数据库

[JS入门到进阶] 手写解析uin8数组的工具:解析二进制字节,太快太方便了!

HullQin

CSS JavaScript html 前端 8月月更

【CSS·圆角边框】有关border-radius属性的记录以及实现原理

翼同学

CSS html 前端 8月月更

30 分钟轻松搞定正则表达式基础

霍格沃兹测试开发学社

Swift和其他语言的开源故事_Java_崔康_InfoQ精选文章