日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文最初發(fā)表于 Towards Data Science 博客,經(jīng)原作者 Rhea Moutafis 授權(quán),InfoQ 中文站翻譯并分享。

Python 是我的謀生工具,我很喜歡它。盡管我對這門語言有一些批評的地方,但我還是強烈推薦給任何開始從事數(shù)據(jù)科學的人。反正在這個領(lǐng)域中,比較有經(jīng)驗的人往往都是 Python 的布道師。

然而,這并不意味著你不能時不時地挑戰(zhàn)你所在領(lǐng)域的極限,例如探索不同的編程范式或新的編程語言。

Python 的競爭對手名單很長: Rust 、 Go 、 Scala 、Haskell、 Julia 、Swift、C++、JAVA 和 R 都可以在其中找到條目。在如此擁擠的領(lǐng)域里,JavaScript 和 TypeScript 沒有得到那么多的認可,這是可以理解的。

但這并不意味著 TypeScript 不是通用編程領(lǐng)域的主流。然而,在數(shù)據(jù)科學家群體中,它似乎從來就沒有特別受歡迎過。

你可能會得出這樣的結(jié)論,TypeScript 可能不是數(shù)據(jù)科學的理想選擇。但不要急著下結(jié)論。盡管它可能不適合數(shù)據(jù)科學的每一部分,但在某些領(lǐng)域上,它比 Python 有明顯的優(yōu)勢。

如果你碰巧在這些領(lǐng)域之一工作的話,那么值得給 TypeScript 一個機會。如果你不這么做的話,誰知道你的下一步會在哪里呢?這個領(lǐng)域發(fā)展得如此之快。如果你能將眼光放遠一些,你就有了競爭優(yōu)勢。

TypeScript:是一種 JavaScript,但類型安全

大約十年前,Microsoft 的軟件工程師注意到,JavaScript 已經(jīng)不能滿足他們所有的需求了。一方面,該語言發(fā)展迅速,并增加了非常有趣的新特性。另一方面,管道中的任何功能都不能解決一個根本性的問題:JavaScript 對于小型程序來說非常棒,但用它來編寫整個應用程序卻一團糟。

解決這一問題有幾種可能性:例如,可以使用不同的編程語言,或者使用更好的語法重新設(shè)計 JavaScript。Microsoft 的開發(fā)團隊采取了一種不同的方法:他們通過擴展 JavaScript 創(chuàng)建了 TypeScript。通過這種方式,他們能夠利用 JavaScript 的所有新特性,同時擺脫了那些不適合大型項目的東西。

與 Python 類似,JavaScript 是在運行時編譯的,這意味著你需要運行代碼來調(diào)試它。另一方面,TypeScript 是編譯的。這提供了額外的安全層,因為程序員在執(zhí)行時間之前就可以獲得關(guān)于可能存在的 Bug 信息。對于 Python 或 JavaScript 這樣的非編譯語言,一旦意識到代碼的行為與預期不符,定位 Bug 可能會非常耗時。

然而,JavaScript 和 TypeScript 之間的關(guān)鍵區(qū)別在于類型檢查器。在編譯時,每個 TypeScript 程序都會檢查數(shù)據(jù)類型是否彼此一致。

手動做這些事可能聽起來微不足道。但是,當你在項目中使用數(shù)千行代碼時,你就會感謝上帝賜予你這一切。

還有一些其他不同之處,例如,TypeScript 有匿名函數(shù)和異步函數(shù)。匿名函數(shù)是函數(shù)式編程的一個關(guān)鍵特性,它可以使程序在大數(shù)據(jù)負載下更加高效。

當你需要并行執(zhí)行多個操作時,或者在處理不應中斷后臺進程的 I/O 操作時,異步編程非常有用。異步編程在 Python 和 JavaScript 中是可能實現(xiàn)的,但在 TypeScript 中,異步編程是內(nèi)置在內(nèi)核中的。

為什么程序員如此熱愛 TypeScript?

TypeScript 是 JavaScript 的超集

TypeScript 是如何流行起來的

如果你討厭 JavaScript 中不斷發(fā)生的不合邏輯但又滑稽可笑的、令人抓狂的時刻,那么,我有一個壞消息告訴你:你在 TypeScript 中也會看到所有這些東西。

但是,這些語法上的小問題,并不是程序員如此熱愛 TypeScript 的原因。更確切地說,這可以歸結(jié)為這樣一個想法:你需要一個很棒的產(chǎn)品(JavaScript),并添加更棒的東西(靜態(tài)類型)。

當然,我并不是說 JavaScript 總是很棒,或者靜態(tài)類型總是最好的處理方式。但是,對于構(gòu)建大型 Microsoft 風格的應用程序來說,這似乎非常好用。

話雖如此,TypeScript 仍然只擁有 JavaScript 的一小部分人氣。這可以歸結(jié)為發(fā)行時間的原因:TypeScript 發(fā)行有八年了,而 JavaScript 的發(fā)行時間是它的三倍!Python 在這一領(lǐng)域中,也是一款有著三十年發(fā)行歷史的老古董。

盡管它很年輕,但在某些領(lǐng)域中,TypeScript 是不可避免的。這就增加了它的受歡迎程度。例如,當 google 在 2016 年宣布 Angular.js 將與 TypeScript 一起使用時,TypeScript 在 StackOverflow 上的標簽數(shù)量呈爆炸式激增。

為什么程序員如此熱愛 TypeScript?

 

