热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

上古卷轴5json文件修改_圣战简史——编辑器篇:上古时代

原文发表在我的公众号kimmyfun,欢迎关注及时获取更新。缘起你知道程序员是个了不得的群体,这群人其实是最宗教,最容易被煽动和感染的群体
c96d48f7b41d7fbe4b1c9e4e76abe1fe.png
原文发表在我的公众号 kimmyfun,欢迎关注及时获取更新。

缘起

你知道程序员是个了不得的群体,这群人其实是最宗教,最容易被煽动和感染的群体之一。每个人都多多少少的带着无数种信仰写出一行行的代码,这些信仰指导着他们的工作,学习和仅有的一部分娱乐,包括且不限于,建立鄙视链、划定群体和引发圣战。

我曾试图分析过为什么程序员们对圣战这么热衷,后面发现最终都会落地到宗教性上。任何工具或者系统,作为程序员日常的一部分,都因为习惯、崇尚的哲学和各种奇怪的原因,被作为了圣战的战场:编辑器、操作系统、程序设计语言、不同的编码习惯、不同的工程流派等等。

我个人其实很反感这种感觉,所以对任何圣战相关的话题我都会保持一个中立的态度(当然除非是为了活跃气氛吼一句,“PHP 是最好的编程语言”)。毕竟,所有的工具,只有被好好使用才是有用的工具,这种很大程度上出于自身的倾向形成的圣战,只能说明个人的惰性。不过,另外值得提的一点,战争有时候是能够推进科技进步的。程序员的圣战也一样。虽然可能花在互怼上的时间一定程度上影响了效率,但相互争论之后的结果一定是某一方或者两方尝试去提升自己的实力:进而把工具、系统或者理论变得更好。

这也是为什么我想到要写简史的原因。能让我们进步的事情是值得记录和赞扬的,虽然他们本质上可能并不是为了进步。

从最基本的工具说起

曾经在跟同事一起 pair 的时候,他进到一个运行中的 docker 容器里面,发现找不到任何一款趁手的编辑器来编辑配置文件了。因为要知道为了尽量保证容器清量我们肯定是让容器里的东西尽可能的越少越好。这个时候就看到他有点慌,毕竟这种如果不这样做把编辑好的文件复制到内网再放到容器里这样的过程是非常折腾的。

大部分人遇到这种问题第一个反应也是,apt install vim。作为黄金时代编辑器的胜出者,Vim 已经是 dominant 了。绝大多数情况下在连接远程服务器的时候最趁手的编辑工具一定就是它,这也是当年一个 Vim 党在向我安利 Vim 的时候的理由。

其实解决这个问题根本用不到安装编辑器这么麻烦,毕竟我们现在使用的是终端模拟器,比上古时代的终端好用了不知道多少倍。Linux Shell 又是基于字符流的,所以用标准输入或者 heredoc 可以轻松实现修改文件内容的动作。只是各位基本功和认知不到位,或者没有见识过上古时代的工具,一直出于惯性地以为工具就是这个样子才行,造成的错觉罢了。

你看,了解历史多重要。

回到话题,编辑器这个东西,在上古时代就是个难题。毕竟在上古时代,“文件”这个概念可能都不存在。

打孔卡

这是最早的编程工具了。

如果大家有看过图灵的传记的话肯定知道最早的那个计算机是用什么来做输入的。一个个的转盘转到指定的位置,来表示输入,然后等状态输出的转盘转到特定的位置来表现表示输出。

打孔卡也一样,通过孔的状态来去区分 0 和 1。这样有个好处就是可以通过这张卡的数量来动态的控制输入输出。但是同样还是有问题,当你的打孔卡有地方出错的时候,修改起来十分麻烦,至少某一段打孔卡你要完全重新编辑。

直到后面电子媒介产生,大家可以通过使用特定的编码来存储信息,才有了进一步使用电子输入设备编辑文本和代码的可能性。

TECO

我们看一下上古时代的几个经典编辑器。

第一个能称道的就是 TECO(Text Editor & Corrector)。它首先是一个面向字符的编辑器,其次是一个用于文本处理的编程语言。

TECO 是 PDP-1 时代的产品。在 TECO 之前,有一个叫“昂贵的打字机”(Expensive Typewriter),可以接入 IBM 的打字机作为输入,在 PDP-1 上进行文字处理。这个名字的后半部分来自于另外一个早期的编辑器“巨型打字机”(Colossal Typewriter),作者是 LISP 之父,约翰麦卡锡;前半部分嘛,就是因为 PDP-1 比起打字机来贵得多了。

TECO 的整体思路是为了提升 PDP-1 的利用率,所以在设计思路上与直接通过控制台来编辑文档的思路不同。TECO 会接受两个磁带的输入,一个是源文本磁带,另外一个是更正磁带,TECO 会读取更正磁带上的指令来即时修改源文本磁带上的内容。这样作为操作人员只需要实时输入指令就能实现即时编辑文档了。

所以更正磁带其实就相当于是用来做文本处理的程序,因为 TECO 实现的太过于复杂,以至于这些命令组合起来是图灵完全的。所以,TECO 完全可以作为一个编程语言来用。

TECO 的命令以及后面加入的宏足够强大,以至于后面把编辑宏(Edit MACroS)集合起来打包发布了一个应用,EMACS。

(待续)



