Bit0r

技术的“不可能三角”

概念介绍

从我学过的各类语言,框架,甚至是使用过的各种科技产品来说,我发现技术往往有一个“不可能三角”。 这三个点分别是:易用性,高性能,功能性。

易用性指的是,使用起来简单,容易上手。例如,一个语言的语法简单,或者一个产品的操作简单,这就是易用性。 易用性是个相对的概念,对于有经验的人来说,一个东西可能很容易上手,但是对于没有经验的人来说,可能就不容易上手了。

高性能指的是,能够快速的完成某项任务。例如,一个语言能够快速的完成某项任务,或者一个产品能够快速的完成某项任务,这就是高性能。 其实,高性能的定义是比较模糊的,因为不同的任务,对于性能的要求是不一样的。

功能性,也可以称之为泛用性或通用性。指的是,能够完成更多的任务。例如,一个语言能够完成更多的任务,或者一个产品能够完成更多的任务,这就是功能性。 有时,并不是功能越多越好,因为对于某些场景,很多功能是没用的。

这三个点,往往是互相矛盾的。在某一个方面的提升,往往会导致另外两个方面的下降。 产品的设计者或者使用者,往往需要在这三个点之间做出取舍,作出一些权衡。 另外,随着技术的发展,这三个点的总和会越来越大。或者,有些团队的能力很强,能够做到三个点的总和做的很高,但是这样的团队往往是少数。 但无论如何,这个“不可能三角”是客观存在的。

tech-trian

技术的对比

以下是我对于各种语言,框架,产品的评价:

语言

语言 易用性 高性能 功能性
C 1.2 5.0 3.8
C++ 1.0 5.0 4.0
Rust 1.5 5.0 4.0
Java 3.0 3.5 3.5
Go 3.8 3.7 3.0
Python 4.5 2.0 3.5
Julia 4.0 4.0 3.5
LLM 5.0 1.0 5.0

办公软件

软件 易用性 高性能 功能性
Office 4.0 3.0 4.0
WPS 4.5 3.0 3.5
TeX 1.0 4.0 5.0
Markdown 5.0 5.0 1.0
Typst 3.0 4.5 3.5

操作系统

因为操作系统使用“功能性”这个词容易产生歧义,容易让人与“功能”混淆,而操作系统的“功能”通常指的是“易用性”。但这里评价的是“通用性”。

譬如说,Windows系统的功能非常强大,也就是十分易用,但是它只能在PC上使用,所以它的通用性就不是很好。 而Linux系统的通用性就很好,因为它可以在各种平台上使用,但是它的易用性最差,也就是“功能”最少。

再比如,Android系统的通用性很好,能用在各种设备上,包括手机,电视,甚至是汽车。但是它的性能就不是很好,因为它运行在虚拟机之上。 而iOS系统的性能很好,但是它的通用性就不是很好,因为它只能在苹果的移动设备上使用。

系统 易用性 高性能 通用性
Windows 4.0 3.0 3.0
Linux 1.0 4.5 4.5
MacOS 3.0 4.0 3.0
Android 4.0 2.5 4.5
iOS 5.0 3.0 3.0