本文最初发表于Towards Data Science博客,经原作者Rhea Moutafis许可翻译并分享于InfoQ中文站。
Python 是我的面包和黄油,我喜欢它。尽管对这种语言存在一些批评,但我强烈推荐给任何想要进入数据科学的人。无论如何,有经验的人往往会成为该领域的Python布道者。
然而,这并不意味着您不应该时不时地突破您所在领域的限制,例如考虑不同的编程范例或新的编程语言。
Python 的竞争对手名单很长,Rust、Go、Scala、Haskell、Julia、Swift、C++、Java 和R 都可以在其中找到入口。在如此拥挤的领域,难怪JavaScript 和TypeScript 没有得到那么多的认可。
但这并不意味着TypeScript 不是一般编程的主流。然而,这在数据科学家社区中似乎并不特别受欢迎。
您可能会得出结论,TypeScript 可能不适合数据科学。然而,没有必要急于下结论。虽然它并不适合数据科学的所有部分,但在某些领域它比Python 具有明显的优势。
如果您在这些领域工作,那么值得给TypeScript 一个机会。不然谁知道你下一步会去哪里?这个领域发展非常迅速。着眼长远可以为您带来竞争优势。
TypeScript:是一种 JavaScript,但类型安全
大约10 年前,Microsoft 的软件工程师意识到JavaScript 不再满足他们的所有需求。另一方面,该语言正在快速发展,并且正在添加非常有趣的新功能。另一方面,管道的根本问题还没有得到解决。 JavaScript 非常适合小型程序,但编写整个应用程序可能很乏味。
有多种方法可以解决此问题。例如,您可以使用不同的编程语言或使用更好的语法重新设计JavaScript。微软的开发团队采取了不同的方法。我通过扩展JavaScript 创建了TypeScript。通过这种方式,我们能够利用JavaScript 的所有新功能,同时摆脱那些不适合大型项目的功能。
与Python 一样,JavaScript 也是在运行时编译的。这意味着您需要运行和调试代码。另一方面,TypeScript 是经过编译的。通过允许程序员在执行时间之前获取有关潜在错误的信息,这提供了额外的安全层。对于Python 和JavaScript 等非编译语言,在您意识到代码未按预期运行后,可能需要一些时间来识别错误。
然而,JavaScript 和TypeScript 之间的主要区别在于类型检查器。在编译时,所有TypeScript 程序都会检查数据类型是否彼此一致。
手动完成这些事情似乎是理所当然的。但是当您在项目中处理数千行代码时,您会感谢上帝。
还有一些其他差异。例如,TypeScript 有匿名函数和异步函数。匿名函数是函数式编程的一个重要特性,可以使您的程序在加载大数据时更加高效。
当您需要并行执行多个操作或处理不应中断后台进程的I/O 操作时,异步编程非常有用。异步编程在Python 和JavaScript 中是可能的,但在TypeScript 中它内置于核心中。
TypeScript 是JavaScript 的超集
TypeScript 是如何流行起来的
如果您讨厌JavaScript 中经常发生的不合逻辑但又搞笑又令人愤怒的时刻,我们有坏消息要告诉您。所有这些也将在TypeScript 中看到。
然而,这些小语法问题并不是程序员如此喜爱TypeScript 的原因。相反,它归结为采用好的产品(JavaScript)并添加更好的东西(静态类型)的想法。
当然,我并不是说JavaScript 总是更好或者静态类型总是最好的方式。然而,在构建大型Microsoft 风格的应用程序时,这似乎非常有效。
话虽如此,TypeScript 仍然只是JavaScript 流行的冰山一角。这与发布时间有关。 TypeScript 已有八年历史,但JavaScript 的历史是其三倍。 Python 也是这个领域的老古董,有30 年的发布历史。
尽管TypeScript 还很年轻,但也有一些领域是不可避免的。这使得它更受欢迎。例如,当Google 在2016 年宣布Angular.js 和TypeScript 时,StackOverflow 上的TypeScript 标签数量呈爆炸式增长。
TypeScript 只是Python 和JavaScript 魔力的一部分。然而,在某些领域使用TypeScript 是不可避免的。
TypeScript 在什么地方比 Python 更有优势
JavaScript当时很流行,因为它可以在任何地方运行。您可以在服务器、浏览器或您喜欢的任何地方运行它。编译一次,到处工作。当它第一次出现时,就像魔法一样。
TypeScript 是基于JavaScript 构建的,因此它也继承了这一魔力。 Python 也是如此!当然,Python 实现有点不同,因为它使用解释器而不是虚拟机。但事实是TypeScript 和Python 是等价的,因为它们可以编写一次并在任何地方运行。
泛型和静态类型等功能使TypeScript 中的函数式编程比Python 中更容易。这可能是一个优势。这是因为数据科学、并行编程、异步编程等的进步正在增加对函数式代码的需求。
另一方面,Python 继续添加函数式编程特性。当谈到数据科学、机器学习等时,Python 走在最前沿。
这给我们留下了并行编程和异步编程。两种编程语言都可以完成这两项工作,但有一个主要区别。 Python 需要使用特定的库来执行任务。在TypeScript 中,所有库都与内核异步。后者默认更通用,使并行编程更容易一些。
换句话说,如果您是一位使用异步进程和并行计算的Python 开发人员,您应该尝试TypeScript。
TypeScript 适合数据科学吗?
许多数据科学家都使用异步或并行流程。您可能已经在考虑在下一个项目中使用TypeScript 而不是Python。然而,这是否是一个好主意取决于许多其他因素。
首先,TypeScript 没有一种简单的方法来进行列表推导。这可能会令人沮丧,例如在处理大数据时。
其次,TypeScript 没有原生矩阵运算。 Python 有许多工具可以让这一切变得更容易,包括NumPy。因此,如果您的项目涉及大量线性代数,您可能不想使用TypeScript。
再说一次,如果您不太熟悉JavaScript,您几乎肯定会感到困惑。由于TypeScript 是基于JavaScript 构建的,因此前者继承了后者的所有功能:好的、坏的和讨厌的。不过说实话,遇到这样的现象还是很有趣的……
最后,您还应该考虑到编程并不是一个单独的职业。数据科学领域有一个庞大的Python 社区,可以提供支持和建议。但目前,TypeScript 在数据科学家中并不是很受欢迎。因此,您可能无法在StackOverflow 或其他地方找到您的问题的有用答案。
然而,如果你想开始一个没有大量数据或矩阵运算的小项目,你绝对应该尝试一下TypeScript。对于并行和异步编程尤其如此。
底线:清楚在何处使用你的工具
并非所有任务都有语言。当然,有些语言比其他语言更有趣或更直观。当然,热爱你的工具很重要。这将帮助您在遇到困难时继续前进。因此,从TypeScript 或Python 等流行的编程语言开始并不是一个坏主意。
但归根结底,你不应该像宗教一样坚持一种编程语言。编程语言只是工具。哪种工具最适合您主要取决于您想用它来做什么。
如今,Python 对于数据科学界非常重要。然而,在一个快速发展的领域,我们需要看得更远。随着任务的变化,工具也会发生变化。
另一方面,TypeScript 拥有一个活跃的前端Web、后端节点和移动开发社区。有趣的是,这些领域与数据科学的交叉程度比您想象的要多。尤其是,Node 正在获得数据科学家的青睐。
当然,这并不意味着你应该同时涉足十几种编程语言。真正精通一门编程语言具有巨大的价值。但从长远来看,你对其他语言和技术的好奇心将帮助你保持领先地位。
因此,如果您想尝试新事物,请不要犹豫。那么为什么不尝试一下TypeScript 呢?
作者介绍:
Lea Moutafis,攻读暗物质物理学博士学位。我喜欢艺术、音乐和美丽的事物。
原文链接:
https://towardsdatascience.com/why-developers-love-typescript-every-bit-as-much-as-python-687d075cfb5e
参考:
TypeScript 之父:JS 在害怕开源而不是竞争对手的微软文化中艰难生存- InfoQ
Deno 内部代码禁用TypeScript,揭示了5 个具体原因- InfoQ
关注我,转发这篇文章,私信我“获悉”即可免费获得价值4999元的InfoQ迷你书。点击文末“了解更多”即可访问InfoQ官方网站。获取最新资讯~
版权声明:本文由今日头条转载,如有侵犯您的版权,请联系本站编辑删除。