推荐阅读
  • 手机上编写和运行PHP代码的最佳软件推荐 ... [详细]
  • PyQt5 QTextEdit:深入解析Python中多功能GUI库的应用与实现
    本文详细探讨了 PyQt5 中 QTextEdit 组件在 Python 多功能 GUI 库中的应用与实现。PyQt5 是 Qt 框架的 Python 绑定,提供了超过 620 个类和 6000 个函数及方法,广泛应用于跨平台应用程序开发。QTextEdit 作为其中的重要组件,支持丰富的文本编辑功能,如富文本格式、文本高亮和自定义样式等。PyQt5 的流行性不仅在于其强大的功能,还在于其易用性和灵活性,使其成为开发复杂用户界面的理想选择。 ... [详细]
  • 本文首先对信息漏洞的基础知识进行了概述,重点介绍了几种常见的信息泄露途径。具体包括目录遍历、PHPINFO信息泄露以及备份文件的不当下载。其中,备份文件下载涉及网站源代码、`.bak`文件、Vim缓存文件和`DS_Store`文件等。目录遍历漏洞的详细分析为后续深入研究奠定了基础。 ... [详细]
  • Spring框架入门指南:专为新手打造的详细学习笔记
    Spring框架是Java Web开发中广泛应用的轻量级应用框架,以其卓越的功能和出色的性能赢得了广大开发者的青睐。本文为初学者提供了详尽的学习指南,涵盖基础概念、核心组件及实际应用案例,帮助新手快速掌握Spring框架的核心技术与实践技巧。 ... [详细]
  • Java中高级工程师面试必备:JVM核心知识点全面解析
    对于软件开发人员而言,随着技术框架的不断演进和成熟,许多高级功能已经被高度封装,使得初级开发者只需掌握基本用法即可迅速完成项目。然而,对于中高级工程师而言,深入了解Java虚拟机(JVM)的核心知识点是必不可少的。这不仅有助于优化性能和解决复杂问题,还能在面试中脱颖而出。本文将全面解析JVM的关键概念和技术细节,帮助读者全面提升技术水平。 ... [详细]
  • 如何利用Git实现高效的多人协作开发(远程仓库应用实例)——Ares Zhao
    Git作为一种分布式版本控制系统,每位开发者都是本地仓库的管理者。然而,为了实现团队间的高效协作,需要将本地的开发成果推送至远程共享仓库,以便其他成员能够同步更新。本文将以GitHub为例,详细介绍如何通过设置和使用远程仓库,实现多人协作开发的最佳实践。 ... [详细]
  • Java 零基础入门:SQL Server 学习笔记(第21篇)
    Java 零基础入门:SQL Server 学习笔记(第21篇) ... [详细]
  • 在 Linux 系统中,`/proc` 目录实现了一种特殊的文件系统,称为 proc 文件系统。与传统的文件系统不同,proc 文件系统主要用于提供内核和进程信息的动态视图,通过文件和目录的形式呈现。这些信息包括系统状态、进程细节以及各种内核参数,为系统管理员和开发者提供了强大的诊断和调试工具。此外,proc 文件系统还支持实时读取和修改某些内核参数,增强了系统的灵活性和可配置性。 ... [详细]
  • 探索 PHP 8.0 的重大更新:轻松获取年度月份数据
    PHP 8.0 引入了多项重要更新,包括增强的类型系统、全新的 JIT 编译器以及联合类型等特性。这些改进不仅提升了性能,还简化了开发流程。本文将重点介绍如何利用 PHP 8.0 的新功能轻松获取年度和月份数据,为开发者提供更高效、更简洁的解决方案。 ... [详细]
  • 在Laravel中实现PHP对JSON数据的发布与处理 ... [详细]
  • Django新手指南:第三步——构建你的首个项目
    在本教程中,我们将引导你完成创建第一个Django应用的步骤。通过实际操作,你将逐步了解Django框架的核心概念和基本功能。从项目结构到视图和模板的实现,我们将详细介绍每个环节,帮助你快速上手并构建出一个功能完整的Web应用。 ... [详细]
  • Django框架进阶教程:掌握Ajax请求的基础知识与应用技巧
    本教程深入探讨了Django框架中Ajax请求的核心概念与实用技巧,帮助开发者掌握异步数据交互的方法,提升Web应用的响应速度和用户体验。通过实例解析,详细介绍了如何在Django项目中高效实现Ajax请求,涵盖从基础配置到复杂场景的应用。 ... [详细]
  • Windows环境下详细教程:如何搭建Git服务
    Windows环境下详细教程:如何搭建Git服务 ... [详细]
  • 内网渗透技术详解:PTH、PTT与PTK在域控环境中的应用及猫盘内网穿透配置
    本文深入探讨了内网渗透技术,特别是PTH、PTT与PTK在域控环境中的应用,并详细介绍了猫盘内网穿透的配置方法。通过这些技术,安全研究人员可以更有效地进行内网渗透测试,解决常见的渗透测试难题。此外,文章还提供了实用的配置示例和操作步骤,帮助读者更好地理解和应用这些技术。 ... [详细]
  • 在Linux系统中Nginx环境下SSL证书的安装步骤与WordPress CDN的高级配置指南
    在Linux系统中,Nginx环境下安装SSL证书的具体步骤及WordPress CDN的高级配置指南。首先,安装SSL证书需要准备两个关键配置文件,并建议在操作前备份相关服务器配置文件,以确保数据安全。随后,本文将详细介绍如何在Nginx中正确配置SSL证书,以及如何优化WordPress的CDN设置,提升网站性能和安全性。 ... [详细]
author-avatar
命运2502901041_350
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有