社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  Python

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

51CTO官微 • 3 年前 • 393 次点击  

作者 | 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。如果你没有尝试过,谁知道你接下来会在哪里着陆呢?该领域发展的很快。如果你能看得更远,你就有了竞争优势。


01

TypeScript是如何流行起来的


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


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


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


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


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


 (堆栈溢出趋势)


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


02

TypeScript可能比Python

更有优势的地方


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


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


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


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


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


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


03

是什么让TypeScript

对数据科学如此重要——或者不是


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


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


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


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


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


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


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


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


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


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


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


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


原文链接:

https://thenextweb.com/news/python-developer-dont-underestimate-typescript-syndication



译者介绍


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



扫描上方二维码

关注51CTO官微

帮助一亿数字化人才终身成长

点击“阅读原文”了解更多

Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/131963
 
393 次点击