余晖落尽暮晚霞,黄昏迟暮远山寻
本站
当前位置:网站首页 > 编程知识 > 正文

为什么程序员如此热爱 TypeScript?(程序员为什么这么忙)

xiyangw 2022-12-04 09:52 18 浏览 0 评论

本文最初发表于 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,但类型安全

大约十年前,Microsoft 的软件工程师注意到,JavaScript 已经不能满足他们所有的需求了。一方面,该语言发展迅速,并增加了非常有趣的新特性。另一方面,管道中的任何功能都不能解决一个根本性的问题:JavaScript 对于小型程序来说非常棒,但用它来编写整个应用程序却一团糟。

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

与 Python 类似,JavaScript 是在运行时编译的,这意味着你需要运行代码来调试它。另一方面,TypeScript 是编译的。这提供了额外的安全层,因为程序员在执行时间之前就可以获得关于可能存在的 Bug 信息。对于 Python 或 JavaScript 这样的非编译语言,一旦意识到代码的行为与预期不符,定位 Bug 可能会非常耗时。

然而,JavaScript 和 TypeScript 之间的关键区别在于类型检查器。在编译时,每个 TypeScript 程序都会检查数据类型是否彼此一致。

手动做这些事可能听起来微不足道。但是,当你在项目中使用数千行代码时,你就会感谢上帝赐予你这一切。

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

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

TypeScript 是 JavaScript 的超集

TypeScript 是如何流行起来的

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

但是,这些语法上的小问题,并不是程序员如此热爱 TypeScript 的原因。更确切地说,这可以归结为这样一个想法:你需要一个很棒的产品(JavaScript),并添加更棒的东西(静态类型)。

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

话虽如此,TypeScript 仍然只拥有 JavaScript 的一小部分人气。这可以归结为发行时间的原因:TypeScript 发行有八年了,而 JavaScript 的发行时间是它的三倍!Python 在这一领域中,也是一款有着三十年发行历史的老古董。

尽管它很年轻,但在某些领域中,TypeScript 是不可避免的。这就增加了它的受欢迎程度。例如,当 Google 在 2016 年宣布 Angular.js 将与 TypeScript 一起使用时,TypeScript 在 StackOverflow 上的标签数量呈爆炸式激增。

与 Python 和 JavaScript 的吸引力相比,TypeScript 只占一小部分。不过,在某些领域,TypeScript 是不可避免的。

TypeScript 在什么地方比 Python 更有优势

JavaScript 之所以在当时很受欢迎,是因为它可以在任何地方运行。你可以在服务器、浏览器或你喜欢的任何地方来运行它。你只需编译一次,它就可以在任何地方工作。当它第一次出现时,简直就像是魔法一样。

由于它是基于 JavaScript 构建的,所以 TypeScript 也继承了这种魔法。Python 也是如此!当然,Python 的实现方式略有不同,因为它使用的是解释器而不是虚拟机。但这并不能改变这样一个事实:就一次编写到处运行这方面,TypeScript 和 Python 是可以相提并论的。

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

另一方面,Python 也在添加越来越多的函数式编程特性。当涉及到数据科学、机器学习等方面,Python 处于前沿地位。

这就剩下并行编程和异步编程了。尽管这两种编程语言都可以完成这两种工作,但是有一个很大的不同:在 Python 中,你需要使用特定的库来完成任务。而在 TypeScript 中,所有的库都是与内核异步的。由于后者在默认情况下功能更多,因此进行并行编程更容易一些。

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

TypeScript 适合数据科学吗?

许多数据科学家都在处理异步和并行进程。你可能已经在考虑使用 TypeScript 而不是 Python 来编写下一个项目。不过,这究竟是不是一个好主意,还要取决于许多其他因素。

首先,TypeScript 并没有一种简单明了的方式进行列表推导。例如,当处理大型数据时,这可能会令人感到沮丧。

其次,TypeScript 中并没有原生矩阵运算。Python 中有 NumPy,以及许多其他工具,这些工具使 Python 变得更容易。因此,如果你的项目有大量的线性代数,你可能不会想用 TypeScript。

再次,如果你对 JavaScript 不是很熟悉的话,你几乎肯定会有一些困惑。因为 TypeScript 就是基于 JavaScript 构建的,前者继承了后者的所有特性——所有好的、坏的和令人抓狂的特性。不过,说实话,遇到这些现象也会很有趣……

最后,你还需要考虑到编程并不是一种单独的职业。在数据科学领域中,有一个庞大的 Python 社区,它能为你提供支持和建议。但在目前,TypeScript 在数据科学家中并没有那么流行。因此,你可能无法在 StackOverflow 和其他地方找到对你的问题有帮助的答案。

也就是说,如果你要开始一个没有太多大数据和矩阵运算的小项目,那么无论如何你都可以尝试一下 TypeScript。特别是当它涉及到并行或异步编程时。

底线:清楚在何处使用你的工具

并不是每项任务都有一种语言。当然,有些语言比其他语言更为有趣,或更为直观。当然,热爱你的工具是很重要的,因为这会让你在困难的时候继续前进。因此,从一种很受欢迎的编程语言(如 TypeScript 或 Python)开始,并不是一个坏主意。

但归根结底,你不应该像信奉宗教信仰一样只信奉一种编程语言。编程语言只不过是一种工具。至于哪种工具最适合你,主要取决于你想用它做什么。

目前,对数据科学领域来说,Python 是巨大的存在。但是,在一个快速发展的领域,你需要把眼光放远一些。随着任务的改变,你的工具也会随之改变。

