【转】如何评价 Apple 新推出的编程语言 Swift?

如何评价 Apple 新推出的编程语言 Swift?

原文地址:http://www.zhihu.com/question/24002984javascript

评价:若是你会Objective-C,你不须要去看它。

       若是问我这语言对普通开发者重要不重要,我说重要,能够明确告诉你这一点--它是Apple 在WWDC 向全世界推出的重磅语言我怎么能说它不重要?它下降了入门的门槛。使得大量的JS, Python, Ruby用户会使用Apple 的技术为其开发程序。它的做用,和Core Data, Interface Builder 同样,能让你快速写出一个能用的程序来。但若是你想稍作些正经事,就心有余力不足了。因此和Apple 本身的Mail 也不会去用Core Data,本身iPhoto 不会去用UICollectionView,稍复杂的App 都不会去用Interface Builder 同样,Apple 本身不会用Swift。它只是给三五我的的小团队能迅速作出能用的程序,让大公司能快速作些Prototype 而已。有人说它至关于 C#,或是至关于 Scala 对 Java 的改进,我能够告诉你们,Swift 不是这样的语言。它更像一种让人快速作原型的 toy language。php

要求 Apple 发布下一代 Objective-C 语言的呼声早就有了,每一年写数万字 OS X 评论的 Ars Technica 两年前就写了 Apple 应该去作一个语言,Objective-C without C 而且使用更现代的功能和更短的 API,以及对自动类型推导的支持,文章见 OS X 10.8 Mountain Lion: the Ars Technica review 。html

但 Apple 显然没有认真对待这门语言。很明显的,他们根本不想把 ObjC 给替换掉。而且按 Apple 的风格,若是他们把 Swift 当 ObjC 的将来来对待,确定会有一到两个 iOS/Mac 应用使用 Swift 改写。(好比 Apple 当年要砍 Carbon,首先作的就是把 Finder 重写了)。java

从语言角度,Swift 有太多的缺点:
- 它的标准库太差,只有 Dictionary, Array 和 String 及数这几种数据结构,连个 Set 都没有。想用别的?你仍是要用 ObjC 的。
- 它没有任何对异步/同步编程的支持。它无法绑定使用 GCD,所以任何正经的网络应用根本没法编写。
- 它没有任何的保护机制(private, protected),全部的 method 和 variable 都是全局可见的,这显然不能知足正经工程项目的须要。
- 只能和 ObjC 互动。若是你想正经地使用 C 或者 C++,你得写 ObjC 的 wrapper。
- 没有办法 catch Objective-C 的 exception,若是一旦出了 exception,你的 App 立马就崩了。ios

Chris 在设计这门语言时,能够明显地看到他的短视。这也很正常,他是一个作编译器的,不是作语言研究的。因此这门声称支持函数式编程的语言,根本不是函数式的:
- 仅有的支持在 lazy,闭包,及简单的函数语言函数(如 map, filter)。这 ObjC 中都能作
- 没有 pattern matching
- 类型推导差很少和 C++11 差很少,没有使用 hindley milner。c++

从上面这些特色看, Apple 对其的定位仅是给对 ObjC 头疼的开发者下降学习曲线所推出的玩具语言。前面五条中的每一条,基本都是致命的,所以 Apple 本身的项目也不会使用。作个早期 proof of concept 的 prototype 到是能够的。程序员

我能够想象,实现上 Swift 是很简单的(LLVM 很成熟了,写个新语言愈来愈简单,好比只要几步就能作个小语言: 1. Kaleidoscope: Tutorial Introduction and the Lexer),固然有可能 Apple 未来会解决这些问题使得其真正实用。但如今来看,Apple 并不但愿 Swift 来替代 Objective C。web

 

下面罗列一些知乎上其余大神的评价,并给出别人给这个评价的支持票数:objective-c

【知乎用户的回答(104票)】:express

马勒戈壁的。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。

谁都别跟我比惨!!!!!

我刚回答完这题,就看到这个鬼东西了。。。。

26 岁的时候你正在作什么?想要作什么?

我作的毕业设计就是苹果这玩意的简化版

