在 GitHub 复活 80 年代的游戏代码,它们出自第一本售出百万册的计算机书籍

今儿我在 GitHub 看到了一个很眼熟的名字和头像,但是第一时间没想起来他是谁。算了先看看是个什么神仙开源项目,竟然能登上今天的 GitHub 趋势榜首。

该项目是把《BASIC Computer Games》一书中的 BASIC 代码,采用比如:Java、Python、C#、JavaScript 等 8 种流行的编程语言重写一遍。
随着对项目了解得深入,我发现这些游戏都是命令行文字游戏,没有任何好玩的地方,简直就是浪费时间!

搞不懂为什么这个创建仅一年的项目会有 100+ 多人贡献代码?他们为什么都想要“复活”这些一点也不好玩、还是 80 年代的古董游戏代码呢?
接下来就让我们一起来看看,这个开源项目的“前世今生”!
前世
开源项目 basic-computer-games 源于上个世纪 80 年代发行的《BASIC Computer Games》,这是一本记录了许多 BASIC 游戏完整代码的书,说到这里就不得不聊一下 BASIC 语言了。

BASIC 编程语言就是“basic”(基础)单词,顾名思义它是专为计算机初学者设计的高级编程语言。在 1964 年出生在大学校园,主要是为了让当时的大学生更容易使用计算机。

后来随着微型计算机的蓬勃发展,以及 1975 比尔·盖茨创立 Microsoft 把 BASIC 语言的编译器移植到 PC 上,许多微型计算机出厂自带 BASIC 语言,这也让 BASIC 语言走出了校园。

随着 BASIC 语言的热度提升,出现了一些刊登了用 BASIC 语言写的游戏完整代码的杂志,比如:《Creative Computing》。书中的游戏虽然只是文字类游戏,但完整且简单再加上运行 BASIC 代码十分简单,读者仅需花上几分钟就可以把代码抄完并运行起来。
而后面推出的《BASIC Computer Games》一书售出数量比当时的个人电脑都多,后来更是成为了第一本销售了百万册的计算机书籍!

买杂志抄代码的年代你经历过吗?是不是和如今用开源项目一个样。
今生
后来《BASIC Computer Games》这本书成为了许多人的编程启蒙读物,但随着编程技术的更新换代和层出不穷的高级编程语言,让 BASIC 逐渐退出了主流编程语言的舞台,成为了一代程序员的回忆。
今天介绍的 basic-computer-games 开源项目发起者杰夫·阿特伍德(Jeff Atwood)就是那一代程序员。我说看他的头像这么眼熟,原来那个是 Coding Horror 博客的 LOGO,我看过他的书。

他在博客中写道:做个项目是为了让更多人看到《BASIC Computer Games》书中的代码,但是 BASIC 语言比较古老,很难被现在的程序员接受。所以他征求完原书作者的同意后,想把这些代码用现在流行的编程语言重写,但一个人很难完成这些工作,所以他想借助开源的力量完成这件事情。
他想完成这件事情不是因为这些 BASIC 代码有多精妙或是游戏有多好玩,只是不想让这段历史、这本书被遗忘。 把代码变成老照片保存,而不是仅剩图书封面。
如果你也有关于 BASIC 的回忆,那就动动手指给 basic-computer-games 提个 PR 留下了你和 BASIC 最后的印记。

就像《泰坦尼克号》的故事开始于一张满是淤泥的素描画,或许多年以后双鬓泛白的你也会指着某个开源项目,给后辈讲述你的故事。
结尾
历史的车轮滚滚向前,时代的脚步永不停歇。我虽然没经历过 BASIC 语言的时代,但我在查资料写这篇文章时隐约看到了 BASIC 辉煌的光。

