Python开发人员,请不要低估TypeScript!

译文 精选
开发
TypeScript可能不适合数据科学。但不要着急。尽管它可能并不适用于数据科学的每个部分,但在某些领域它比Python具有明显的优势。

  作者 | Ari Joury

  译者 | 康少京

  审校 | Noe

  Python是我的生计,我喜欢它。尽管我对这门语言有一些意见,但我强烈建议从事数据科学的新手去尝试使用Python语言。不管怎样,在该领域具有丰富经验的人往往是 Python传道者。

  但是,这并不是意味着不能挑战您所在领域的限制,例如通过探索不同的编程范式或新语言。

  大约在十年前,微软的软件工程师注意到JavaScript已经不能满足他们的所有需求。一方面,这门语言发展迅速,增加了非常有趣的新功能,管道中的所有功能都无法解决一个基本问题,JavaScrip对于小程序来说很好,但用它编写整个应用程序却一团糟。

  解决这一问题有几种可能性:例如,使用不同的语言,或者用更好的语法重新设计JavaScript。微软的开发团队采用了不同的方法:他们通过扩展JavaScript创建了TypeScript。通过这种方式,他们能够使用JavaScript的所有新功能,同时摆脱对大型项目不利的东西。

  与 Python类似,JavaScript是在运行时编译的,这意味着您需要运行代码来调试它。另一方面,TypeScript 是经过编译的。这提供了额外的安全层,因为程序员在执行之前就有可能得到有关错误的信息。对于像Python或JavaScript 这样的非编译语言,一旦意识到代码没有按预期运行,在查找bug时可能会非常耗时。

  然而,JavaScript和TypeScript之间的主要区别在于类型检查器。编译后,每个TypeScript程序都会检查数据类型是否相互一致。

  这可能听起来很简单,但是当你做一个有数千行代码的项目时,你会特别惊讶,感谢上帝拥有它。

  还有一些其他差异,例如TypeScript具有匿名函数和异步函数这一事实。匿名函数是函数式编程的一个关键特性,它可以使程序在大数据的负载下更高效。

  当您需要并行执行多个操作,或者处理不应中断后台进程I/O 操作时,异步编程非常有用。在Python和Javascript中可以进行异步编程,但在TypeScript中它是从核心内置的。

TypeScript是javaScript的超集

  Python的竞争对手名单很长:Rust、Go、Scala、Haskell、Julia、Swift、C++、Java和R都在上面找到了一个条目。可以理解的是,JavaScript和TypeScript 在如此拥挤的领域得不到那么多认可

  这并不意味着TypeScript不是通用编程世界中的主流。然而,在数据科学家中,它从来就不是特别受欢迎。

  由此可以得出结论,TypeScript可能不适合数据科学。但不要着急。尽管它可能并不适用于数据科学的每个部分,但在某些领域它比Python具有明显的优势。

  如果你碰巧在其中一个领域工作,就得尝试一下TypeScript。如果你没有尝试过,谁知道你接下来会在哪里着陆呢?该领域发展的很快。如果你能看得更远,你就有了竞争优势。

 TypeScript是如何流行起来的

  如果你讨厌JavaScript中不断发生的不合逻辑但又很滑稽的WTF时刻,那么我要告诉你一个坏消息:你也会在TypeScript中看到所有这些东西。

  但这些语法问题并不是程序员喜欢TypeScript的愿因。相反,它归结为这样一种想法:使用一个很棒的产品——JavaScript——并添加一些更强大的东西——静态类型。

  当然,我并不是说JavaScript总是很棒,或者静态类型总是最好的做事方式。但是对于构建大型的微软风格的应用程序来说,这似乎非常有效。

  也就是说,TypeScript的流行程度只是 JavaScript 的一小部分。这可以归因于年龄:TypeScript是8岁了。但JavaScript的历史是TypeScript的三倍!Python也是该领域的老前辈,已有三十年历史。

  尽管TypeScript成立的时间不长,但在一些领域是不可避免的。同时也增加了它的受欢迎程度。例如,当Google在2016年宣布 Angular.js 将与TypeScript一起运行时,StackOverflow上的标签数量呈爆炸式增长。

