swift编程语言
⑴ swift是不是最新的一种编程语言
翻完iBooks书店上的The Swift Programming Language, 也下载了Xcode 6的beta版本来试验了一下。现在可以评价一下。如发现不对的地方,请在评论中指出,我斟酌后进行修正。
主要从技术的角度。而商业的角度,吸引开发者,共同维护苹果生态圈的繁荣等之类就不说了。
我不敢说swift学了有没有用,可不可以挣更多钱,但这门语言还是比较有意思的。swift骨子里面还是objc,但打扮过,比原来的模样漂亮。个人感觉,苹果还真的想用它取代objc呢。
------------------
swift 跟 objc 共用同一套的运行时环境
swift 的类型,可以桥接到 objc 的类型,反之亦然。如 string 对应原来objc的NSString, closures对应objc的block,等等。objc 积累下来的大量库,实现不用改写,swift 就直接可以使用。(最多加个声明文件)。看两个API的声明,对比一下
objc
void
dispatch_apply(size_t iterations, dispatch_queue_t queue,
void (^block)(size_t));
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event;
swift
func dispatch_apply(iterations: UInt, queue: dispatch_queue_t!, block: ((UInt) -> Void)!)
func touchesBegan(touches: NSSet!, withEvent event: UIEvent!)
我怀疑,swift中的接口文件,是利用原来objc,c中的接口文件自动程序生成的。
同一个工程,可以同时使用swift, objc, c, c++ 四种编译语言(额外嵌入的脚本语言另算)
原来的 iOS/Mac 工程,已经可以同时使用objc, c, C++三种语言。现在支持第四种。objc, c, c++三种语言的结合很容易, objc跟c本身就兼容,objc跟c++结合只要将文件名改成.mm。而swift跟其它语言的结合,需要另外的文件进行桥接,其实也挺方便的。
这里的桥接很容易,Apple自家的各种 C 库移植过来了。比如Core Image/Audio,直接包含
import CoreAudio
import CoreImage
就可以使用了。
现在swift完全可以跟objc并存,原来的工程不建议重写,也不用重写。顺其自然,慢慢让它进化就是了。
swift 写法看起来像脚本语言,但它是真正的编译语言
初学者,看它使用了
let a = 4
var b = "hello"
没有类型定义,就想当然的觉得它是脚本语言,解释执行,这是错误的。上面两行语句是用了类型推导,类似 C++ 里面的auto。swift跟objc的运行时环境一样,写的程序跑起来不会比objc慢。swift区分了struct和class, 分别使用传值跟传引用。适当地使用struct,应该会比objc要快一点。
swift 吸收了很多其它语言的语法,写起来比objc简洁得多,不过它骨子里面的概念,跟原来objc差不多
编程语言的语法重要,但是语法背后的概念更重要。比如面向对象,常用概念无非是,继承,多态,封装,信息隐藏等。继承又可能分成多重继承,接口继承,实现继承。或者还会有些嵌套类,嵌套函数等等。
当明白语法背后的概念,知道为什么需要有这些东西。之后从一门语言切换到另一门有着相同概念的语言,其实很容易。
而语法会影响表达,理论上每门语言都可以表达任何概念。不过当某种概念在某门语言中,很难表达出来,就会倾向于不这样使用它,这种概念在那门语言的社区就难以被人熟知。
感觉上,swift有着 obj-c, C++, Ruby的影子。
暂时,我自己最喜欢的3个特性有
tuple,终于可以返回多个数值了。一行交换两个值。C++里面的tie+tuple也可以实现类似功能,不过使用库,显得噪音太多。
closure,喜欢它的简写,还有在函数最后一参数,可以写在()外面。这些特性,用来写函数式风格的程序,会很好看。而原来objc的block, 还有c++的function, 就太啰嗦了。
switch,case里面的条件匹配。
这些语法,编译最后还是会映射成原来objc的运行模型。原来objc的概念,引用记数,ARC, 属性,协议,接口,初始化,扩展类,匿名函数等等,继续有效。
我将swift看成是objc的一块大大的语法糖。
有个大块头的东西,是原来objc没有的,就是泛型。swift中 将那种操作写一次,就可以作用多个类型的语法叫做generics(泛型),而C++中称为template(模板),叫法不同,本质是同样的东西。
总的说来,swfit 涵盖了现在流行的编程方式,结构化,面向对象,泛型,函数式。
swift的新语法,可以很好地支持内部DSL
有一种编程风格,不太好归类。就是将程序拆分成,描述+解释。解释部分写一次,其它地方使用描述式的语句,而不是命令式的语句。
内部DSL,通常利用主语言的语法特性,创出一套写法,来写一些描述性的语句。这些语句组合起来,就像一门新语言似得。这个比较难理解。举个例子(从ruby那里借过来的),假如计算,几小时之后的秒数。C语言中,大概会写成
getHourSeconds(3)
而现在 swift中,只要定义了扩展
extension Int
{
var hours:Int
{
return self * 3600
}
var ago:Int
{
return -self
}
}
就可以写成
3.hours
3.hours.ago
分别是3小时后的秒数,3小时前的秒数。
同理,也可以写成
10.days
10.days.ago
这种写法,看起来跟原来的命令式写法完全不同。这些程序是描述性的。原来的objc, 做不到这点。 我估计swift以后会冒出大量这样风格的库。
这种风格,到底好不好,要看情况。比较方便定义内部DSL的语言, 我自己知道的有C++, Ruby, Lisp。现在多了Swift。
认为所有人都是0基础的,是错误的
有些人学得特别快,因为之前的基础好。语言的语法只是表面,表面的东西总是变动得比较快的。底下的东西重要得多,而看不见。水面一块冰,有些人是冰山露出一角,有些人是无根的浮冰。看起来差不多,其实差别十分之大。
我相信有些人,在两个小时之内就可以使用这门新语言。
提提那个Playground
之前苹果的员工,Bret Victor 演讲过个视频。提到这个这种可视化编程。当我们每一步操作,都得到实时地反馈,我们的做法会有很多不同,做出的东西也会不同。这个Playground,用来学习swift的特性很好用,不过我还不知道怎么才能跟工程结合起来使用,不作评论。
⑵ swift语言的介绍
Swift是Apple在WWDC2014所发布的一门编程语言,用来撰写OS X和iOS应用程序[1]。在设计Swift时.就有意和Objective-C共存,Objective-C是Apple操作系统在导入Swift前使用的编程语言Swift是供iOS和OS X应用编程的新编程语言,基于C和Objective-C,而却没有C的一些兼容约束。Swift采用了安全的编程模式和添加现代的功能来使得编程更加简单、灵活和有趣。界面则基于广受人民群众爱戴的Cocoa和Cocoa Touch框架,展示了软件开发的新方向。2010 年 7 月LLVM 编译器的原作者暨苹果开发者工具部门总监克里斯·拉特纳(Chris Lattner)开始着手 Swift 编程语言的工作,还有一个 dogfooding 团队大力参与其中。至2014年6月发表,Swift大约历经4年的开发期。苹果宣称Swift的特点是:快速、现代、安全、互动,且全面优于Objective-C语言。Xcode Playgrounds功能是Swift为苹果开发工具带来的最大创新,该功能提供强大的互动效果,能让Swift源代码在撰写过程中能实时显示出其运行结果。拉特纳本人强调,Playgrounds很大程度是受到布雷特·维克多(Bret Victor)理念的启发。JavaEye的创始人Robbin发表意见:“对程序员来说,熟悉Swift语法也不过一天时间足够了。关键是要提供高级数据类型,简化Cocoa类库,否则用不用Swift都没区别。”
⑶ swift编译器是用什么语言开发的
虽然Swift是一个全新的语言,但与Objective-C和C却有着千丝万缕的关系,Swift其实就是Objective-C的文本变种,对于这门全新的语言,苹果做的工作其实远没有想象的艰巨。LLVM编译器做工作只是先把swift翻译成Objctive-C代码,然后再把Objective-C代码翻译成C语言代码,然后再把C语言代码翻译成汇编,最终翻译成机器码。虽然Swift其实就是Objective-C,但是对入门者而言Swift远比Objective-C好学,吸取所有语言的精华,所以如果自学建议直接学习swift,但是如果参加培训建议先学习C/Objective-C,这样能够更好的理解底层的实现原理。
⑷ swift 编程语言
用的xcode;
⑸ swift这门编程语言会不会超越oc成为ios的主流开发语言为什么
以苹果的态度来看,应该是主推swift,但是这只要也得要一两年的时间才能完全代替oc。所以说现在也不用急着学 swift,也不要抱着oc能一直作为主力开发语言的心态。
⑹ swift 语言的简介
苹果公司在2014年的WWDC大会上发布了全新的编程语言Swift语言,Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题。Swift语言采用安全编程模式,且引入了多种新功能,使得编程工作更加简便,灵活!
此外,Swift语言还有技术已经十分成熟的Cocoa,及Cocoa Touch框架支持,更加可靠!
在Swift发布前,iOS和OS X的开发语言是Objective C,这是一款已经三十多岁的编程语言,并且其语法十分之吊诡,和其他C语言风格的编程语言有着极大的区别。因此,让许多想转做iOS端应用开发的程序员纷纷吐槽,“为什么Objective C这么难学?!”即便是一些已经在做iOS端开发的程序猿也表示,如果不是苹果只支持Objective C,自己其实并不想用Objective C做开发。
因此,苹果此次发布的Swift这款语法更为简洁的,兼容Objective C的语言。而在其开发者指南中,我们可以看到Swift从Python和Java Script中学得了许多东西,从而让Swift更为易读,或者说更为“口语化”。
然而,对这类语法更为简洁的语言,许多人会质疑其运行效率。对此,苹果以对复杂对象的排序为例,指出Swift在许多方面比Objective C的性能更好。
Swift已经存在了多年。Apple基于已有的编译器、调试器、框架作为其基础架构。通过ARC(Automatic Reference Counting,自动引用计数)来简化内存管理。我们的框架栈则一直基于Cocoa。Objective-C进化支持了块、collection literal和模块,允许现代语言的框架无需深入即可使用。感谢这些基础工作,才使得可以在Apple软件开发中引入新的编程语言。
Objective-C开发者会感到Swift的似曾相识。Swift采用了Objective-C的命名参数和动态对象模型。提供了对Cocoa框架和mix-and-match的互操作性。基于这些基础,Swift引入了很多新功能和结合面向过程和面向对象的功能。
Swift对新的程序员也是友好的。他是工业级品质的系统编程语言,却又像脚本语言一样的友好。他支持playground,允许程序员实验一段Swift代码功能并立即看到结果,而无需麻烦的构建和运行一个应用。
Swift集成了现代编程语言思想,以及Apple工程文化的智慧。编译器是按照性能优化的,而语言是为开发优化的,无需互相折中。可以从Hello, world开始学起并过渡到整个系统。所有这些使得Swift成为Apple软件开发者创新的源泉。
⑺ swift 是基于什么语言实现的
swift 语言是苹果公司在2014年的WWDC大会上发布的全新的编程语言。Swift语言继承了C语言以及Objective-C的特性,且克服了C语言的兼容性问题。Swift语言采用安全编程模式,且引入了多种新功能,使得编程工作更加简便,灵活!
⑻ swift是什么意思 Swift编程语言有什么用
1、swift目前必须用xcode开发,xcode只能运行在苹果系统下。2、注意苹果系统与苹果电脑是单独的两个概念,最简单的方法,你可以在普通的windows系统上安装虚拟机软件vmware之类的,然后用vmware来安装苹果的mac osx系统,然后在这个苹果系统下来安装运行xcode。3、当然,因为苹果电脑与普通电脑的硬件是没有任何区别的,所以理论上任何电脑上也都可以安装上真正的苹果系统,这种就叫做黑苹果,不过其中最难的就是硬件驱动,要解决一是看硬件本身,二要看技术了。可以自己查找下。
⑼ 哪个iOS培训机构教Swift编程语言的
现在Swift很火!作为新的iOS开发语言受到了广大同学和开发者的喜欢,据我所知北京和长沙的无限互联都有教iOS开发的课程!需要的可以去考察一下!上次我在网上看到那个CSDN上面有个叫汪洪俊的 博客里面有很多Swift语言的教程,看了还不错。
⑽ 求swift编程语言的软件
swift与object-c开发环境都一样,都是mac os x上的xcode,也就是说你要么有一台mac主机(笔记本或对台式机都行),要么在windows上用虚拟机安装mac os x,要么去弄一台黑苹果主机(苹果电脑与普通电脑硬件没有任何区别,在普通电脑上安装的苹果系统就称之为黑苹果)