前言

BASIC为教学而生,因其开放、简单和易用,迅速攻占各大机器,开启了探索的魔盒。BASIC以其优秀的底层能力,曾兼职个人PC系统的半边天。BASIC的广泛与基础,促进个人计算机的崛起。BASIC的穿针引线,促使微软成立,背靠IBM。因星际旅行,成就彼此,走向辉煌的未来。

本篇紧承《明比阅历浅,暗拼体力衰,指下讲武德,码上笑春风》,继续给在途的朋友分享开发途径的格局。深刻理解VB的历史,有助于我们正确地认识VB,更合理地使用这项伟大的工具。

一、亲历曼哈顿计划,决心推广编程

美国达特茅斯(Darmouth)学院的院长John Kemeny参与了曼哈顿计划,担任程序员。他师从冯·诺依曼,也是爱因斯坦的助手。这不仅让他精通计算机,更明白计算机在该计划中的作用和影响力。

达特茅斯学院的数学教授Tom Kurtz则是计算机先驱约翰·图克(John Tukey)的学生。当他在普林斯顿大学的数学专业读研究生时,参加了加州大学洛杉矶分校的暑期课。在那里,他第一次计算机结缘,便产生了浓厚的兴趣。后来很快学会编程,也深知计算机对人类的影响。

1944年,第一台电子计算机MARK I问世。紧接着,第二台电子计算机ENIAC在1946年亮相。这让Kemeny和Kurtz意识到,电子计算机不会止步,计算机在推动教学和科研的发展中,具有巨大的潜力,于是决心教授学生编程。

二、Fortran教不会,徒手DIY新语言

大规模集成电路前的计算机,几乎都是大型机,造价昂贵,主要服务于科学研究。上世纪60年初,达特茅斯学院数学系就添置了一台LGP-30计算机,以便实施科研任务。这是一种相对便宜且功能一般的机器,仅有30K的RAM。但这足以让Kemeny实施他的计算机教学实验。

1956年,专为科学计算研发的Fortran(Formula Translation)语言,一经发布便获得科学界好评。到1960年,Fortran的应用已很成熟,身为数学教授的Kemeny和Kurtz自然想到了,用该语言进行教学。但是他们忽略了自己懂计算机编程的背景,以为教和学都很Easy。临阵时,学生们一脸脸的懵让他们傻眼了。这才意识到,虽然Fortran简单,但毕竟不是所有人都是科学家,也并非所有人都能掌握。Fortran能否再简单呢?让学心理学的,学哲学的,学文学的都可了解计算机呢?

说干就干,到1962年,DOPE(达特茅斯超简化编程实验)诞生了,这是一项专为教学而准备的语言试验。在DOPE中,每一行代码由行号、操作和参数组成。受限于硬件条件(30K的RAM), Kemeny将运算符都简化为1个字母,无分隔符,每行只执行1个简单的运算,参数列表具有固定长度。没有字符串,剥夺了数据类型(所有变量都为浮点数,打印时有小数点就是浮点数,没有就不是),使用「T」跳转到特定行号,行号是一个隐式数字(1到99),按代码块处理循环等。

DOPE在今天的程序员看来显得不可思议,很多做法不够专业,几乎没什么价值。但它向学生解释什么是计算机,如何运作的已经足够了。更重要的是,它验证了Kemeny的想法,为后来Kurtz继续开发BASIC提供了基础。

三、BASIC诞生,开启探索魔盒

