如果你死了,你的代码怎么代替你继续存在下去

问你个问题,如果你写的程序代码特别耐用,特别引人注目,几乎全世界的人在用。那么问你个比较丧的问题,有一天你死了,你怎么维护你的程序代码呢?

你可能听说过这个人:Philip Hazel 。他在剑桥大学获得博士学位,1971 年加入 Cambridge Computing Service 担任软件开发者。他曾经负责过邮件服务,这段经历促使他决定使用 C 编译器和运行时为现代操作系统开发一个邮件传输代理(Message Transfer Agent 或 MTA)。

1995 年 3 月,Philip Hazel开始着手开发 Experimental Internet Mailer(就是大名鼎鼎的Exim),到 1995年11 月该项目完成了基本的邮件收发功能,他的同事想要试用 Exim ,但被他以还没写说明文档为由拒绝了(这可能是程序员拒绝发布无文档代码的已知第一个案例,非常非常的具有骑士精神)。

完成说明文档的初稿之后Philip Hazel才开始公开 Exim。

Richard Stallman 说服Philip Hazel将 Exim 的许可证切换到了著名的 GPL。Exim后来被移植到到包括 Linux 的其它操作系统,今天它是世界最流行的 MTA,其流行度超过了 Hazel 自己的预期。再后来邮件管理需要正则表达式,因为已有的方案满足不了需求,Philip Hazel就动手开发了自己的 Perl-Compatible Regular Expressions(PCRE)。

PCRE 的新版本 PCRE2 如今被 Git、Grep、MariaDB、nmap 在内的应用广泛使用。

Hazel 在 2007 年退休时将 Exim 的维护交给了其他人,神奇的是,如今高龄 80 岁的Philip Hazel还在维护 PCRE2,随着身体机能减退,精力不济,Philip Hazel正考虑转交其维护权。

Philip Hazel认为,维护一个成功软件所需的努力远远超过开发该软件本身,创业难,守成更难啊,因为目前还没有人接手维护 PCRE,Philip Hazel还在等待有资格的维护者能挺身而出将 PCRE2 带到未来。

如果你死了,你的代码怎么代替你继续存在下去?

#开源

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/857763.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Web3初识系列】如何连接 Binance Smart Chain通过交易对绘制 k 线?

连接 Binance Smart Chain通过交易对绘制 k 线 安装 web3 pip install web3连接到 Binance Smart Chain 使用公共的 BSC 节点 URL。 from web3 import Web3# 连接到 BSC 公共节点 bsc_url "https://bsc-dataseed.binance.org/" web3 Web3(Web3.HTTPProvider(bs…

【PL理论】(26) 内存管理:C语言实现内存管理的方式 | 栈帧的分配和释放 | C/C++ 手动内存管理

💭 写在前面:在前面的章节中,语言的语义只分配了新的内存位置,我们没有讨论内存位置的释放。在实际的语言中,内存位置在执行过程中会被不断地分配和释放。下面的章节,我们将讨论编程语言的这种内存管理&…

套路化编程:C# ListView 保存、恢复列宽度

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github:codetoys,所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的,可以在任何平台上使用。 目录 技术基础 保存列头 删…

基于IDEA的Maven(依赖介绍和引用)

如何通过一个坐标信息(依赖)去引用 ,某个"jar 包" 会在这篇博客进行学习。 目录 一、学习开始 (0)项目的结构组成和 "pom.xml" 文件内容。 (1)首先需要一个标签&#xf…

堆及其java手写实现

堆(Heap)是计算机科学中一种常用且高效的数据结构,通常被实现为一个完全二叉树。这个树形结构中的每个节点都有一个关联的值,并且这个值遵循一定的规则,从而使得堆具备特殊的性质,主要分为两种类型&#xf…

方差分析【单/双因素方差分析】

文章目录 方差分析一、单因素方差分析(Analysis of Variance)1.方差分析在做什么?2.方差分析的思路:3.方差分析中的计算:4.构造F统计量: 二、双因素方差分析(Two-way ANOVA)1.双因素方差分析在做什么&#…

时序预测 | Matlab基于Transformer多变量时间序列多步预测

目录 效果一览基本介绍程序设计参考资料 效果一览 基本介绍 1.Matlab基于Transformer多变量时间序列多步预测; 2.多变量时间序列数据集(负荷数据集),采用前96个时刻预测的特征和负荷数据预测未来96个时刻的负荷数据; 3…

