欢迎来到天天文库
浏览记录
ID:32555509
大小:225.05 KB
页数:21页
时间:2019-02-12
《如何评价swift语言(知乎)》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、如何评价Swift语言?修改今天苹果推出了全新的基于脚本的编程语言Swift。Swift有类似Python的易用性,又有较强的运行效率。它弥补了Objective-C的哪些不足?融合了哪些其他语言的优秀特性?将它和C#相比,各有什么优劣?它会对未来的软件开发产生什么影响?作为一个程序员,此刻,一个对世界消费者和消费平台都有着广泛影响力的公司,推出了一个全新的语言,所有人都是0基础,你有什么想法?孙竟,专控萝莉20年MaxPassion、Mister.Z、刘博 等人赞同本想看完文档再写的,不过看到排名靠前的答案有些偏激(你们不就是想找个理由不学嘛),还是先写些看法吧。首先,它
2、不是一门玩具语言。去看看它的文档就明白了,feature非常丰富(我敢保证你们在半天内是看不完的)。再看它的库,Apple把Cocoa的API都用Swift写了个封装,而不是完全一致的。下面是文档里的例子:Objective-C:UITableView*myTableView=[[UITableViewalloc]initWithFrame:CGRectZerostyle:UITableViewStyleGrouped];Swift:letmyTableView:UITableView=UITableView(frame:CGRectZero,style:.Grouped)
3、所有参数都重写了有没有?如果不是想取代Objective-C,干嘛还去重写,你直接用那冗长的参数不就完了?不过现阶段底层仍然调用的是Objective-C的API,而不是直接用Swift。其次,一些被指出的缺点其实并不存在,或者并不严重:·数据结构少?还有原生的tuple和enumeration没提到,此外还能用Objective-C的NSSet,至少总量上比Objective-C多了几种。·没有多线程?可以用GCD的API,也被移植到Swift了。·没有私有属性?很多语言都没有,都靠使用者自觉。·只能与Objective-C互动?C也是可以的。·没有异常处理?Object
4、ive-C里基本也不用。补充一个缺点:不支持复杂的宏,只支持#define。很显然,这些缺点对很多开发者/团队来说不算大问题。此外,对于想转行做iOS或OSX的开发者来说,Swift是个很好的Objective-C替代者。这里没空一一列举Swift的优点了,文档里可以找出很多。简单来说,Objective-C只会更坑。苹果也说Swift是「AcompletereplacementforboththeCandObjective-Clanguages.」甚至你用XCode6新建一个项目,在选择语言时,Swift也排在Objective-C上面。最后,如果不是做iOS或OSX开发
5、,Swift算不上一门很好的语言。2014-06-05 59条评论 yuewang,要永遠跟智商高比自己的人來討論問題durtima、邱超凡、胡时伟 等人赞同我刪了原先有爭議的答案,重寫一下,之前列的每一點都在,只是論據上做了很多更新。不過基本觀點和原判斷一致--這就是個玩具語言,降低Apple平台開發門檻用的(否則要Playground幹嘛?),以至於Apple自己都不用。寫幾百幾千行的程序可以,數萬數十萬的項目就心有餘力不足了。等Apple自己項目採用了,我再有可能改掉這判斷其實這語言還有很多不足,但限於篇幅我還是列原帖中就提到的幾點-swift和c/c++
6、對接很麻煩,得通過objc(尤其是C++)這極大限制了它的使用。很多公司的代碼,C++比重很大,因為要跨平台或是有各種公司內部底層項目的依賴。swift在這點上相當糟糕。ObjC精明很多。-所有變量都public,沒有隠藏機制,不適合大型項目開發(很多人說無所謂,可以通過規範約束,這分明是沒多少大項目經驗的人說出來的話--我想問靠自覺好還是讓編譯器和IDE不讓你胡來好?很多時候,IDE中沒辦法補全代碼時,你才會想起“哦,原來它是私有的”。事實上,如果沒有語言層面的支持,這種問題即使像GoogleFB這種高手如雲的公司,同行peerreview代碼也不一定能發現,因為這種問題
7、本身就不好查,你發一個codereview幾千行調用,別人一個個給你查去?這些公司就是用如Python/PHP這樣的語言的,也有staticanalyzer來糾正程序員的很多問題)-基礎庫很爛,基本依賴objc的庫。是的,你原生有數組有哈希表,但除了這兩個,基本就沒啥了,連Set都沒有。所以到頭來還是得使用objc原有的api。這就産生兩個問題,一,objc不是typesafe的,比如沒有generic機制。二,效率比native的低,因為objc的methodcall不如function/methodcall高效
此文档下载收益归作者所有