国外程序员的BASIC情结——我的编程生涯始于BASIC

2023-10-27

关于BASICEdsger Dijkstra曾经说过这么一段话:“那些已经学过BASIC的学生是不可教化的,再去教他们优秀的编程风格注定徒劳无功。他们已经脑残,再生无望,成不了优秀的程序员。”

BASICBeginner'sAll-purpose Symbolic Instruction Code的缩写,意为“初学者的通用符号指令代码”,它是在1964年由美国的两位教授ThomasJohn G. KemenyFortran语言的基础上设计出来的计算机语言系统。这个简单、易学的程序设计语言当时只有17条语句、12个函数和3个命令。——译者注

Edsger WybeDijkstra(艾兹格·迪科斯彻)是荷兰计算机科学家,毕业并就职于荷兰Leiden大学,早年钻研物理及数学,后来转为计算机科学。曾在1972年获得过素有计算机科学界的诺贝尔奖之称的图灵奖,之后,他还获得过1974AFIPS Harry Goode Memorial Award1989ACM SIGCSE计算机科学教育教学杰出贡献奖、以及2002ACM PODC最具影响力论文奖。——译者注

我敢肯定,他是为了达到一定的效果而夸大其辞。我非常欣赏他在1972年写的那篇论文:“The Humble Programmer”(谦逊的程序员),但再怎么样我也不能同意“选错编程语言会损伤程序员的智商”这样卑微的观点。尽管计算机编程语言在不断进化,在我看来,我们面临的最大障碍不是对语言的选择,而是这个现实:不同的程序员可以把FORTRAN程序写得千差万别。拿Pogo的话来说,“我们遇到敌人了,他就是我们自己。

贬斥BASIC确实能带来高人一等的优越感。不过,像很多有一定年纪的程序员一样,我是伴随着BASIC一起长大的。

我以前曾经提到过,早期的游戏机与编程之间的绝妙碰撞发生在Atari 2600这款BASIC编程盒上。我怎能错过这种亲自体验的机会呢?于是,我在eBay上买了一台。

Atari(雅达利)是世界上第一家电脑游戏机公司,曾经创造了年销售额20亿美元的神话。——译者注

我还买了一套Atari2600的键盘控制器。覆盖图是随盒子附送的,而两个控制器并在一起组成了一种原始的键盘。(如果你想知道我拿着网站上的广告收入都做了些什么,现在你知道了……很大一部分就用来购买这些乱七八糟的东西。)

出人意料的是,这台机器的使用说明在网上居然找不到,于是我自己扫描了一份。我把它放在这里:http://www.flickr.com/photos/25885309@N02/sets/72157604661612578。去看一下吧。很有意思的!有人还把这个使用说明抄录成了HTML格式,但缺少了照片和图表,读起来也便无趣许多。

我把Atari2600模拟器里的BASIC编程只读存储器里的东西做了一份拷贝。然后依据机器的使用说明,编写了一个BASIC小程序。

你会发现,关于在Atari 2600上进行BASIC编程,网上所有其他的截屏实际上都是空白的。这也许是因为我是惟一一个对Atari 2600如此痴迷的人,竟然会在它上面尝试编程……这事看起来很痛苦,但谁知道呢,除非你亲自试一试这时髦的玩意儿。过程确实很糟糕!当我很泄气地扔开手中的键盘时,我竟忍不住笑了起来。但我必须承认,在我完成了第一个“程序”之后,我内心深处还真有些小激动,因为我让机器屈从了我的意志。它让我保持自信满满!

我从eBay拿到的包裹里还包含几张手写的编程笔记。我猜,它们是1980年代遗留下来的吧。

难道BASIC不就是这样吗?即使是这款笨拙的Atari 2600上的BASIC,你也能从中发现一些基本的编程概念。难道不是吗?

当然,如果你真心喜欢计算机,你大可不必在这么不起眼的Atari 2600上编程。在家用电脑上玩游戏、编程序的体验要好得多!在相当长的一段时间里,市场上的所有家用电脑都预装有BASIC。不管是第二代苹果机,还是Commodore 64或Atari 800,机器启动后最先映入眼帘的总是BASIC提示符。BASIC成为了编程爱好者的专用语言。

Commodore(康懋达)是与苹果公司同时期的个人电脑公司,曾经创造过一系列奇迹。1994年,Commodore停止生产并宣布破产。——译者注


甚至IBM的个人电脑也预装了BASICA(即Advanced BASIC),或者GW-BASIC,并最终演变成了QBasic(即Quick BASIC)。直到微软推出Windows 2000之后,它们才永久地退出了历史舞台。

