共计 2751 个字符,预计需要花费 7 分钟才能阅读完成。
大家好,我是你们懂点技术的 cho 老师。
如果你感觉刚刚过来的 7 天很短暂的话,那么祝贺你。
接下来的 7 天,肯定会让你感觉很漫长。
明天咱们来聊聊一个经典话题——
最好的编程语言是什么?
编程语言的划分
据百度百科显示,有靠近 2500 种 编程语言,连汉字都能够成为编程语言
(易语言到底哪个蠢才想进去的)。
即使是有这么多语言,其实也能够简略划分成两类。
一种是我在学 or 在用的,另一种是垃圾。
好吧,不开玩笑。
其实,咱们能够根据变量类型的解决形式,将泛滥编程语言辨别成两类——动态类型语言和动静类型语言。
从名字上来看,动态类型语言是在编译时就曾经确定变量的类型。
因而编译时就能够进行较为齐备的类型查看,缩小运行时的谬误。
而动静类型语言的变量类型则要到程序运行时,变量被赋予某个值之后,才会具备某种类型。
应用变量前不须要申明其类型。
这两种形式,差异很大。
JS VS TS
以前端畛域最驰名的 TS 和 JS 为例。
JavaScript 就是一门十分典型的动静类型语言,也是各位前端切图仔最最最最相熟的语言(之一)。
JS 的长处很显著——比方简略、平安、具备动态性、跨平台性,JS 的开发者社区也很成熟和欠缺。
倒退到当初,JavaScript 简直无所不能,其利用场景从早的网站前端开发,到当初服务端开发、命令行工具开发、桌面利用、挪动开发、插件开发等等。
然而 JavaScript 作为一种动静类型语言,仍然存在先天缺点。
比方,无奈合并类型,在编译时短少谬误查看,如果在企业和大型代码库中作为服务器端代码的语言,可能会导致出错。
在大型项目开发中,JS 代码会更显芜杂,且调试艰难。
为了解决这些缺点,微软又开发了 TypeScript 语言,专用于为大型项目开发而生。
TS 诞生之时,前端逻辑还绝对比较简单,因而局部开发者并不感觉 TS 实用,纷纷吐槽不实用。
时过境迁,随着最近几年前端我的项目越来越简单,各类开发者也终于转投微软怀抱,在我的项目中纷纷引入 TS,并直呼“真香”。
TS 好在哪里?
咱们能够把 TypeScript 简略了解为 JavaScript 的超集,能够编译为纯 JavaScript。
它蕴含了 JavaScript 的所有元素,能够载入 JavaScript 代码运行,并扩大了 JavaScript 的语法,减少了动态类型、类、模块、接口和泛型等概念。
从技术来讲,TS 就是具备动态类型的 JS,意思是编译后的 TS 能够在任何能够应用 JS 的中央应用。
TS 类型的定义和编译器的引入,使得 TS 能够防止 JS 无奈合并类型的缺点,以及在编译时进行类型查看。
因而,TS 能够帮忙开发者构建更加强壮和平安的代码。
有项钻研表明,TypeScript 能够检测到所有 JavaScript 谬误的 15%。
在不严重破坏代码的状况下,咱们能够更轻松地防止谬误并进行代码重构。
除了可能帮忙咱们构建更加安全可靠的代码之外,TS 还能帮咱们进行相似 babel 的转换。
编码过程中,咱们能够纵情地应用新语法。编译时,咱们能够抉择具体编译到哪个 JS 版本,即使不应用 TS 的类型零碎,只作为转换工具,也是十分好用的。
因而,TS 具备很显著的长处:
- 兼容 JS 所有语法规定
- 让开发者的代码更加清晰、平安
- 更容易别人了解代码与代码重构
在《2022 前端开发者现状报告》中,84% 的被调研者示意应用过 TypeScript。
可见这门语言已被越来越多的前端开发者所承受,其热度和利用也在一直超过 JS 自身。
像 VUE 3 和 Angular 等框架也都曾经引入了 TS 编码。
动态语言 VS 动静语言
TS 对 JS 的胜利,其实就是 动态语言对动静语言的胜利。
动静语言 和动态语言 的最大区别,在于可读性、可维护性的不同。
简略来说,你能够把动静语言了解成一套明码,能够通过很小的编码量解释非常复杂的货色。
(比方通过 6 位数密码保护 4 位数贷款)
我定义一个 A,这个A 指代的是 “国庆节连放 7 天”。
简洁意味着歧义,意味着更高的门槛,意味着查看难度的晋升。
所以这个 A 也有可能指代 “回来连上 7 天班”。
这种时候正文就显得十分重要。因为连程序员本人,都不记得昨天是怎么定义的这个代码。
在软盘最大容量仅为 1.4M,内存和性能堪称寸土寸金的年代,动静语言因为其语法简洁,深受大家青眼。
但进入图形化时代后,动静语言的劣势就很显著了。
程序越来越大,要表述的越来越多,动态语言这种高深莫测的代码天然更受欢迎了。
TS 是最好的编程语言吗?
下面讲了 TS 的十分多的长处,那 TS 就是最好用的编程语言了吗?
并不是。
TS 并不完满,甚至仍有开发者厌弃。
比方某库开发者认为类型让他节约了太多工夫,升高开发效率。
作为端开发者,其实我挺喜爱 TypeScript,它大大削减了手动编写自动化测试的需要,把劳动力解放出来投入到更能发明价值的中央。
但从库开发的角度来看,我又很厌恶 TypeScript。它烦人的中央很多,但归根结底,TypeScript 的原罪就是升高库开发者的工作效率。
从实质上讲,TypeScript 就是把复杂性从端开发者那转移给了库开发者,最终显著减少了库开发流程侧的工作累赘。
这个开发者说的其实也有肯定的情理,其实 TS 也不是万能的。
TS 的短板有——
1. 须要编译,且编译速度比较慢
浏览器和 Nodejs 并不反对 TypeScript,所以多了一步编译操作。对于一般我的项目来说通常不长,其实还好。
2. 不适用于小型我的项目
对于小型的我的项目,灵便的 JS 就够了,应用 TS 反而有可能减少太多的开发成本,因为在开发时有很多的类型申明。
3. 有肯定学习老本
TS 引入了太多新的概念,如类型泛型等,对于开发者来说还是有着不小的学习老本。
但因为兼容 JS,所以语法上和 JavaScript 的语法并没有显著的区别,这就意味着你无需学习很多常识就能够开始无缝编写 TypeScript 代码。
但综合思考,TS 仍旧是前端畛域的最优解之一。
没有万能的银弹
其实不仅是前端,任何方向都有着上述问题。
编程畛域素来没有万能的银弹。
每种编程语言都有着本身的个性,也有其独特的短板。只有在特定的场景利用下,能力施展最大劣势。
比方,Python是一门非常容易入门和上手的语言,被宽泛用于数据畛域。
然而也被人吐槽慢、执行速度不够快、各版本不兼容等。
Java尽管是后端开发最最罕用的语言,是研发畛域最重要的工具,但同样有局部毛病。
老铁们常说 PHP 是世界上最吼的语言。
但说实话,从一线城市的岗位需要来看,PHP 的需要的确不如 Java 大,这也在侧面阐明了 PHP 自身的确有一些缺点和问题。
当然,这并不影响咱们持续信奉,来,跟我一起念出那十二个字——
!
每一种编程语言的诞生,都是因为某种需要而呈现,归根结底,语言只是咱们实现想法的工具。
工具自身并没有对错,每一种技术都应该放在特定的利用场景上来探讨。
抵赖劣势,正视短板,并不可耻。
祝大家打工高兴!
本文由 mdnice 多平台公布