❶ 蘋果將推Swift 5:應用更小 啟動更快
蘋果在2014年的WWDC上推出了新的編程語言Swift,自第一個版本以來一直影響用戶的Swift的一個重要問題是它的應用程序二進制介面不穩定。這意味著Apple不能在操作系統中包含Swift語言支持,因為使用Swift 3編寫的應用程序將不能與Swift 4的語言支持二進制文件一起使用。所以解決方案是從App Store下載的app中的語言庫直接包含Swift語言,但這增加了應用程序所需的帶寬和存儲空間。
根據外媒的報道,這一情況將得到改變。
蘋果即將推出的Swift 5版本,該語言變為二進制兼容。新版本包含在iOS 12.2,tvOS 12.2,watchOS 5.2和macOS 10.14.4中,所有這些版本目前都處於開發者測試階段。這意味著,當新版本的Apple操作系統可供用戶使用時,使用Swift 5發布到App Store的應用程序對於運行新操作系統的用戶來說將要小得多。
另一個好處是更快的啟動時間,因為應用程序使用的每個動態庫都會稍微增加其啟動時間,但操作系統附帶的庫會緩存在內存中並在所有應用程序之間共享。與Swift相關的限制將在一次更新中一夜之間消除。
❷ 想問一下swift到底能支持ios最低版本多少
5.1或者6.0
❸ 請問Swift最新版本是多少
最新的是2.2版的
❹ 編程時選用的程序設計語言,對軟體的開發與維護的影響
【CSDN 編者按】「如果我們把人類文明想像成汽車的話,那麼軟體開發行業就相當於汽車的引擎,編程語言就像引擎的燃料。」作為一名開發者,需跟隨技術潮流的發展來學習新技術。2020年,你有計劃新學一門編程語言嗎?
本文作者從一名架構師的角度,詳細分析了7種現代編程語言的優點與功能,你對哪門語言最感興趣呢?
作者 | Md Kamaruzzaman,軟體架構師
譯者 | 彎月,責編 | 伍杏玲
封圖| CSDN 下載於視覺中國
出品 | CSDN(ID:CSDNnews)
以下為譯文:
如果我們把人類文明想像成汽車的話,那麼軟體開發行業就相當於汽車的引擎,而編程語言就像引擎的燃料。作為一名開發者,今年你應該學習哪種編程語言呢?
學習一種新的編程語言無疑是時間、精力和智力上的巨大投資, 但是學習一種新的編程語言可以提升你的軟體開發技術力,促進你的職業發展。
在這里,我將獻上一份現代編程語言的列表,這些語言不僅有助於提高你的生產力,而且還可以促進你的職業發展,並讓你成長為更優秀的開發人員。這份列表還涵蓋了非常廣泛的領域:系統編程、應用程序開發、Web開發、科學計算等。
什麼是現代編程語言?
「現代編程語言」這個說法本身就很含糊。許多人認為Python和JavaScript等語言是現代編程語言,還認為Java是一種古老的編程語言。實際上,這幾種語言大約在同一時間出現:1995年。
大多數主流編程語言是上個世紀開發的:七十年代(如C)、八十年代(如C ++)、九十年代(如Java、Python、JavaScript)。這些語言在設計上並沒有考慮現代軟體開發生態系統:多核CPU、GPU、快速的互聯網、移動設備、容器和雲等。盡管許多語言中的許多功能都已進行一些改進,如並發等,而且在不斷調整自己以適應時代,但它們依然保留了向後兼容性,無法拋棄那些過時的舊功能。
在這方面,Python就做得很好(某種意義上也未必是好事),Python 2和Python 3兩者之間有明確的分界線。很多語言常常會為解決同一個問題提供十餘種的方法,同時又沒有顧及到開發人員的感受。根據StackOverflow的開發人員調查,大多數舊時的主流編程語言在「最可怕的語言」排名都名列前茅:
如果非要在新舊編程語言之間劃個界限的話,那麼應該是2007年6月29日,也就是第一台iPhone發行的時候。在這之後,編程語言界發生了很大變化。因此,在本文的列表中,我只考慮2007年以後的編程語言。
為什麼要學習新語言?
首先,現代編程語言充分利用現代計算機硬體(多核CPU、GPU、TPU)、移動設備、大量數據、高速互聯網、容器和雲的優勢。大多數現代編程語言會關注開發人員的體驗,比如:
簡潔明了的代碼(減少樣板代碼)
內置的並發支持
空指針安全
類型推斷
簡潔的功能集
降低學習難度
融合所有編程範例的最佳功能
本文列表的許多編程語言都帶有革命性地變化,並將永久地改變軟體行業。一些已成為主流編程語言,還有一些則有望取得突破。因此選擇這些語言作為第二種編程語言是明智的做法。
Rust
一直以來,系統編程語言環境主要由靠近硬體的語言(如C、C ++等)主導。盡管它們可以完全控製程序和硬體,但是它們缺乏內存安全性。即使它們支持並發,使用C/C ++編寫並發程序也很困難,因為沒有並發安全性。還有一些流行的編程語言是解釋性語言,例如Java、Python、Haskell。這些語言具備安全性,但需要龐大的運行時或虛擬機。由於它們的運行時間長,因此Java等語言不適合於系統編程。
許多人曾嘗試將C/C ++的功能與Java、Haskell的安全性相結合。然而,Rust才是第一個成功實現了這一點的編程語言。
Graydon Hoare在業余項目中開發出了Rust,他的靈感來自研究編程語言Cyclone。Rust是開源的,由Mozilla與許多其他公司和社區一起領導這門語言的開發。Rust於2015年首次發布,並很快引起了社區的關注。
主要特徵:
通過所有權和借用概念提供內存安全和並發安全。
內存安全和並發安全在編譯時確保,即如果程序代碼可以編譯,那麼內存既安全又沒有數據競爭。這是Rust最吸引人的功能。
它還提供了Haskell中元編程的表現力。憑借不可變的數據結構和功能編程功能,Rust提供了功能並發和數據並發。
Rust的速度非常快,純Rust的性能甚至優於純C。
在沒有運行時的情況下,Rust可以完全控制現代硬體(TPU、GPU、多核CPU)。
Rust具有LLVM支持。因此,Rust提供一流的與WebAssembly的互操作性,而且Web代碼也非常快。
流行度:
自2015年首次亮相以來,Rust已被開發人員廣泛接受,並在StackOverflow開發人員調查中連續四年(2016、2017、2018、2019)被評選為最受歡迎的語言:
根據GitHub Octoverse的調查,Rust是運行速度第二快的語言,僅次於Dart:
此外,根據編程語言流行度排名網站PyPl的數據,Rust排名第18位,並呈上升趨勢:
對比Rust提供的功能集,我們就會明白為什麼微軟、亞馬遜、Google等科技巨頭相繼宣布投資Rust作為一種長期的系統編程語言。
根據Google統計的趨勢,在過去的5年中,Rust的熱度每年都在增加。
主要用途:
系統編程
Serverless 計算
商業應用
主要競爭對手:
C
C++
Go
Swift
Go
在本世紀初,Google面臨兩個擴展問題:開發擴展和應用程序擴展。開發擴展問題指的是他們不能僅通過投入開發人員的方式來添加更多功能。應用程序擴展問題則指他們無法開發出一款能夠擴展到Google級別的計算機集群的應用程序。
所以在2007年左右,Google創建了一種新的編程語言,用於解決這兩個擴展問題。兩位才華橫溢的Google軟體工程師Rob Pike(UTF-8)和Ken Thompson(UNIX OS)創建了一種新語言。
2012年,Google正式發布了第一版的Go編程語言。Go是一種系統編程語言,但與Rust不同,它還具有Runtime和垃圾收集器(幾兆位元組)。但是與Java或Python不同,這個Runtime包含了生成的代碼。最後,Go生成了一個本地的二進制代碼,可以在沒有附加依賴項或運行時的情況下在計算機中運行。
主要特徵:
Go具有一流的並發支持。Go不通過線程和鎖提供「共享內存」並發性,因為編程難度太大。相反,它提供了基於CSP的消息傳遞並發性(基於Tony Hoare的論文)。Go使用「 Goroutine」(輕量級綠色線程)和「 Channel」進行消息傳遞。
Go最大的殺手級功能是:簡單,它是最簡單的系統編程語言。新手軟體開發人員只需幾天就可以編寫高效的代碼,就像Python一樣。有些大規模的雲原生項目(如Kubernetes、Docker)都是用Go編寫的。
Go還內置了垃圾收集器,這意味著開發人員無需擔心C/C++中的內存管理問題。
Google投入了大量資金打造Go。因此Go擁有大量的工具支持。新手Go開發人員擁有大量的工具生態系統。
一般,開發人員80%的時間都花在了維護現有代碼上,用於編寫新代碼的時間只佔20%。由於其簡單性,Go在語言維護方面表現出色。如今,Go在業務應用程序中大量使用。
流行度:
Go一問世就受到了軟體開發社區熱烈的歡迎。2009年-2018年,Go一直在TIOBE編程語言排行榜上徘徊。Go的成功為Rust等新一代編程語言鋪平了道路。
如今,Go已是主流編程語言。最近,Go團隊宣布了有關「Go 2」的消息,這門編程語言的發展會更加穩固。
幾乎在所有的流行編程語言排行榜中,Go的排名都很高,已超過許多現有的語言。自2019年12月以來,在TIOBE指數排名中,Go名列第15位:
根據StackOverFlow的調查,十大最受喜愛的編程語言中,Go也位列其中:
此外,根據GitHub的數據,Go也是十大發展最迅速的語言之一:
Google趨勢顯示,在過去的5年中,Go的熱度每年都在增加。
主要用途:
系統編程
Serverless 計算
商業應用
雲原生開發
主要競爭對手:
C
C++
Rust
Python
Java
Kotlin
Java 是企業軟體開發領域無可爭議的王者。近年來,Java受到了一些負面評論:過於冗長,大量樣板代碼,容易出現意外的復雜性。但是,關於Java虛擬機(JVM)的爭論卻很少。JVM是軟體工程的傑作,經過了時間的考驗,提供了硬核的runtime。
多年來,Scala等JVM語言一直在努力克服Java的缺點,想成為更好的Java,但他們都失敗了。最終,這場提升Java的探索以Kotlin的誕生結束。Jet Brains(流行的IDE IntelliJ背後的公司)開發了Kotlin,它可以在JVM上運行,克服了Java的很多缺點,提供許多現代功能。
與Scala不同的是,Kotlin比Java更簡單,還可在JVM中提供與Go或Python開發人員同等的生產力。
Google宣布Kotlin是一流的Android應用開發語言,因此Kotlin在社區中的接受度得到了大幅提高。自2017年以來,同樣受歡迎的Java Enterprise框架Spring也開始支持Kotlin。我曾嘗試結合Kotlin與Reactive Spring使用,體驗非常棒。
主要特徵:
Kotlin的主要賣點在於其語言設計。我總是將Kotlin視為JVM上的Go/Python,因為它簡潔明了的代碼。因此,Kotlin的生產力很高。
與許多其他現代語言一樣,Kotlin提供了Null指針、安全性、類型推斷等功能。
由於Kotlin也運行在JVM中,因此現有Java庫龐大的生態系統都可供使用。
Kotlin是一流的Android應用開發語言,並且已經超過Java,成為開發Android應用的首選。
Kotlin得到了JetBrains和Open Source的支持,因此具有出色的工具支持。
Kotlin有兩個有趣的項目:Kotlin Native(將Kotlin編譯為原生代碼)和kotlin.js(Kotlin到JavaScript)。如果成功,則可以在JVM外部使用Kotlin。
Kotlin還提供了一種簡單的方式來編寫DSL(域特定語言)。
流行度:
自2015年首次發布以來,Kotlin的知名度不斷飆升。根據Stack Overflow,Kotlin是2019年第四大最受歡迎的編程語言:
Kotlin還是增長最快的編程語言之一,排名第四:
在流行編程語言排名網站PyPl的排名中,Kotlin名列第十二名,並具有較高的上升趨勢:
自從Google宣布Kotlin是一流的Android應用開發語言以來,Kotlin的流行趨勢出現了大幅上漲,如下所示:
主要用途:
企業應用程序
主要競爭對手:
TypeScript
JavaScript是一門優秀的編程語言,在2015年之前,JavaScript有很多缺點。著名的軟體工程師Douglas Crockford寫了一本書名為《JavaScript: The Good Parts》,暗示了JavaScript有很糟的部分。無模塊化,還有「回調地獄」,因此開發人員都不喜歡維護特別大的JavaScript項目。
Google甚至還開發了一個平台,可將Java代碼反編譯為JavaScript代碼(GWT)。許多公司和個人都曾嘗試開發更好的JavaScript,例如CoffeeScript、Flow、ClojureScript。最終,微軟的TypeScript取得了成功。
微軟的一隊工程師在著名的Anders Hejlsberg的帶領下,創建了JavaScript的靜態類型、模塊化超集——TypeScript。
TypeScript可以編譯為JavaScript。於2014年首次發布後,TypeScript很快引起了社區的關注。Google當時還計劃開發JavaScript的靜態類型超集。Google對TypeScript青睞有加,以至於他們沒有開發新的語言,而是選擇與微軟合作改進TypeScript。
Google選擇TypeScript作為其SPA框架Angular 2+的主要編程語言。此外,流行的SPA框架React也提供對TypeScript的支持。另一個流行的JavaScript框架Vue.js也宣布將使用TypeScript開發新的Vue.js 3:
另外,node.js的創建者Ryan Dahl已決定使用TypeScript來開發安全的Node.js替代品Deno。
主要特徵:
流行度:
開發人員喜歡TypeScript的優雅語言設計。在StackOverFlow最受歡迎的語言類別的調查中,TypeScript與Python並列第二名:
根據GitHub的排名,TypeScript是增長最快的編程語言之一,排名第五:
從GitHub的貢獻度來看,TypeScript排名第七,打進了前十:
Google的趨勢表明,在過去的幾年中,TypeScript的熱度越來越高:
主要用途:
主要競爭對手:
Swift
當初喬布斯拒絕在iOS中支持Java(和JVM),他認為Java不再是主流編程語言。如今我們發現喬布斯當初的估計是錯的,雖然iOS仍然不支持Java。蘋果選擇了Objective-C作為iOS中的首選編程語言。Objective-C是一門很難掌握的語言,它不支持現代編程語言所要求的高生產力。
後來,蘋果的Chris Lattner和其他人開發了一種多範例、通用的、編譯編程語言——Swift,來替代Objective-C。Swift的第一個穩定版本於2014年發布。Swift還支持LLVM編譯器工具鏈(也由Chris Lattner開發)。Swift與Objective-C代碼庫具有出色的互操作性,並且已確立為iOS應用開發中的主要編程語言。
主要特徵:
流行度:
開發人員對Swift的喜愛不亞於許多其他現代編程語言。根據StackOverflow的調查,Swift在最受歡迎的編程語言中排名第六:
2019年,在TIOBE的編程語言排名中,Swift的排名上升到了第10名。鑒於這種編程語言只有5年的歷史,可以說是成績斐然:
Google的趨勢表明,在過去的幾年中,Swift的熱度出現了激增:
主要用途:
主要競爭對手:
Dart
Dart是Google出品的第二大編程語言。Google是Web和Android領域的巨頭,因此Google在Web和應用領域開發自己的編程語言也不足為奇。在丹麥軟體工程師Lars Bak(領導Chrome的 JavaScript V8引擎開發)的帶領下,Google於2013年發布了Dart。
Dart是一種通用編程語言,支持「強類型」和「面向對象」編程。Dart也可以轉編譯為JavaScript,凡是JavaScript可以運行的任何地方(例如Web、移動、伺服器)幾乎都可以運行 Dart。
主要特徵:
流行度:
根據GitHub Octoverse數據顯示,Dart是2019年增長最快的編程語言,去年它的流行度增長了五倍:
根據TIOBE指數顯示,Dart排名第23,僅用了4年時間就超過了很多其他的現代編程語言:
根據StackOverflow的調查,Dart在最受歡迎的編程語言中排名第12:
受Flutter的影響,Google的趨勢表明,在過去的兩年中,Dart的熱度急劇上升:
主要用途:
主要競爭對手:
Julia
本文提及的大多數編程語言都是由大型公司開發的,但Julia是個例外。科技計算領域通常都會使用動態語言,例如Python、Matlab。雖然這些語言提供易於使用的語法,但不適用於大規模的科技計算。他們需要使用C/C ++庫執行CPU密集型任務,因此這就產生了著名的「兩種語言」的問題,因為他們需要粘合代碼來綁定兩種語言。由於編寫的代碼需要在兩種語言之間來回切換,因此總是會損失部分性能。
為了解決這個問題,麻省理工學院的一隊研究人員計劃從頭開始創建一種新的語言,這種語言既可以利用現代硬體的優勢,而且還結合其他語言的優勢。於是,Julia誕生了。
Julia是一種動態的高級編程語言,提供一流的並發、並行和分布式計算支持。Julia的第一個穩定版本於2018年發布,並很快受到社區和行業的關注。Julia可用於科學計算、人工智慧和許多其他領域,而且還可以解決「兩種語言」的問題。
主要特徵:
流行度:
Julia在許多領域主要與Python競爭。由於Python是最流行的編程語言之一,因此Julia想晉升主流還需要幾年的時間。
雖然Julia非常新(只有一歲),但仍在TIOBE指數中排到第43名:
Google趨勢顯示,在過去的一年中,Julia的熱度在穩步增長:
但是考慮到Julia的功能集,以及NSF、DARPA、NASA、因特爾等公司的推動,相信Julia取得突破的進展只是時間的問題。
主要用途:
主要競爭對手:
原文鏈接:https://towardsdatascience.com/top-7-modern-programming-language-to-learn-now-156863bd1eec
本文為 CSDN 翻譯,轉載請註明來源出處。
【End】
Python
Matlab
科學計算
高性能計算
數據科學
可視化
與Rust一樣,Julia的主要特徵在於語言的設計。這種語言在不犧牲性能的情況下,將高性能和科學計算中現有編程語言的一些功能結合在一起。就目前的情況來看,Julia出色地完成了這項任務。
Julia是一種動態編程語言,支持類型系統但類型不是必須的。因此,Julia這種編程語言很容易學習,生產力很高。
Julia的核心是多調度編程範例。
Julia內部支持並發、並行和分布式計算。
Julia為I/O密集型任務提供非同步I/O。
Julia的運行速度非常快,可用於需要數百萬個線程的科學計算。
JavaScript
TypeScript
應用開發
UI開發
與Go一樣,Dart也非常注重開發人員的工作效率。由於Dart簡潔的語法,以及高效的生產力,受到開發人員的喜愛。
Dart還提供「強類型」和「面向對象」編程。
Dart是少數同時支持JIT編譯(運行時編譯)和AOT編譯(創建時編譯)的編程語言之一。因此,Dart可以針對JavaScript運行時(V8引擎),並且Dart可以編譯為快速的原生代碼(AOT編譯)。
跨平台原生應用程序開發平台Flutter選擇了Dart作為開發iOS和Android應用的編程語言。從那以後,Dart的流行度越來越高。
與Goog的Go編程語言一樣,Dart也具有出色的工具支持和龐大的Flutter生態系統。Flutter的日益普及也會推動Dart的採用率升高。
Objective-C
Rust
Go
iOS應用開發
系統編程
客戶端開發(通過WebAssembly)
Swift的殺手級功能之一是其語言設計。語言本身很簡單,語法簡潔,比Objective-C更高效。
Swift還提供了現代程序語言的功能:null安全。此外,它還提供了語法糖來避免「厄運金字塔」。
作為一種編譯語言,Swift和C++一樣快。
Swift支持LLVM編譯器工具鏈。因此,我們可以在伺服器端編程,甚至瀏覽器編程(使用WebAssembly)中使用Swift。
Swift提供了自動引用計數(ARC)支持,可抑制內存管理的不善。
JavaScript
Dart
Web UI開發
伺服器端開發
與Go或Kotlin同樣,TypeScript的主要特徵也是語言設計。TypeScript憑借其簡潔明快的代碼,成為了目前最優雅的編程語言之一。就開發人員的生產力而言,它與JVM或Go/Python上的Kotlin並駕齊驅。TypeScript是生產力最高的JavaScript超集。
TypeScript是JavaScript的強類型超集,特別適合大型項目,而且可以稱為「可擴展的JavaScript」。
單頁應用程序框架的「三巨頭」(Angular、React、Vue.js)為TypeScript提供了出色的支持。在Angular中,TypeScript是首選的編程語言。在React和Vue.js中,TypeScript越來越受歡迎。
最大的兩家技術巨頭:微軟和Google正在合作開發由活躍的開源社區支持的TypeScript。因此,TypeScript擁有最好的工具支持。
由於TypeScript是JavaScript的超集,因此凡是可以運行JavaScript的任何地方都可以運行TypeScript,包括瀏覽器、伺服器、移動設備、物聯網設備和雲。
Java
Scala
Python
Go
❺ Swift 1 2 3 這三個版本差別在哪兒學老版本有沒有問題
要學就學最新的,老版本已經不支持,差別就在於越來越swift
❻ Swift 寫的 app,最低能支持的 iOS 版本是多少
兩個方法:第一個方法,通過 OS X 的 iTunes 下載這個 App 的 IPA 包,解包以後看 App 裡面有沒有一個 Frameworks 目錄,裡面有 Swift 的運行庫,但這個方法只能判斷這個 App 用了 Swift,而不能判斷是不是主要以 Swift 寫。第二個方法,當然是通過業界一些活動和會議上的分享,也就是開發團隊主動告之外界的形式。 Lyft 是類似於 Uber 的國外一個打車工具,最新版本剛剛已經是完全用 Swift 寫的。 「Enjoy ~ 精選限量美食」是最早知道國內用 Swift 寫出來的一個 App,來自北京飯本團隊。最低支持 iOS 7。 小記是一款文藝范的豎排書寫工具,來自廣州 Catch 團隊,我也是內測就開始用的。嗯,和上面一樣,都只支持 iOS 8。
❼ swift 到底最低支持ios哪個版本
要支持swift必須要用Xcode6及其以上的xcode版本,xcode6最低支持的ios7(當然你也可以讓它支持6甚至4.3,但是蘋果不推薦了)。所以最好用是用swift的時候你的項目是最低7.0以上的。
你原來用ios5.0開發跟你版本支持沒有關系哦,看你項目最低支持的版本。如果你現在還是要支持7.0以下的版本,不推薦使用swift,況且蘋果也不是強推swift,蘋果是說長期共存。
嘻嘻,如果有異議可以給我留言,歡迎交流溝通。
❽ 如何查看自己蘋果電腦下的swift版本
1、打開Mac終端
❾ 如何找出Xcode中不同版本Swift的路徑
熟悉unix shell命令的童鞋都知道有一個find指令,在我們已知Xcode路徑時,我們可以在其中找到Swift在哪裡:
find /Applications/Xcode.app -name swift -a -type f
以上命令中的-a選項表示的是and邏輯,你也可以寫全稱為-and.所以你必須同時符合name為swift,同時type為一般文件這兩個條件才可以哦.
其他type的參數有:
-type t
True if the file is of the specified type. Possible file types are as follows:
b block special
c character special
d directory
f regular file
l symbolic link
p FIFO
s socket
在本貓的air上運行以上指令結果如下:
/Applications/Xcode-beta.app/Contents/Developer/Toolchains/Swift_2.3.xctoolchain/usr/bin/swift
/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift
第一個swift版本顯然是2.3,我們看一下後面Swift的版本:
/Applications/Xcode-beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/swift -version
Apple Swift version 3.0 (swiftlang-800.0.34.6 clang-800.0.33)
Target: x86_64-apple-macosx10.9
不出意外是Swift 3.0哦,我的Xcode是8.0beta4
❿ Taylor Swift專輯Fearless共有幾個版本分別是
美國原版
卡拉OK版
國際版(因為她的第一張專輯沒有做過全球發行,國際版與美國原版的區別在於,收錄了幾首第一張專輯的熱門歌曲)
日版(多收錄了一首歌,I Heart?)
白金版Platinum Edition (加了六首新歌)
內地引進版是以國際版為基礎的