新聞中心
譯者 | 康少京

成都創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),臺山企業(yè)網(wǎng)站建設(shè),臺山品牌網(wǎng)站建設(shè),網(wǎng)站定制,臺山網(wǎng)站建設(shè)報(bào)價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,臺山網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力??沙浞譂M足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。
審校 | Noe
Python是我的生計(jì),我喜歡它。盡管我對這門語言有一些意見,但我強(qiáng)烈建議從事數(shù)據(jù)科學(xué)的新手去嘗試使用Python語言。不管怎樣,在該領(lǐng)域具有豐富經(jīng)驗(yàn)的人往往是 Python傳道者。
但是,這并不是意味著不能挑戰(zhàn)您所在領(lǐng)域的限制,例如通過探索不同的編程范式或新語言。
大約在十年前,微軟的軟件工程師注意到JavaScript已經(jīng)不能滿足他們的所有需求。一方面,這門語言發(fā)展迅速,增加了非常有趣的新功能,管道中的所有功能都無法解決一個基本問題,JavaScrip對于小程序來說很好,但用它編寫整個應(yīng)用程序卻一團(tuán)糟。
解決這一問題有幾種可能性:例如,使用不同的語言,或者用更好的語法重新設(shè)計(jì)JavaScript。微軟的開發(fā)團(tuán)隊(duì)采用了不同的方法:他們通過擴(kuò)展JavaScript創(chuàng)建了TypeScript。通過這種方式,他們能夠使用JavaScript的所有新功能,同時擺脫對大型項(xiàng)目不利的東西。
與 Python類似,JavaScript是在運(yùn)行時編譯的,這意味著您需要運(yùn)行代碼來調(diào)試它。另一方面,TypeScript 是經(jīng)過編譯的。這提供了額外的安全層,因?yàn)槌绦騿T在執(zhí)行之前就有可能得到有關(guān)錯誤的信息。對于像Python或JavaScript 這樣的非編譯語言,一旦意識到代碼沒有按預(yù)期運(yùn)行,在查找bug時可能會非常耗時。
然而,JavaScript和TypeScript之間的主要區(qū)別在于類型檢查器。編譯后,每個TypeScript程序都會檢查數(shù)據(jù)類型是否相互一致。
這可能聽起來很簡單,但是當(dāng)你做一個有數(shù)千行代碼的項(xiàng)目時,你會特別驚訝,感謝上帝擁有它。
還有一些其他差異,例如TypeScript具有匿名函數(shù)和異步函數(shù)這一事實(shí)。匿名函數(shù)是函數(shù)式編程的一個關(guān)鍵特性,它可以使程序在大數(shù)據(jù)的負(fù)載下更高效。
當(dāng)您需要并行執(zhí)行多個操作,或者處理不應(yīng)中斷后臺進(jìn)程I/O 操作時,異步編程非常有用。在Python和Javascript中可以進(jìn)行異步編程,但在TypeScript中它是從核心內(nèi)置的。
TypeScript是javaScript的超集
Python的競爭對手名單很長:Rust、Go、Scala、Haskell、Julia、Swift、C++、Java和R都在上面找到了一個條目??梢岳斫獾氖牵琂avaScript和TypeScript 在如此擁擠的領(lǐng)域得不到那么多認(rèn)可
這并不意味著TypeScript不是通用編程世界中的主流。然而,在數(shù)據(jù)科學(xué)家中,它從來就不是特別受歡迎。
由此可以得出結(jié)論,TypeScript可能不適合數(shù)據(jù)科學(xué)。但不要著急。盡管它可能并不適用于數(shù)據(jù)科學(xué)的每個部分,但在某些領(lǐng)域它比Python具有明顯的優(yōu)勢。
如果你碰巧在其中一個領(lǐng)域工作,就得嘗試一下TypeScript。如果你沒有嘗試過,誰知道你接下來會在哪里著陸呢?該領(lǐng)域發(fā)展的很快。如果你能看得更遠(yuǎn),你就有了競爭優(yōu)勢。
TypeScript是如何流行起來的
如果你討厭JavaScript中不斷發(fā)生的不合邏輯但又很滑稽的WTF時刻,那么我要告訴你一個壞消息:你也會在TypeScript中看到所有這些東西。
但這些語法問題并不是程序員喜歡TypeScript的愿因。相反,它歸結(jié)為這樣一種想法:使用一個很棒的產(chǎn)品——JavaScript——并添加一些更強(qiáng)大的東西——靜態(tài)類型。
當(dāng)然,我并不是說JavaScript總是很棒,或者靜態(tài)類型總是最好的做事方式。但是對于構(gòu)建大型的微軟風(fēng)格的應(yīng)用程序來說,這似乎非常有效。
也就是說,TypeScript的流行程度只是 JavaScript 的一小部分。這可以歸因于年齡:TypeScript是8歲了。但JavaScript的歷史是TypeScript的三倍!Python也是該領(lǐng)域的老前輩,已有三十年歷史。
盡管TypeScript成立的時間不長,但在一些領(lǐng)域是不可避免的。同時也增加了它的受歡迎程度。例如,當(dāng)Google在2016年宣布 Angular.js 將與TypeScript一起運(yùn)行時,StackOverflow上的標(biāo)簽數(shù)量呈爆炸式增長。
堆棧溢出趨勢
TypeScript只分享了Python和JavaScript所具有的一小部分吸引力。不過,在某些領(lǐng)域這是不可避免的
TypeScript可能比Python更有優(yōu)勢的地方
當(dāng)年JavaScript之所以流行,是因?yàn)樗鼰o處不在。您可以在服務(wù)器、瀏覽器或任何您喜歡的地方運(yùn)行它。只要編譯一次,它就可以在任何地方運(yùn)行。當(dāng)它首次出現(xiàn)的時候,簡直跟變魔術(shù)一樣。
由于它是基于JavaScript構(gòu)建的,因此TypeScript也具有這種魔力。Python也可以!當(dāng)然,它的實(shí)現(xiàn)略有不同,因?yàn)樗褂媒忉屍鞫皇翘摂M機(jī)。但這并沒有改變這樣一個事實(shí),即在run-me-anywhere方面,TypeScript 和Python不相上下。
泛型和靜態(tài)類型等特性使用TypeScript進(jìn)行函數(shù)編程比用Python更容易。這可能是一個優(yōu)勢,因?yàn)橛捎跀?shù)據(jù)科學(xué)、并行編程、異步編程等方面的發(fā)展,對函數(shù)代碼的需求正在增長。
另一方面,Python也增加了越來越多的函數(shù)式編程功能。在數(shù)據(jù)科學(xué)、機(jī)器學(xué)習(xí)等領(lǐng)域,Python處于最前沿。
這使得并行編程和異步編程成為可能。盡管這兩種語言都可以實(shí)現(xiàn),但有一個很大的區(qū)別:在Python中,需要使用特定的庫來完成任務(wù)。在TypeScript中,所有庫從核心開始都是異步的。由于后者在默認(rèn)情況下更具功能性,所以進(jìn)行并行編程通常更容易一些。
換句話說,如果你是一名涉及異步進(jìn)程和并行計(jì)算的Python開發(fā)人員,你可能想嘗試一下TypeScript。
是什么讓TypeScript對數(shù)據(jù)科學(xué)如此重要——或者不是
許多數(shù)據(jù)科學(xué)家處理異步和并行編程??赡苁紫瓤紤]得是TypeScript而不是Python編寫,不過,這是否是個好點(diǎn)子取決于很多因素。
首先,TypeScript不會用直接的方式進(jìn)行列表推導(dǎo),例如,在處理大型數(shù)組時,這可能會令人苦惱。
其次,TypeScript 中沒有原生矩陣運(yùn)算Python具有NumPy以及許多其他工具,用起來會很簡單。因此,如果項(xiàng)目涉及大量的線性代數(shù),這個時候可能你會不想采用TypeScript。
第三,如果你對JavaScript不太熟悉,肯定會有感到困惑的時候。由于 TypeScript是基JavaScript構(gòu)建的,它繼承了它的所有特性——好的、壞的和WTF。不過,老實(shí)說,遇到這些現(xiàn)象也很有趣……
最后,要考慮到編程不是個獨(dú)立的職業(yè),在數(shù)據(jù)科學(xué)領(lǐng)域中,有個龐大的Python社區(qū)可以提供支持和建議,但目前TypeScript在數(shù)據(jù)科學(xué)家中還不是很流行。所以你可能找不到那么多關(guān)于StackOverflow和其他問題的有用答案。
話雖如此,如果開發(fā)一個沒有太多大數(shù)據(jù)和矩陣運(yùn)算的項(xiàng)目,你可能還是想試試TypeScript,尤其是當(dāng)它涉及到一些并行或異步編程時。
沒有一種語言適用于所有的項(xiàng)目要求。當(dāng)然,有些語言比其他語言更有趣或更直觀。當(dāng)然,你喜歡的工具也是非常重要,因?yàn)檫@會讓你在困難時期繼續(xù)前進(jìn)。因此,從TypeScript或Python等深受歡迎的語言開始學(xué)習(xí)是個不錯的主意。
但歸根結(jié)底,你不應(yīng)該像宗教一樣堅(jiān)持一種語言。編程語言是工具。哪種工具最適合您取決于您嘗試使用它做什么。取決于它做什么。
目前,Python對于數(shù)據(jù)科學(xué)來說非常重要。但在一個快速發(fā)展的領(lǐng)域,你需要能夠看得更遠(yuǎn)。隨著任務(wù)的變化,工具也會發(fā)生變化。
另一方面,TypeScript有一個關(guān)于前端 Web、后端Node和移動開發(fā)的熱門社區(qū)。有趣的是,這些領(lǐng)域與數(shù)據(jù)科學(xué)的交集比人們想象的要多。尤其是 Node,它在數(shù)據(jù)科學(xué)家中獲得了越來越多的關(guān)注。
當(dāng)然,這并不意味著您應(yīng)該一次涉足十幾種語言。精通一門語言是很有價值的。但對其他語言和技術(shù)保持好奇將幫助你長期保持領(lǐng)先地位。
所以,當(dāng)你想嘗試新事物的時候。請不要猶豫,為什么不用TypeScript?
原文標(biāo)題:??Hey Python devs, don’t underestimate TypeScript???
譯者介紹
康少京,社區(qū)編輯,目前從事通訊類行業(yè),底層驅(qū)動開發(fā)崗位,研究過數(shù)據(jù)結(jié)構(gòu),Python,現(xiàn)對操作系統(tǒng)和數(shù)據(jù)庫等相關(guān)領(lǐng)域感興趣。
當(dāng)前文章:Python開發(fā)人員,請不要低估TypeScript!
鏈接URL:http://m.fisionsoft.com.cn/article/cdscogc.html


咨詢
建站咨詢