最令我感到蛋疼的是我这大半年一直在作的项目就是在iOS上用lua作这玩意的阉割版,还挺得意的。。。。

开发了大半年,全他妈泡汤了。。。

就当练手了吧。。。

回到问题,swift是对将来编程趋势的一个尝试,看得出来苹果很谨慎当心但又野心勃勃。

苹果很黑,抄别人东西历来不给钱不说,也彻底不会提到别人的贡献

AutoLayout如是,这个也必然如此。。

此概念奶是苹果前员工,iPad交互设计师,CoreAnimation编程大师Bret Victor于2年前提出来的

上下文不通者,可围观此演讲

Bret Victor - Inventing on Principle http://v.youku.com/v_show/id_XMzUyOTIyNzg0.html

【Belleve的回答(32票)】:

Native 版的、要本身管理内存的 Scala-C# 复合体。

(你看我用了多长的词汇才描述清楚……)

不知道参数多态作的怎样,别学 Java 玩类型擦除……

还有,call/cc 呢?<del>不兼容经典逻辑</del>没 call/cc 或者等价物的语言都会陷入三角形代码的。

我在《程序员》说过,大众语言要从小众学特性,这回也不例外。PL 发展这么多年,该挖的语义特性都差很少了,剩下就是编译器后端的那点破事,这块找 @蓝色@陈甫鸼

不过对于水深火热的 ObjC 用家来讲:

如何评价 Apple 新推出的编程语言 Swift?

Playground 却是有点技术含量,不过也是抽象解释能够实现的。

【知乎用户的回答(39票)】:

读完了官方Guide(The Swift Programming Language: About Swift)以后回来反馈一下,就是

这是一个阉割掉了不少精髓,添加了一些语法糖的C#和Scala的结合体,有一些Golang的方便特性,附带Golang和JS诸多坑人陷阱的,语法与JavaFX接近的,对非UI部分不够严肃的,除了ARC以外没有GC的一种表达能力较强可是设计能力较弱的语言……换句话说,对于大型项目而言是个坑……更适合PM和小做坊快速推出创意原型,不适合追求高质量应用开发。

以及

全公有变量做为一门要写业务逻辑的严肃的语言真的大丈夫?

有太多的类库被作成了关键字,看我的喜爱吧,毕竟看上去还比较方便

看到说Closure是Reference类型的时候还以为苹果就是比Java开窍来着,结果是个半吊子工程,是个Reference没错,可是做为一个Reference该有的尊严在哪里?表达能力一会儿弱了一大截……

有Delegate是个好事情,可是你这个delegate……真的不是面向接口编程么……这样欺骗人民群众感情有意思么……

ARC里面讲竟然须要Weak Reference以及ARC与Weak Reference不兼容的时候,差点儿吓哭了……对于Guide中说到要用Weak Reference的场景,这几乎是运行必Segment Fault啊……

咦,异步呢异步呢异步呢异步呢……

另外谁能告诉我这货怎么处理异常……不能异常处理的语言不是写起来会跟屎同样么……

【vczh的回答(13票)】:

@yue wang 的答案写的很好,应该看一看。

我只想说,swift作出的不少决定居然跟我www.gaclib.net 那个随手发明来写进xml的脚本同样,譬如说$x用来表明lambda表达式啦,类型写在名字后面啦,只有let和lambda才能作类型推导啦,用一个不完整的GC语言写出来的library直接map成脚本的object model啦(基本上脚本长得那么别扭都是由于这个,我那个也同样)……

apple药丸

