木易

【转】周立功看乔布斯—献给电子爱好者(完整)

0
阅读(2757)

最近读到一本由国内作者王咏武、周虹写作,李开复策划的《乔布斯传——神一样的传奇》,从而引发我写作这篇博文和推行的一项计划。

    历时三年的时间创作和修改,我的新书《新编计算机基础教程》已经由北京航空航天大学出版社出版。其实,这本书就是引导初学者从零开始,在业余条件下,自己动手设计和制作一台类似于Altair 8800那样的微型计算机原型机,这也是作者当年迈入嵌入式行业起步阶段的经验总结。
 
     注:以下片段摘自《乔布斯传——神一样的传奇》,献给即将跨入大学的大一电类专业学生们,欢迎高年级学生和大学老师转载。
    事实上,APPLE—I并非世界上第一台微型计算机,在苹果出现前的早期个人电脑里,最早受到当时电脑迷追捧的,则是MITS公司1975年初推出的Altair 8800。Altair 8800外表是一个漂亮的铁箱子,前面板上有几排整齐的红色指示灯和金属开关。熟悉Windows操作的现代人一定会好奇地问:这铁箱子怎么用呀?有操作手册没有?
 
    千万别提操作手册,在Altair 8800面前,一提操作手册,估计很多人都会晕倒,那是一本100页不到的小册子,其貌不扬,里面满纸都是二进制之类的技术术语,几乎就是一本计算机系学生必读的《计算机原理》教程。对普通用户而言,简直就是天书。
 
    为什么1975年得用户在使用个人电脑前非要读这么一大通天书呢?道理很简单,不懂得二进制和机器语言,面前这台Altair 8800就是一堆废铁。
 
    刚买来的Altiar 8800既没有键盘也没有显示器,程序的输入输出全要靠前面板上的开关和指示灯来实现。前面板中央每个开关代表一个二进制位,拨到上面代表1,拨到下面代表0,输入程序其实就是用手连续拨动开关。一段简单的算数程序,也要拨动几十次开关。要是做个复杂的统计计算,几百次的开关拨动是必须的。程序运行后,前面板最上面的8个红色指示灯就会显示运行结果——当然,那也是一个二进制数字。
 
    此时,大家知道了“史前”的个人电脑有多么简单,于是大家也就不难理解Apple—I的伟大之处了。Apple—I组重要的革命就是将人们从要命的前面板、开关和指示灯中解放出来。虽然,Apple—I只是以主板的形式销售,但那块主板已经内置了控制键盘输入和屏幕输出的芯片。用户只要将主板买回家,直接连接键盘和显示器(或电视机)就可以工作了,不再有讨厌的二进制开关和红色指示灯了。可以毫不夸张地说,Apple—I最早定义了现代个人电脑的人机交互方式。
 
    说几句题外话,还记得为Altair 8800 开发BASIC语言的人吗?那一年,有个大学还没有毕业的小伙子为Altair 8800编写了BASIC语言解释器,并因此创立了自己的公司。后来,小伙子的公司成了世界上最伟大的软件公司,他就是微软的创始人比尔.盖茨。
每当提到计算机发展史,人们不得不由衷地想到罗伯茨与他发明的世界上第一台基于Intel微处理器的PC机Altair 8800;每当提到乔布斯与沃茨,人们不得不由衷地想到Apple-I;每当提到保罗与盖茨,人们不得不由衷地想到他们开发BASIC语言解释器的故事。

    很多象罗伯茨那样的英雄人物对IT技术的发展做出了卓越的贡献,但他们却并没有很好地受到命运的眷顾,人们很快 就忘记了他们。虽然乔布斯不再担任Apple的CEO,甚至将可能因病离开我们,但乔布斯将永远象神一样地传奇。乔布斯不仅告诉我们,“人活着就是为了改 变世界”,“你们的时间有限,不要将时间浪费在重复他人的生活上”,“你的工作将会成为生命中的重要部分,惟一可以让你真正快乐的方法就是去做你认为伟大 的工作,而惟一能够做出伟大成就的方法就是热爱你所做的工作”,“创新使领先者区别与跟随者”,“创新与你在研发上投入多少美元无关,当Apple研发 Mac时,IBM在研发上的投入至少有Apple的100倍。这件事和钱无关,这取决于你有什么样的人,你如何领导,以及你对创新本身的理解”,“我们在 堵我们的未来,我们可不愿意去做那些你也做我也做的产品,让其他公司去做吧。对我们而言,总有下一个梦想在前面”,“人生中最重要的决定不是你做什么,而 是你不做什么”,“不酷就去死”,而且他都做到了。虽然乔布斯的传奇人生可遇不可求,但乔布斯的精神将永远激励我们努力奋斗,更重要的是,乔布斯在创新、 创业历程中的那些有效地方**,比如,产业趋势预测、产品设计理念、市场营销技巧、人才观、管理方法等,完全可以学习和借鉴。
 
    通过上一篇文章,我们大致知道了Apple-I与Altair 8800的不同之处。《新编计算机基础教程》中介绍的Altair-80C31Small就是根据Altair 8800的设计思想来实现的,尽管其输入与输出手段看起来有点原始,但对于初学者来说,在配套教材的引导下,制作非常简单上手很快。
 
    当你完成Altair-80C31Small的制作之后,有没有想过使用80C51单片机制作一台与 Apple-I一模一样的计算机呢?今天可能很难找到黑白CRT显示器,由于它是以文本方式显示的,即ASCII,那么有没有替代的方式呢?使用广州致远 电子有限公司的“TFT液晶显示串口屏”即可替代。有了显示器,键盘呢?制作方法很多,最简单的方法就是自己设计一个53个按键的键盘扫描驱动电路。到此 为止,基本的硬件电路全部设计完毕。
 
    接下来的工作就是如何象保罗与盖茨那样设计一个能够使用BASIC语言解释器,虽然Altair 8800与Apple-I都能够支持BASIC,但必须从纸袋或磁带上加载BASIC解释器后才能使用,而我们可以设计一台一开机就能够直接使用BASIC语言的计算机。
 
    BASIC语言是由Dartmouth学院John G. Kemeny与Thomas E. Kurtz两位教授于20世纪60年代中期发明的,由于该语言能满足计算机的基本功能,而且简单易用,因此BASIC语言成为了早期计算机最流行的主要语言之一。
 
    BASIC语言的基本语句只有17条,它们都是常见的英文单词及其变形,比如,READ、END等,很容易 学习和掌握。它被称之为解释语言是因为它在编程输入每一条指令时,计算机就在内存中产生一条相应语句的解释程序,因此用传统BASIC语言所编写的代码是 不用编译的,编程完毕后则立即就能执行。
 
    好像不难吧!当年保罗与盖茨就是通过为Altair 8800计算机编写BASIC语言解释器而起步的。其实,当你完成Altair-80C31Small计算机时,就可以开始使用汇编语言或C语言设计自己的BASIC语言解释器了。
 
    当你读到这里的时候,是否打算立即动手设计一个可以在80C51单片机上可以运行的BASIC语言解释器呢?赶快行动起来吧!不要老是陷入“保罗与盖茨”那两个臭小子的神话之中,只要你有梦想,你同样能。
 
   我今年已经47岁了,创造力最旺盛的黄金时机已经过去了,但我可以免费为年轻人提供更好的学习条件和实习机 会。广州周立功单片机发展有限公司作为“国家级工程实践教育中心”,经过两年的试点,因此我决定每年暑假针对优秀学生开办“发现乔布斯——夏令营”,并每 年接纳300位优秀大四学生来公司进行为期一年的毕业设计。目前,我们正在制作“高等院校电类专业新概念教材.卓越工程师教育丛书”《新编计算机基础教 程》、《项目驱动——单片机应用设计基础》与《C语言高级程序设计》等教材的PPT,同时也在录制与教材配套多媒体视频教程。
 