53【场景作图】纵深感

1 想清楚什么是前 什么是后 如果背景虚化,就不要处理地很平面,如果很平面,就留一个清晰的边缘 2 重叠 遮挡 被遮挡的物体会更远

Java中的内存管理:从堆到栈的深入解析

Java中的内存管理:从堆到栈的深入解析 大家好,我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编,也是冬天不穿秋裤,天冷也要风度的程序猿!今天,我将为大家详细介绍Java中的内存管理&#x…

微信小程序在独立分包中安装自定义依赖组件,构建自定义 npm 依赖

在微信小程序app.json文件中创建一个独立分包 然后在分包文件夹下 创建一个 package.json文件,在文件中添加你要安装的依赖文件及版本 在终端中开始安装依赖:npm i 依赖安装完成后,会产生一个 node_modules文件 需要项目的根目录下的projec…

动态规划:基本概念

Dynamic Programming 动态规划(Dynamic Programming, DP) 是一种算法设计技巧,通常用来解决具有重叠子问题和最优子结构性质的问题。它通过将问题分解为更小的子问题,逐步解决这些子问题并将结果存储起来,以避免重复计…

【深度学习】python之人工智能应用篇——图像生成技术(二)

说明: 两篇文章根据应用场景代码示例区分,其他内容相同。 图像生成技术(一):包含游戏角色项目实例代码、图像编辑和修复任务的示例代码和图像分类的Python代码示例 图像生成技术(二)&#xff1a…

外星人Alienware m18R1 原厂Windows11系统

装后恢复到您开箱的体验界面,包括所有原机所有驱动AWCC、Mydell、office、mcafee等所有预装软件。 最适合您电脑的系统,经厂家手调试最佳状态,性能与功耗直接拉满,体验最原汁原味的系统。 原厂系统下载网址:http://w…

Redis源码学习:从头开始掌握Redis核心设计

Redis 代码整体架构 了解 Redis 代码的整体架构将帮助我们快速定位各个功能模块对应的代码文件,并全面了解 Redis 的功能。 Redis 目录结构 Redis 的源码总目录下包含四个子目录:deps、src、tests 和 utils。每个目录都有其特定的作用。通过了解目录结…

React逻辑复用的方式都有哪些

在日常开发中,能够优雅的复用组件和逻辑,是优秀开发者的职责。在react中,复用逻辑的方式有很多,可以适用于不同的业务场景。今天说三个比较有代表性的,Render Props、HOC、Hooks Render Props 创建一个接受函数作为其…

PyQt学习之简介

1.Python图形界面称为程序的用户交互界面,英文称之为 UI (user interface) Tkinter 基于Tk的Python库,Python官方采用的标准库,优点是作为Python标准库、稳定、发布程序较小,缺点是控件相对较少。 wxPython 基于wxWidgets的Py…

“拿来主义”学习边框动画(附源码)

“拿来主义”学习边框动画,附源码,CV可用 扫码关注:小拾岁月,发送 “边框动画”,获取源码。 需求分析 从边框的旋转动画,我们可以看出,可以在按钮元素的下方添加给 360旋转 的元素。同时&…

观察者模式(大话设计模式)C/C++版本

观察者模式 扩展&#xff1a;观察者模式——委托 C 参考&#xff1a;https://www.cnblogs.com/Galesaur-wcy/p/15905936.html #include <iostream> #include <list> #include <memory> #include <string> using namespace std;// Observer类 抽象观…

人工智能导论笔记

有关知识表示和推理的零碎知识点 人工智能导论复习题和概念-CSDN博客 机器学习篇 机器学习分类&#xff08;根据样本数据是否带有标签&#xff09;&#xff1a;监督的机器学习、无监督的机器学习、半监督学习。 监督学习又称为“有教师学习”。在监督学习中&#xff0c;模型…

MySQL 面试突击指南:核心知识点解析2

事务并发可能引发的问题 MySQL 是一个客户端/服务器架构的软件,对于同一个服务器来说,可以有多个客户端与之连接,每个客户端与服务器连接后,可以称为一个会话(Session)。每个客户端都可以在自己的会话中向服务器发出请求语句,一个请求语句可能是某个事务的一部分,也就…