苹果 MacPaint 和 QuickDraw 的源代码(2010)

价值 | 思考 | 共鸣



简评:本文由计算机历史博物馆发表自 2010 年,经乔布斯的允许,苹果软件 MacPaint 和 QuickDraw 代码开放。(软件的主创表示:一再精简代码,代码就应该让人看的懂)


Apple Macintosh 是软硬件结合的优秀作品。1984 年 1 月,麦金塔问世,和它一起的还有绘图软件 MacPaint。它们向世人展示了:苹果想做什么,以及如何去实现。

很多朋友想要了解它是如何在「底层」工作的。经过苹果公司的许可,我们很高兴提供 MacPaint 和 QuickDraw 的原始程序源代码。


博物馆藏品 —— 源代码

注意:本资料版权归 1984 Apple Inc.所有,仅供非商业用途使用。

MacPaint 是绘图应用程序,用户通过鼠标键盘进行操控和交互。它的高级逻辑是用 5822 行的 Apple Pascal 编写并封装;为了实现高性能的例程以及操作系统的一些接口,底层是 3583 行汇编语言所编写。

  • MacPaint 源码下载:MacPaint version 1.3 source code (5 files, 67.8k)


QuickDraw 是麦金塔的位图库,可以用于 MacPaint 和其他的软件应用。它包含 36 个文件共计 17101 行代码,全部由汇编语言构成,面向 68000 微处理器。

  • QuickDraw 源码下载:QuickDraw source (37 files, 180.4k)


MacPaint 和 QuickDraw 的故事

MacPaint 由 Bill Atkinson ,他是原始Macintosh开发团队的成员。他将他的早期LisaSketch(也称为SketchPad)用于不成功的Apple Lisa电脑,所以他最初称它为MacSketch。他于1983年初开始在Mac版上工作。


Bill Atkinson 自画像


Bill Atkinson 编写了 MacPaint,他也是麦金塔开发团队的初创人员。他之前为不成功的 Apple Lisa 电脑编写过 LisaSketch(别名 SketchPad),后来在 1983 年开发 Mac 版本,名称从 MacSketch 改为 MacPaint。

Bill Atkinson 也为 Lisa 创建了 QuickDraw 最初版本。Andy Hertzfeld 是团队另一个关键成员,他认为「QuickDraw 是麦金塔的核心技术,它能够及快速的在帧缓冲区创建出色的用户界面」。

最初的 MacPaint 被设计成单文件界面。调色板和文件视窗的位置和大小是固定的,这和当时其他主流麦金塔软件有很大的分别,因为其他软件的视窗位置和大小是可以让用家自行调整的。

当用户在屏幕上拉动图像的时候会产生闪烁的现象。MacPaint 用上两组数据缓冲器,以防止这一情况出现。其中一组缓冲器储存了文件中的现有像素,而另外一组则储存了文件之前的像素。第二组缓冲器也提供了 MacPaint 复原功能的基础。

1983 年 4 月,Bill Atkinson 把 MacSketch 改名为 MacPaint,几乎每天都在添加新功能,「Fat Bits」可以放大屏幕区域并编辑单个像素;「油漆桶」可以填充封闭区域;「套索」可以特定选区;他是在景星制作了一个字符识别工具,可以将像素字符变成文本,但最后被他否决了,他希望 MacPaint 专注于绘图而不是文本处理。

在编写 MacPaint 时,Bill 很关注代码的可读性,他说道「这也是一种艺术,和其他艺术形式一样,我花很多时间重构代码,使它们更简洁、更清晰。我坚信,防止错误最好的方法就是让代码变得更清楚,一眼就知道怎么回事。在苹果工作后,我有了这样的转变。如果你想让它变得通顺,必须从头开始重构至少五次」。

MacPaint 于 1983 年 10 月完成,他与 QuickDraw、操作系统共同运行在仅 128K 内存,没有浮点运算的 8 Mhz 处理器上。及时硬件条件如此,MacPaint 也提供了一定程度的性能和功能,为个人电脑建立了新的标准。


轶事

Andy Herzfeld 在 www.folklore.org 上记录了很多麦金塔团队的奇闻异事,经过他的允许,我们贴上几个有代表性的小故事:

  • 软件开发了多久?

记者问「这个软件开发用了多少?」
bill 说「我用了四年做来的」。
乔布斯在旁边补充「正常要 24 人一年能做出来」。(画外音:bill 一个人能顶 6 个人)

  • 如何衡量程序员的生产力?

当年 Lisa 团队 1982 年写软件时,项目经理要求程序员每周提交报告,记录上周的代码行数。Bill Atkinson 认为这很蠢。在他重写 QuickDraw 那一周,他的速度非常快,并且缩短了 2000 多行代码,在周报表格,代码行数「-2000」。几周后,经理们不再要求他填写表格了。


结语

MacPaint 是由原麦金塔开发成员 Bill Atkinson 负责开发。之后在 1987 年,苹果旗下的软件子公司 Claris 接手了 MacPaint的 研发工作。一年之后(1988年),MacPaint 2.0 发布,这也是 MacPaint 的最后一个版本。鉴于销售额每况愈下,MacPaint 的销售在 1998 年正式中止。



Bill Atkinson 多年来关注设计类软件,后来他专注于自然摄影,www.billatkinson.com 这是他的网站。


致谢

  • 感谢苹果公司和史蒂夫乔布斯让我们获得许可,让这个历史性的源代码可供全世界欣赏和研究。

  • 感谢 Andy Hertzfeld 分享他对那段历史的复述,并允许自由使用他的书和他的网站上的文字。

  • 感谢 Grady Booch 推动这个项目。

  • 感谢Bill Atkinson 给我们的代码。



原文:MacPaint and QuickDraw Source Code


  • MacPaint 源码下载:MacPaint version 1.3 source code (5 files, 67.8k)

  • QuickDraw 源码下载:QuickDraw source (37 files, 180.4k)


极光日报,极光开发者旗下媒体。

每天导读三篇英文技术文章。





▼点击阅读原文获取文中链接


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值