Home Resources

副作用

Table of Contents

副作用

副作用对应英文是 Side Effect

  • Side: 它的反义词 center, primary; 不难理解,side 表示次要的、附带的
  • Effect: 直译的话就是效果、影响、作用

因此 side effect 也能翻译成次要效果、附带影响;其反义可以说是主要效果、主要作用(primary effect),本文后续不妨叫它主作用。

主作用与副作用是一对相对的概念,当目标是给定的某个目标效果,实现该效果的方法造成了一些其它效果;这个目标效果是主作用,其它效果就是副作用。

对于希望治疗咳嗽的人,服用止咳药的主作用是治疗咳嗽,副作用是成瘾;对于成瘾者,服用止咳药的主作用是解瘾,如果他在咳嗽的话,治疗咳嗽变成了服用止咳药这一方式的副作用。

编码中函数的副作用

编码中,我们常用函数进行问题建模。函数,可以认为就是输入到输出的映射;对于特定问题,给定输入,解决该问题的函数可以返回我们需要的结果。一般我们约定函数的结果为主作用,而函数执行过程中产生的效果称为副作用。

(defn square [x] (* x x))

这个平方函数,表示 x 到 x2 的映射。当我们执行 (square 3) 时,主作用是它的结果 9,副作用是占用了几个 CPU 周期。

(doseq [_ (range 1000000)] (square 42))

我们为了测试自己电脑上执行 100 万次 (square 42) 要花多长时间而执行上面代码,此时,事实的主作用是为了占用这些 CPU 周期,副作用是这个过程中计算的 100 万个 42 的平方。

不过在编码中,我们还是遵守约定,叫这 100 万个平方结果为主作用,只是说这次执行的目的是为了其副作用。

输入输出 (I/O)

能给计算机发送信号、数据的设备称为输入设备,可以读取计算机发送的信号、数据的设备称为输出设备。

使用编辑器编辑内容时,我敲击键盘发送一个一个电信号,这些电信号流经沿途硬件,被运行在其上的软件解释,最终形成另外的一些电信号,流经另一些硬件,最终修改了显存上一些电位,被显示器解释显示成输入的字符;保存内容也一样,最终修改的是磁盘或 SSD 上某个存储介质的物理状态。

Author: lotuc, Published at: 2023-06-13 Tue 00:00, Modified At: 2023-06-13 Tue 21:43 (orgmode - Publishing)