事实上,如果你想用那些古老的8位苹果机、Commodore或Atari家用电脑做任何前沿的事情,你就必须学会汇编语言。我不记得有任何编译型语言出现过,直到IBM个人电脑的诞生以及DOS时代的到来,TurboPascal才粉墨登场。编译型语言是深奥的,一般人难以理解,也比较昂贵,直到Turbo Pascal以很低很低的价格(49.99美元)才使其大众化。(顺便说一下,你可能注意到了,Anders Hejlsberg是Turbo Pascal以及后来的Delphi的主要创作者。他现在是微软公司的技术专家,担任C#语言的首席设计师。很多老资历的极客——比如我自己——都对.NET抱有满腔热情,很大一部分原因就在这里。)

即使你没有高超的编程技能、无法成为下一个David Crane或Will Wright,你仍然可以用古老的BASIC编写出很多有趣的游戏和程序。通过使用BASIC,你能轻易知道自己是否喜爱编程,以及你是不是编程这块料。在我们看来,《Creative Computing》就像是程序世界里的圣经。

         

          

在很长很长的一段时间里,只要你对电脑真心感兴趣,你必然会用BASIC编写程序。它就像你呼吸的空气一样,你逃也逃不掉,也是不二选择。每当你把机器启动起来,那个命令行提示符总是眨巴眨巴着盯着你:为什么不敲一些BASIC命令,看看会发生什么呢?随之而来的是一种惊奇的感觉,一切皆有可能,你也就进入了计算机那无限宽广的天地!就这样,千千万万的程序员生涯从这里启程了!

BASIC并不会使人脑残——Dijkstra 言过其实了!如果非得拿BASIC说事的话,它恰恰为众多年轻程序员打开了眼界。BASIC也许是最早的一种测试方法,用于鉴别你是一只会编程的“绵羊”还是一只不会编程的“山羊”。当然,不是所有人都有完美的结局,但确实有一些人取得了卓越的成就。

不管我们现在是否还在用BASIC编写程序,BASIC的精神永存!

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

国外程序员的BASIC情结——我的编程生涯始于BASIC 的相关文章

  • 国外程序员的BASIC情结——我的编程生涯始于BASIC

    关于BASIC Edsger Dijkstra曾经说过这么一段话 那些已经学过BASIC的学生是不可教化的 再去教他们优秀的编程风格注定徒劳无功 他们已经脑残 再生无望 成不了优秀的程序员 BASIC是Beginner sAll purpo
  • 你永远不会有足够的奶酪

    令人赏心悦目的产品和让人勉强容忍的产品之间的差别 就在于它们的细节有没有做好 在Human Factors International公司做的一篇演讲文稿里 他们提到了一个叫 哥伦比亚障碍装置 的东西 译者注 Human Factors I
  • Jeff Atwood质疑iPhone的单键设计

    我喜欢使用iPhone 但我对它的一个设计不敢苟同 苹果始终坚持 设备的正面永远只能有一个按键 我还买了一个Kindle Fire 它更离谱 一个按键都没有 我完全赞成 任何小器具的正面都应该在明显的位置上至少有一个 耶稣把手 一样的按键
  • YouTube上的版权保护

    早在2007年的时候 我曾写过一篇名为 YouTube The Big Copyright Lie YouTube 关于版权的弥天大谎 的文章 表达了我对YouTube又爱又恨的情感纠结 现在回想一下你在YouTube上看过的所有视频 它们
  • 软件定价:我们深谙其道吗?

    本文为翻译初稿 更多精彩内容 敬请关注 高效能程序员的修炼 人民邮电出版社 一段时间以来频繁光顾iPhone应用商店 以致于产生了个副作用 我开始从根本上改变了对软件定价的看法 这么多优秀的iPhone应用程序 要么是免费的 要么只卖区区几
  • 对你的屁股好一点!

    作为软件开发人员 买一把上乘的电脑椅也许是你能做的最明智的投资之一 事实上 在过去几年看过各种各样的椅子之后 我得出了一个结论 如果你想买一把上乘的椅子 你要花的钱不会少于500美元 如果你在座椅上花的钱没那么多 除非你正在经历那场跨世纪互
  • 坏苹果是团队的毒药

    最近一期的 美国生活 采访了WillFelps 他是华盛顿大学的一位教授 曾经组织过一次社会学实验来证明 坏苹果 的出奇强大的影响力 译者注 美国生活 This American Life 是一档叙事类的广播节目 每周一期 在超过500家电
  • 怎样招聘程序员

    在招聘程序员方面 没有所谓的神奇 银弹 但我可以分享一些建议和诀窍 它们经过我的实践证明是有效的 这些方法我多年来一直在用 我把它们总结如下 首先 要求通过几个简单的 Hello World 在线测试 我知道这听起来很疯狂 但有些自称是程序
  • 如何与人交流——程序员,赶紧生个孩子吧!

    原文作者 Jeff Atwood 每个家庭都应该生一个孩子吗 我不太愿意这样建议 因为当不当父母完全是个人选择 我始终尽量避免鼓吹为人父母的经验 但我越深入这个角色 我便越是相信 没什么比拥有一个小孩更能折射出成人世界里源源不断的荒唐 成为
  • 这样的会议让人很纠结

    很纠结吧 永远也不要参加这样的会议 顺便说一下 解决这个问题的方法就是 可用性测试 Usability Testing 好好想一想 我们做决定的时候 是要无休无止地争吵 最后谁吵赢了谁说了算呢 还是要基于真实的数据 这个变化是一场革命
  • Jeff Atwood倾情推荐——程序员必读之书

    英文版 Code Complete 2 中文版 代码大全 第二版 作者 Steve McConnell译者 金戈 汤凌 陈硕 张菲出版社 电子工业出版社出版日期 2007 年8月Jeff Atwood的推荐 Steve McConnell的
  • 象牙塔式的开发

    我向来不鼓励象牙塔式的开发模式 开发团队常年封闭在 高塔 之中 一门心思地做着魔法一样的软件 这些开发者根本不知道用户会怎样使用他们做出来的软件 你若问他们 最近一次面见用户是在什么时候 他们甚至可能都回答不上来 因为缺失强有力的证据 开发
  • 无我编程:你的工作不代表你

    原文作者 Jeff Atwood Johanna Rothman是这么描述 无我编程 这个概念的 25年前 Gerald M Weinberg写了 程序开发心理学 我在1977年发现了这本书 然后做了一个决定 放弃在电台做DJ的工作 打算做
  • 勿以专家自居

    对于权威 我心存芥蒂 我在 StrongOpinions Weakly Held 观点鲜明 但不固执己见 一文中曾经说过 当我了解到别人把我视为专家或者权威 而不是像伙伴一样的志趣相投者时 我就会觉得非常困扰 如果非要说我在迄今为止的职业生
  • 分页显示该休矣

    当你有很多东西要显示给用户 而且内容多得远非一个屏幕可以放得下的时候 你会怎么办 很自然 你会想到分页 在2007年 Vitaly Friedman写了一篇文章叫 Pagination Gallery ExamplesAnd Good Pr
  • 我同情那些不写单元测试的傻瓜

    J Timothy King写了一篇很棒的文章 先写单元测试的12个好处 Twelve Benefits of Writing Unit Tests First 遗憾的是 他在文章最后说的话完全是画蛇添足 然而 如果你不愿意改掉先写代码的老
  • 困惑:单元测试该在什么时候写?

    原文 http www codinghorror com blog 2005 04 good test bad test html 作者 Jeff Atwood 很多年以来 用于随机测试 ad hoc test 的工具我都是自己开发的 但在
  • 成为优秀程序员的方法就是抛开编程?

    原文 How To Become a Better Programmer by Not Programming 作者 Jeff Atwood 我在2006年写过一篇题为 Programmers as Human Beings 程序员 亦人类
  • 会议是浪费工作时间的最佳去处

    本文为翻译初稿 更多精彩内容 敬请关注 高效能程序员的修炼 人民邮电出版社 今天你开了多少个会 这个星期呢 这个月呢 现在你再自问一下 那些会议中有多少是值得参加的 如果把相同的时间用在工作上 你又能完成多少事情 这不禁让人想知道 我们究竟
  • 学海无涯苦作舟

    作者在Twitter上发的一条短讯 每一天 你一定要一起床就热情澎湃 否则 你就只是在打工 3 51 PM 2012 5 1 在我们创办Stack Overflow网站之后 有些人开始承认 我们构造了一个还过得去的 捕鼠器 把大家都吸引到那

随机推荐

  • Android——使用DatePicker和TimePicker显示当前日期和时间

    1 DatePicker和TimePicker两种实现动态输入日期和时间的功能 2 DatePickerDialog和TimePickerDialog两种实现动态输入日期和时间的对话框 3 两组监测日期和时间改变的监听器 1 OnDateC
  • vue中使用百度地图 添加标记物,点击标记物弹窗,画运动轨迹,位置纠偏,逆地址解析

    在vue项目中使用百度地图 添加标记物 位置纠偏 信息弹窗 画轨迹 坐标转换 逆地址解析 参考vue baidu map开发文档 安装 npm install vue baidu map save 全局注册 在main js中引入以下代码
  • 【Vue】关于开发中本地图片加载失败的经验总结

    文章目录 1 图片存放在assets 2 图片存放在static中 3 其他需要注意的点 我的源码 img或者el avatar中的src没有提供静态值 而是绑定一个动态变量 如果这个变量的路径是存放在assets里 则图片会加载失败 1
  • nginx代理路径配置总结

    一 发现问题 配置nginx代理的时候 发现location配置的路径和代理的上下文路径的组合不同 服务端接收到的uri的路径不同 导致了controller的RequestMapping匹配出现问题 所以就仔细研究了一下nginx路径配置
  • 对象属性拷贝(BeanUtils.copyProperties)用法

    系列文章目 对象属性拷贝 BeanUtils copyProperties 用法 一 BeanUtils copyProperties参数赋值顺序 根据导包不同 方式不同 一个为org springframework beans BeanU
  • MySQL数据库渗透及漏洞利用总结

    Mysql数据库是目前世界上使用最为广泛的数据库之一 很多著名公司和站点都使用Mysql作为其数据库支撑 目前很多架构都以Mysql作为数据库管理系统 例如LAMP 和WAMP等 在针对网站渗透中 很多都是跟Mysql数据库有关 各种Mys
  • FCKEditor 2.3.2 的type漏洞修复

    从网上下了最新的FCKeditor 2 3 2和对应的JSP整合文件FCKeditor 2 3 安装后进行测试 发现type漏洞仍然存在 汗 漏洞情况是 或在type后面跟上一个非file image flash media参数 就可以上传
  • 探索数据分析与可视化:使用R语言实现

    探索数据分析与可视化 使用R语言实现 概述 数据分析与可视化是现代数据科学中至关重要的环节 R语言作为一种强大的统计分析工具和编程语言 提供了丰富的功能和库来处理数据 进行统计分析和生成可视化图表 本文将介绍如何使用R语言进行数据分析与可视
  • 关于 cocos2d-x win32 版本的 cpu 占用改良

    初学 c2dx 下载的 2 02 版本 发现其 HelloWorld 演示项目 居然一直占据了 100 的 CPU 猜测它有可能是在主循环里使用了 Sleep 0 一搜 果然定位到具体代码 它位于 cocos2dx platform win
  • Flutter常用布局方式

    文章目录 flutter 布局介绍 一 Container 布局 1 属性 2 示例 二 线性布局 1 说明 2 属性 3 示例 三 弹性布局 Flex 1 属性 2 Expanded 的使用 3 示例 四 流式布局 1 说明 2 属性 3
  • 方差、标准差、平方差、残差

    2018 06 21 创建人 Ruo Xiao 邮箱 xclsoftware 163 com 2018 06 29 修改人 Ruo Xiao 增加对残差的说明 一 方差 1 定义 数据分别与其平均数的差的平方和的平均数 由 D 表示 2 意
  • Nssm 安装Window服务

    环境 Wind10 1 下载nssm exe 官网 http nssm cc download 2 解压 根据操作系统选择32位或64位nssm 在该目录启动命令行窗口 3 服务注册 命令行输入 nssm exe install XX或者n
  • 在CentOS7上安装RabbitMQ(RPM安装方式)

    首先需要安装erlang 参考 http fedoraproject org wiki EPEL FAQ howtouse rpm Uvh https download fedoraproject org pub epel epel rel
  • SQL命令笔记

    sql中的排序倒序 排序采用 order by 子句 order by 后面跟上排序字段 排序字段可以放多个 多个采用逗号间隔 order by默认采用升序 asc 如果存在 where 子句 那么 order by 必须放到where 语
  • 使用VS配置OCCI环境

    一 配置方法 1 准备好occi的两个配置文件sdk与basic 之后将VS内的设置环境为release x64 2 c c 常规 附加库包含目录 F programmsoftware occi instantclient sdk wind
  • IDEA插件之 时序图 -- Sequence Diagram

    安装插件 使用 在方法上右击选择 Sequence Diagram 设置参数 可在控制台内查看时序图结果
  • 【数据结构与算法】树状数组

    Fenwick Tree 树状数组 Binary Indexed Tree 又称 Fenwick Tree 是一种基于数组实现的数据结构 用于高效地动态维护前缀和 树状数组可以在 O log n
  • uni-app 高度自适应

    方法一已知固定高度 注意 scrollH 初始值不等大于最终显示的高度 如果封装组件 onReady onLoad 获取可视区域高度 减去固定高度 uni getSystemInfo success res gt this scrollH
  • nacos--基础--1.2--理论--概念

    nacos 基础 1 2 理论 概念 1 地域 物理的数据中心 资源创建成功后不能更换 2 可用区 同一地域内 电力和网络互相独立的物理区域 同一可用区内 实例的网络延迟较低 3 接入点 地域的某个服务的入口域名 4 命名空间 用于进行租户
  • 国外程序员的BASIC情结——我的编程生涯始于BASIC

    关于BASIC Edsger Dijkstra曾经说过这么一段话 那些已经学过BASIC的学生是不可教化的 再去教他们优秀的编程风格注定徒劳无功 他们已经脑残 再生无望 成不了优秀的程序员 BASIC是Beginner sAll purpo