不过反正swift作的这么丑果粉们都不会有意见的,由于至少比更丑的oc好看(逃

【尤雨溪的回答(19票)】:

目测苹果此次会成功吸引一大批由于嫌 Obj-C 烦因此不碰 iOS 的动态语言开发者试水 iOS 开发,尤为是 web 开发者这一块。平台之间的竞争,得开发者得天下。在争夺开发者的战场上,不管是 Native vs. Web 仍是 iOS vs. Android,这都是苹果的一着好棋。

【陈默扬的回答(8票)】:

全部的人都是零基础?此言差矣。编程语言发展到如今,很大一部分工做都是库做为支撑的,你作的只是搭积木的工做,再加上逻辑判断、循环、递推、迭代等一部分逻辑。最多再加上并发、多线程等等等等,但后者也已是充分“库"话。即使是FP也差很少是回调函数的另类表达版本。

会Objective-C的确定能够更好地掌握Swift.

可是,会编译器、知道LLVM架构或者离散数学、JS编程、库编程掌握得特别好信手拈来的人,确定能更快拾起SWIFT。全部的这些语言的new features,早在多年前就有人提出的了,只是须要包装、整合和广告一下。

新语言基本上只会对想要入门的人有区别。

深刻了解以后,区别远远没有那么大,由于无论语言怎么变化,你想要达到的运行效果、想象力、可维护性才是核心。只要你是编程大牛,那么你就是编程大牛,跟语言无关。

【王一卓的回答(11票)】:

It's an very expressive language。

给一些以为“编程水平终于和你们处于同一块儿跑线上了”的人教点冷水。Swift这种能更加发挥coder创造力的语言,只会让初学者和高手的差距更大。A language is about expressing yourself。Swift去掉了不少的boilerplate,让人更着重于表达本身而不是fight the language(<- Java)。关键看点是如何让closure, type inference和generics一块儿工做。鉴于Apple一贯不在意backward compatibility(<- Java),应该能够达到C#的水平。

另外,这不就是(死掉的)JavaFX Script么:JavaFX Script

一些JavaFX Script 的code example:

 

 

 

import javafx.stage.Stage;

import javafx.scene.Scene;

import javafx.scene.text.Text;

import javafx.scene.text.Font;

Stage

{ title: "Hello World" width: 250 height: 80 scene: Scene { content: Text

    { font : Font { size : 24 } x: 10, y: 30 content: "Hello World"

    }

}

}

import javafx.ext.swing.*;

var myFrame:SwingFrame = new SwingFrame();

var myLabel:Label = new Label();

myLabel.text = "Hello World!";

myFrame.width = 200;

myFrame.height = 50;

myFrame.visible = true;

myFrame.content = myLabel;

在NetBeans里也是相似于PlayGround的所见即所得。

当时还用JavaFX Script重写过一些Java的animation,确实比Java更简练(没有比Java还verbose的语言了)。但也是局限在UI相关的代码,逻辑多的话仍是用Java写的。

【元彦的回答(3票)】:

就像这个标语中提到的 “Write the code. Change the world.”,本次最大的亮点非Swift莫属。苹果应该在两三年前就已经开始不知足与Obj-c语言本事的开发效率与工程能力,发布新的语言也是苹果对开发者的一次回馈(以苹果强势的产品地位),翻阅了下 “The Swift Programming Language” 电子书 iTunes - Books,一些感想:

0. 没有封号 ";", 点赞

1. 比其obj-c来讲,总体语法风格看起来舒服了,有经验的开发者花几分钟快速翻看了下,应该就能够快速上手开发了

2. Swift中整出了一些新的关键字?subscript、protocol、extension...

3. 喜欢Optional Chaining,很实用的语法糖: foo.bar?.baz 若是bar不为nil,就调用bar.baz方法

4. 仍是没有找到package或namespace的介绍,这是什么状况?

5. 以往Obj-c只在客户端运行,Swift是一次能让其跑在Server端的机会吗?

6. 下一个Swift又叫什么呢?啥是把Swift开源出来呢~

【Saviio的回答(3票)】:

这之后MacRuby就是小三了吗....永远扶不了正了。

题图上有闭包,有命名空间,多重返回,类型推导,模式匹配,操做符重载

稍期待一下swift,具体看了ref再说。Functional pattern+Object orientation 俨然一个scala lol....

另外,apple搞LLVM果真不是没道理的。

就是拿静态和动态比,还和Python比...Apple不厚道..

【题叶的回答(0票)】:

做为一个 JS 开发者感想吧, 本人 Macbook Air 用户, 一年 Backbone 应用开发经验.

入门 Go, Haskell 等等语言, CoffeeScript 死党, 对作 MVC 界面的关心远超过底层实现.

尝试看过一点 Objective-C, 可是门槛立刻就被吓退了, 以及巨大的 IDE.

我长期写 CoffeeScript, 并非不懂编程, 而是难以转换编程的思路,

语法上看, Swift 都是其余编程语言中早已出现的种种功能. 并无 Go 那样革命性的意图.

可是语言的友好程度, 已经调试环境放出的截图让我感到门槛下降了不少.

另外语法有好的语句一般遇到问题是性能, 苹果给的数据也很不错.

因此看好.

【知乎用户的回答(5票)】:

做于语言来讲Swift其实没啥好说的,no silver bullet对于新语言永远适用。

Playground在实际开发中我以为没有预期的那么大,由于多数应用逻辑复杂且上下文相关性很强。

可是对于原型开发会很是有帮助。

【周全的回答(5票)】:

粗看了一两章 先给个映像 往后修改

相比OC便利了不少

但基本属于处处抄一点的语言

顺便吐槽本届WWDC

WWDC == We Will Definitely Copy

【知乎用户的回答(5票)】:

刚看完直播,第一眼看到这个新语言的时候真的眼前一亮!(毕竟今年发布会亮点好少。。。)

做为一个正在入门的小白,对于即时预览感受开发起来必定颇有成就感并且很更直观知道哪一个更想像有入差。看得出苹果想把APP开发推广到非专业爱好者中间来,我以为这个想法就很让人激动了,不少人拿苹果当逼格高的东西,可是苹果再作的是怎么让它更加亲民更受众,不只是享受方便,更包括本身去开发。毕竟没有人比本身更了解自身需求,这是特别有意思的想法。

SWIFT你们都尚未拿到,相信过段时间运用在实践了,会给予更客观的评价。但愿它能给咱们惊喜,和大神们一块儿接触一门新语言,想一想还有点小激动呢。

【轩辕老布的回答(3票)】:

看Playground的时候有看到var和let,有闭包,有泛型,有类型推断,Fast Iteration应该是跟Linq差很少的东西,实时编译说明此语言可能能支持运行时编译运行,因此我认为在语法和运行时上都有可能超过C#。

钻研中,等我看完了回来补充答案。

如何评价 Apple 新推出的编程语言 Swift?

【李珠刚的回答(5票)】:

谁刚买《ios开发入门》......

【知乎用户的回答(1票)】:

可选类型让人想到了Dart;local inference,多返回值,func关键字(以及函数返回值后置式的声明语法),条件语句无括号,没有分号,没有break的switch等等让人想到了Go。里面加入了一些函数式语法特性,代数类型,模式匹配等等。

还有不少不少和c#,scala很类似的,你们很熟悉的东西,就不一一列举了。

里面没有看到什么并发,并行编程上有什么亮点,要么像erlang这样的actor模型进程isolate(dart就吸取了这个),要么就像Go那样的chanel直观简单。还有一些其余语言中存在的问题它也没有改进过来而是保留了下来,也许是以为这样太过激进。

和oc可交互(但和c/c++不能),底层基于LLVM编译为native code。一样,和Go的初衷同样,是搞一个工具出来,提升码农的生产效率,而不是搞语言研究创新。高大上的猿们尤为是FP爱好者们依然能够鄙视这门语言。

话说做者发明一门语言都是看另外一门本身常常用到的语言不爽:

Go的做者 —— 看c不爽;

Dart的做者 ——看javascript不爽;

hack的做者 ——看php不爽;

Swift的做者 ——看objective-c不爽。

下一个语言该在哪里出现? Amazon OR 三木桑。。。

【姚尚朗IceskYsl的回答(2票)】:

极客学院最新课程发布 WWDC2014 详解OSX/iOS8/Swift语言,整体而言swift的出现让好多人激动,激动完仔细一看以为蛮坑(毕竟缺的东西还好多)~

可是和几年前Golang法发布同样,Swift的出发点是很好的,只是须要一些时间来完善~

附录:极客学院发布的Swift语言课程

如何评价 Apple 新推出的编程语言 Swift?

 

原文地址:知乎

本文永久连接:http://www.cnblogs.com/ChenYilong/p/3765586.html

苹果关于Swift的官方文档:https://itunes.apple.com/cn/book/swift-programming-language/id881256329?mt=11

相关文章
相关标签/搜索