← 返回信息流
AI 资讯Hacker News·1 天前

制作与关联的文化

原标题:Cultures of Making and Relating

速览

本文探讨了制作与关联的文化。

AI 深度解读

编程与关联的文化:从黑客精神到科学研究的软件困境

背景

近期,Tomáš Petříček 出版了《编程文化——编程概念与方法论的发展》(Cultures of Programming - The Development of Programming Concepts and Methodologies)一书。该书从五种相互交织的文化视角出发,深入分析了编程的历史。书中提供了大量引人入胜的见解,值得每一位技术从业者阅读,至少应通读第一章。

本文旨在将书中提出的这五种文化映射到更广泛的技术领域以及科学研究实践中,探讨这些文化如何塑造了软件开发的现状,以及它们如何在科学计算这一特定领域中产生张力与融合。

核心内容

五种编程文化的定义

Petříček 在书中识别并定义了以下五种编程文化,每种文化代表了开发者对软件本质的不同理解:

  1. 数学文化 (Mathematical Culture):将计算机程序视为数学实体,认为其属性可以通过形式化证明来验证。
  2. 黑客文化 (Hacker Culture):将编程视为与运行中的机器进行的一场对话,强调互动与即时反馈。
  3. 工程文化 (Engineering Culture):将程序视为技术制品,认为其构建过程是在期望属性与经济约束之间进行权衡的技艺,遵循既定的最佳实践。
  4. 管理文化 (Management Culture):将软件视为工业产品,认为其质量取决于合适的组织结构和管理流程。
  5. 人本文化 (Humanist Culture):将计算和程序视为人类思维和符号系统的延伸与外化,强调上下文和语义。

个体通常会根据自身背景采纳一种主导文化,但在不同情境下也会融合其他文化的视角。

两大核心范畴:制造与关联

作者观察到,这五种文化可以归纳为两个主要范畴:

  • 制造软件 (Making):包括黑客文化、工程文化和管理文化。它们关注的是软件的构建过程。
  • 关联软件 (Relating):包括数学文化和人本文化。它们关注的是人与软件之间的认知关系及软件的意义。

这两个范畴并非完全独立。例如,如果关注软件具有某些形式可证明的属性(数学文化),那么在软件构建的所有阶段(工程/黑客文化)都必须考虑这一要求。

文化在非编程领域的映射

这些文化并非编程独有,它们在更广泛的制造和科研领域中有着深刻的对应关系:

  • 工程与管理文化:这对组合长期以来主导着制造业。工程关注技术细节,管理关注人力协调。
  • 黑客文化作为工匠的重生:黑客被视为工匠的现代 reincarnation(转世/化身)。他们通过双手制作事物,并持续整合感官反馈;他们倾向于独立工作或组成小型自组织团队,推崇“在做中学”而非正规教育。
    • 权衡类比:黑客制作的定制化软件与工程师和管理者合作的工业化大众软件之间的权衡,类似于定制西装宜家家具之间的权衡。
  • 数学与人本文化的张力
    • 数学文化并非指学术上的数学学科,而是指将形式化方法应用于软件。
    • 人本文化强调关于软件的上下文推理。
    • 核心冲突:形式化需要去语境化(decontextualisation),这导致了“形式可证明的属性”与“上下文相关的属性”之间的紧张关系。形式方法可以严谨地证明某些属性,但这些属性在具体的应用上下文中往往并非最相关的。这种形式推理与非形式推理的张力也存在于其他智力学科中,例如科学界既有定性(非形式)研究也有定量(形式)研究,且存在偏向其中一方的亚文化。

科学研究的软件文化演变

科学研究软件继承了编程文化和科学研究文化的双重遗产,其演变历程如下:

  1. 早期(1950s-1970s):工匠与黑客时代

    • 早期科学家像工匠和黑客一样工作:独立或小团队作业,交替进行制作(仪器、实验设置)和观察。
    • 组织结构为非层级制的学术团体,尊重个人自主性。
    • 软件通常是小到中规模的 Fortran 程序,除编译器外无其他依赖。
    • 少数研究者采用人本文化,像审稿期刊文章一样发布和审查软件。
  2. 中期:工业化与管理化

    • 随着软件规模和复杂性增加,可重用库(如 1970 年代的 LINPACK)变得重要。
    • 软件开发逐渐从研究中分离出来,成为由工程文化主导的活动,最终确立了“研究软件工程师”这一独立职业。
    • 部分科学活动开始工业化,并依据管理原则组织。这种由资助方强加的管理文化与研究固有的探索性本质存在严重的不匹配。
  3. 现状:文化的混合

    • 黑客文化在研究项目中生产的软件中依然占据主导地位,如今常表现为计算笔记本(computational notebooks)或工作流。
    • 数学文化在研究软件中扮演次要角色,这令人惊讶。作者推测原因是缺乏成熟的软件形式化方法。定量科学主要依赖几十年前已成熟的数学,而非前沿数学研究。
    • 在软件形式化方法中,编译器提供的静态类型检查几乎是唯一广泛可用的方法。科学家对待静态类型检查的态度(拥抱或厌恶)与软件开发者无异,这也是工程文化与黑客文化之间张力的最直观体现。

关键要点

  • 文化二分法:编程文化可分为“制造”(黑客、工程、管理)和“关联”(数学、人本)两类,前者关注构建,后者关注意义与验证。
  • 黑客即现代工匠:黑客文化与手工艺传统一脉相承,强调手工技艺、感官反馈和非正式学习,其产物与工业化软件存在“定制 vs 标准化”的权衡。
  • 形式化与上下文的冲突:数学文化追求形式化证明,但形式化往往需要剥离上下文,导致证明的属性可能与实际应用中的关键属性脱节。
  • 科研软件的工业化悖论:科学研究从早期的“工匠模式”向“工业管理模式”转变,但由外部强加的管理文化往往与研究探索性的本质相冲突。
  • 静态类型检查的争议:由于缺乏成熟的软件形式化方法,静态类型检查成为连接数学严谨性与工程实用性的主要桥梁,也是工程文化与黑客文化冲突的焦点。

意义与影响

这篇文章不仅是对编程历史的梳理,更是对当前技术生态和科研范式的深刻反思。

首先,它揭示了技术实践背后的认知框架。开发者和管理者往往陷入“工程-管理”视角的盲区,忽视了“黑客-工匠”的创造力和“数学-人本”的严谨性与语义价值。理解这五种文化有助于团队在协作中更好地协调不同视角,例如在追求交付速度(工程/管理)的同时,保留探索空间(黑客)并确保逻辑正确性(数学)。

其次,对于科学研究领域,文章指出了当前研究软件生态的结构性矛盾。随着科研日益依赖软件,研究软件工程师的职业化虽然提高了效率,但也可能导致软件与科学探索过程的脱节。黑客文化在计算笔记本和工作流中的复兴,表明科学家仍在寻求一种既能保持探索灵活性,又能利用现代工具的方法。

最后,文章提出的形式化方法的局限性具有普遍意义。在追求软件可靠性的过程中,我们不应盲目崇拜形式化证明,而应意识到“可证明的正确性”与“上下文中的有用性”之间存在天然张力。这提醒我们在构建关键系统时,需要平衡形式验证与领域特定的上下文推理,避免陷入“正确但无关”的技术陷阱。

查看原文 →blog.khinsen.net