另一方面,TypeScript 有一个围绕前端 Web、后端节点和移动开发的活跃社区。有趣的是,这些领域与数据科学的交叉比人们想象的要高。特别是,Node 在数据科学家中越来越受到关注。

当然,这并不意味着你应该一次涉足十几种编程语言。真正精通一门编程语言有着巨大的价值。但从长远来看,对其他语言和技术的好奇心将有助于你保持领先地位。

所以,当你想尝试新事物的时候,不要犹豫!那为什么还不去尝试 TypeScript 呢?

作者介绍:

Rhea Moutafis,正在攻读暗物质物理学博士学位。热爱艺术、音乐及美好事物。

原文链接:

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

延伸阅读:

TypeScript之父:JS不是竞争对手,曾在惧怕开源的微软文化中艰难求生-InfoQ

Deno内部代码将停用TypeScript,并公布五项具体理由-InfoQ

关注我并转发此篇文章,私信我“领取资料”,即可免费获得InfoQ价值4999元迷你书,点击文末「了解更多」,即可移步InfoQ官网,获取最新资讯~

相关推荐

20条javaScript 示例代码让你的代码更简洁(javascript代码大全)

1.通过条件判断给变量赋值布尔值的正确姿势//badif(a==='a'){b=true}else{b=false}//good...

20条JavaScript代码简洁的写法(javascript九九乘法表代码)

1、通过条件判断给变量赋值布尔值的正确姿势//badif(a==='a'){b=true}else{b=false}...

7个杀手级的JS一行代码(js简单50行代码小游戏)

数组乱序在使用需要某种程度的随机化的算法时,你会经常发现洗牌数组是一个相当必要的技能。下面的片段以O(nlogn)的复杂度对一个数组进行就地洗牌。constshuffleArray=(arr...

16个工程必备的JavaScript代码片段(建筑工程法定建设程序必备文件)

1.下载一个excel文档同时适用于word,ppt等浏览器不会默认执行预览的文档,也可以用于下载后端接口返回的流数据,见3//下载一个链接functiondownload(link,nam...

20个杀手级 JavaScript 单行代码(javascript单行注释以什么开始)

获取浏览器Cookie的值通过document.cookie来查找cookie值constcookie=name=>`;${document.cookie}`.split(`;...

127个常用的JS代码片段,每段代码花30秒就能看懂(一)
127个常用的JS代码片段,每段代码花30秒就能看懂(一)

JavaScript是目前最流行的编程语言之一,正如大多数人所说:“如果你想学一门编程语言,请学JavaScript。”FreeCodeCamp的创始人Qu...

2023-03-21 20:02 xiyangw

史上最全最实用的一行Javascript代码Array大全,建议收藏

日常开发中,数组对于我们来说是经常使用到的,由此这里给大家分享49个关于Array实用的一行Javascript与typescript代码大全,内容很多,建议收藏阅读!将值转换为数组JavaScrip...

11个杀手级JavaScript单行代码(pos机收单行代码查询)
11个杀手级JavaScript单行代码(pos机收单行代码查询)

每个JS开发人员都应该使用javascriptoneliner来提高生产力和技能,所以今天我们讨论一些可以在日常开发生活中使用的oneliner...

2023-03-21 20:02 xiyangw

30秒就能学会一个的JavaScript代码片段大合集
30秒就能学会一个的JavaScript代码片段大合集

今天TJ君来和大家分享一个满足所有开发需求的简短JavaScript代码片段大合集这些合集每一个都短小精湛,但是每一个都非常实用,小伙伴们可以直接登录作者的网站...

2023-03-21 20:02 xiyangw

15 个 JavaScript 代码示例及其 Dart 对应代码

做为开发过React/ReactNative的工程师,在刚开始接触Flutter开发的时候,一定会遇到这种情况,对于某个功能你能很熟练使用特定Javascript语法去完成,但是对于Flutt...

抢先下载!阿里巴巴Java开发手册2.0版,千锤百炼始出炉
抢先下载!阿里巴巴Java开发手册2.0版,千锤百炼始出炉

1.2.0版本升级亮点一、排版布局1)由37页修正成33页,去除封面、前言、目录,并调整前言到目录之前。2)一级标题统一换页,二级标题统一不换页,并在之前空一行...

2023-03-21 20:01 xiyangw

重磅首发!免费下载!《Java 开发手册》泰山版王者归来!
重磅首发!免费下载!《Java 开发手册》泰山版王者归来!

潜力修炼一年之久的《Java开发手册(泰山版)》今天发布!此次共计新增34条规约,修改描述90处,其中错误码规则更是第一次提出完整的解决方案,大家参考...

2023-03-21 20:00 xiyangw

Java批量下载图片并压缩为Zip,大家觉得这样写可以吗?

问题:在开发项目中,遇到前端传递多个图片URL到后端,实现图片的批量下载并压缩为Zip。业务代码:Controller@PostMapping("/batchDownload")pu...

Java环境快速搭建(javaee环境搭建)

导读:本文章针对新人的基础知识,互联网大数据时代,Java程序是必备技能。而搭建Java环境是必知技能。就好比要建房子必须要有砖一样。1、说明本文章下载的版本为:1.8.131官网地址:https:/...

javaweb 解决浏览器下载中文文件乱码(java 文件下载 乱码)

使用java搭建下载文件资源web页面时,如果文件名为中文,会面临下载时乱码的情况,这是由于每个浏览器解析的编码方式不同造成的,以下工具类可以解决该问题:packageutils;import...

取消回复欢迎 发表评论: