API Usability for casual programmers...

偶尔跟朋友开玩笑,说我什么程序都写过,唯独没写过 Win32 程序,一行都没有。这到不全然是真——我的 C++ 还是用 Dev-C++ 在 Windows 下学会的呢,MSDN 也装过一次,三年前,没看几页。但是,我确实完全不曾涉猎过 Win32 编程。看见那些大写的类型名称和动辄六个八个的参数列表我就会止不住的恶心想吐。后来遇见 Linux,明白了什么叫做简单优雅的 Unix 哲学,就再也没有想过回头看 Win32。

今天早上照例查信,忽然有了写一个 Windows 程序的冲动——其实已经酝酿了很久的一个想法,但是又不想去找刀子他们帮忙代办——一个下载 RSS 聚合并且分析的工具。因为没有什么性能要求,一切以简单为准,我照着三年前的印象,去 MSDN 找 WinInet 的文档,顺手下载 Dev-C++。

MSDN 的文档真的是非常详尽,组织合理脉络清晰,从向导到参考一应俱全。等 Dev-C++ 13M 下载完成的时候,我在随手打开的记事本里也把一个 HTTP 下载函数写完了。随手拷进 Dev-C++ 里,编译链接一次通过。
——从开始到这里,总计时一小时三十分钟。我甚至开始考虑是不是 XML 处理部分也改用 MSXML 而不是 expat 。。

C++ 0x proposal 里除了具体的诸如添加 Socket 和 Threading 到标准库等提议之外,还有一条就是 improve API usability for casual programmers。WinInet 很明显就是一个给 casual programmer 准备的 API,高层、简单。一共三个函数就可以完成基本的任务(InternetOpen, InternetOpenUrl,InternetReadFile)。每个函数参数虽然多,但是脉络清晰,从哪儿来到哪儿去一目了然。更何况 MSDN 可以说是我见过的最出色的 API 帮助。对于每这样一套 API(WinINet,WinHTTP,。。。),都包含了简介和背景信息(About WinINet)、如何使用的一套文章(Using WinINet)和参考(WinINet Reference),难度层次不一,很容易就可以找到足够的信息快速上手。相比之下,Unix 系统虽然有『著名』的 man pages,但是根本不具有可比性。Man pages 首先没有索引,让一个新手无从把握(谁知道可以 man 2 intro 呢?)每个条目也只有参考。如果要提纲挈领做到融汇贯通,只能去看 Stevens 的大部头了。那一本书拿起来,就算不是立刻睡着,要写出第一个程序,起码也得在三天之后了。

KISS(Keep It Simple, Stupid)原则或许有它的道理,但是,未必它就是真理。很多时候,我们也许希望的不只是一个轻轻的吻……
:)
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值