从我学过的各类语言,框架,甚至是使用过的各种科技产品来说,我发现技术往往有一个“不可能三角”。 这三个点分别是:易用性,高性能,功能性。
易用性指的是,使用起来简单,容易上手。例如,一个语言的语法简单,或者一个产品的操作简单,这就是易用性。 易用性是个相对的概念,对于有经验的人来说,一个东西可能很容易上手,但是对于没有经验的人来说,可能就不容易上手了。
高性能指的是,能够快速的完成某项任务。例如,一个语言能够快速的完成某项任务,或者一个产品能够快速的完成某项任务,这就是高性能。 其实,高性能的定义是比较模糊的,因为不同的任务,对于性能的要求是不一样的。
功能性,也可以称之为泛用性或通用性。指的是,能够完成更多的任务。例如,一个语言能够完成更多的任务,或者一个产品能够完成更多的任务,这就是功能性。 有时,并不是功能越多越好,因为对于某些场景,很多功能是没用的。
这三个点,往往是互相矛盾的。在某一个方面的提升,往往会导致另外两个方面的下降。 产品的设计者或者使用者,往往需要在这三个点之间做出取舍,作出一些权衡。 另外,随着技术的发展,这三个点的总和会越来越大。或者,有些团队的能力很强,能够做到三个点的总和做的很高,但是这样的团队往往是少数。 但无论如何,这个“不可能三角”是客观存在的。
以下是我对于各种语言,框架,产品的评价:
语言 | 易用性 | 高性能 | 功能性 |
---|---|---|---|
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 |