堆栈溢出趋势

  TypeScript只分享了Python和JavaScript所具有的一小部分吸引力。不过,在某些领域这是不可避免的

 TypeScript可能比Python更有优势的地方

  当年JavaScript之所以流行,是因为它无处不在。您可以在服务器、浏览器或任何您喜欢的地方运行它。只要编译一次,它就可以在任何地方运行。当它首次出现的时候,简直跟变魔术一样。

  由于它是基于JavaScript构建的,因此TypeScript也具有这种魔力。Python也可以!当然,它的实现略有不同,因为它使用解释器而不是虚拟机。但这并没有改变这样一个事实,即在run-me-anywhere方面,TypeScript 和Python不相上下。

  泛型和静态类型等特性使用TypeScript进行函数编程比用Python更容易。这可能是一个优势,因为由于数据科学、并行编程、异步编程等方面的发展,对函数代码的需求正在增长。

  另一方面,Python也增加了越来越多的函数式编程功能。在数据科学、机器学习等领域,Python处于最前沿。

  这使得并行编程和异步编程成为可能。尽管这两种语言都可以实现,但有一个很大的区别:在Python中,需要使用特定的库来完成任务。在TypeScript中,所有库从核心开始都是异步的。由于后者在默认情况下更具功能性,所以进行并行编程通常更容易一些。

  换句话说,如果你是一名涉及异步进程和并行计算的Python开发人员,你可能想尝试一下TypeScript。

 是什么让TypeScript对数据科学如此重要——或者不是

  许多数据科学家处理异步和并行编程。可能首先考虑得是TypeScript而不是Python编写,不过,这是否是个好点子取决于很多因素。

  首先,TypeScript不会用直接的方式进行列表推导,例如,在处理大型数组时,这可能会令人苦恼。

  其次,TypeScript 中没有原生矩阵运算Python具有NumPy以及许多其他工具,用起来会很简单。因此,如果项目涉及大量的线性代数,这个时候可能你会不想采用TypeScript。

  第三,如果你对JavaScript不太熟悉,肯定会有感到困惑的时候。由于 TypeScript是基JavaScript构建的,它继承了它的所有特性——好的、坏的和WTF。不过,老实说,遇到这些现象也很有趣……

  最后,要考虑到编程不是个独立的职业,在数据科学领域中,有个庞大的Python社区可以提供支持和建议,但目前TypeScript在数据科学家中还不是很流行。所以你可能找不到那么多关于StackOverflow和其他问题的有用答案。

  话虽如此,如果开发一个没有太多大数据和矩阵运算的项目,你可能还是想试试TypeScript,尤其是当它涉及到一些并行或异步编程时。

  没有一种语言适用于所有的项目要求。当然,有些语言比其他语言更有趣或更直观。当然,你喜欢的工具也是非常重要,因为这会让你在困难时期继续前进。因此,从TypeScript或Python等深受欢迎的语言开始学习是个不错的主意。

  但归根结底,你不应该像宗教一样坚持一种语言。编程语言是工具。哪种工具最适合您取决于您尝试使用它做什么。取决于它做什么。

  目前,Python对于数据科学来说非常重要。但在一个快速发展的领域,你需要能够看得更远。随着任务的变化,工具也会发生变化。

  另一方面,TypeScript有一个关于前端 Web、后端Node和移动开发的热门社区。有趣的是,这些领域与数据科学的交集比人们想象的要多。尤其是 Node,它在数据科学家中获得了越来越多的关注。

  当然,这并不意味着您应该一次涉足十几种语言。精通一门语言是很有价值的。但对其他语言和技术保持好奇将帮助你长期保持领先地位。

  所以,当你想尝试新事物的时候。请不要犹豫,为什么不用TypeScript?

  原文标题:Hey Python devs, don’t underestimate TypeScript​​

  译者介绍

  康少京,51CTO社区编辑,目前从事通讯类行业,底层驱动开发岗位,研究过数据结构,Python,现对操作系统和数据库等相关领域感兴趣。

责任编辑:张洁 来源: 51CTO技术栈
相关推荐

2022-03-03 23:30:27

TypeScrip开发前端

2020-10-29 12:53:28

JavaScriptTypeScript开发

2010-02-24 13:45:40

Python开发人员

2009-12-11 14:50:14

Visual Basi

2009-11-23 20:07:51

ibmdw开发

2021-02-19 09:33:01

kubernetesJAVA服务

2010-02-02 16:07:17

Python开发人员

2012-05-30 15:15:42

ibmdw

2023-03-15 07:12:53

企业开发人员提供商

2019-09-27 10:04:57

集成开发环境人生第一份工作电脑

2012-02-15 09:17:02

Python编程

2010-08-09 16:09:25

2019-11-27 18:54:07

物联网数字孪生机器学习

2021-02-05 16:55:09

前端样式规则开发架构

2018-07-09 14:05:16

编程语言PythonPipenv

2009-05-31 08:31:07

GoogleWaveTechCrunch

2011-09-05 14:21:29

webOS

2013-04-15 10:00:09

程序员

2023-08-14 15:23:37

2022-12-19 07:33:49

开发人员谷歌制度
点赞
收藏

51CTO技术栈公众号