
过去很长一段时间内,大多数软件开发依赖的都是静态类型和编译型语言,如 C、C++ 以及 Java。当动态语言开始崭露头角时,最初它们常常被贬低为“玩具”语言,而 JavaScript 就是其中之一。然而,随着时间的推移,解释型动态编程语言的优势开始得到认同。
现今,尤其在网络应用程序领域,使用动态语言的频率几乎与使用静态语言相当。JavaScript 和 Python 常年稳居常年最受欢迎语言前五之列,同时其他如 PHP 和 Ruby 等语言也始终占据一席之地。
动态编程语言带来了多项优势:
1.它们是解释型的而非编译型的,无需在代码执行时额外的编译步骤和等待时间。
2.代码一般更为简洁,因为不需要花费大量时间在定义和转换类型上。
3.它们允许创建 领域特定语言 (DSLs),可以更自然地定义应用程序路由或配置。
4.通常可以在运行时动态修改或“猴子补丁”(即“动态打补丁”),方便地为第三方库的对象添加新功能。
5.可以容易地实现混合类型的集合,如数组和字典,这在静态类型语言中通常难以实现。
6.类型转换通常更为简便——无需为不同的输入参数类型写多份函数,可以设计一个函数,接受任何类型的参数并进行必要的类型转换。
7.元编程允许你轻松调整第三方代码,避免了漫长的分支、拉取请求和合并流程,这个过程可能会耗费数月甚至数年,取决于项目的规模。
你们中的细心人可能已经发现,这个列表中的每一项都既可以被视为优点,也可以作为缺点。让我们一一分析:
1.解释器无法像编译器那样全面地捕获问题。
2.不够精确的类型定义可能引发更多错误。
3.DSL(领域特定语言)可能引入混乱,增加你在理解应用和语言方面的心智负担。
4.如果任何人都能修改一个类型,他们可能会滥用本应只在内部使用的代码。
5.混合类型的集合的使用通常既不正确又混乱。
6.一个函数应用于多个类型可能导致混乱。
7.对第三方类进行动态打补丁可能导致代码过时和升级难。
随着动态语言越来越受欢迎,业界对如何解决这些问题进行了热议。我对动态语言的感知也在不断变化,最初对它们所带来的自由感到激动,但后来开始意识到其中潜在的问题。

END
下期精彩继续
等你来哦!
👇👇👇