如何成为一个合格的电子工程师或软件工程师?这个问题困扰了很多人。如果你去问100个有经验的人,尽管他们的答案不尽相同,但似乎都有道理,事实上,却不能从根本上解决问题。
 
    在过去的30年时间里,我接触了很多的技术专家,他们谈到了自己的经验,却从未有人告诉我,我们应该从哪里开始,那些最重要的基础是什么?
 
    网友乖痞子告诉我们,“无论是嵌入式硬件工程师还是软件工程师,都需要时间去沉淀、去积累”,听起来很有道理,因为成功的人都是这样走过来的。而很多人在 付出了巨大的努力与艰辛之后,却没有在技术上产生突破性的进展,反而随着年龄和经验的不断增长,学习新技术的难度越来越大。特别地,在校学生还没有等到第 一学期结束,就已经对学习产生了“厌恶”的情绪,难道他们在进入大学前就不想成才吗?
 
    到底是什么原因让人们逐渐迷失方向而失去了信心?显而易见,肯定是基础没有打好。
 
    要回答这个问题必须先搞清楚,怎么做或者达到什么程度才算基础扎实,这是我们必须搞清楚的首要问题,否则一切都将无从谈起。
 
    1. 透彻理解内存是提高编程能力的基础之一
 
    对内存的理解可以说是C程序员的基本素质之一,很多人之所以学会了C语言的语法,而仍然无法写出正确的程序,主要原因在于对内存的理解不够透彻。
 
    比如,对于一个变量来说,我们必须搞清楚变量的三要素,即变量的类型、变量的值与变量的地址。如果定义short型变量,它是16位的。显然,16位变量 必须占用存储器的两个存储单元,且这两个存储单元必须相邻,且将存储单元的最低位地址作为变量的地址。也就是说,假设一个16位变量占用地址A和A+1的 存储单元,则A就是变量的地址。而一些计算机为了提高操作效率,规定变量地址必须为偶地址,即A必须为偶数,一般将这种情况称为“变量必须为2字节对 齐”。
 
    虽然C语言规定变量必须连续存储,但并没有规定每个存储单元保存什么内容,因此针对16位变量有两种存储方式,分别为大端模式与小端模式。计算机到底采用 哪种存储模式一般是由硬件决定的,与编译器无关。但由于8位计算机的硬件仅支持8位变量,变量都是由编译器支持的,因此编译器可以自由选择存储方式。
    ......
 
    2. 设计一台计算机,则对计算机的原理一清二楚
 
    要想彻底搞清楚计算机原理,不是抱着一本厚厚的像砖头一样《计算机原理》图书,翻过来翻过去,“左一杆右一杠”一笔一笔地划过去。惟一的办法是通过自己的 努力设计一台微型计算机,《新编计算机基础教程》就是根据博主当年的制作体会,并经过30年工作经历的沉淀之作。尽管这本书看起来“水平”不高,但却能够 帮助更多的电子爱好者步入殿堂,从某种意义上来,这也是博主最满意的一本专著。
 
    3. 在学习数字电路的同时尝试设计一块属于自己的微控制器,无师自通
 
    这是作者正在写作的另一本图书,完全使用分立TTL、CMOS集成电路制作的一块属于自己的微控制器。