带领一代人进入编程领域的 BASIC 语言落下了帷幕,不知道这篇文章勾起了多少人关于 BASIC 的回忆,欢迎留言和我们分享你和 BASIC 的故事。
关注「HelloGitHub」公众号第一时间收到更新
在 GitHub 复活 80 年代的游戏代码,它们出自第一本售出百万册的计算机书籍的更多相关文章
- 1.cocos2dx存储卡的游戏代码、而游戏移植到“华为荣耀”电话、问题的总结移植
1记忆卡片游戏代码 CardItem.h #pragmaonce #ifndef__CardItem_H__ #define__CardItem_H__ #include"cocos2 ...
- python学习笔记05:贪吃蛇游戏代码
贪吃蛇游戏截图: 首先安装pygame,可以使用pip安装pygame: pip install pygame 运行以下代码即可: #!/usr/bin/env python import pygam ...
- TODO:Github的使用技巧之同步代码
TODO:Github的使用技巧之同步代码 GitHub 是一个面向开源及私有软件项目的托管平台,因为只支持 Git 作为唯一的版本库格式进行托管,故名 GitHub. GitHub 于 2008 年 ...
- 使用GitHub for Windows客户端管理京东代码库项目
1.下载并安装 GitHub for Windows 客户端 https://windows.github.com/ 2.在京东代码库中新的代码库,可以创建私有的代码库 https://code.jd ...
- java俄罗斯方块游戏代码
java俄罗斯方块游戏代码: package com; import java.awt.Color; import java.awt.Graphics; import java.awt.event.K ...
- Github的使用/git远程提交代码到Github
Github的使用/git远程提交代码到Github Github是全球最大的社交编程及代码托管网站 Git是一个开源的分布式版本控制系统 1.基本概念 Repository(仓库):仓库用于存放项目 ...
- “限时分享“ 本地80个小游戏 HTML+CSS+JS源码分享
里面有80款小游戏源码,支持内置导航,可以拿来练手或者消磨时间,具体功能以及游戏请看下图 维京战争小游戏源码 链接:https://pan.baidu.com/s/ ...
- 如何在github上fork以及同步原作者代码
参考网址:https://blog.csdn.net/llll2020/article/details/86140488 转 GitHub上fork别人打代码后如何保持和原作者同步的更新 </ ...
- 简介GitHub的使用方法--管理个人代码
转自 http://blog.csdn.net/tengyeyijiu/article/details/46446283git是一个分布式版本控制系统,最初由linus torvalds编写,用作Li ...
随机推荐
- java静态方法调用非静态方法
我们都知道,静态static方法中不能调用非静态non-static方法,准确地说是不能直接调用non-static方法.但是可以通过将一个对象的引用传入static方法中,再去调用该对象的non-s ...
- Linux系统的负载与CPU、内存、硬盘、用户数监控的shell脚本
利用Shell脚本来监控Linux系统的负载.CPU.内存.硬盘.用户登录数. 这几天在学习研究shell脚本,写的一些系统负载.CPU.内存.硬盘.用户数监控脚本程序.在没有nagios监控的情况下 ...
- Spring Boot中使用Mybatis
一.步骤 导入依赖:MySQL驱动.Druid依赖.MyBatis与Spring Boot整合依赖.Lombok依赖 在Service接口实现类上添加@Service注解 在Dao接口上添加@Mapp ...
- C++易错小结
C++ 11 vector 遍历方法小结 方法零,对C念念不舍的童鞋们习惯的写法: void ShowVec(const vector<int>& valList) { int c ...
- 【Java 基础】 instanceof和isInstance区别详解
obj instanceof class 也就是说这个对象是不是这种类型, 1.一个对象是本身类的一个对象 2.一个对象是本身类父类(父类的父类)和接口(接口的接口)的一个对象 3.所有对象都是Obj ...
- springMVC WebApplicationInitializer 替代web.xml 配置Servlet 之原理
Servlet 3.0之前 ,xml 配置 在过去搭建spring + springMCV ,首先第一步要做的是什么 ,就是要配置web.xml 文件 ,把springMVC 中的Servlet 加 ...
- 爬虫之正则表达式re模块
为什么要学正则表达式 实际上爬虫一共就四个主要步骤: 明确目标 (要知道你准备在哪个范围或者网站去搜索) 爬 (将所有的网站的内容全部爬下来) 取 (去掉对我们没用处的数据) 处理数据(按照我们想要的 ...
- XML(可拓展标记语言)基本概念
一.XML文档基本结构 <?xml version="1.0" encoding="utf-8"?> <students> <st ...
- Android Service VS AsyncTask VS Thread
这三种方式的设计目的是不同的. Service: 适用于在后台长期持续运行的动作,如:播放音乐,查看网络数据.注意,在开发文档中,service本身是在UI线程中,所以所需的操作应该创建一个新的线程来 ...
- <转>Hadoop入门总结
转自:http://www.cnblogs.com/skyme/archive/2012/06/01/2529855.html 第1章 引言 1.1 编写目的 对关于hadoop的文档及资料进行进一步 ...