dart編譯費內存
『壹』 jQuery $(window).scroll事件出現問題
web前端開發 20 年變遷史,讓我們來看看這20年裡,web前端究竟經歷了哪些變革,web前端在這20年裡又有哪些突破和成就,怎麼樣看待這20年的web前端開發!
1990年,第一個Web瀏覽器誕生,而WWW的誕生直接拉開前端史的序幕。
從靜態頁面到java,從依賴後端到自主開發,前端開發者從不被重視的「頁面仔」逆襲為如今很多前端工程師的薪資比後端還高,從前端技術由國外開發者主導到如今國內自主產生的小程序技術,我們走了20年。
了解web前端:http://www.cnite.cn/qianan/
作者 | 司徒正美
責編 | 伍杏玲
1990 年,第一個Web瀏覽器的誕生;1991 年,WWW誕生,這標志著前端技術的開始。
在這將近20年的前端發展史中,我們經歷了從最早的純靜態頁面,到Java跨時代的誕生;從PC端到移動端;從依賴後端到前端可自由打包開發;從早期的網景Navigator瀏覽器到現在各家瀏覽器百花齊放……
我們經歷了前端的洪荒時代、Prototype時代、jQuery時代 、後jQuery時期、三大框架割據時代,這其中均是由國外開發者主導,直到如今的小程序時代,才是中國開發者獨創的。
這是漫長的技術儲備下的成果,最終促成了良好的技術成長收獲。期間的前端發展之路,崎嶇艱難:
洪荒時代(1990~1994年)
在1990~1994年期間,前端界發生的大事有:WWW(World Wide Web)的誕生、瀏覽器的誕生、Java的誕生,沒有專業的前端,頁面全是由後端開發的。
1990年,萬維網之父蒂姆·伯納斯-李(Tim Berners-Lee)在NeXT電腦上發明了第一個Web瀏覽器。
1991年8月6日,Tim在alt.hypertext新聞組貼出了一份關於World Wide Web的簡單摘要,這標志了Web頁面在Internet上的首次登場。
最早的Web主要被一幫科學家們用來共享和傳遞信息,全世界的Web伺服器也就幾十台。由於僅是用來傳遞信息,從可視化方式或從傳遞數量上看,僅比電報強一點點。
當時還沒有Java,用的是純靜態的頁面。
1993年,CGI(Common Gateway Interface)出現了,人們可以在後端動態生成頁面。
Perl由於跨操作系統和易於修改的特性成為CGI的主要編寫語言。當然,CGI也支持其他支持標准輸入輸出和環境變數的語言編寫,比如Shell腳本、C/C++語言,只要符合介面標准即可。
但顯然,頁面的內容更新完全由後端生成,這帶來一個明顯的缺憾:每次更新都要整頁刷新,加上早期的網速情況,這個操作是非常慢的。因此針對這情況,人們從多方面著手改進:編寫語言的升級、瀏覽器的升級、HTML的升級。
1994年,網景公司成立,發布了第一款商業瀏覽器Navigator。自從這款瀏覽器面世後,微軟推出IE瀏覽器。雖說有競爭才有發展,但這也埋下了Java分裂的種子。
(1994 年,網景瀏覽器的截圖)
同年,PHP誕生。PHP能將動態的內容嵌入到HTML中,提升了編寫頁面的效率與可讀性,其性能也比一般的CGI高。PHP的界定符、循環語句等的發明,深刻影響了後來的ASP、JSP,乃致後來的Java前端模板引擎。
1994年10月,W3C小組也成立了,他們負責HTML的發展路徑,其宗旨是通過促進通用協議的發展。
待這一切就緒後, Java於1995年誕生了。
傳聞,網景工程師布蘭登·艾克(Brendan Eich)只花了10天時間設計出 Java 語言,近乎上帝七日創造世界那麼高效。但也因為工期太短的緣故,導致許多瑕疵,因此一直被正統傳序員所嫌棄,直到Ajax的出世,才讓人們找到理由忍受它的畸形。早期的瀏覽器都配有一個選項,用來禁止Java語言運行。
Java主要語言特徵[1]:
借鑒C語言的基本語法;
借鑒Java語言的數據類型和內存管理;
借鑒Scheme語言,將函數提升到"第一等公民"(first-class citizen)的地位;
借鑒Self語言,使用基於原型(Prototype)的繼承機制。
時下,靜態語言大行其道,類與介面被證明是構建大工程的最佳實踐,人們想不出沒有類的語言如何編寫業務。因此當時的微軟也打造了另一門運行於瀏覽器的語言——VB。
如果繼續細探Java的能力,你會發現它早期真的非常空洞,一門沒有靈魂的語言,沒有包管理機制,也沒有像Java與C++那樣的打輔助用的SDK,內置的方法也屈指可數。比如說數組方法,早期只有push、pop、shift、unshift、splice、slice、sort、reverse、concat、join等操作。動態調用方面,Function的apply、call操作還沒有出現!
早年的偷懶,導致後來不得不補課:到了2019年,數組上的原型方法,是原來3倍。
除了方法缺乏,還有性能問題,大家討論用eval還是Function,用哪種循環方式,用parseInit還是~~,就是為了那一點點的性能提升。例如jsperf.com,就是一個專門研究Java性能的網站。
因此Java誕生後,其兩大任務就是完善語言特性與提高性能。這兩座大山分別由著名的prototype.js與jQuery來搬掉。
在搬掉之前,前端界還有一個曲折實踐——第一次瀏覽器戰爭,並由其發展而來UA嗅深技術。
瀏覽器戰爭(1994~2005年)
瀏覽器戰爭一共打了三場,IE瀏覽器vs網景瀏覽器、IE瀏覽vs火狐瀏覽器、IE瀏覽器vs谷歌瀏覽器。
第一場瀏覽器之戰打得尤其激烈。
微軟的IE瀏覽器發布於1994年,但此時的網景已經佔領絕對優勢。微軟在落後的情況,反編譯Netscape的源碼,推出IE與J。但是由於Bug非常多,大家不願意為IE開發網站,因此發掘出UA,專門過濾掉IE瀏覽器。
UA即Navigator.userAgent ,是用一個字元串來記錄用戶當前運行在什麼操作系統與瀏覽器中。當前IE3的UA是這樣的:
Mozilla/2.0 (compatible; MSIE 3.02; Windows 95)
程序判斷UA信息,假如發現當前運行的環境是IE瀏覽器的話,就提示用戶用網景瀏覽器打開。因此微軟不得不讓自己的UA盡量偽裝成網景的UA,欺騙用於檢測UA的腳本,達到IE瀏覽器可以跑這些網站的目的。
最終,第一次瀏覽器之戰以微軟勝利,Netscape被美國在線收購,而落下帷幕。
第一次瀏覽器戰爭年代非常久遠了,但其結局告訴我們,其實技術強弱並不重要。那時技術保護並沒有這么重視,否則微軟的行為可能會被告(谷歌的openSDK僅抄襲幾十行代碼,被Oracle公司訴訟賠88億)。
第一次瀏覽器戰爭帶來了一個問題:盡管當時有ECMA-262(Java規範文檔)與W3C(HTML與CSS的規範文檔),微軟卻沒有照規范來實現Java、HTML與CSS,導致前端兼容問題的誕生。所以CSS Hack、瀏覽器判定、特性偵測,這些技術就應運而生。
這個時代最著名的人物是Dean Edwrad,他是最早的近乎完美解決事件綁定的兼容性大神,其addEvent()內置於jQuery最早的版本中。jQuery的作者John Resig看到其超強的技藝,最後放棄推出大而全的框架,專攻選擇器引擎。
Dean Edwrad的IE7.js、IE8.js是早期處理瀏覽器兼容的良葯,可以說是一切Polyfill[2]的起源。他寫了大量的Hack, 比如在IE如何測量元素的寬高,許多操作DOM的兼容。
這時期太早,中國基本沒有參與這次瀏覽器戰爭。
Prototype時期(2005~2009年)
Prototype是Sam Stephenson寫的一個非常優雅的Java基礎類庫。他是Ruby的大牛,因此Prototype的許多方法名都是來自Ruby界。
Sam Stephenson最大的貢獻是發掘了Prototype與創造了Function.prototype.bind,在數組上也寫了一大堆方法,其中許多被標准化了。
同期的MooTools也是Prototype的方法,當時,大家還在前端論壇為這個爭吵。還有前端工程師喜歡在當時很出名的前端聚集地——藍色理想(現淪為設計師網站)上,討論如何扒腳本、分享彈層、日歷等小組件的技術,這在當時已經是非常了不起的事。
Prototype當時還解決兩大問題:動畫特效與Ajax請求。動畫特效是由aculous提供,我們現在所熟知的各種緩動函數,各種特效的命名與大致的運行形態,都是由aculous確定下來的。
在早期,谷歌就開始使用iframe實現頁面刷新。
2005 年2月,傑西·詹姆士·賈瑞特(JesseJamesGarrett)發表了一篇名為《Ajax:一種Web應用程序開發的新方法》的文章後,Ajax被挖掘出,大家才開始重視起這技術的應用。
例如IE下的ActiveXObject("Microsoft.XMLHTTP"),這是IE創建Ajax引擎的。假如當時有工程師開發出一個核心庫,如果不包含Ajax的封裝,便不好意思發布出來。
一些Ajax書藉
當時前端開發模式是選擇一個核心庫,找一些組件,或者扒別人的腳本進行開發
Prototype的源碼挺好理解的,代碼量也少,只有5000多行,裡面的每個方法也很易扒出來,因此一些大公司總有高手能創造自己的Prototype。
但前端開發還是離不開後端,因為前端沒有模塊機制,當時我們需要用PHP進行打包。打包是雅虎34條軍規之一,可以減少請求數。打包的同時也可以進行混淆,防止代碼小偷來窺探。
N年前,前端面試必問的題目:
模塊化的雛型, 在注釋中標注它的依賴
這個時期,還沒有前後端分離,可國內一些帶著深厚後端背景的高手已經入場。
jQuery 時期(2009~2012年)
2006年,jQuery發布,它當時的競爭對手很多:Dojo、Prototype、ExtJS、MooTools。
所以那時jQuery的宣傳口號僅能說是它的性能上升了100%、200%、300%。直到2009年,Sizzle選擇器引擎研發成功,jQuery才取得壓倒性的優勢。
當時前端界首要面對的是瀏覽器兼容性問題,jQuery在處理DOM兼容上真是知微見著, 發掘出大量的DOM/BOM兼容方案(例如Dean Edwrad的addEvent(), IE的px轉換方案,domReady的doScroll方案,globalEval的兼容方案等)
jQuery也打破了前端開發者的編程思維,之前是按照後端的開發思路來的:做一個業務就先封裝一個類,有了這個類後,再想辦法傳入一個DOM,然後再通過類方法操作DOM。而jQuery是DOM為中心,開發者可以選一個或多個DOM,變成jQuery對象,然後進行鏈式操作。當時為了改變用戶的思維,國內的高手寫了不少文章來引導大家。
其次,開發者們已開始注重前後端分離,並要求不能污染Object原型對象,不能污染window全局變數。這樣,jQuery只佔用兩個全局變數。
再次,jQuery非常輕量級,採用Dean Edwards編寫的Packer壓縮後, 大小不到30KB。並且裡面實現得非常精妙,以令人瞠目的手段解決各種兼容痼疾。
為了學習這些技巧,高手們翻了一遍遍jQuery的源碼,所以網上有大量關於其源碼詳解的書藉。甚至前端工程師在面試時也會被考到jQuery的源碼實現,這樣,jQuery在國內更加流行。
jQuery的流行間接帶來以下的發展:
促使人們對CSS1~CSS3選擇器的學習
促進了瀏覽器原生選擇器引擎document.querySelectorAll、Element.matches的誕生
提高人們對domReady(DOMContentLoaded事件)的認識
促進了Promise與requestAnimateFrame 的誕生
最重要的是降低前端門檻,讓更多人進入這行業,前端工程師的隊伍越來越壯大。
這樣的話,不斷涌現出優秀的工程師,他們創造了大量jQuery插件與UI庫。為後jQuery時代,人們研發前端模塊載入、統一非同步機制、 打造大型MVC框架, 甚至伸向後端,接管打包腳本而發明Node.js,來騰出大量時間。
這個時期涌現了大量jQuery-like的庫,其中最著名的是Zepto.js。Zepto的出現也標志著我們進入移動互聯網時代。那時配套出的著名庫還有iScroll、fastclick、Lazy Load、Modernizr、fullPage。
jQuery的鏈式操作風麾一時,也帶來許多問題,當Ajax出現依賴時,就不可避免就出現回調地獄。因此針對這方面的討論,誕生Deffered與Promise。有關回調地獄的討論,在後來講Node.js非同步處理時,將會再一次熱烈地討論。因此太陽下沒有新事,我們總是遇到相似的問題。
jQuery如此多的選擇器也法維護,隨著越來越多人涌現這行業,頁面的交互也越來越復雜,從Web Page向Web App進化,新的趨勢帶來新的開發方式。
後jQuery時期(2012~2016年)
這時期以RequireJS的誕生為起點,以RN的出現結束。同時解決了前端的模塊定義問題,模塊打包問題(通過Node.js),Java不依靠其他語言創造了一套自己的工具鏈。
jQuery的出現讓前端工程師開發更加輕松,假如工程師想實現一個功能,現搜索出一個jQuery插件來實現。那時候大家在前端網站就整天介紹jQuery插件,很少討論一些底層的實現。
前端工程師通常編寫一個頁面,會引入十多個乃至幾十個jQuery插件,頁面上塞滿了標簽。眾所周知,瀏覽器是單線程,的載入,會影響到頁面的解析與呈現,導致著名的白屏問題(當時前端用力過勐,body中的所有東西都是動態生成的)。
jQuery另一個問題是全局污染,由於插件的質量問題,或者開發的素質問題,這已經是IIEF模塊或命名空間等傳統手段無法解決了。
於是一些優秀的前端工程師們決定從取經後端,引入模塊機制。早期,這種模塊機制在Dojo、EXT這些框架中都是內置的,但是顯然說服不了另一個框架的用戶用對方的模塊機制,於是有人立志要統一這種模塊定義方式,成立了CommonJS。
但不料,CommonJS內部也有派系,誰也說不服對方。終於有一個人忍不住自己獨立開發出RequireJS,其模塊規范即為AMD。 AMD最大的優勢是它支持各種插件,且簡單明了,並且提供shim機制載入以非AMD規范編寫的Java代碼。
但在CommonJS誕生很久一段時間後,在後端的Node.js出現時才有用武之地。而國內,則流行另一種規范風格,背靠阿里的大旗,有人推出了SeaJS,號稱其規范為CMD。其實無論國內還是國外,都產生許多模塊載入器,但最後還是被淘汰了,規范一個就夠了,不宜過多。
但是前端工程師的創造力就是這么驚人,從無到有,再到泛濫成災,一年足矣。這可能與前端代碼是開源的原因。最後有人統一了前兩種規范(AMD、Node.js模塊),同時還支持老式的「全局」變數規范。
自此,Java開發模式煥然一身了,大家只要在代碼外麵包一層就可以全世界通用,不用提心全局污染的問題。
其次,jQuery開發者需要解決大段HTML的生成問題,之前jQuery有$.html, $.append, $before等方法,可以將一大段符合HTML結構的字元串轉換成DOM再插入到頁面上。
但現在我們想分離出來,讓HTML獨立到不同的文件中,然後插數據,這就是前端模板。前端模板的情況與模板規范一樣,從沒有到多如芝麻的境地。這時篩選一個好用且性能高的模板是一件讓前端工程師頭疼的問題,那時網上有許多評測文章來介紹它們。
前端模板技術可以用一個公式來描述:
HTML = template(vars)
有了前端模板後,又誕生了前端路由,基於它們,人們發明一個新詞彙SPA。作為這個時代的尾聲,來自Ruby界的高手Ryan Dahl發明了Node.js。 前端工程師們歡唿:可以不用傳統的後端就能自己寫一個網站了!
Node.js的發展就不詳述上,很快它就冒出海量模塊、路由、狀態管理、資料庫、MVC框架都有了。這時,前端就缺自己的MVC框架了。Node.js轉眼就十歲生日了。
著名的MEAN架構,是Java全棧開發的先鋒。當時涌現了大量的MVC與MVVM框架。最先火起來的是Backbone.js,使用純正的MVC模型, Backbone.js是jQuery最後的支持者,它強依賴於jQuery。
Backbone.js的作者還搞了另一套編譯語言Coffee, 裡面的箭頭函數、類機制、 解構賦值等語法糖都深深影響了後來的ES6。
接著下來是谷歌的Angular,微軟的Knockout.js,蘋果的Ember.js這三個MVVM框架,MVVM就是比MVC多一個數據綁定功能,但這數據綁定功能是非常難實現。Knockout是使用函數代替屬性的技巧實現,它的設計影響到後來的Mobx;Ember.js是基於Object.defineProperty;Angular是將函數體轉譯成setter()、getter()函數。
大公司的介入,對個人開發者影響是很大,畢竟大家都愛迷信大公司,因此局面一下子就穩定下來。大公司還帶來了全新的開發模式,早期都是找一個核心庫,再搜刮一大堆插件,然後自己寫業務代碼,最後後端打包。
大公司將後端開發經驗挪用過來,用Node.js開發了一套CLI,裡麵包含了腳手架生成, 打包腳本、語法風格檢測、環境變數插入,代碼復雜度檢測,代碼提交時自動跑單元測試, 圖片與JS壓縮等功能。ESLint、JSLint、JSHint、CSS Lint、 htmllint等就是那時期出現的。
但CLI的出現導致了前端的分裂,以前大家都使用jQuery,但自CLI幫你建好項目的那一刻起,就將你劃歸某一子陣營,你是Angular?Ember.js?還是jQuery?對了,jQuery沒有大公司支撐的陣營被快速邊緣化。
對於個人開發者,他們是沒有能力開發這么功能完備的CLI,於是出現了Code Climate、Travis CI、CircleCI這樣的平台。它們的出現標志著jQuery小作坊時代的終結了。
CircleCI官網
前端開發者也出現分化:有些人轉向後端,出現了CNode的門戶網站。另外一些人開始搞工程化。一時間出現上百種構建工具,出名的有Grunt、Gulp、FIS3、webpack、 Rollup、npm-。
你方唱罷我登場,這些構建工具均會經歷時代的考驗,如大浪淘沙般,最後存活得僅為寥寥。
因此在這場工程化得盛宴中,註定把許多低層次的jQueryer淘汰掉。jQueryer在空閑之餘培育出的前端模板、前端路由、MVC框架、模塊載入器、Node.js構建工具,卻不料最終成為它自己的挖墓人。
jQuery的時代一去不返了,再沒有人關心拖堂拖了N年的Bootstrap 4終於發布了,沒有人知道jQuery3.5的瘦身計劃,也沒有人問jQuery的源碼,漸漸地,大家不關注jQuery的工具鏈了。
三大框架割據時代(2016~至今)
React是突然爆發的,雖然它是與Angular是同時期發布,但因為JSX怪異的語法讓人們遠離它。此時已經進入移動互聯網的中期,大公司都有自己的App,或者基於原生,或者基於Hybird。
Hybird是用WebView載入一個網站或一個SPA。
由於原生成本太貴,需要招兩套班子,一套安卓的,一套iOS的;而Hybird則一直存在性能問題。於是在2017年,Facebook推出了React Native(RN)。
RN的性能不比原生差多少,比Hybird能好些, 其次使用JSX開發界面比原生的快; RN 只需要低成本的前端開發人員就能上手了。中國國內經過瀑布流(圖片導購)、團購、P2P、區塊鏈等全新商業模式的開發浪潮後,前端人員數量大增。現在,他們只要稍微培訓就可以轉型為App開發。
在開發RN的過程中,人們開始了解React一系列的優勝之處。比如JSX背後的虛擬DOM技術,雖然事實證明虛擬DOM不會帶來性能的巨大優勢,但保證了你怎麼寫其性能不會太差。
React為了引入JSX,必須需要引入編譯,這又間接促成Babel與webpack的壯大。尤其是Babel, 讓我們在很舊的瀏覽器中使用非常新的語法,甚至一些還沒有定案的語法。React從14升級到React 15,強制使用class語法,讓這個推了好久的語法糖終於大規模落地。
之前如果Java想使用類,只能自己模擬類,由於沒有官方的實現,只能任由各優秀工程師發揮。而普通人想用好類,需要了解很復雜的Prototype機制。
現在只用幾個新關鍵字就可以得到這一切。
如果對比Python 2與Python 3間的升級,Java實在太辛運了!針對CSS邏輯功能過弱的問題,我們也有了新的解決方案:Less、Sass、PostCSS與CSS Moles!
谷歌在發布Angular的同時,也發布了一個叫Polymer的框架,那時它想推廣一種叫Web Components的瀏覽器自定義組件技術。這其實是微軟在IE5就玩剩的HTC技術的升級版。雖然它沒有火起來,但它將、Style、Template三種內容混在一個文件的設計,啟發一個留美華人,再結合當時的Backbone.js、Angular等設計,Vue.js橫空出世。目前,這是國人最成功的前端框架了。
除此之外,國人也弄了好幾套迷你React框架與迷你Vue框架。這有點像jQuery時代,大家瘋狂做迷你jQuery框架一樣。
總的來說,最有創造力的是React團隊,做出狀態管理器、CSS-in-JS、Flow靜態類型檢查、devTool、Fetch、前後端同構、Fiber、suspend、並發渲染等名詞層出不窮。其中,狀態管理器擁有上百套, CSS-in-JS也擁有上百套,Flow則讓前端嘗鮮到介面編程的好處,間接推動發Type發展。這三大框架無法比拼個一二出來:Vue.js有國人的擁躉,React與Angular有大公司光環。
三大框架的纏斗從PC領域擴展到移動端:React有RN, Vue.js有Weex,Angular有ionic。想當年我們為了兼容瀏覽器,攢了一大堆瀏覽器偵探的Hack,全部貶值為垃圾了。
在這時期,一種全新的後端渲染崛起,稱之為前後同構,既擁有早期SEO的功效,又能復用大量的業務邏輯。隨著國內移動互聯網的發展,獲客成本提高,各種有效的商業模式都進入紅海,但只有頭部用戶能賺到錢,馬太效應越來越嚴重,純粹的技術解決方案已經無法滿足商業訴求了。
小程序時代(2017~至今)
小程序時代與三大框架的時代幾乎重合,但是出自不同一批人,決戰的平台也不一樣。
一直以來前端技術都是由國外開發者主導的,即便是Vue.js也是由美國的華人創造的。但是國內外的技術更新是存在代差,國內通常延期兩三年,這個時間差可以讓一些模仿者得以生存(如SeaJS、FIS、avalon)。但隨著封閉的時間越來越長,國內肯會也會誕生自己的轉有物種。小程序就是其中之一。
小程序的出現有著明顯的商業訴求,因為馬太效應,一些超大流量的App誕生了。這些大流量App集成了許多功能,但顯然公司再多員工,也無法所有功能全是自己弄,於是產生小程序這種「外包」的手段。
小程序是國內前端技術的一次厚積薄發:底層運行的迷你React的虛擬DOM, 內置組件是使用Web Component,API來源於Hybird的橋方法,打包使用webpack,調試台是Chrome console的簡化版, WXML、WXSS的語法高亮也應該是webpack或VS Code的插件, 模塊機制是Node.js的CommonJS……其中最值得一提的是微信開發者工具,以後開發者工具成了各種小程序/快應用的標配。
但微信小程序一開始的復用能力非常弱,沒有類繼承,不能使用npm, 不支持Less、Sass, 因此基於它的轉譯框架就應運而生。第一代譯轉框架是wept、WePY、mpvue,它們無一例外是Vue風格的。因為WXML的模板指令與Vue非常相似,只是改一下就能兼容。當時也出現了一個MINA的框架,聽說是微信團隊開發的,可以單獨架起Node.js後端,讓小程序運於瀏覽器中,方便做單元測試。
第一代轉譯框架主要是基於Template標簽實現組件機制,自定義組件機制是很後的事了。這就造成了利用第一代轉譯框架編寫的小程序項目很難升級。那時候是個人開發者的天堂,這些框架都是某一大牛獨力開發的。
第二代轉譯框架是大公司主導的,因為需要兼容的小程序越來越多,網路、支付寶、位元組跳動、小米、華為等公司都推出自己的小程序和快應用。個人開發者很難憑個人力量去開發轉譯框架,這時候各大團隊紛紛推出自己的輪子:如京東的Taro、滴滴的Chameleon網易的Megalo、去哪兒網的nanachi、網路的Okam等。
在這個時期,Angular顯然落伍了,一是Angular升級太快,國內的高手還沒有消化好,新一版的Angular又發布了。二是國內缺乏迷你Angular的輪子,導致龐大的Angular無法塞進小程序中。
國外谷歌發布了Flutter跨平台轉譯框架,但是它的編寫語言是Dart,它也無法跨界到小程序中。
未來不僅國內一線巨頭爭奪小程序,二三線的巨頭也可能會加入小程序的混戰中,例如有人稱360也在打造自己的小程序平台。小程序這種新的流量變現模式深刻地影響了國內的互聯網布局。
結語
當初Java被誤解為最糟糕的語言,時至今日它是最流行的語言:GitHub 60%的開源項目都是與Java有關。
以前,從事這行業的人被稱為頁面仔,現在他們的起薪有的比PHP、JAVA、C++等後端還高。甚至有人說,「任何可以使用Java來編寫的應用,最終會由Java編寫。」
我們前端開發者觸及的領域不僅僅是瀏覽器,還可以做後端,做桌面端,做手機端,做小程序端,前端開發者的性價比越來越高,越來越重要。可謂是時代造英雄。
筆者有幸成為前端開發者大隊伍中的一員,也堅信我們前端開發者以後的路會越來越寬,越來越好走。
資料:
[1]:計算機和編程語言的發展歷史
[2]:Polyfill是一塊代碼(通常是 Web 上的 Java),用來為舊瀏覽器提供它沒有原生支持的較新的功能。
作者簡介:司徒正美,擁有十年純前端經驗,著有《Java框架設計》一書,去哪兒網公共技術部前端架構師。愛好開源,擁有mass、Avalon、nanachi等前端框架。目前在主導公司的小程序、快應用的研發項目。
本文鏈接:http://www.cnite.cn/qianan/share/20198308.html
『貳』 Dart 語言失敗了嗎
Dart語言沒有失敗。
1、學習過 Java 、Scala或者 Kotlin 的開發者,再學習Dart 幾乎沒什麼難度。Dart 語言本身的上手難度也不高,它綜合了動態語言和靜態語言的一些特性,屬於偽動態語言。
2、Dart雖然是一種面向對象的語言,但是也支持函數式編程。Dart的語法特性讓代碼實現十分簡潔,很多用戶非常喜歡。
3、Dart語言可以開發的跨平台移動UI框架。Dart 是一種易於學習、易於擴展、並且可以部署到任何地方的應用編程語言。
dart語言一些注意點
1、const是編譯時就要確定值,所以不能這樣寫:
const datetime tim=datetime(); //因為datetime()的值只有運行時才能確定。
2.類大括弧外面沒有分號,如:
Class p{
Pass….
}
4、typedef Fly = void Function(int value);//Fly是定義了一個方法,該方法只有一個int形參,Fly不是特定的函數,而是一個類型,可以用來定義變數。Fly類型的變數都是特定的具體函數。
5、函數位置參數使用方括弧[]括起來: int f(int x, int y,[int z]){}//z是可選的形參
函數命名參數用大括弧{}括起來:int f({String name,String Sex}){},可以這樣調用:
f(name:』wangziyou』,Sex:』Male』);但二者不能同時使用。
『叄』 GitHub 上有哪些值得推薦的開源電子書
語言無關類
操作系統
鳥哥的Linux私房菜 (簡體)
Linux 系統高級編程
The Linux Command Line (中英文版)
Linux 設備驅動 (第三版)
深入分析Linux內核源碼
UNIX TOOLBOX
Docker中文指南
Docker —— 從入門到實踐
FreeRADIUS新手入門
Mac 開發配置手冊
FreeBSD 使用手冊
Linux 命令行(中文版)
- 智能系統
一步步搭建物聯網系統
- web伺服器
Nginx開發從入門到精通 (淘寶團隊出品)
- 版本控制
Git教程 (本文由 @廖雪峰 創作,如果覺得本教程對您有幫助,可以去 iTunes 購買)
git – 簡易指南
猴子都能懂的GIT入門
Git 參考手冊
Pro Git
Git Magic
GotGitHub
Git Community Book 中文版
Mercurial 使用教程
HgInit (中文版)
沉浸式學 Git
Git-Cheat-Sheet (感謝 @flyhigher139 翻譯了中文版)
GitHub秘籍
- NoSQL
NoSQL資料庫筆談 (PDF)
Redis 設計與實現
Redis 命令參考
帶有詳細注釋的 Redis 3.0 代碼
帶有詳細注釋的 Redis 2.6 代碼
The Little MongoDB Book
The Little Redis Book
Neo4j 簡體中文手冊 v1.8
Neo4j .rb 中文資源
- MySQL
MySQL索引背後的數據結構及演算法原理
- 項目相關
持續集成(第二版) (譯言網)
讓開發自動化系列專欄
追求代碼質量
selenium 中文文檔
Joel談軟體
約耳談軟體(Joel on Software)
- Web
關於瀏覽器和網路的 20 項須知
前端知識體系
瀏覽器開發工具的秘密
Chrome 開發者工具中文手冊
Chrome擴展開發文檔
Grunt中文文檔
移動Web前端知識庫
正則表達式30分鍾入門教程
前端開發體系建設日記
移動前端開發收藏夾
JSON風格指南
HTTP 介面設計指北
前端資源分享(一)
前端資源分享(二)
前端代碼規范 及 最佳實踐
w3school教程整理
- 大數據
大數據/數據挖掘/推薦系統/機器學習相關資源
- 編程藝術
程序員編程藝術
每個程序員都應該了解的內存知識(譯)【第一部分】
取悅的工序:如何理解游戲 (豆瓣閱讀,免費書籍)
- 其他
OpenWrt智能、自動、透明翻牆路由器教程
- 語言相關類 AWK
awk程序設計語言
- C/C++
C++ 並發編程指南 (@傅海平ICT)
Linux C編程一站式學習 (宋勁杉, 北京亞嵌教育研究中心)
CGDB中文手冊
100個gdb小技巧
100個gcc小技巧
ZMQ 指南
How to Think Like a Computer Scientist (中英文版)
跟我一起寫Makefile(PDF)
GNU make中文手冊
GNU make 指南
Google C++ 風格指南
C/C++ Primer (by @andycai)
簡單易懂的C魔法
Cmake 實踐 (PDF版)
C++ FAQ LITE(中文版)
C++ Primer 5th Answers
- CSS/HTML
學習CSS布局
通用 CSS 筆記、建議與指導
CSS參考手冊
Emmet 文檔
前端代碼規范 (騰訊alloyteam團隊)
- Dart
Dart 語言導覽
- Fortran
Fortran77和90/95編程入門
- Java
實時 Java 系列
Apache Shiro 用戶指南
使用 Eclipse 和 Java SE 6 創建獨立 Web Services 應用程序
第 1 部分: Web Services 服務端應用程序
第 2 部分: Web 服務客戶端應用程序
JavaServer Faces 1.2 入門
第 1 部分: 構建基本應用程序
第 2 部分: JSF 生命周期、轉換、檢驗和階段監聽器
用 Eclipse Europa 進行 Web 開發
第 1 部分: Eclipse Java EE
第 2 部分: PHP 開發工具
第 3 部分: Ruby Development Toolkit 和 RadRails
使用 JavaServer Faces 構建 Apache Geronimo 應用程序
第 1 部分: 使用 Eclipse 和 Apache MyFaces Core 構建基本的應用程序
第 2 部分: 在 JavaServer Faces 中使用 Tomahawk
第 3 部分: 使用 ajax4jsf 添加 Ajax 功能
第 4 部分: 使用 Apache Trinidad 組件擴展 JSF
第 5 部分: 將 JSF 應用程序與 Spring 集成
Apache Geronimo 和 Spring 框架
第 1 部分: 開發方法學
第 2 部分: 構建第一個應用程序
第 3 部分: 集成 DAO 與 ORM
第 4 部分: 混合使用 Spring AOP 和 Spring Web Flow
第 5 部分: Spring MVC
第 6 部分: Spring MVC:使用 Web 視圖技術
終極 mashup —— Web 服務和語義 Web
第 1 部分: 使用與組合 Web 服務
第 2 部分: 管理 Mashup 數據緩存
第 3 部分: 理解 RDF 和 RDFs
第 4 部分: 創建本體
第 5 部分: 切換 Web 服務
Jersey 2.x 用戶指南
MyBatis中文文檔
- JavaScript
Google JavaScript 代碼風格指南
Airbnb JavaScript 規范
JavaScript 標准參考教程(alpha)
Javascript編程指南 (源碼)
javascript 的 12 個怪癖
JavaScript 秘密花園
JavaScript核心概念及實踐 (PDF) (此書已由人民郵電出版社出版發行,但作者依然免費提供PDF版本,希望開發者們去購買,支持作者)
《JavaScript 模式》翻譯,此書中文版有售,但是紙質書翻譯的還沒有這個版本翻譯的好
命名函數表達式探秘 (注:原文由為之漫筆翻譯,原始地址無法打開,所以此處地址為我博客上的備份)
學用 JavaScript 設計模式 (開源中國)
深入理解JavaScript系列
ECMAScript 6 入門 (作者:阮一峰)
jQuery
jQuery 解構
簡單易懂的JQuery魔法
How to write jQuery plugin
Node.js
Node入門
七天學會NodeJS
Nodejs Wiki Book (繁體中文)
express.js 中文文檔
koa 中文文檔
使用 Express + MongoDB 搭建多人博客
Express框架
nodejs文檔
Node.js 包教不包會
Learn You The Node.js For Much Win! (中文版)
Node debug 三法三例
underscore.js
Underscore.js中文文檔
backbone.js
backbone.js入門教程 (PDF)
Backbone.js入門教程第二版
Developing Backbone.js Applications(中文版)
AngularJS
AngularJS最佳實踐和風格指南
AngularJS中譯本
AngularJS入門教程
構建自己的AngularJS
在Windows環境下用Yeoman構建AngularJS項目
zepto 簡明中文手冊
Sea.js
Hello Sea.js
CoffeeScript
CoffeeScript Cookbook
The Little Book on CoffeeScript中文版
ExtJS
Ext4.1.0 中文文檔
Chrome擴展及應用開發
JavaScript入門教程
- PHP
PHP調試技術手冊(PDF)
XDebug 2中文手冊(譯) (CHM)
PHP之道
PHP 最佳實踐
PHP安全最佳實踐
深入理解PHP內核
PHP擴展開發及內核應用
CodeIgniter 用戶指南
Laravel4 中文文檔
Laravel 入門
Symfony2中文文檔 (未譯完)
Phalcon中文文檔(翻譯進行中)
YiiBook幾本Yii框架的在線教程
簡單易懂的PHP魔法
swoole文檔及入門教程
- iOS
iOS開發60分鍾入門
iOS7人機界面指南
Google Objective-C Style Guide 中文版
iPhone 6 屏幕揭秘
Apple Watch開發初探
馬上著手開發 iOS 應用程序
網易斯坦福大學公開課:iOS 7應用開發字幕文件
- Android
Android Design(中文版)
Google Android官方培訓課程中文版
Android學習之路
- Python
小白的Python教程
簡明Python教程
零基礎學Python
Python 2.7 官方教程中文版
Python 3.3 官方教程中文版
深入 Python 3
PEP8 Python代碼風格規范
Google Python 風格指南 中文版
Python入門教程 (PDF)
Python的神奇方法指南
笨辦法學 Python (PDF版下載)
Django 文檔中文版
Django 最佳實踐
The Django Book 中文版
web.py 0.3 新手指南
Web.py Cookbook 簡體中文版
Dive Into Python 中文版
Bottle 文檔中文版 (需翻牆)
Flask 文檔中文版
Jinja2 文檔中文版
Werkzeug 文檔中文版
Flask之旅
Introction to Tornado 中文翻譯
Python自然語言處理中文版 (感謝陳濤同學的翻譯,也謝謝 @shwley 聯系了作者)
Python 繪圖庫 matplotlib 官方指南中文翻譯
Scrapy 0.25 文檔
ThinkPython
- Ruby
Ruby 風格指南
Rails 風格指南
笨方法學 Ruby
Ruby on Rails 指南
Ruby on Rails 實戰聖經
Ruby on Rails Tutorial 原書第 2 版 (本書網頁版免費提供,電子版以 PDF、EPub 和 Mobi 格式提供購買,僅售 9.9 美元)
編寫Ruby的C拓展
Ruby 源碼解讀
- Shell
Shell腳本編程30分鍾入門
- Go
Go編程基礎
Go入門指南
學習Go語言 (PDF)
Go Web 編程 (此書已經出版,希望開發者們去購買,支持作者的創作)
Go實戰開發 (當我收錄此項目時,作者已經寫完第三章,如果讀完前面章節覺得有幫助,可以給作者捐贈,以鼓勵作者的繼續創作)
Network programming with Go 中文翻譯版本
- Groovy
實戰 Groovy 系列
- LaTeX
一份其實很短的 LaTeX 入門文檔
一份不太簡短的 LATEX 2ε 介紹 (PDF版)
- LISP
ANSI Common Lisp 中文翻譯版
- Lua
Lua編程入門
- Haskell
Real World Haskell 中文版
- R
R語言忍者秘笈
- Scala
Scala課堂 (Twitter的Scala中文教程)
Effective Scala(Twitter的Scala最佳實踐的中文翻譯)
Scala指南
- Swift
The Swift Programming Language 中文版
- Perl
Modern Perl 中文版
Perl 程序員應該知道的事
- Prolog
笨辦法學Prolog
Vim中文文檔
- Vimscript
笨方法學Vimscript 中譯本
Vim中文文檔
- 讀書筆記及其它 讀書筆記
編譯原理(紫龍書)中文第2版習題答案
把《編程珠璣》讀薄
Effective C++讀書筆記
Golang 學習筆記、Python 學習筆記、C 學習筆記 (PDF)
Jsoup 學習筆記
學習筆記: Vim、Python、memcached
圖靈開放書翻譯計劃–C++、Python、Java等
蒂姆·奧萊利隨筆 (由譯言網翻譯,電子版免費)
Octave 入門 (PDF版)
SICP 解題集
精彩博客集合
正則表達式簡明參考
『肆』 英雄連dartborne mod很卡
兄弟,怎麼說呢,這個dartborne MOD一個特點就是保留屍體,很多人就是沖著這個效果才玩這個mod的,我也在用這個mod,覺得很不錯。實際上,只要是個mod就會降低幀數,這個mod我個人感覺比其他mod消耗掉的系統資源還要少一些(或許是個人原因)。總之平均幀數要求達到30即可達到流暢運行。根據你的配置,大概特效基本開到中就可以了,主要內存太小,我2G的都覺得吃力。把貼圖細節調低會省去很多系統佔用量。這樣就行了吧。至於你說的補丁或插件,我在游俠上沒看見。其他地方就估計也沒有了吧……
『伍』 微軟的 TypeScript 怎麼樣,有用過的嗎和 Dart 比有什麼優勢嗎
TypeScript是一種由微軟開發的自由和開源的編程語言。它是JavaScript的一個超集,而且本質上向這個語言添加了可選的靜態類型和基於類的面向對象編程。安德斯·海爾斯伯格,C#的首席架構師,已工作於TypeScript的開發。
TypeScript擴展了JavaScript的語法,所以任何現有的JavaScript程序可以不加改變的在TypeScript下工作。TypeScript是為大型應用之開發而設計,而編譯時它產生 JavaScript 以確保兼容性
TypeScript 支持為已存在的 JavaScript 庫添加類型信息的頭文件,擴展了它對於流行的庫如 jQuery,MongoDB,Node.js和 D3.js 的好處。
『陸』 javascript會被其他語言代替嗎
首先排除掉Go,這個東西是做服務端的,定位也是系統編程。主要說說dart:
dart這個語言最關鍵的地方其實是兩個:1.相似性;2.dart2JS。
相似性:
google搞的這個dart你會發現如果有java,c#,javascript背景的開發人員,那麼這個語言幾乎是0學習負擔,直接拿來就能用,做項目。裡面有很多好的特性都是你非常熟悉的,語法難度(目前)介於java和c#之間,可選類型的動態語言,彌補動態語言tooling,靜態分析上的短板(盡管這個可選類型爭議很大,尤其是純粹從設計語言上的角度上去看)。
dart2JS:
dart vm將來會內置到chrome中,但其他瀏覽器可能不會支持它,所以dart2JS就顯得很重要,這樣dart寫的程序可以在所有瀏覽器上執行,至於性能和體積等等問題這個變成了編譯器優化的部分了,純粹的技術上問題,沒有什麼不可逾越的障礙了(例如讓其他瀏覽器接受dart vm這種非技術性障礙,這個很難逾越),只需要時間去完善。最終有點類似於手寫匯編和編譯器生成的匯編哪個效率高的問題。
有了語法上的高度相似性和dart2JS,那麼dart失敗與成功其實不是那麼重要了,因為google最終的目的不是讓大家都一定要去使用它的語言,而是要讓web進化的更快一些,或者說有一個比現在更好的javascript快點的到來,這才是它最想要的結果,類似於它的什麼高速光纖等等,都是這個套路,讓你更加依賴web,因為web是它盈利的關鍵入口。
2011年google內部有郵件說明過為啥要做這個語言?他們有2套方案會一直並行的去做下去:
1.v8團隊繼續優化js引擎,一起參與進化javascript語言;
2.發明一個新的語言(dart),最終替代JS。
方案1風險小但進展太慢它等不及,方案2風險大但回報也大。最終他們決定同時執行兩套方案。
而dart的開發者大部分就是v8,chromium的團隊人馬,dart中很多新東西都和v8有關聯,dart一些新的特性未來可能也會被ecmascript 接受成為未來js的新標准,所以最終無非就是兩個結果:要麼dart失敗了,但dart里很多好的東西都被js吸收了,js煥然一新;要麼dart成功了,代替掉了js。無論是哪種結果,web的進化進程都被加快了,這個就是google的真正目的(有點像它做android但卻不直接通過這個系統本身來賺錢)。
所以說:這個語言在設計中【保持相似性】和【dart2js】是很關鍵的兩個方面。那麼你覺得它能否代替掉JS對你影響大么?也不會出現什麼你學了很久的東西未來某天發現沒用武之地了這種情況,所以該用js的繼續接著用,想嘗試dart的也別擔心別的瀏覽器跑不了,也不用擔心要從頭開始學一門新的語言的負擔,因為它裡面大部分東西都是你早都掌握了的。
『柒』 Dart和TypeScript來了,讓我怎麼學習Javascript
我覺得你想多了,最直觀的來說如果你現在已經掌握了Dart或者TypeScript,請問你怎麼找工作?
作為相同類型的語言,Dart, TypeScript 和 Javascript必然大同小異,所以日後需要的時候轉化過度幾乎是沒有門檻的。
不用人雲亦雲,咱們都是看熱鬧的,咱們都是語言的使用者而不是研發方,就如同js有多種框架一樣,會用jQuery的人學Mootools會吃力嗎?
『捌』 英雄連dartborne 模組 怎麼一進去就黑屏
很明顯是你的顯卡不支持這個游戲啦,去網上找找你的顯卡在不在這個游戲的「顯卡支持列表」裡面,如果是不在的話,那你就得跟我一樣了(當本人滿懷歡喜的下完了鬼泣4,正准備裝上的時候卻提示說我的顯卡不支持,不讓我裝。。。。。當場哭死。。。)
如果你的顯卡是支持的話,那麼就請你先把最新的DX9裝上,最後再找一個比較新的顯卡驅動從新裝上試試吧,從新裝了顯卡驅動以後估計就不會有問題了,去爽吧。。。。!!!
最後祝你早日解決問題。。。!!!!
跟你說得這么詳細,打字都打得痛咯,所以分要記得給我啊。。。。
『玖』 2022年最值得學習的技術有哪些
CDA數據分析師 出品
編譯:Mika
如果我們把人類文明想像成汽車的話,那麼軟體開發行業就相當於汽車的引擎,編程語言就像引擎的燃料。
2021年很快就要結束了。如今,軟體開發行業正以前所未有的速度在全球蓬勃發展。在不久的將來,該行業在全球收入預計將超過3000億美元。
在越來越多的行業,擁有數據思維能力,會編程語言也變得日益重要,能夠編寫計算機程序也成為了當下最值得學習的技能之一。
在數字經濟的新形勢下,跟隨技術潮流的發展來學習新技術是十分必要的。2022年,你有計劃新學一門編程語言嗎?
在本文中我們列出了2022年值得學習的編程語言TOP 7,一起來看看吧。
01 Python
確切地說,Python是目前世界上最流行的編程語言,而且熱度一直很高。
統計數據顯示,Python在幾個主要的語言排名指數中一直名列前茅排。這也使其成為開發者的首選語言之一,也是企業使用語言的首要選擇。
無論是安卓或iOS應用開發,還是構建桌面應用,企業如今會僱用專門使用Python的開發人員。這也是意料之中的,因為Python有許多優勢,而且它是一種頂級的通用語言。
Python最大的優勢在於它相對容易學習,而且還加快了開發時間,這也是為什麼企業機構如此喜歡Python的原因。同時對於作為開發人員來說,Python還具有開源的優勢,並且在線社區非常活躍,這意味著你可以隨時得到指導和支持。
正由於Python如此流行,該領域並不缺乏人才,但這並不意味著你不應該學習這種全堆棧語言。這里要注意一下,Python可能比Kotlin等其他語言速度慢,而且它不是移動設備的原生語言,可能會導致應用程序內存消耗高。
02 Kotlin
學習Kotlin的一大亮點在於,谷歌很喜歡使用該語言。事實上,自2017年以來,Kotlin一直是谷歌的首選軟體開發語言。
谷歌優先考慮基於Kotlin的應用程序的創新特性和功能,開發者只需用這種易於使用的語言編寫代碼,就可以輕松地在競爭中保持領先。最重要的是,你可以使用Kotlin作為WordPress編程實踐,構建WP網站或開發android應用程序、伺服器等。而且只要是使用Java的地方,你都可以使用Kotlin,因為它與這種流行的語言是互通的。
還值得注意的是,Kotlin很可靠,其應用程序的源代碼很容易維護,語言本身也很乾凈和緊湊,這使得它相當容易學習。不用說,Kotlin也通過更好的團隊協作和效率大大減少了開發時間。
03 JavaScript
在頂尖的編程語言中,不得不提JavaScript,它已成為桌面軟體、基於web的應用程序甚至手機應用程序的標桿性語言。
你現在可能會想,為了成為一名優秀的的開發者,你需要學習本文中提到的所有語言,事實上你掌握的語言越多,這越有利於你的職業發展。
要知道,如今開發團隊和公司一般都傾向於招募具有多項技能的開發人員,JavaScript能讓你如虎添翼。JavaScript的優勢在於,你幾乎可以用這種語言編寫任何代碼。而且它在電子商務行業中特別流行,用於編寫運輸應用程序以及其他後端以客戶為中心的應用程序。
所有這些都表明,學習JavaScript是一項非常有價值的技能。它的優勢在於速度性、多功能性和可靠性。同時JavaScript流行度很高,由於有巨大的在線社區,這也讓其易於學習。
04 C++
經過多年的發展,C++已經成為一種用於分析和研究目的的編程語言,現在它是游戲開發的主要語言之一。這是因為C++是世界上最流行的游戲引擎——虛幻引擎(Unreal Engine)的主要腳本語言。
如果你想在2022年成為游戲行業一個有競爭力的開發者,不妨學一學C++。該語言對於系統軟體開發,以及將項目管理方法集成到PM應用程序和企業專有軟體中非常有用。同時,C++還支持面向對象編程以及多種其他編程模式,這使C++具有高度的通用性,而且也比其他一些編程語言更容易學習。
在使用C++時,唯一麻煩的是沒有自動垃圾回收器,這意味著你需要手工清除無用數據。內置的friends函數和全局變數可能會帶來一些安全風險,你可以通過管理訪問點來避免這些風險。
05 Golang
Golang最早出現在2009年,但它被認為是一種相當新的語言。近年來,無論是在前端還是後端,Golang都在開發社區掀起了一波浪潮。
Golang是由谷歌推出的,主要目的是將推進函數式編程的發展,它具有許多C語言應有的功能,比如包括垃圾收集器、更好的內存安全性和管理、結構類型等等。
對於要處理敏感信息的的軟體來說,Golang是非常不錯的選擇。例如中小企業的計費軟體以及需要強大工具來管理金融交易和數據的大型企業。不過,Golang學習起來要花費的時間精力更多,但對於有抱負的開發人員來說,如果未來想從事web和應用程序開發,那麼這個語言是很值得學習的。
同時,它還是開源的,因此你有很多機會可以相當快地掌握這種語言。如今的企業和用戶都需要簡單而直觀的應用程序,Golang在代碼效率、簡單性和安全性的優勢就顯得十分重要了。
06 Dart
在谷歌開發的新式編程語言中,Dart作為一種簡單的編碼語言在業界迅速崛起,它遵循C風格的語法。這意味著它相當容易學習,而且它在多平台和跨平台開發中有著廣泛的應用。
作為軟體開發者,你需要一種可以用於為各種平台編寫應用程序的語言。
就拿可穿戴設備來說,如今可穿戴設備在許多方面改變了我們的生活,而且必須與其他設備連接,因此你得確保這些設備在不同平台的應用中的無縫操作。這里Dart就能派上用場了,你可以Dart為任何電子設備構建應用程序。
學習Dart並不是必須的,但它確實比學習JavaScript這類傳統語言有一些優勢。Dart更容易學習,語法更簡單,尤其是在快速開發和輸出成為常態的時代,這是十分珍貴的特質。
07 Solar 2D
最後,Solar 2D(前身為Corona)是專門為開發手機游戲而構建的軟體開發工具包。考慮到手機游戲日益流行的事實,到2022年僅在美國,手機游戲內容市場的價值就將超過1210億美元。
考慮到這一點,Solar 2D正是移動游戲行業中必不可少的編程工具包。Solar 2D目前只是基於2D,但這並不是問題,因為在安卓和iOS游戲中2D應用程序的表現也十分亮眼。Solar 2D的偉大之處在於它使用了強大的Lua腳本語言,並在魔獸、憤怒的小鳥和文明等游戲中廣為使用。
『拾』 2022年最值得學習的大學專業有哪些或者說手機上有哪些值得去學的技術呢
CDA數據分析師 出品
編譯:Mika
如果我們把人類文明想像成汽車的話,那麼軟體開發行業就相當於汽車的引擎,編程語言就像引擎的燃料。
2021年很快就要結束了。如今,軟體開發行業正以前所未有的速度在全球蓬勃發展。在不久的將來,該行業在全球收入預計將超過3000億美元。
在越來越多的行業,擁有數據思維能力,會編程語言也變得日益重要,能夠編寫計算機程序也成為了當下最值得學習的技能之一。
在數字經濟的新形勢下,跟隨技術潮流的發展來學習新技術是十分必要的。2022年,你有計劃新學一門編程語言嗎?
在本文中我們列出了2022年值得學習的編程語言TOP 7,一起來看看吧。
01 Python
確切地說,Python是目前世界上最流行的編程語言,而且熱度一直很高。
統計數據顯示,Python在幾個主要的語言排名指數中一直名列前茅排。這也使其成為開發者的首選語言之一,也是企業使用語言的首要選擇。
無論是安卓或iOS應用開發,還是構建桌面應用,企業如今會僱用專門使用Python的開發人員。這也是意料之中的,因為Python有許多優勢,而且它是一種頂級的通用語言。
Python最大的優勢在於它相對容易學習,而且還加快了開發時間,這也是為什麼企業機構如此喜歡Python的原因。同時對於作為開發人員來說,Python還具有開源的優勢,並且在線社區非常活躍,這意味著你可以隨時得到指導和支持。
正由於Python如此流行,該領域並不缺乏人才,但這並不意味著你不應該學習這種全堆棧語言。這里要注意一下,Python可能比Kotlin等其他語言速度慢,而且它不是移動設備的原生語言,可能會導致應用程序內存消耗高。
02 Kotlin
學習Kotlin的一大亮點在於,谷歌很喜歡使用該語言。事實上,自2017年以來,Kotlin一直是谷歌的首選軟體開發語言。
谷歌優先考慮基於Kotlin的應用程序的創新特性和功能,開發者只需用這種易於使用的語言編寫代碼,就可以輕松地在競爭中保持領先。最重要的是,你可以使用Kotlin作為WordPress編程實踐,構建WP網站或開發android應用程序、伺服器等。而且只要是使用Java的地方,你都可以使用Kotlin,因為它與這種流行的語言是互通的。
還值得注意的是,Kotlin很可靠,其應用程序的源代碼很容易維護,語言本身也很乾凈和緊湊,這使得它相當容易學習。不用說,Kotlin也通過更好的團隊協作和效率大大減少了開發時間。
03 JavaScript
在頂尖的編程語言中,不得不提JavaScript,它已成為桌面軟體、基於web的應用程序甚至手機應用程序的標桿性語言。
你現在可能會想,為了成為一名優秀的的開發者,你需要學習本文中提到的所有語言,事實上你掌握的語言越多,這越有利於你的職業發展。
要知道,如今開發團隊和公司一般都傾向於招募具有多項技能的開發人員,JavaScript能讓你如虎添翼。JavaScript的優勢在於,你幾乎可以用這種語言編寫任何代碼。而且它在電子商務行業中特別流行,用於編寫運輸應用程序以及其他後端以客戶為中心的應用程序。
所有這些都表明,學習JavaScript是一項非常有價值的技能。它的優勢在於速度性、多功能性和可靠性。同時JavaScript流行度很高,由於有巨大的在線社區,這也讓其易於學習。
04 C++
經過多年的發展,C++已經成為一種用於分析和研究目的的編程語言,現在它是游戲開發的主要語言之一。這是因為C++是世界上最流行的游戲引擎——虛幻引擎(Unreal Engine)的主要腳本語言。
如果你想在2022年成為游戲行業一個有競爭力的開發者,不妨學一學C++。該語言對於系統軟體開發,以及將項目管理方法集成到PM應用程序和企業專有軟體中非常有用。同時,C++還支持面向對象編程以及多種其他編程模式,這使C++具有高度的通用性,而且也比其他一些編程語言更容易學習。
在使用C++時,唯一麻煩的是沒有自動垃圾回收器,這意味著你需要手工清除無用數據。內置的friends函數和全局變數可能會帶來一些安全風險,你可以通過管理訪問點來避免這些風險。
05 Golang
Golang最早出現在2009年,但它被認為是一種相當新的語言。近年來,無論是在前端還是後端,Golang都在開發社區掀起了一波浪潮。
Golang是由谷歌推出的,主要目的是將推進函數式編程的發展,它具有許多C語言應有的功能,比如包括垃圾收集器、更好的內存安全性和管理、結構類型等等。
對於要處理敏感信息的的軟體來說,Golang是非常不錯的選擇。例如中小企業的計費軟體以及需要強大工具來管理金融交易和數據的大型企業。不過,Golang學習起來要花費的時間精力更多,但對於有抱負的開發人員來說,如果未來想從事web和應用程序開發,那麼這個語言是很值得學習的。
同時,它還是開源的,因此你有很多機會可以相當快地掌握這種語言。如今的企業和用戶都需要簡單而直觀的應用程序,Golang在代碼效率、簡單性和安全性的優勢就顯得十分重要了。
06 Dart
在谷歌開發的新式編程語言中,Dart作為一種簡單的編碼語言在業界迅速崛起,它遵循C風格的語法。這意味著它相當容易學習,而且它在多平台和跨平台開發中有著廣泛的應用。
作為軟體開發者,你需要一種可以用於為各種平台編寫應用程序的語言。
就拿可穿戴設備來說,如今可穿戴設備在許多方面改變了我們的生活,而且必須與其他設備連接,因此你得確保這些設備在不同平台的應用中的無縫操作。這里Dart就能派上用場了,你可以Dart為任何電子設備構建應用程序。
學習Dart並不是必須的,但它確實比學習JavaScript這類傳統語言有一些優勢。Dart更容易學習,語法更簡單,尤其是在快速開發和輸出成為常態的時代,這是十分珍貴的特質。
07 Solar 2D
最後,Solar 2D(前身為Corona)是專門為開發手機游戲而構建的軟體開發工具包。考慮到手機游戲日益流行的事實,到2022年僅在美國,手機游戲內容市場的價值就將超過1210億美元。
考慮到這一點,Solar 2D正是移動游戲行業中必不可少的編程工具包。Solar 2D目前只是基於2D,但這並不是問題,因為在安卓和iOS游戲中2D應用程序的表現也十分亮眼。Solar 2D的偉大之處在於它使用了強大的Lua腳本語言,並在魔獸、憤怒的小鳥和文明等游戲中廣為使用。