與 Python 和 JavaScript 的吸引力相比,TypeScript 只占一小部分。不過,在某些領(lǐng)域,TypeScript 是不可避免的。

TypeScript 在什么地方比 Python 更有優(yōu)勢

JavaScript 之所以在當時很受歡迎,是因為它可以在任何地方運行。你可以在服務(wù)器、瀏覽器或你喜歡的任何地方來運行它。你只需編譯一次,它就可以在任何地方工作。當它第一次出現(xiàn)時,簡直就像是魔法一樣。

由于它是基于 JavaScript 構(gòu)建的,所以 TypeScript 也繼承了這種魔法。Python 也是如此!當然,Python 的實現(xiàn)方式略有不同,因為它使用的是解釋器而不是虛擬機。但這并不能改變這樣一個事實:就一次編寫到處運行這方面,TypeScript 和 Python 是可以相提并論的。

像泛型和靜態(tài)類型這樣的特性使得在 TypeScript 中進行函數(shù)式編程比在 Python 中更容易。這可能是一個優(yōu)勢。因為由于數(shù)據(jù)科學、并行編程、異步編程等領(lǐng)域的發(fā)展,對函數(shù)式代碼的需求正在增長。

另一方面,Python 也在添加越來越多的函數(shù)式編程特性。當涉及到數(shù)據(jù)科學、機器學習等方面,Python 處于前沿地位。

這就剩下并行編程和異步編程了。盡管這兩種編程語言都可以完成這兩種工作,但是有一個很大的不同:在 Python 中,你需要使用特定的庫來完成任務(wù)。而在 TypeScript 中,所有的庫都是與內(nèi)核異步的。由于后者在默認情況下功能更多,因此進行并行編程更容易一些。

換句話說,如果你是從事異步進程和并行計算的 Python 開發(fā)人員,那么你可能會想嘗試一下 TypeScript。

TypeScript 適合數(shù)據(jù)科學嗎?

許多數(shù)據(jù)科學家都在處理異步和并行進程。你可能已經(jīng)在考慮使用 TypeScript 而不是 Python 來編寫下一個項目。不過,這究竟是不是一個好主意,還要取決于許多其他因素。

首先,TypeScript 并沒有一種簡單明了的方式進行列表推導。例如,當處理大型數(shù)據(jù)時,這可能會令人感到沮喪。

其次,TypeScript 中并沒有原生矩陣運算。Python 中有 NumPy,以及許多其他工具,這些工具使 Python 變得更容易。因此,如果你的項目有大量的線性代數(shù),你可能不會想用 TypeScript。

再次,如果你對 JavaScript 不是很熟悉的話,你幾乎肯定會有一些困惑。因為 TypeScript 就是基于 JavaScript 構(gòu)建的,前者繼承了后者的所有特性——所有好的、壞的和令人抓狂的特性。不過,說實話,遇到這些現(xiàn)象也會很有趣……

最后,你還需要考慮到編程并不是一種單獨的職業(yè)。在數(shù)據(jù)科學領(lǐng)域中,有一個龐大的 Python 社區(qū),它能為你提供支持和建議。但在目前,TypeScript 在數(shù)據(jù)科學家中并沒有那么流行。因此,你可能無法在 StackOverflow 和其他地方找到對你的問題有幫助的答案。

也就是說,如果你要開始一個沒有太多大數(shù)據(jù)和矩陣運算的小項目,那么無論如何你都可以嘗試一下 TypeScript。特別是當它涉及到并行或異步編程時。

底線:清楚在何處使用你的工具

并不是每項任務(wù)都有一種語言。當然,有些語言比其他語言更為有趣,或更為直觀。當然,熱愛你的工具是很重要的,因為這會讓你在困難的時候繼續(xù)前進。因此,從一種很受歡迎的編程語言(如 TypeScript 或 Python)開始,并不是一個壞主意。

但歸根結(jié)底,你不應該像信奉宗教信仰一樣只信奉一種編程語言。編程語言只不過是一種工具。至于哪種工具最適合你,主要取決于你想用它做什么。

目前,對數(shù)據(jù)科學領(lǐng)域來說,Python 是巨大的存在。但是,在一個快速發(fā)展的領(lǐng)域,你需要把眼光放遠一些。隨著任務(wù)的改變,你的工具也會隨之改變。

另一方面,TypeScript 有一個圍繞前端 Web、后端節(jié)點和移動開發(fā)的活躍社區(qū)。有趣的是,這些領(lǐng)域與數(shù)據(jù)科學的交叉比人們想象的要高。特別是,Node 在數(shù)據(jù)科學家中越來越受到關(guān)注。

當然,這并不意味著你應該一次涉足十幾種編程語言。真正精通一門編程語言有著巨大的價值。但從長遠來看,對其他語言和技術(shù)的好奇心將有助于你保持領(lǐng)先地位。

所以,當你想嘗試新事物的時候,不要猶豫!那為什么還不去嘗試 TypeScript 呢?

作者介紹:

Rhea Moutafis,正在攻讀暗物質(zhì)物理學博士學位。熱愛藝術(shù)、音樂及美好事物。

原文鏈接:

https://towardsdatascience.com/why-developers-love-typescript-every-bit-as-much-as-python-687d075cfb5e

分享到:
標簽:TypeScript
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨大挑戰(zhàn)2018-06-03

數(shù)獨一種數(shù)學游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數(shù)有氧達人2018-06-03

記錄運動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定