如何评价 Swift 语言
展开全部
先说结论(针对Swift 2.2):Swift把几种主流语言的优势糅合得非常好,是我见过的最漂亮最现代化的语言。
“几种语言的优势”指的是:
Objective C的运行时动态支持,和基于编译期引用计数的内存管理模型,
Ruby灵活优雅的语法,
C++的严格编译期检查,C++11编译期类型推导,模版(之所以说模版template,而不是范型generic,是因为Swift的范型实现依靠编译器更多些,而不像Java/C#依赖于运行时支持),
Javascript和Ruby的closure。
糅合的结果就是,写Swift带给你的极致体验是无与伦比的。
你可以轻松地像Javascript一样用closure写函数式编程,实现callback, aync, 以及类似Promise的代码风格;而同时,你又无需忍受Javascript那样稀烂的类型系统(JS连函数参数的个数都不检查)。语法上,Swift closure几乎和Ruby一样漂亮;Javascript写closure很啰嗦,Objective C写block更难看(那个C函数指针风格的block声明我就没搞清楚过,有码农为此专门写了个blog: Fucking Blocks Syntax),C++写closure?... 眼花。
更舒服的是,Swift通过引入nullable的概念,支持在编译期对nil值进行检查。这一举解决了Objective C因为对nil值过于灵活和宽容导致的问题。而通过optional chaining, 原来的灵活性依然保留。
除此之外,Swift还支持与Objective C混编,完美支持iOS/Mac的SDK。所以在老项目中,过渡到Swift的成本是比较低的。个人推荐老项目转向Swift可以从testcase开始写。
题主说Swift是“基于脚本的编程语言”,这个说法不太妥当。Swift是一门非常严格的编译语言,它的编译期类型检查要比Objective C和Java都要严格,更别提那些真正的脚本语言了。当然,Swift可以在Xcode Playground里即时编辑即时显示结果——那是苹果的黑科技,并不意味着Swift是脚本语言。性能上,Swift不输Objective C。
初学者关心好不好学这个问题。在此也给出明确答案:不好学。Swift不是一门初学者入门语言。不要抱着写Swift可以快速上手的浮躁心态入门iOS开发。
“几种语言的优势”指的是:
Objective C的运行时动态支持,和基于编译期引用计数的内存管理模型,
Ruby灵活优雅的语法,
C++的严格编译期检查,C++11编译期类型推导,模版(之所以说模版template,而不是范型generic,是因为Swift的范型实现依靠编译器更多些,而不像Java/C#依赖于运行时支持),
Javascript和Ruby的closure。
糅合的结果就是,写Swift带给你的极致体验是无与伦比的。
你可以轻松地像Javascript一样用closure写函数式编程,实现callback, aync, 以及类似Promise的代码风格;而同时,你又无需忍受Javascript那样稀烂的类型系统(JS连函数参数的个数都不检查)。语法上,Swift closure几乎和Ruby一样漂亮;Javascript写closure很啰嗦,Objective C写block更难看(那个C函数指针风格的block声明我就没搞清楚过,有码农为此专门写了个blog: Fucking Blocks Syntax),C++写closure?... 眼花。
更舒服的是,Swift通过引入nullable的概念,支持在编译期对nil值进行检查。这一举解决了Objective C因为对nil值过于灵活和宽容导致的问题。而通过optional chaining, 原来的灵活性依然保留。
除此之外,Swift还支持与Objective C混编,完美支持iOS/Mac的SDK。所以在老项目中,过渡到Swift的成本是比较低的。个人推荐老项目转向Swift可以从testcase开始写。
题主说Swift是“基于脚本的编程语言”,这个说法不太妥当。Swift是一门非常严格的编译语言,它的编译期类型检查要比Objective C和Java都要严格,更别提那些真正的脚本语言了。当然,Swift可以在Xcode Playground里即时编辑即时显示结果——那是苹果的黑科技,并不意味着Swift是脚本语言。性能上,Swift不输Objective C。
初学者关心好不好学这个问题。在此也给出明确答案:不好学。Swift不是一门初学者入门语言。不要抱着写Swift可以快速上手的浮躁心态入门iOS开发。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询