编者按:Python 在数据科学领域的地位显而易见是难以被撼动的,它拥有着太多太多的优势,然而在某些领域,TypeScript 或许是更好的选择。
原文标题:Why developers love TypeScript every bitas much as Python
原文链接:https://towardsdatascience.com/why-developers-love-typescript-every-bit-as-much-as-python-687d075cfb5e
作者简介:Rhea Moutafis,正在创业中,同时在攻读 Sorbonne Université 的 PhD,以及 Collège des Ingénieurs 的 MBA。
本文基于 CC BY 4.0 许可协议,由 CSDN 翻译
以下为译文:
Python 和 TypeScript 都是深受开发者们喜爱的编程语言。但如果你需要处理前端或者后端 Node 开发的话,也许你会考虑切换到 TypeScript。
图自 Unsplash,摄影师Obi Onyeador
Python 是我赖以生存的技能,我很喜欢它。虽然我对这门语言有一些批评的意见(相关文章链接:https://towardsdatascience.com/why-python-is-not-the-programming-language-of-the-future-30ddc5339b66),但我还是强烈建议所有人在刚开始从事数据科学的时候使用 Python。因为不管怎么样,在数据科学领域有一定经验的人往往会自行成为 Python 传道者。
但是,这并不意味着你不能时不时地挑战你所在领域的局限,比如探索不同的编程范式或一门新语言。
(相关文章链接:https://towardsdatascience.com/why-developers-are-falling-in-love-with-functional-programming-13514df4048e)
Python 有着一长列的竞争对手:Rust、Go、Scala、Haskell、Julia、Swift、C ++、Java和R,从他们身上都能够找出挑战 Python 的角度。所以在一个拥挤着如此多编程语言的领域中,JavaScript 和 TypeScript 没有获得很多认可也是可以理解的。
虽然这并不意味着 TypeScript 在更宽泛的编程世界中不是一种必需品,但是在数据科学家们中间,它从来没有流行过。
你可以现在就得出结论说:TypeScript 对于数据科学来说可能不是一种理想的编程语言。但是先不要着急。尽管可能不是对于数据科学的每个方面都适用,但在某些领域,与 Python 相比,TypeScript 具有明显优势的。
如果你的工作内容刚好处于这些领域之一,那么 TypeScript 就值得一试。如果你不尝试,谁知道下一步会在哪里呢?数据科学领域发展是很迅速的,如果你能看得更远一步,那么你就有了竞争优势。
TypeScript:类型安全的 JavaScript
大约十年前,微软的软件工程师们发现,JavaScript 已经不能再满足他们的所有需求了。一方面,这门语言正在迅速进化,不断添加非常有趣的新特性。另一方面,pipeline 中的所有特性都无法解决一个基本的问题:JavaScript 非常适合小型程序,但是如果用它编写整个应用程序,情况将会变得一团糟。
解决这个问题的思路主要有以下几种:可以转而使用另一种语言,或者使用更好的语法来重新设计 JavaScript。但微软的开发团队采取了一种不同的方法:通过扩展 JavaScript,他们创建了 TypeScript。这样一来,他们就可以使用JavaScript 的所有新功能了,同时还能摆脱对大型项目不利的负面因素。
与 Python 相似,JavaScript 是在运行时进行编译的。这意味着你需要运行代码来进行 debug。另一方面,TypeScript 是编译型语言。这提供了额外的一层安全性,因为程序员能在执行之前获得可能会出现的 bug 信息。对于Python 或 JavaScript 之类的非编译型语言,一旦你发现自己的代码没有像预期的那样运行,查找 bug 可能会非常耗时。
TypeScript 是 JavaScript 的超集。JavaScript 和 TypeScript 之间的主要区别在于类型检查器。编译后,每个 TypeScript 程序都会经历检查,以确保数据类型一致。
听起来好像是手动也能顺手完成的事情。但是,当你需要处理上千行代码的项目时,你会感谢上苍眷顾的。
JavaScript 和 TypeScript 之间还有其他一些区别,比如 TypeScript 有匿名函数(anonymous function)和异步函数(asynchronous function)。匿名函数是函数式编程的关键特性,它可以让程序更加高效地处理大量数据。
当你需要并行执行多个操作,或者当你正在处理不应中断后台进程的 I / O 操作时,异步编程非常有用。你也可以使用 Python 和 Javascript 来进行异步编程,但在 TypeScript 中,异步编程从核心上就是内置的。(相关文章链接:https://developer.mozilla.org/enUS/docs/Web/JavaScript/Reference/Statements/async_function)
图片由作者提供,参考了Guru99和Wikipedia的内容。
如果你讨厌那些在 JavaScript 不断发生的不合逻辑但又让人哭笑不得的 WTF时刻(相关文章链接:https://github.com/denysdovhan/wtfjs),那么我有个坏消息要告诉你:在 TypeScript 中你还是会遇到这些东西。
但是,这些语法上的偶尔抽风并不是程序员们如此喜欢 TypeScript 的原因。相反,原因归结为,以一个优秀的产品——JavaScript——为基础,接着添加更为优秀的特性——静态类型。
当然,我的意思并不是说 JavaScript 永远都是那么优秀,或者静态类型始终是最好的处理方式。但是对于构建大型的 Microsoft 风格的应用程序来说,这看起来似乎非常适用。
话虽这么说,TypeScript 的流行程度仍然远不如 JavaScript。这可能归因于年龄的差距:TypeScript 才八岁。而 JavaScript 的年龄是它的三倍!而Python 已有 30 年的历史,在自己的领域内已经比较老了。
尽管 TypeScript 还很年轻,但在某些领域,TypeScript 已经成为不可避免的趋势。这增加了它的流行度。比如,当 Google 宣布 Angular.js 将于 2016 年与 TypeScript 一起运行时,StackOverflow 上 TypeScript 的标签数量激增。
图片来自 StackOverflow Trends
TypeScript 的流行程度仍然远不如 JavaScript。尽管如此,在某些领域,TypeScript 依然是不可避免的趋势。
在某些方面 TypeScript 可能比 Python 更具优势
过去 JavaScript 流行起来的原因在于它可以在任何地方运行。你可以在服务器、浏览器上或者任何你喜欢的地方运行 JavaScript。只需编译一次,你就可以在任何地方使用。当 JavaScript 刚刚问世时,它几乎就像是魔法。
由于 TypeScript 是基于 JavaScript 构建的,所以 TypeScript 也同样具有这种魔力。Python 也一样!当然,由于它使用解释器而不是虚拟机,因此它的具体实现略有不同。但这并没有改变这样一个事实:TypeScript 和 Python 都能够在各个地方运行,在这方面它们是可以比肩的。
泛型和静态类型等特性使 TypeScript 比 Python 更适合函数式编程。这可能是一个潜在的优势,因为由于数据科学,并行编程,异步编程等领域的发展,对函数式编程的需求正在增长。
而另一方面,Python 也在添加越来越多的函数式编程特性(相关文章链接:https://docs.python.org/3/howto/functional.html)。在数据科学,机器学习等方面,Python 处于前沿领域。
然后剩下的就是并行编程和异步编程两方面。即使这两种语言都可以被你用来完成这两项工作,其中也有很大的不同。在 Python 中,你需要为特定任务使用特定的库。在 TypeScript 中,所有库都异步。而且由于一般情况下后者更加偏向函数式编程,因此并行编程通常会稍微容易一些。
换句话说,如果你是从事异步流程和并行计算的 Python 开发人员,你可能会想要尝试一下 TypeScript。
图自 Unsplash,摄影师 9TH Coworking
TypeScript 比 Python 更好吗?有时候是这样的。
许多数据科学家都需要处理异步和并行编程。你可能已经在考虑使用TypeScript 而不是 Python 来编写下一个项目了。不过,TypeScript 是否更合适还取决于许多其他因素。
首先,TypeScript没有一种简单直接的方法来进行列表推导(list comprehension,在处理大型数组时,这可能非常折磨人。(相关文章链接:https://itnext.io/introducing-list-comprehension-for-typescript-6204d9b1003e)。
其次,TypeScript 中没有原生的矩阵运算。Python 有 NumPy 以及许多其他工具,能够很容易地实现各种矩阵运算。因此,如果你的项目会大量地用到线性代数,那你可能要远离 TypeScript。
第三,如果你不太熟悉 JavaScript,那么几乎肯定会遇到困惑的时刻。由于TypeScript 是在 JavaScript 基础上构建的,因此它继承了 JavaScript 的所有特性——优点、缺点,以及让人哭笑不得的 WTF(相关文章链接:https://github.com/denysdovhan/wtfjs)。然而,说实话,遇到这些现象时可能会非常好玩……
最后,你需要考虑到,编程不是一个孤独的职业。数据科学领域有一个庞大的Python 社区,能够为人们提供支持和建议。但是目前来说,TypeScript 在数据科学家中还没有那么受欢迎。因此,你可能无法在 StackOverflow 上或者其他地方找到许多有用的答案。
话虽如此,如果你要着手的小型项目不包含太多大型数组或者矩阵运算,那么可以尝试一下 TypeScript,特别是如果项目涉及并行或异步编程的话。
并不是每一项任务都对应唯一的一种编程语言。当然,对于某项任务某些语言会比其他语言更有趣或更直观。你必须爱自己的工具,这当然很重要,因为只有热爱可以支撑你在困难时期继续前进。因此,从一门深受人们喜欢的语言(如TypeScript 或 Python)开始学习并不是一个坏主意。
但最终的时候,你不应该像对待宗教一样,坚持只用一种语言。编程语言只是工具。哪种工具最适合你,取决于你要完成的任务是什么。
目前,Python 对于数据科学而言非常重要。但是在这样一个快速发展的领域,你需要把目光放得更远一些。随着任务的不断变化,你使用的工具也可能会随之变化。
另一方面,TypeScript 则有一个围绕前端 Web,后端 Node 和移动开发的活跃社区。有趣的是,这些领域与数据科学的交集比人们想象的更多。特别是Node,在数据科学家中它正在受到越来越多的关注。(相关文章链接:https://medium.com/microsoftazure/integrating-the-data-science-and-app-development-cycles-9845da423adc)
当然,这并不意味着你应该同时去涉猎十几种语言。真正地深入了解一门语言是非常有价值的。但是,对其他语言和技术保持好奇心,这将帮助你长期保持领先地位。
所以,想尝试新事物的时候就去尝试吧。为什么不试试 TypeScript 呢?
原文:https://towardsdatascience.com/why-developers-love-typescript-every-bit-as-much-as-python-687d075cfb5e
本文为 CSDN 翻译,转载请注明来源出处。
☞为什么苹果 M1 芯片如此之快?
☞一行代码能做什么? 看到最后一个我终于忍不住...
☞JavaScript:对象都是这样生成的!
☞网易首支 AI 生成歌曲《醒来》正式发布;FSF :苹果 OCSP 事故在道德上不可接受;CentOS 8.3 发布|极客头条
☞买房必看!又一程序员自编“购房宝典”火爆 GitHub
挑战 TensorFlow、PyTorch,谁才是中国 AI 开源框架之星?
☞沉痛哀悼!现代无线网络之父 Norman Abramson 辞世,享年 88 岁
文章评论