modified | Thursday 1 May 2025 |
---|
可 视 化 编 程 为 何 是 个 糠 糕 的 主 意
01:43
不 安 全 一 wwj718.github.io
a 口 孕 @ 8
mikehadlow 于 2018.10.1 在 他 的 博 客 上 写 了 篇 文 荣 :Visual Programming - Why it「s a Bad ldea。 他 在 reddit 上
发 了 个 同 名 帖 子 :, 一 石 激 起 十 层 浪 。 截 至 今 日 (2018.11.21), 帖 子 获 得 414 票 的 赞 同 ,383 个 评 论 。 考 虑 到 它
只 是 技 术 话 题 , 算 是 非 常 热 门 了 ,
今 早 有 人 将 这 篇 文 章 推 到 hacker news。 我 读 完 文 章 , 顺 带 将 同 名 帖 子 下 的 所 有 讨 论 一 些 读 了 。 关 于 图 形 化
编 程 , 这 是 我 近 来 读 到 最 精 彩 的 争 论 , 做 个 梳 理 。
我 最 切 给 那 篇 帖 子 点 了 个 踩 , 口 来 改 加 炉 赞 。 起 切 点 踩 的 原 因 是 , 我 不 赞 同 文 荣 的 观 点 。 但 我 认 为 那 是 一 篇
好 文 章 , 至 少 也 算 抛 砖 引 玉 , 希 望 它 被 更 多 人 读 到 , 引 起 更 广 泛 的 讨 论 和 思 考 。 它 值 得 一 读 , 也 值 得 一 驳 ,
这 是 我 给 它 点 赞 的 原 因 。 一 篇 文 章 值 得 被 反 驳 , 是 一 种 赞 美 。
这 听 起 来 有 些 古 怪 。 如 果 有 人 跟 我 说 , 我 与 得 东 西 , 值 得 他 化 半 个 小 时 来 反 驳 , 我 会 觉 得 这 是 一 种 莫 大 的 荣
耀 。 要 知 道 , 太 多 的 文 章 混 乱 不 堪 , 根 本 不 值 驻 足 细 读 , 更 别 说 理 解 之 后 再 反 驳 了 , 你 恨 不 能 捏 起 鼻 子 赶 紧
跑 开 。
在 哲 学 圈 , 有 这 么 一 条 不 成 文 的 规 矩 : 对 一 位 哲 学 家 最 大 的 尊 重 , 就 是 去 反 驳 他 的 论 证 。
罗 素 在 《 西 方 哲 学 史 》 卷 三 . 近 代 哲 学 部 分 , 写 霍 布 斯 时 说 :
把 霍 布 斯 和 以 前 的 政 治 理 论 家 们 作 个 对 比 , 他 的 高 明 处 显 露 得 清 楚 极 了 。 他 完 全 摆 脱 了 迷 信 ; 他 不 根
据 亚 当 和 夏 娃 堕 落 人 间 时 的 遭 遇 发 议 论 。 他 论 事 清 晰 而 合 逻 辑 ; 他 的 伦 理 学 说 对 也 好 错 也 好 , 总 是 完
全 可 以 理 解 的 东 西 , 里 面 没 使 用 任 何 暖 昧 含 混 的 概 念 。 除 开 远 比 他 见 识 狭 隘 的 马 基 雅 弗 利 , 他 是 讲 政
治 理 论 的 第 一 个 真 正 近 代 的 著 述 家 。 他 若 有 错 处 , 错 也 出 于 过 分 简 单 化 , 并 不 是 因 为 他 的 思 愚 基 础 不
现 实 、 偏 空 想 。 为 这 个 缘 故 , 他 仍 旧 值 得 一 驳 。
你 看 , “ 他 仍 旧 值 得 一 驳 。“ 的 原 因 正 是 因 为 他 有 如 此 多 的 优 点 。
大 卫 - 休 谟 (David Hume,1711 一 76) 在 1739 年 出 版 他 的 《 人 性 论 》 (Treatise of HumanNa ture) 后 , 期
待 着 猛 烈 的 攻 击 , 打 算 用 堂 堂 的 反 驳 来 迎 击 。 殊 不 料 谁 也 不 注 意 这 本 书 ; 如 他 自 己 说 的 , “ 它 从 印 刷 机 死 产 下
来 。“ 。 你 都 准 备 好 了 在 一 次 伟 大 的 争 论 中 , 让 观 点 屹 立 于 世 , 却 不 料 期 待 的 对 手 始 终 没 有 出 现 。
八
01:43
e - a 口 代 @ _唠
不 安 全 一 wwj718.github.io 国
待 着 猛 烈 的 攻 击 , 打 算 用 堂 堂 的 反 驳 来 迎 击 。 殊 不 料 谁 也 不 注 意 这 本 书 ; 如 他 自 己 说 的 , “ 它 从 印 刷 机 死 产 下
来 。“。 你 都 准 备 好 了 在 一 次 伟 大 的 争 论 中 , 让 观 点 屹 立 于 世 , 却 不 料 期 待 的 对 手 始 终 没 有 出 现 。
我 有 个 小 人 之 心 的 想 法 , 故 事 中 持 剑 的 少 年 , 内 心 是 期 待 着 那 条 劫 走 公 主 的 恶 龙 出 现 的 。 我 甚 至 不 知 道 持 剑
的 少 年 究 竟 喜 欢 公 主 多 些 , 还 是 喜 欢 恶 龙 多 些 。
近 期 正 在 养 试 与 文 献 综 述 风 格 的 文 节 , 本 文 是 这 个 系 列 的 第 二 篇 。
可 视 化 编 程 为 何 是 个 糟 糕 的 主 意
我 先 翻 译 mikehadlow 对 可 企 化 编 程 的 攻 击 , 在 文 荣 后 半 部 分 , 给 出 reddit 仕 区 用 尸 对 这 篇 文 荣 的 反 驳 以 及 我
个 人 对 此 的 反 驳 。
mikehadlow 在 Visual Programming - Why it「s a Bad Idea 中 写 道 :
c 国
勤 Scratch ProjectEditor-lIm。 % 5
国 【 丝 藏 ; @ :catchmiteduprojectyedtoriip borcgettarted c| 最 “ 国 - 尸 代 自 易 会 路 1
ERERRB 命 er patr Tips About 业 万 公 公 @ Sgnintosave Soni
a Untted Scipls | Costumes | Sounds
【_蕙」 E
恩 “ 振 梁
目 Noton | E ′一
s Ezmse ˇ 良
国 园
目 sound 目 sersino 水
目 Pen 相 ooeraior [ 园 沥 达 辽 沥 训 十
Hello, worldl 目 a。 相 oreeioces 国 团 园 团 国 园
筐 -
Say Helo worldl
筐 国 国 园 日 e p
八
们:43中… 目 a 山 仁 @ 求 )
不 安 全 一 wwj718.github.io
s
可 视 化 编 程 语 言 允 许 编 程 者 通 过 操 控 图 形 元 素 不 是 通 过 输 入 文 本 命 令 来 创 建 程 序 。 众 所 周 知 的 例 子 是 Scratch,
一 个 来 自 MIT( 麻 省 理 工 学 院 ) 的 可 视 化 编 程 语 言 , 用 于 教 孩 子 编 程 。Scratch 的 优 点 是 让 新 手 和 普 通 用 户 能 够
轻 松 地 开 始 编 程 。
在 20 世 纪 90 年 代 , 有 一 种 非 常 流 行 的 运 动 , 即 通 过 所 谓 的 CASE 工 具 将 这 类 工 具 带 入 企 业 , 企 业 系 统 可 由
UML 定 义 和 生 成 , 无 需 雇 佣 专 业 开 发 者 。 这 涉 及 “round tripping“ 的 概 念 , 在 其 中 , 系 统 可 以 在 视 觉 上 建 模 ,
程 序 代 码 从 模 型 中 生 成 , 并 且 代 码 的 任 何 更 改 都 可 以 反 映 到 模 型 上 。 这 些 工 具 未 能 兑 现 承 诺 , 大 多 数 这 此 类
光 试 现 已 基 本 放 弃 。
除 了 一 些 非 常 有 限 的 领 域 外 , 可 视 化 编 程 未 能 成 功 。 这 基 本 上 归 因 于 以 下 对 编 程 的 误 解 :
难 。
总 之 , 可 视 化 编 程 工 具 提 供 的 优 势 : 使 程 序 更 容 易 创 建 和 理 解 , 几 乎 志 是 海 市 蜃 楼 。 巳 们 只 能 在 最 简 单 的 情
况 下 成 功 。
作 者 更 新
我 可 能 错 误 地 使 用 了 Scratch 的 截 图 , 五 将 其 用 作 我 的 第 一 段 中 的 主 要 示 例 。 我 不 是 一 名 教 育 工 作 者 , 我 对
Scratch 作 为 一 种 教 学 工 具 的 有 效 性 并 没 有 真 正 的 看 法 。 许 多 人 提 到 它 在 教 学 编 程 方 面 非 常 有 用 , 特 别 是 对 儿
八
01:43
ee a 山 孕 @ 皆
不 安 全 一 wwj718.github.io
我 可 能 错 误 地 使 用 了 Scratch 的 截 图 , 五 将 其 用 作 我 的 第 一 段 中 的 主 要 示 例 。 我 不 是 一 名 教 育 工 作 者 , 我 对
Scratch 作 为 一 种 教 学 工 具 的 有 效 性 并 没 有 真 正 的 看 法 。 许 多 人 提 到 它 在 教 学 编 程 方 面 非 常 有 用 , 特 别 是 对 儿
童 而 言 。 任 何 将 人 们 引 向 精 彩 纷 呈 的 编 程 世 界 的 东 西 都 是 值 得 欢 迎 的 。 我 真 的 不 打 算 将 此 帖 作 为 对 Scratch 的
批 评 , 我 主 要 批 评 人 们 听 过 的 那 些 流 行 的 可 视 化 编 程 系 统 。
Reddit 上 的 小 伙 伴 们 提 到 的 另 一 个 反 例 是 静 态 结 构 工 具 , 例 如 UI 设 计 工 具 , 数 据 库 模 式 设 计 工 具 或 类 设 计 工
具 。 我 同 意 他 们 非 常 有 用 。 任 何 有 助 于 可 视 化 数 据 结 构 或 程 序 的 大 规 模 结 构 的 东 西 都 是 好 东 西 。 但 这 些 不 足
以 支 撑 他 们 的 论 点 的 。PowerBuilder 等 90 个 试 图 构 建 在 可 视 化 之 上 , 用 以 创 建 一 个 完 全 无 代 码 的 开 发 环 境 ,
都 失 败 了 , 就 证 明 了 这 点 。
反 驳
mikehadlow 关 于 Scratch 的 观 点 , 遭 到 reddit 上 很 多 用 户 的 反 驳 , 于 是 他 在 文 章 结 尾 处 加 了 一 段 更 新 说 :
我 可 能 错 误 地 使 用 了 Scratch 的 截 图 , 五 将 其 用 作 我 的 第 一 段 中 的 主 要 示 例 。 我 不 是 一 名 教 育 工 作 者 ,
我 对 Scratch 作 为 一 种 教 学 工 具 的 有 效 性 并 没 有 真 正 的 看 法 。 许 多 人 提 到 它 在 教 学 编 程 方 面 非 常 有 用 ,
特 别 是 对 儿 童 而 言 。 任 何 将 人 们 引 向 精 彩 纷 呈 的 编 程 世 界 的 东 西 都 是 值 得 欢 迎 的 。 我 真 的 不 打 算 将 此
帖 作 为 对 Scratch 的 批 评 , 我 主 要 批 评 人 们 听 过 的 那 些 流 行 可 视 化 编 程 系 统 。
mikehadlow 在 文 章 中 盛 气 凌 人 , 一 副 “ 我 是 资 深 程 序 员 , 你 们 这 些 渣 渣 新 手 “ 的 姿 态 。 关 于 Scratch 的 部 分 ,
在 reddit 上 被 一 通 反 驳 之 后 , 态 度 突 然 变 得 这 么 低 , 让 人 反 倒 没 什 么 反 驳 的 热 情 了 ,
我 们 来 看 看 reddit 上 的 一 些 讨 论 。
〔〈寥Vi〔二t(〕t_′〔)′〕i〔〕S_工习三_I,/[…1萝鲁:
我 赞 同 这 个 家 伙 的 几 点 论 述 。 传 统 编 程 无 法 从 图 形 环 境 中 受 益 。
但 是 , 对 于 初 学 者 来 说 , 积 木 块 是 不 可 能 出 现 语 法 错 误 的 语 句 。 这 很 有 价 值 ! 你 希 望 初 学 者 考 虑 算 法
的 结 构 , 而 不 是 分 号 的 位 置 。 我 现 在 正 在 教 授 一 所 大 学 开 始 编 程 课 程 一 个 月 。 我 仍 然 看 到 学 生 们 得 到
八
01:43
ee a 山 孕 @ 皆
不 安 全 一 wwj718.github.io
〔〈寥Vi〔二t(〕t′〔)′〕i〔〕S_工习三_I,/[…_1萝鲁:
我 赞 同 这 个 家 伙 的 几 点 论 述 。 传 统 编 程 无 法 从 图 形 环 境 中 受 益 。
但 是 , 对 于 初 学 者 来 说 , 积 木 块 是 不 可 能 出 现 语 法 错 误 的 语 句 。 这 很 有 价 值 ! 你 希 望 初 学 者 考 虑 算 法
的 结 构 , 而 不 是 分 号 的 位 置 。 我 现 在 正 在 教 授 一 所 大 学 开 始 编 程 课 程 一 个 月 。 我 仍 然 看 到 学 生 们 得 到
一 个 编 译 器 消 息 说 它 预 期 出 现 一 个 分 号 , 他 们 很 难 确 定 在 哪 里 或 为 什 么 需 要 这 个 分 号 。 为 什 么 编 译 器
指 向 “for“ 并 且 说 它 需 要 分 号 ? 噜 , 这 是 因 为 前 一 行 。 非 常 违 反 直 觉 。 “
请 主 意 文 章 中 关 于 Scratch 的 截 图 。 编 程 者 正 在 为 精 灵 编 写 事 件 处 理 程 序 。 事 件 循 环 是 环 境 的 一 部 分 ,
而 这 不 需 要 明 确 编 程 ! 你 可 以 让 一 个 10 岁 的 孩 子 写 一 堆 精 灵 , 每 个 精 灵 都 有 一 个 行 为 , 如 果 你 点 击 某
些 东 西 , 就 会 发 生 一 些 事 情 。 你 能 想 象 用 常 规 语 言 进 行 的 工 作 吗 ?
但 我 完 全 承 认 他 关 于 抽 象 的 观 点 。 图 形 环 境 可 能 对 此 的 支 持 多 是 故 脚 的 , 而 抽 象 是 优 秀 软 件 的 本 质 。
@AISweigart 评 论 说 :
Scratch 专 为 8 至 16 岁 儿 童 设 计 , 这 是 完 美 的 ; 它 是 图 形 化 的 , 具 有 简 短 的 反 馈 循 环 , 并 使 简 单 的 事 情 变
得 简 单 。
我 知 道 很 多 程 序 员 都 希 望 教 他 们 的 孩 子 编 码 , 并 忘 记 了 它 是 多 么 令 人 生 畏 和 沮 丧 。Scratch 的 辉 煌 之 处
在 于 它 做 到 了 平 易 近 人 的 同 时 , 仍 然 是 实 际 的 编 程 ( 而 不 只 是 配 置 一 下 游 戏 ) 。 但 是 , 期 待 “ 可 视 化 编
程 “ 将 使 编 码 变 得 更 容 易 却 不 现 实 。
@yummybear 评 论 说 :
今 天 门 我 11 岁 的 女 儿 介 绍 了 Scratch, 她 喜 欢 毛 。 仅 仁 几 分 钟 后 , 她 就 让 人 物 移 动 和 跳 舞 , 井 对 进 展 感
到 开 心 。Scratch 中 的 积 木 块 也 被 翻 译 成 我 们 的 母 语 , 她 可 以 阅 读 它 们 的 行 为 。
我 不 确 定 文 本 语 言 是 否 会 给 出 同 样 直 接 的 反 馈 激 励 。
八
01:43
e a 山 孕 @ 皆
不 安 全 一 wwj718.github.io
@yummybear 评 论 说 :
今 天 门 我 11 岁 的 女 儿 介 绍 了 Scratch, 她 喜 欢 毛 。 仅 仁 几 分 钟 后 , 她 就 让 人 物 移 动 和 跳 舞 , 井 对 进 展 感
到 开 心 。Scratch 中 的 积 木 块 也 被 翻 译 成 我 们 的 母 语 , 她 可 以 阅 读 它 们 的 行 为 。
我 不 确 定 文 本 语 言 是 否 会 给 出 同 样 直 接 的 反 馈 激 励 。
当 我 们 谈 论 图 形 化 编 程 的 时 候 , 我 们 在 谈 论 什 么
当 我 们 谈 论 图 形 化 编 程 的 时 候 , 我 们 在 谈 论 什 么 呢 ?
mikehadlow 以 为 他 场 谈 所 有 的 “ 图 形 化 编 程 “, 他 假 设 所 有 的 这 些 编 程 工 具 都 吹 嘘 一 样 的 优 炉 , 有 一 样 的 缺
陷 , 所 以 mikehadlow 准 备 写 一 篇 文 章 , 一 次 驳 倒 它 们 , 把 “ 可 视 化 编 程 “ 通 通 归 为 糟 糕 的 主 意 , 他 不 具 体 谈 哪
个 软 件 , 不 举 例 说 明 , 唯 一 在 开 头 举 了 Scratch 的 例 子 , 结 果 又 成 为 众 矢 之 的 , 只 好 改 称 :
我 不 是 一 名 教 育 工 作 者 , 我 对 Scratch 作 为 一 种 教 学 工 具 的 有 效 性 并 没 有 真 正 的 看 法 。
巾 reddit 上 的 用 尸 则 代 入 各 自 的 经 历 , 以 为 mikehadlow 在 谈 他 们 各 目 熟 悉 的 图 形 化 编 程 工 具 , 有 人 在 吐 桂
Labview, 有 人 在 拥 护 虚 幻 引 擎 中 的 图 形 工 具 , 有 人 在 赞 扬 Scratch… 于 是 我 们 一 时 不 知 道 大 家 在 争 执 什 么 。
这 场 面 简 直 像 哲 学 家 们 对 意 义 、 真 理 、 道 德 的 争 论 , 大 家 自 说 自 话 , 全 然 忘 了 问 题 是 什 么 。
那 么 题 是 什 么 ? 我 们 究 竟 能 否 用 “ 图 形 化 编 程 “ 来 描 述 所 有 与 图 形 有 关 的 编 程 , 乙 们 是 否 可 以 混 为 一 谈 ? 是
否 都 拥 有 一 样 的 缺 陷 ? 是 否 需 要 再 做 细 分 , 分 门 别 类 来 谈 论 ? 是 否 更 多 的 例 证 , 而 不 是 泛 泛 而 论 ?
@teerre 对 此 说 得 比 较 尖 刻 :
阅 读 他 的 文 字 我 不 禁 认 为 他 实 际 上 从 未 使 用 过 任 何 可 任 化 编 程 , 而 只 是 在 谈 论 他 在 目 己 的 脑 海 中 所 构
成 的 猜 想 、 缺 乏 实 际 的 例 子 。
八
01:44 口 吊 吊 吴 ′ e 一 0 命 @
不 安 全 一 wwj718.github.io
阅 读 他 的 文 字 我 不 禁 认 为 他 实 际 上 从 未 使 用 过 任 何 可 视 化 编 程 , 而 只 是 在 谈 论 他 在 自 己 的 脑 海 中 所 构
成 的 猜 想 。 缺 乏 实 际 的 例 子 。
Scratch 的 缺 陷
忐 的 来 说 我 是 喜 欢 mikehadlow 这 篇 文 章 的 , 正 是 因 为 喜 欢 , 我 才 决 定 好 好 反 驳 它 。 尽 管 他 的 讨 论 , 显 得 有 点
粗 糙 ,mikehadlow 本 人 对 Scratch 也 缺 乏 必 要 的 了 解 , 但 他 提 到 的 “ 图 形 化 编 程 共 有 的 问 题 “, 其 中 至 少 有 一
点 ,Scratch 确 实 存 在 :
缺 尹 良 好 的 源 代 码 控 制 … 对 大 量 的 XML 或 JSON 进 行 “git blame“ 非 常 困 难 。 对 程 序 的 功 能 执 行 没 有 任
何 影 响 的 事 情 , 例 如 图 形 元 素 的 位 置 和 大 小 , 仍 然 会 导 致 元 数 据 的 变 化 , 这 使 得 观 察 差 异 (diff 变 得 更
加 困 难 。
@balefrost 在 帖 子 下 的 评 论 , 比 mikehadlow 的 原 文 更 为 精 彩 , 也 更 为 深 刻 。balefrost 评 论 道 :
我 认 为 使 用 Scratch 教 学 基 本 编 程 没 有 任 何 问 题 。 在 我 看 来 , 图 形 化 编 程 大 的 缺 点 在 以 下 方 面 :
使 用 空 间 经 常 不 足 。 我 见 过 的 大 多 数 图 形 化 编 程 环 境 都 有 节 点 与 线 的 连 接 。 因 此 需 要 将 节 点 间 隔 得 足
够 远 , 以 使 连 线 有 足 够 空 间 , 并 限 制 你 将 获 得 的 线 路 交 叉 数 量 ; 即 便 如 此 , 无 论 给 它 们 多 少 空 间 , 总 会
有 一 些 交 叉 线 。 你 可 能 必 须 手 动 布 线 , 以 获 得 好 看 的 图 表 。 最 终 会 投 入 大 量 时 间 和 精 力 来 制 定 “ 漂 亮 “
( 即 “ 可 读 “) 的 图 式 。 只 要 更 改 图 式 , 所 有 仔 细 的 布 局 工 作 都 可 能 毫 无 价 值 . 尽 管 Scratch 不 需 要 连 线 ,
但 使 用 空 间 经 常 不 足 却 也 经 常 不 足 。 而 且 积 木 组 合 如 何 分 布 好 看 也 确 实 影 响 阅 读 。
文 本 编 程 语 言 还 省 略 了 图 形 化 编 程 环 境 中 存 在 的 视 觉 装 饰 , 因 为 我 们 不 需 要 它 们 。VP(visual
programming) 中 的 框 必 须 足 够 大 , 以 便 用 户 可 以 合 理 地 使 用 鼠 标 来 操 纵 它 们 , 这 是 我 们 可 以 在 文 本 语
言 中 不 必 考 虑 的 因 素 。
围 绕 纯 文 本 文 件 构 建 了 很 多 工 具 。 我 可 以 在 任 何 我 想 要 的 编 辑 器 中 编 辑 纯 文 本 文 件 。 简 化 和 合 并 纯 文
本 编 程 文 件 通 常 是 众 所 周 知 的 活 动 , 并 且 像 Git 这 样 的 源 代 码 控 制 工 具 针 对 纯 文 本 文 件 进 行 了 优 化 。 即
佼 VDHK 悦 急 甘 优 砺 但 方 左 纪 女 木 女 价 丨 “ 用 为 FT 加 仁 娇 秉 女 价 五 西 姗 矾 等 注 佐 自 | 乌 穴 问 / 如 自 /D; 玖
八
01:44 s e _ a 山 孕 G 盼
, 不 安 全 一 wwj718.github.io
@balefrost 场 帖 子 下 的 评 论 , 比 mikehadlow 的 原 文 更 为 精 彩 , 也 更 为 深 刻 。balefrost 评 论 道 :
我 认 为 使 用 Scratch 教 学 基 本 编 程 没 有 任 何 问 题 。 在 我 看 来 , 图 形 化 编 程 大 的 缺 点 在 以 下 方 面 :
使 用 空 间 经 常 不 足 。 我 见 过 的 大 多 数 图 形 化 编 程 环 境 都 有 节 点 与 线 的 连 接 。 因 此 需 要 将 节 点 间 隔 得 足
够 远 , 以 使 连 线 有 足 够 空 间 , 并 限 制 你 将 获 得 的 线 路 交 叉 数 量 ; 即 便 如 此 , 无 论 给 它 们 多 少 空 间 , 总 会
有 一 些 交 叉 线 。 你 可 能 必 须 手 动 布 线 , 以 获 得 好 看 的 图 表 。 最 终 会 投 入 大 量 时 间 和 精 力 来 制 定 “ 漂 亮 “
( 即 “ 可 读 “) 的 图 式 。 只 要 更 改 图 式 , 所 有 仔 细 的 布 局 工 作 都 可 能 毫 无 价 值 . 尽 管 Scratch 不 需 要 连 线 ,
但 使 用 空 间 经 常 不 足 却 也 经 常 不 足 。 而 且 积 木 组 合 如 何 分 布 好 看 也 确 实 影 响 阅 读 。
文 本 编 程 语 言 还 省 略 了 图 形 化 编 程 环 境 中 存 在 的 视 觉 装 饰 , 因 为 我 们 不 需 要 它 们 。VP(visual
programming) 中 的 框 必 须 足 够 大 , 以 便 用 户 可 以 合 理 地 使 用 鼠 标 来 操 纵 它 们 , 这 是 我 们 可 以 在 文 本 语
言 中 不 必 考 虑 的 因 素 。
围 绕 纯 文 本 文 件 构 建 了 很 多 工 具 。 我 可 以 在 任 何 我 想 要 的 编 辑 器 中 编 辑 纯 文 本 文 件 。 简 化 和 合 并 纯 文
本 编 程 文 件 通 常 是 众 所 周 知 的 活 动 , 并 且 像 Git 这 样 的 源 代 码 控 制 工 具 针 对 纯 文 本 文 件 进 行 了 优 化 。 即
使 VP 环 境 将 其 代 码 保 存 在 纯 文 本 文 件 中 , 因 为 可 视 化 编 程 文 件 需 要 编 码 算 法 信 息 以 及 空 间 信 息 ,VP 语
言 文 件 的 差 异 通 常 比 文 本 编 程 文 件 更 嘈 杂 。
为 文 本 编 程 编 写 代 码 生 成 器 很 容 易 , 因 为 不 需 要 太 担 心 空 间 安 排 ( 只 关 心 缩 进 ) 。 用 于 可 视 化 编 程 的
代 码 生 成 器 将 需 要 担 心 放 置 节 点 的 位 置 , 这 是 一 个 非 常 重 要 的 细 节 。
还 有 许 多 其 他 工 具 针 对 处 理 纯 文 本 文 件 进 行 了 优 化 。 有 一 个 丰 富 的 文 本 编 辑 器 生 态 系 统 , 其 中 许 多 都
对 文 本 编 程 有 很 好 的 支 持 。 可 视 化 编 程 的 编 辑 可 能 是 一 次 性 的 。
@balefrost 的 这 些 论 点 都 非 常 精 彩 ,Scratch 确 实 有 这 些 问 题 。 但 我 认 为 这 些 并 不 影 响 Scratch 达 成 它 的 使
命 。 而 且 像 编 辑 器 生 态 总 是 会 随 着 时 间 和 社 区 的 壮 大 , 持 续 改 进 。 比 如 blockly 就 发 展 出 了 编 译 为 6 种 文 本 语
言 的 能 力 , 并 且 可 以 还 加 入 类 型 判 断 , 用 以 决 定 可 组 合 性 , 两 块 积 木 是 否 可 吸 合 , 这 即 便 在 文 本 编 程 工 具
里 , 也 是 很 酷 的 功 能 , 相 当 于 静 态 分 析 了 。 而 makecode 则 发 展 出 了 代 码 与 图 形 积 木 的 双 向 转 换 。 这 些 都 是
非 常 先 进 的 。 而 且 在 持 续 改 进 中 。 我 们 有 理 由 保 持 乐 观 。
@balefrost 继 续 说 道 :
八
01:44 啊_`_′ 一 山 万 @ 欧
不 安 全 一 wwj718.github.io
PDals 「(〕S[′玄茭′…昙壁_L壳 L昌:
我 认 为 可 视 化 编 程 将 在 非 传 统 环 境 中 取 得 最 大 成 功 。 对 于 有 大 量 条 件 逻 辑 的 常 规 算 法 工 作 , 我 不 知 道
可 视 化 编 程 是 否 合 适 。 我 认 为 它 在 高 级 别 工 作 中 效 果 更 好 - 将 算 法 复 杂 性 隐 藏 在 预 先 封 装 的 块 中 。 我
认 为 可 视 化 编 程 适 用 于 我 们 之 前 使 用 过 脚 本 语 言 的 一 些 任 务 。 在 我 看 来 ,Automator 是 一 种 向 不 熟 悉
Bash 的 用 户 提 供 UNIX 管 道 功 能 的 方 法 。
根 据 我 的 经 验 , 一 旦 达 到 一 定 程 度 的 复 杂 性 ,VP 似 乎 真 的 会 崖 溃 。 我 不 能 确 定 这 是 因 为 工 具 不 足 , 个
人 经 验 不 足 , 还 是 因 为 它 是 范 式 的 根 本 限 制 。 我 的 直 觉 告 诉 我 , 问 题 是 根 本 的 。
我 的 反 驳
下 边 单 说 我 的 反 驳 。
由 于 我 的 兴 趣 主 要 关 注 图 形 化 编 程 在 教 育 这 块 的 应 用 , 所 以 我 的 焦 点 集 中 在 以 下 系 统 :
Scratch
blockly
Snapl
GP
Toy-Con Garage
Etoys
Squeak(smalltal)
我 将 结 合 这 几 种 图 形 化 编 程 工 具 , 来 反 驳 mikehadlow 的 观 点 。
降 低 入 门 门 槌
mikehadlow 说
八
01:44
国 * 山 孕 @ 盼
不 安 全 一 wwj718.github.io
张 将 结 合 这 几 种 图 形 化 编 程 工 具 , 来 反 驳 mikehadIow 的 观 点 。
降 低 入 门 门 榛
mikehadlow 说
该 观 点 认 为 编 程 实 际 上 非 常 简 单 , 如 果 我 们 以 清 晰 的 图 形 呈 现 它 , 将 大 大 降 低 创 建 和 阅 读 软 件 的 难
我 认 为 mikehadlow 对 Scratch 存 在 很 大 误 解 , 我 甚 至 怀 疑 mikehadlow 并 没 使 用 过 Scratch。 在 Scratch 社 区 ,
我 们 认 为 Scratch 帮 助 降 低 编 程 入 门 门 槛 , 我 们 并 不 认 为 编 程 实 际 上 非 常 简 单 , 我 们 认 为 入 门 编 程 应 该 尽 可 能
简 单 , 不 应 该 让 入 门 者 太 沮 丧 。 使 用 Scratch 构 建 大 型 程 序 确 实 会 变 得 非 常 复 杂 , 其 中 一 些 原 因 @balefrost 在
前 头 说 得 非 常 好 , 为 了 克 服 这 种 复 杂 度 ,Scratch 的 分 支 项 目 Snapl 做 了 很 多 探 索 。
图 形 积 木 与 文 本 代 码 的 视 野 切 换
灬kehad帕W在文章里说:
视 觉 元 素 仅 代 表 最 高 级 别 的 程 序 流 程 , 大 多 数 工 作 都 是 隐 藏 在 框 中 的 标 准 文 本 代 码 中 完 成 的 。
视 觉 元 素 只 能 由 有 经 验 的 程 序 员 创 建 , 只 能 通 过 阅 读 它 们 的 文 本 代 码 来 理 解 。 在 视 觉 “ 代 码 “ 和 文 本 代 码
志 间 存 在 着 阻 抗 不 匹 配 , 编 程 者 必 须 在 两 者 之 间 切 换 , 时 间 都 浪 费 在 理 解 图 形 化 工 具 上 , 而 不 是 解 决
手 头 的 问 题 。
我 不 认 为 在 Scratch3.0 中 , 这 种 切 换 是 必 要 的 , 如 果 我 们 把 编 程 积 木 视 为 一 种 好 的 抽 象 ( 我 们 应 该 这 样 做 ) ,
那 么 我 们 是 可 以 设 计 出 原 子 积 木 的 , 它 们 彼 此 正 交 。 编 程 者 并 不 需 要 理 解 抽 象 背 后 的 细 节 , 这 正 是 抽 象 的 目
标 之 一 。 正 像 他 们 在 面 向 对 象 系 统 中 , 可 以 轻 易 使 用 别 人 定 义 的 类 。
八
我 认 为 这 是 设 计 Scratch3.0 这 类 积 木 化 编 程 系 统 的 核 心 工 作 。 它 并 不 容 易 , 让 一 个 积 木 可 以 运 行 是 简 单 的 ,
01:44
国 吴 吊 吴 口 不 安 全 一 wwj718.github.io
我 认 为 这 是 设 计 Scratch3.0 这 类 积 木 化 编 程 系 统 的 核 心 工 作 。 它 并 不 容 易 , 让 一 个 积 木 可 以 运 行 是 简 单 的 ,
要 设 计 出 抽 象 得 合 理 又 正 交 的 积 木 , 极 为 困 难 , 你 可 能 需 要 一 些 研 究 PL 的 人 以 及 交 互 设 计 的 人 , 而 且 他 们 最
好 是 一 个 人 。
但 你 知 道 , 大 多 数 项 目 并 没 有 精 心 设 计 , 只 是 勉 强 能 用 , 于 是 造 成 了 使 用 者 的 灾 难 。
我 们 在 codelab.club 中 做 了 很 多 有 趣 的 探 索 , 我 们 希 望 设 计 出 尽 可 能 正 交 的 积 木 。 此 外 我 们 允 许 大 家 在 熟 悉
系 统 后 , 可 以 轻 松 去 扩 展 这 个 系 统 , 我 们 准 备 了 通 用 的 积 木 (EIM)。 这 里 的 核 心 概 念 是 everything is a
message , 在 这 一 点 上 , 基 于 这 个 概 念 , 能 很 轻 松 解 耦 。 同 时 免 费 获 得 可 组 合 性 。 我 们 是 艾 伦 凯 的 忠 实 追 随
者 。 在 这 个 领 域 , 他 一 骑 绝 尘 。
视 觉 元 素 仅 代 表 最 高 级 别 的 程 序 流 程 , 大 多 数 工 作 都 是 隐 藏 在 框 中 的 标 准 文 本 代 码 中 完 成 的 。
我 不 认 为 这 是 个 缺 陷 , 而 认 为 这 是 个 很 好 的 特 性 , 我 在 两 种 硬 件 编 程 风 格 的 比 较 有 做 论 述 。
复 权 度
然 而 , 一 旦 程 序 变 得 比 一 个 简 单 的 例 子 更 大 , 复 杂 性 很 快 就 会 庄 倒 新 手 程 序 员 … 编 程 语 言 中 的 大 多 数
创 新 都 是 尝 试 管 理 复 杂 性 , 最 常 见 的 是 通 过 抽 象 , 封 装 和 解 耦 。 面 向 对 象 和 函 数 式 编 程 的 所 有 类 型 系
统 实 际 上 只 是 努 力 控 制 这 种 复 杂 性 。 大 多 数 专 业 程 序 员 将 不 断 抽 象 和 解 耦 代 码 。 实 际 上 , 好 的 和 坏 的
代 码 之 间 的 区 别 本 质 上 便 是 这 样 的 。 可 视 化 编 程 工 具 缺 少 有 效 的 机 制 来 实 现 这 些 , 它 们 让 开 发 者 置 身
于 1970 年 代 的 BASIC 中 。
这 是 全 文 中 我 最 为 赞 同 的 一 段 , 如 《SICP》 在 序 言 里 说 的 , 编 程 的 本 质 是 克 服 复 杂 度 。 但 我 认 为
Scratch/blockly 这 类 积 木 化 语 言 是 有 支 持 抽 象 的 机 制 的 。
先 说 Blockly。
山 代 @ (
八
01:44 e e a 山 字 @ )
不 安 全 一 wwj718.github.io
这 是 全 文 中 我 最 力 赞 同 的 一 段 , 如 《SICP》 在 序 言 里 说 的 , 编 程 的 本 质 是 克 服 复 杂 度 。 但 我 认 为
Scratchy/blockly 这 类 积 木 化 语 言 是 有 支 持 抽 象 的 机 制 的 。
完 说 Blockly。
@SanityInAnarchy 在 帖 子 下 说 :
我 无 法 真 正 看 到 关 于 抽 象 的 观 点 。 团 数 只 是 一 个 容 纳 代 码 的 块 , 包 括 一 个 “ 参 数 “ 块 。 一 旦 定 义 了 , 你
就 会 得 到 一 个 调 用 你 的 函 数 的 “ 调 用 “ 块 , 并 且 可 以 将 值 作 为 参 数 放 到 该 函 数 中 。 这 是 抽 象 的 大 部 分 内
容 , 而 code.org 上 的 东 西 似 乎 很 好 地 涵 盖 了 它 。
code.org 使 用 blocklyy,blockly 确 实 已 经 很 好 地 实 现 了 闯 数 的 机 制 。 这 个 机 制 并 不 比 大 多 数 语 言 的 闻 数 功 能 更
弱 。 而 团 数 是 实 现 抽 象 的 绝 佳 工 具 。
全 于 Scratch 则 在 解 耦 这 块 做 得 很 好 。 消 息 机 制 是 Scratch 的 核 心 机 制 。 消 息 是 绝 佳 的 解 耦 工 具 , 如 果 你 逛 一
逛 Scratch 社 区 , 就 可 以 看 到 人 们 构 建 了 许 多 令 人 惊 叹 的 项 目 。 它 们 中 的 许 多 并 不 简 单 , 消 息 是 帮 助 他 们 克
服 复 杂 度 的 核 心 工 具 之 一 。 这 个 特 性 继 承 自 smalltalk 的 设 计 原 则 :
计 算 应 该 被 视 为 可 通 过 发 送 消 恳 来 统 一 调 用 的 对 象 的 内 在 功 能 。
在 codelab.club 中 , 我 们 把 这 个 概 念 进 一 步 发 挥 , 使 用 消 息 将 积 木 块 接 入 现 实 生 活 , 我 们 做 了 诊 多 有 趣 的 探
素
如 果 你 对 图 形 化 编 程 充 满 热 情 , 来 codelab.club 中 与 我 们 一 起 探 索 吧 。
我 赞 同 @balefrost 在 前 头 提 到 的 :
八
01:44 _ ’ ,l e a 山 字 @ 2 )
不 安 全 一 wwj718.github.io
赞 同 @balefrost 在 前 头 提 到 的 :
我 认 为 可 视 化 编 程 将 在 非 传 统 环 境 中 取 得 最 大 仁 功 。 对 于 有 大 量 条 件 逻 辑 的 常 规 算 法 工 作 , 我 不 知 道
可 视 化 缇 程 是 否 合 话 。 我 认 为 它 在 高 级 别 工 作 中 效 果 更 好 - 将 算 法 复 杂 性 隐 藏 在 预 先 封 装 的 块 中 。
我 们 相 信 可 视 化 编 程 将 在 非 传 统 环 境 中 取 得 仁 功 。 我 们 在 codelab.club 做 了 讪 多 探 索 , 我 们 希 望 将 可 仰 化 编
程 ( 我 们 更 喜 欢 称 它 们 为 积 木 化 编 程 ) 带 入 物 联 网 与 人 工 智 能 , 我 们 已 经 做 出 了 很 多 有 趣 的 东 西 。
我 们 将 继 续 探 索 这 个 领 域 , 井 且 利 用 这 种 技 术 , 让 编 程 取 得 更 加 温 和 有 趣 , 为 每 个 人 所 用 , 去 解 决 他 们 生 活
中 的 问 题 。
科 技 , 以 人 为 本 。
除 了 codelab.club, 这 个 领 域 还 有 很 多 有 趣 的 探 索 者 。 艾 伦 . 凤 正 场 领 导 一 个 十 命 性 的 项 目 dynamicland, 如
果 进 展 顺 利 ,dynamicland 将 重 塑 人 们 对 计 算 的 理 解 。 艾 伦 . 凯 在 施 乐 实 验 室 的 工 作 , 塑 造 了 今 天 计 算 机 的 形
态 , 我 们 认 为 他 在 dynamicland 的 工 作 将 塑 造 未 来 。codelab.club 计 划 明 年 三 月 份 去 dynamicland 实 验 室 参
观 。 我 们 喜 欢 dynamicland 的 理 想 : 将 数 字 力 量 赋 予 给 所 有 人 , 而 不 是 收 聚 在 技 术 精 英 手 中 。
dynamicland 远 不 是 一 般 的 图 形 化 编 程 , 口 把 现 实 世 界 的 真 实 物 体 任 为 编 程 元 素 , “ 现 实 便 是 计 算 引 擎 “, 这
是 极 为 激 进 而 令 人 热 血 沸 腾 的 想 法 。 如 果 你 对 此 感 兴 趣 , 可 以 参 考 我 此 前 的 文 章 :“ 下 一 件 大 事 “ 是 一 个 房 间 。
收 尾
最 后 我 想 用 reddit 两 个 用 尸 的 评 论 来 结 束 本 文 .
@zushiba 评 论 道 :
虹 然 我 同 意 文 荣 的 依 多 观 炉 , 但 我 想 指 出 , 当 低 级 编 程 语 言 统 治 世 界 时 , 高 级 编 程 语 言 也 遭 遇 类 似 的
说 法 。
八
01:44 ` ssssssdk 一 e a 山 仁 @ 求 )
J 不 安 全 一 wwj718.github.io
虹 然 我 同 意 文 荣 的 依 多 观 炉 , 但 我 想 指 出 , 当 低 级 编 程 语 言 统 治 世 界 时 , 高 级 编 程 语 言 也 遭 遇 类 似 的
说 法 。
他 们 说 :“ 这 样 做 会 混 淆 代 码 实 际 上 在 做 什 么 , 或 者 产 生 一 代 不 知 道 编 译 器 如 何 工 作 的 程 序 员 。 “
我 并 不 是 说 可 视 化 编 程 会 接 管 世 界 , 但 这 些 都 是 可 以 解 决 的 问 题 。
@not_perfect_yet 评 论 道
我 不 喜 欢 看 到 人 们 诉 毁 一 个 没 有 真 正 探 索 过 的 想 法 。 如 果 我 们 现 在 扔 掉 火 井 回 到 树 上 , 我 们 将 永 远 不
会 使 用 内 燃 机 。
参 考
Visual Programming - Why its a Bad Ildea
reddit Visual Programming - Why it「s a Bad Idea
Visual programming language
可 视 化 编 程 Langauges 的 未 来
。 第 四 代 编 程 语 言
。 Squeak
。 Etoys
。 Snapl
Toy-Con Garage
文 章 作 者 : 种 瓜
上 次 更 新 : 21 November 2018
八