1964年5月,在达特茅斯学院学院报告大厅的地下室里,由Kemeny、Kurtz和其学生一起研发的新语言诞生了。它就是BASIC,全称为初学者通用符号指令代码(Beginner's All-purpose Symbolic Instruction Code)。它借鉴了Fortran 66和Algol60语言特点,设计为让普通人也能掌握的编程语言。这在科学家和工程师当道的大型机年代,引起了巨大的反响。

通过达特茅斯学院的大型机,利用分时系统在校园里建起了互动的计算机环境,教师、学生,甚至附近的中学都可以访问。BASIC开启了计算机领域的全方位探索,足球、星际旅行等游戏,社会、人文科学,计算机约会等,显示出了个人市场的强大生命力。

BASIC真正伟大之处,在于Kemeny和Kurtz明知他们开启了什么样的魔盒,却仍然不取分文地将之公之于众,其胸怀远胜于Unix的持权方。借着BASIC注入的热情,在全球范围内很快就掀起了计算机世界的工业革命。1970年左右,Apple、IBM等各大厂商,纷纷在自家计算机上推出BASIC。

四、BASIC既当爹又当妈

随着数字设备公司(DEC)的PDP(Power Distribution Plan)计算机生产线风靡世界,连Fortran都学不会的人都开始加入购买队伍,计算机的个人市场开始崭露头角。为了吸引更多卖家,DEC取消了BASIC的编译执行机制,转而采用解释执行,开启了BASIC编译和解释执行的双重格局。

当时大型机和小型机上已有Unix操作系统,微机上却没有。一方面没有需求,另一方也没有装载能力。微机仅需能从ROM中读取的监视程序(Monitor),用于BIOS初始化屏幕、键盘、软驱和打印机。恰巧BASIC可以直接操作BIOS,还可以跨过BIOS直接操作硬件,这在游戏领域里大受欢迎,成为绝对的主宰。用BASIC编写的星际旅行长期占据着DEC主机的内存和CPU。

因此在早期的个人计算机上,BASIC既充当着简易操作系统,又是游戏编制的不二之选,这为BASIC的广泛应用奠定了坚实的基础。为各大厂商的计算机编写BASIC解释器,便成了很迫切的任务,微软早期就干这活起家。

五、CP/M开创微机系统标准

1971年,日本人认为计算机市场会像晶体管收音机那样,但是发明晶体管的美国人还没发明出微处理器。于是给Intel投资,用来制造4位处理器。很快世上首块微处理器芯片4004诞生了,但是在大型机和小型机当道的当时,并没有惊起波澜。因为4位处理器,不足以用户编写他们热爱的星际旅行。

无奈之下,Intel开始大甩卖,甚至打出了25美元卖一台微机的广告。正是这条广告在加里·基尔代尔眼里,发生了化学反应。基尔代尔曾是IBM的程序员,操弄着价值300万美元的IBM360.但当他看到微处理器时,毅然选择离开, 转而研究Intel4004。

基尔代尔决定用4004为父亲研发一款导航计算器,但很快就发现4004的指令集不够用,于是与Intel公司取得联系。Intel公司对其开发的应用很感兴趣,便在1973年邀请基尔代尔参观,并将最新研发的8位芯片8008交给他研发。几个月后,PL/M语言诞生了,并在DEC公司的TOP-10主机上,成功开发出了微机控制程序CP/M,从此Intel芯片上有了自己的通用控制调试程序。

CP/M将操作系统分为上中下三层结构。上层为控制台命令处理程序,处理类似于复制、粘贴和新建这样的命令。中层为磁盘操作系统,实现对磁盘文件的自动存取。下层为BIOS,处理基本输入输出。CP/M的创新,让其迅速成为Intel芯片的标准操作系统,在该系统上奔跑的应用软件有数千种之多。不仅让Intel站稳微处理器龙头地位,更让CP/M的结构体系成为PC操作系统的事实标准。

六、BASIC牵线,比尔.盖茨掘首金

1974年Intel推出8位芯片8080,真正的微型计算机才成为可能。1975年,MITS电脑公司推出了该芯片的首台个人电脑Altair8800,其搭载的正是CP/M。比尔.盖茨和保罗.艾伦,洞察到了个人PC市场的巨大潜力,决定为Altair8800开发BASIC解释器。最终卖给MITS公司,创立了微软。

1978年,Intel推出第1块16位芯片8086,SCP公司决定开发该芯片的个人电脑,但CP/M迟迟未升级到16位,于是决定自己开发16位的操作系统。Tim Paterson闪亮登场,他不仅充分借鉴CP/M的结构体系,甚至连用户界面和编程接口都一样,还引入了微软BASIC解释器的FAT文件系统。1980年8月,仅仅4个月,QDOS就诞生了。意为简易的操作系统(Quick and Dirty Operating System),可完美运行CP/M上的程序。

1980年10月,IBM决定推出基于Intel8086芯片的PC,于是找到基尔代尔创立的Digital Research公司,想要CP/M系统。但基尔代尔忙于销售火爆的8位CP/M,完全未顾及到这单生意,就这样拱手将机会让给了微软。

当时IBM还不知道QDOS,但比尔盖茨却因为BASIC,知道SCP公司正在研发的QDOS。当IBM寻求系统无果之后,想起了做BASIC解释器的微软,于是让微软提供操作系统。比尔.盖茨迅速以2.5万美元的代价,从SCP获得了QDOS的使用许可,做成了这单生意。就这样,在BASIC的穿针引线下,微软终于靠上了IBM这棵大树。

七、背靠IBM,紧握游戏生态,微软终成巨头

到1981年7月,微软对IBM PC的设计已经非常了解,决定不再使用QDOS的许可模式,而是又花了5万左右将QDOS买了下来,同时也挖走了Tim Paterson。微软将其更名为MS DOS,意为磁盘操作系统(Disk Operating System)。

1981年8月,IBM正式推出个人PC品牌IBM PC,在其ROM中固化了微软的BASIC解释器,系统使用MS DOS1.14版。

1983年,BIM又推出配备了磁盘的IBM PC/XT,使用MS DOS2.0。微软针对PC开发出了首个BASIC编译器版本,也即IBM BASIC1.0。虽然只支持64K程序,但足够开发星际旅行游戏。至此,在小型机上的星际旅行,终于可搬到个人PC上了。这为IBMPC吸引了大量购买者。这促使IBM在1984年里就推出了下一代个人电脑IBM PC/AT,使用MS DOS3.0。

1985年,借鉴Turbo Pascal的思想,微软为BASIC创建了鼠标驱动环境。但遭到IBM的拒绝,微软不得不将其更名为QuickBASIC2.0,暗示为IBM BASIC1.0的后继。在1987年重新包装后,更名为ProfessionalBASIC。该版本已具有64K程序空间和64K数据空间,星际旅行的最新版也可搬家了。

1989年,MS DOS4.0开始支持鼠标和图形界面。微软开始与IBM合作研发OS/2,为放弃DOS做准备。到1991年,MS DOS5.0内置QBASIC编程环境,成为最后1版独立的DOS产品。

1991年,1个全鼠标驱动的BASIC诞生了,它就是VisualBasic1.0。虽然这个版本不能与数据库打交道,但它支持星际旅行的图形化开发。随着Windows3.0的发布,大获成功,微软也最终与OS/2分道扬镳。 再后面的事(可参考《早判了,VB已死,但我说话了么?》中VB的历史),几乎人尽皆知。

八、BASIC给人的启示

与BASIC一脉相承的VB,吸收了计算机发展史上,数种优秀开发语言的优点,最终落脚于服务普通大众。因为心胸开阔的Kemeny和Kurtz深知,人才是计算机的灵魂和归宿,普通大众才能赋予计算机无限可能。BASIC的历史脉络,也告诉后继的使用者,简单里有深厚的哲学,抓住得住时机,才有自己的时代。

不必苛责VB什么,找到合适的位置,这是BASIC立足于教育,带给我们的启示。诚如Kemeny所说,关键要看用户能否意识到哪些是计算机可以做的,哪些是计算机不能做的。但很肯定,它能给企业和大部分私人生活带来影响。

<更多内容尽在BtOffier,欢迎关注同名(头条号/百度号/公众号/企鹅号...)获取更多后续内容>

VB前传,从教学到游戏,再到系统,似乎每步都是精心设计相关推荐

  1. Xsolla采访《仙剑5前传之心愿》

    说到仙剑这部经典的武侠题材游戏,是小编正式接触网络游戏的第一款作品,相信,也给许多玩家带来了许多美好的回忆.今天,Xsolla采访到了<仙剑5前传之心愿>的团队,为大家介绍这部<仙剑 ...

  2. 游戏画质提升1《X战警金刚狼前传》画质增强修改

    今天把老游戏翻出来玩了下,<金刚狼前传>比较小众的游戏,09年在自己电脑上运行,当时画面觉得很惊艳 原版: 修改后 UE3开发的游戏,但默认画质只有分辨率和亮度选项,毕竟,现在1060的配 ...

  3. Java游戏西游前传,《西游前传》西游记之前发生的故事

    西游记,是吴承恩倾尽毕生心血创作的一部作品,其故事精彩跌宕起伏,文笔优美,诙谐.位列四大名著之一. 稍加留意,会发现,其实,西游记之前发生的故事也很精彩,如来佛怎么来的,牛魔王怎么娶的铁扇公主,白骨精 ...

  4. 新手教学 CSGO游戏启动前优化设置-CSGO游戏优化

    今天给各位小伙伴讲讲关于 CSGO游戏启动前优化设置 的内容,帮助大家进行更好的游戏体验.游戏前的优化能让游戏运行更加流畅,具体结合鼠标指针的优化和CSGO游戏启动选项的优化.CSGO游戏优化 建议先 ...

  5. 创业者周鸿祎前传(西安交大时期)

    以下这篇博文来自西安交大兵马俑BBS(6月13日),作者自称是周鸿祎的同级同学"Kevin". 里面颇有不少八卦题材,值得一读.这是创业者周鸿祎的部分前传啊! 以下为原文,有删节: ...

  6. 编程十年 (2):前传2——哪有这么牛逼的游戏机?

    编程十年 (2):前传2--哪有这么牛逼的游戏机? 本文地址:http://www.cnblogs.com/AndersLiu/archive/2011/04/19/programming10year ...

  7. 创业者周鸿祎前传(西安交大时期)-看点-@虎嗅网

    创业者周鸿祎前传(西安交大时期)-看点-@虎嗅网 创业者周鸿祎前传(西安交大时期)-看点-@虎嗅网 创业者周鸿祎前传(西安交大时期) 作者 虎嗅 评论(13) 2012-6-26 11:53 周鸿祎 ...

  8. 仙剑5前传大吐糟 2013-2-5记录

    仙剑奇侠传5前传,仙剑系列的第七部作品,今年年初上市的,用的仍然是Renderware引擎,游戏仍然沿用了仙剑5的游戏系统,但加入了QTE.合击.小游戏等元素,并采用了类似网游的自由视角和操作,场景中 ...

  9. 【仙剑五前传】中的一点场景渲染问题

    两周时间没来CSDN更新博客,业余时间主要花在新上市的<仙剑奇侠传五-前传>上了~   不可否认,仙剑系列作为国产单机游戏的第一品牌,当之无愧.尽管当年的仙剑五让很多人大为失望,不过相信通 ...

最新文章

  1. Silverlight + Model-View-ViewModel (MVVM)
  2. getprivateprofilestring读不到数据_从零到千万用户,我是如何一步步优化MySQL数据库的?...
  3. 编写了html怎么测试,如何将测试结果写入HTMLTestRunner生成的报告标题中
  4. php 执行多个文件,PHP提高执行多个查询时读取一千行文件的性能
  5. 持续集成部署Jenkins工作笔记0001---持续集成、持续部署、持续交付的概念
  6. 直击鲲鹏开发者训练营下一城,11.20 福州见
  7. 106. 数据库增删改的封装
  8. Python 正则表达式大全
  9. 生物信息预测毒力因子
  10. LaTex 论文排版(2): 插入公式 (从MathType公式编辑器导入到LaTex中)
  11. ios 设置属性的center_iOS游戏平台Game Center成就显示设置指南
  12. 在vscode中使用iconfont阿里字体图标
  13. 数据科学与大数据技术专业 —— 云计算●虚拟化 课程 期末复习卷及其简答(2)
  14. 从原先部分得到新字符串
  15. C#--如何用字符串组成的逻辑表达式进行判断,如:“7>2(4<7||8>4)“,字符串写的逻辑表达式来进行判断(只需3步)
  16. Linux——文件的权限管理、acl列表、特殊权限位、练习2
  17. 用计算机玩游戏的视频教程,手机飞屏玩电脑游戏 观看电脑视频教程
  18. 天行健!君子以自强不息!
  19. vue导入及使用本地图片
  20. 怎么用Microsoft Toolkit激活Office/win7/win8

热门文章

  1. jquery animate 数字动态变化达不到指定的值
  2. 华为防火墙USG6309E开局基础配置之网络设置
  3. 炭黑是做什么用的 炭黑起什么作用
  4. OOP 概念的编程基础思想----我的感想
  5. 2023年30道经典软件测试面试题,等你来看!
  6. huffman python,哈夫曼(Huffman)编码python代码实现
  7. 东北大学软件项目管理与过程改进复习提纲(2020)——第八章《项目质量管理》
  8. 【JS】Number to digit tiers
  9. Python爬虫进阶--js逆向-某天下与某某二手房密码加密分析
  10. 机器人搭建记录 HoshinoBot