动态类型语言比静态类型语言更好?

来自devagrawal09观点:

"动态类型语言比静态类型语言更好?"
出于各种原因,这种说法曾经是正确的。现在已经不是了。

让我们来探究一下原因。

由于各种原因,像 Ruby on Rails 和 LAMP stack 这样的动态类型语言和框架大受欢迎。让我们把时间倒回几十年前,看看当时的背景。

当时的软件开发以 C++、Java 和 C# 等静态类型语言为主。

  1. 这些语言和框架有很大的学习曲线
  2. 由于类型定义的仪式感,代码非常冗长
  3. 需要昂贵的专用工具,以物理光盘形式发货
  4. 集成开发环境的运行速度非常慢,而且漏洞百出,尤其是在老式硬件上
  5. 由于编译时间较长,反馈循环很慢 
  6. 生态系统主要由公司和专有软件管理
  7. 框架主要用于桌面应用程序,网络应用程序是事后才考虑的问题

在这一点上,Ruby on Rails 和 LAMP 栈的定位非常完美,可以横扫并主导生态系统。

  1. Ruby 和 PHP 等语言的学习曲线要小得多
  2. 动态特性和语法糖分使其编程快速而有趣 3.
  3. 不需要专门的工具,打开记事本就能开始创建应用程序
  4. 没有缓慢且漏洞百出的集成开发环境,你可以在终端上直接 REPL 代码
  5. 没有编译步骤意味着更快的反馈循环,只需做出修改,点击保存,刷新浏览器即可 6.
  6. 生态系统非常开源,由社区驱动
  7. 唯一的目的是让任何人都能制作网络应用程序,而不是在现有的堆栈中添加网络功能

显然,我在这一行的时间并不长,但那些在这一行工作过的人都记得,静态类型并不是今天的样子,而是当时的样子。它是仪式、缓慢的反馈循环和专有恐龙的标志。

在过去的十年中,静态类型大有卷土重来之势,几乎所有“让人们远离静态类型、转而使用 PHP 和 Ruby” 的原因都被一一扭转。

  1. Typescript 等现代静态语言的学习曲线低得令人发指 
  2. 类型推论省去了 95% 的仪式和简洁的语法 
  3. 最强大的工具也恰好是开源的,而且文档非常完善 
  4. 硬件和优化技术的进步使集成开发环境变得异常敏捷 
  5. 编译速度快得惊人,尤其是在编译器事先知道数据类型的情况下 
  6. 就连微软这个大坏蛋也完全转向开源了
  7. Typescript 并不是唯一一种拥有主要面向网络开发的生态系统的静态语言

使 Rails 和 LAMP 大受欢迎的因素,现在也同样有利于提供完全类型安全的生态系统。

可以说,动态类型已经过时。它们已成为过去式。

是的,你可以使用动态类型语言来构建真正的大规模系统。但你将付出维护、性能和可扩展性方面的代价,并最终不得不使用能提供更好保障的基础架构来重建系统。

使用动态类型语言并不是因为它们是动态类型的,而是因为它们具有特定的技术优势(如用于构建分布式系统的 Elixir)或生态系统优势(如用于数据科学的 Python)。

从使用类型安全语言开始,您将获得更快的反馈循环、更有用的集成开发环境工具、更大的修改自由度而不会破坏东西,以及通过内部合同和文档以极低的成本实现更好的协作。