数据
进入计算之前,世界被记录下来的事实:数字、文字、记号或测量,供机器按约定处理。
它是什么
数据 是已经落成记录的事实:一次温度读数、一个姓名、一列人口统计、一段程序读入的字符串。在进入计算机之前,它们可以写在纸上、打在卡片上、录在传感器里;进入计算机之后,它们以可寻址的形式存在,等待被命名、分类与运算。
数据本身不替你下判断。它只回答「记下了什么」。怎样解释、怎样运算、怎样在错误时停下来,属于 程序 与人的责任。
名字从哪来
英文 data 是拉丁语 datum(「给出的东西」)的复数。科学里用它指观测与测量给出的材料,而不是结论本身。中文「数据」沿用同一分工:先有可核对的记录,再谈统计、建模与决策。
计算机史把「给出的东西」推到了机器可执行的边界。打孔卡片上的一列孔、磁带上的磁化状态、内存里的比特,都是同一件事的不同载体:约定某种物理状态表示某个符号或数值,计算才成为可能。见 Python 所在的现代环境,载体变了,约定仍在。
它怎么工作
数据要先被表示,才能被处理。表示需要两层约定:一是「这一格代表什么」(例如年龄、温度),二是「它属于哪一种」——这由 数据类型 标明。同一串字形 "3" 与整数 3 看起来像,参与运算的规则却不同。
在程序里,数据通常通过 变量 被提起:名字指向当前的值。也可以来自 输入、文件或传感器。没有被命名、也没有被传入运算的记录,对这次运行等于不存在。
对话式编程时,先说清「哪些是数据、哪些是规则」,模型才不容易把标签加进求和、把编号当成温度。见 对话式编程。
生活里在哪里
成绩单上的分数、气象站的逐时气温、问卷上勾选的选项、商场收银的条码扫描,都是数据。它们可以汇总、比较、归档,但「平均分说明什么」「该不该据此调整教学」仍须人来判断。数据越多,并不自动等于理解越深;尺度变大时,人往往更需要程序来完成重复的核对与分类。
和相近概念的差别
数据是记录。信息常指「对某人而言减少了不确定性的那部分」——同一份温度表,对值班员与对气候学家意义不同。变量 是指向数据的名字;数据类型 说明这份数据按什么规则参与运算。对象 则是程序运行时那份值的载体。
算法与程序处理数据;它们不是数据本身。把「有很多数据」误当成「已经有了正确模型」,会在边界与例外处失手。
常见误会
误会 1:数据等于真相。
记录可以错、可以偏、可以过时。能进入计算,只说明它已被表示,不说明它已被核实。
误会 2:看起来像数字,就可以直接拿来算。
字形是给人看的。参与算术之前,值必须属于相应的类型;否则得到的是拼接或其他合法却答非所问的结果。
误会 3:数据越多,程序就越正确。
数量放大的是规模,不是模型。边界情况与错误标注,往往在「足够多」的数据集里仍然存在。
想知道更多
- 书:布鲁克希尔《计算机科学概论》
- 书:查尔斯·佩措尔德《编码:隐匿在计算机软硬件背后的语言》
- 书:艾伦·唐尼《像计算机科学家一样思考Python(第2版)》
- 书:埃里克·马瑟斯《Python编程:从入门到实践(第3版)》
未登录时不会保存学习进度