QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

苹果发布新的编程语言 Swift

  • 2014-06-03
  • 本文字数:1399 字

    阅读完需:约 5 分钟

在 6 月 3 日凌晨举行的 WWDC 2014 大会上,苹果发布了新的编程语言 Swift。Swift 是一门基于 C 和 Objective-C 的编程语言,它被设计用于开发 iOS 和 OS X 的应用程序。Swift 采用了安全的编程模式并添加了新的主流功能使编程变得更加灵活、简单、有趣。Swift 沿用了 Objective-C 的命名参数和动态对象模型,并提供了对 Cocoa 和 Cocoa Touch 框架的支持。另外,Swift 采用了与 Objective-C 一样的编辑和运行环境 LLVM,因此它可以兼容 Objective-C,开发者也可以在开发过程中无缝切换。

Swift 支持代码实时预览(Swift Playground),开发者在左侧输入代码的同时即可在右侧实时预览代码执行结果。这也就是说 Swift 代码可以被实时编译并输出(同 Objective-C,Swift 会被 LLVM 编译为 Native Code 后运行),开发人员可以拥有更加流畅的编程体验。

据官方介绍,Swift 的运行速度飞快。比如在对复杂对象排序这一功能点上,它的运行速度均快于 Python 和 Objective-C。另外,Swift 允许开发者通过非常少的代码来实现更多的内容。在发布会上,苹果演示了如何通过一行简单的 Swift 代码来完成了一个完整图片列表加载的过程。

Swift 汲取了众多语言的优点,它在保证性能的同时,又不失灵活。下面是 Swift 语言的一些亮点:

  • 整合了闭包与函数指针
  • 元组以及多返回值
  • 兼容 Objective-C
  • 支持代码实时预览
  • 支持函数式编程
  • 协议和扩展

Swift 的发布在社区中引起了热烈讨论,以下是一些来自社区的观点:

来自 Kayac 的王巍认为Swift 是无数工程师和语言设计天才的努力的成果,吸收了众多语言的精华,是一门先进的编程语言。相比Objective-C,Swift 更加简单和易学,并且Swift 可以和原来的Objective-C 或者C 系的代码混用(注意:不同于Objective-C 和C++ 或者C 在同一个.mm 文件中的混编,Swift 文件不能和Objective-C 代码写在同一个文件中,需要将两种代码分开),所以这门语言应该值得开发者学习和使用。另外,按照苹果开发者社区的一贯的跟进速度,在不久的将来,Apple 很可能会果断放弃对Objective-C 的支持,而全面转向Swift。

来自Google 的 peng_gong 认为,Swift 有很多新特性,它吸收了大量其它编程语言中的元素,比如 C#中的属性、可空值语法和泛型,Java 的枚举类型,Objective-C 的协议和扩展,Haskell 风格的区间声明语法,Python 风格的当前实例引用语法,大杂烩的好处就是任何其它编程语言的开发者都不会觉得 Swift 陌生。Swift 简单且交互性极强的编程环境可以吸引更多的开发者来开发 iOS 和 OS X 的应用程序。

旧金山的 Web 开发者 Kevin Ingersoll 认为,对于 Web 开发者来说 Swift 的学习难度要比 Objective-C 低很多,以前他曾经想写 App,但是 Objective-C 的学习障碍令他望而却步,现在这个障碍消失了。

资深 Objective-C 开发者 Mike 则对 Swift 的推出感到烦恼。因为他喜欢 Objective-C,不想学习新的语言。对于他来说,Swift 相比 Objective-C 的优势尚不明朗。他对 Swift 的第一印象是为了创新而创新,他害怕新老开发者会在是否要使用 Swift 这个问题上造成分歧(老的坚持 Objective-C,新的用 Swift)。

苹果同时发布了支持 Swift 的 Xcode 6 Beta 版本,读者可以登录苹果开发者中心下载 Xcode 6 Beta。更多关于Swift 语言的介绍读者可以阅读 Swift 开发指南。另外,FullStack 在其 GitHub 上提供了 Swift 版本的 Flappy Bird,读者可以参考学习。欢迎读者在评论中与我交流 Swift 语言相关问题。

2014-06-03 04:534172
用户头像

发布了 219 篇内容, 共 140.6 次阅读, 收获喜欢 192 次。

关注

评论

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

「春」写作平台春节精选话题

InfoQ写作社区官方

InfoQ 牛年特别策划

某挂号平台在线挂号用例

Geek_lot02c

产品经理训练营

这个技术把时间切开,让生命愈合

脑极体

什么是SNMP

如何防止手机被盗刷

石云升

2月春节不断更 手机盗刷

话题讨论 | 程序员表白,不光需要“技术”,更需要勇气!

孙叫兽

程序员 话题讨论 情人节 表白

Web页面制作基础

我是哪吒

学习 程序员 面试 大前端 二月春节不断更

当自动驾驶遇到5G,会擦出怎样的火花?这篇文章说明白了

华为云开发者联盟

人工智能 自动驾驶 AI 5G

【史上最全】Hadoop 核心 - HDFS 分布式文件系统详解(上万字建议收藏)

五分钟学大数据

大数据 hadoop 2月春节不断更

填补国内空白!建信金科携手本源量子发布国内首批量子金融算法

金科优源汇

产品 0 期 - 前三周大作业

Jxin

有了这个算法,图像上文字擦除再也用不上PS了

华为云开发者联盟

深度学习 算法 GAN 文字擦除 图像

红信圈系统开发,红信圈APP开发

luluhulian

自动驾驶“绝地求生”结束了,但深兰的造车故事才刚刚开始

脑极体

4. 列表一学完,Python 会一半,滚雪球学 Python

梦想橡皮擦

python 爬虫 Python Monad 2月春节不断更

第一性原理

熊斌

学习 2月春节不断更

架构进阶之路:复杂业务开发与领域驱动设计

程序员架构进阶

架构 方法论 七日更 28天写作 2月春节不断更

说说Golang goroutine并发那些事儿

华为云开发者联盟

线程 进程 并发 goroutines Go 语言

LeetCode题解:153. 寻找旋转排序数组中的最小值,二分查找,JavaScript,详细注释

Lee Chen

算法 大前端 LeetCode

互联网医疗里,用户需要的是什么

卢嘉敏

需求 医疗 用户

架构的变迁,从分层架构先聊起

华为云开发者联盟

架构 软件 分层架构 架构师 系统

「快」2月春节不断更

InfoQ写作社区官方

InfoQ 牛年特别策划

「新」春节新用户注册福利

InfoQ写作社区官方

InfoQ 牛年特别策划

【LeetCode】最长湍流子数组

Albert

算法 LeetCode 2月春节不断更

作业之用例

踏凌霄

我的2020年学习总结

兆熊

学习 总结

别困惑,不是你的错!90%的开发者把Clubhouse看成了Clickhouse

京东科技开发者

Clickhouse 社交 clubhouse

MyBatis专栏 - 关联查询之一对一

小马哥

Java mybatis 七日更 二月春节不断更

面试官系列:讲几个分布式自增ID的方案?

后台技术汇

28天写作 2月春节不断更

每周总结(2月1日-2月7日)

Nydia

Elasticsearch Mapping

escray

elastic 七日更 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

苹果发布新的编程语言Swift_Apple_小盖_InfoQ精选文章