学习某些API的方法
学习某些 API 的方法
这里的 API 可能是某个系统平台,开发包,开发平台,开发工具等等,因为任何系统和技术方法提供给开发者的打包方式都是一系列 API 。
无论你有在哪一层级开发,从硬件驱动到系统软件,从应用程序到网页服务器总是要依赖和使用某些 API(Application Programming Interface 应用程序接口 ) ,当然,通常要依赖和作用更底层或同层的 API 。因此,我们总是要学习和使用各种 API 。当学习的时候要注意总结一些方法,以提高学习的效率:
首先,要了解 API 的功能和作用。也就是说知道它是什么,能用来做什么。可能通过 Google 一些介绍或是某些入门级的教程,都可以达到了解的目的。这一级别可以称作 Level 1
然后,要学会使用它们,使用它们去构建你的程序,实现你想做的事。这可以通过学习一些教程和参考 API 的文档。这时可做一些质量要求不高的和不太复杂的小练习。这里是 Level 2
之后,就可以通过不断练习进尔掌握一些高级技巧,以达到熟练应用的目的。这可以通过学习某些高级教程,或者到论坛,网上寻找资料,或跟高手进行学习。这时可以做一些专业级别的或是比较复杂的,质量较高的练习。这里就到了 Level 3
再后,因为这时对它们的使用已经了如知掌了,就要去了解它们的内部实现,去看看它们的源码,总结它的优缺点,发现隐藏的陷阱和深处的秘密。这通常没有什么教程,只能去看它们的源码,去论坛和网上寻找资料,也要跟高人学习或切磋。这里是Level 4
最后,就是定制,修改,扩展或优化它们的实现。这没办法,只能通过源码了。这里是最高境界 Level 5
基于上面的讨论,如果学习的 API 是一套开源的系统,那么可从头走到底,最终达到扩展和定制,这也是所有的开源软件的发展模式和魅力所在。但对于更多的非开源系统和平台,当能熟练使用后,最多也只能去猜测它们底层以实现,当然,也能去发现其深处的秘密并进行 Hack ,如现在人们对于 Windows 的研究也不仅仅止步于熟练使用它们。
当我们走完了这一过程,就可以去学习另一个系统平台,另一套 API 了。
另外,每一个阶段,都可要多多总结,多多实践,把所得进行梳理写成文档,这就是常言的经验。特别是,后面二三个阶段更是要把所得写下来,因为它们得来不易,非常宝贵。前面二个阶段所有人通过学习一些教程即可达到,但最后二个阶段要靠更多的练习和参悟,也靠几分天赋才能走过,所以一旦达到后面二个阶段,就更要把它们变成经验。
当然,我们的精为是有限的,不可能对每个系统平台的 API 都达到 Level 5 的境界,都需要走到最后一个 Level 。我们要有所选择,根据我们的需要,达到某个 Level,够用即可。但是我们必须在某个或某几个系统平台上达到最高境界。正所谓有主有从,有我所选。
学习某些API的方法的更多相关文章
- canvas学习之API整理笔记(二)
前面我整理过一篇文章canvas学习之API整理笔记(一),从这篇文章我们已经可以基本了解到常用绘图的API.简单的变换和动画.而本篇文章的主要内容包括高级动画.像素操作.性能优化等知识点,讲解每个知 ...
- MVC学习系列4--@helper辅助方法和用户自定义HTML方法
在HTML Helper,帮助类的帮助下,我们可以动态的创建HTML控件.HTML帮助类是在视图中,用来呈现HTML内容的.HTML帮助类是一个方法,它返回的是string类型的值. HTML帮助类, ...
- 学习FFmpeg API
ffmpeg是编解码的利器,用了很久,以前看过dranger 的教程,非常精彩,受益颇多,是学习ffmpeg api很好的材料.可惜的是其针对的ffmpeg版本已经比较老了,而ffmpeg的更新又很快 ...
- Java操作mongoDB2.6的常见API使用方法
对于mongoDB而言,学习方式和学习关系型数据库差不太多 開始都是学习怎样insert.find.update.remove,然后就是分页.排序.索引,再接着就是主从复制.副本集.分片等等 最后就是 ...
- 【转】学习FFmpeg API – 解码视频
ffmpeg是编解码的利器,用了很久,以前看过dranger 的教程,非常精彩,受益颇多,是学习ffmpeg api很好的材料.可惜的是其针对的ffmpeg版本已经比较老了,而ffmpeg的更新又很快 ...
- 基于孪生卷积网络(Siamese CNN)和短时约束度量联合学习的tracklet association方法
基于孪生卷积网络(Siamese CNN)和短时约束度量联合学习的tracklet association方法 Siamese CNN Temporally Constrained Metrics T ...
- 学习linux/unix编程方法的建议(转)
假设你是计算机科班出身,计算机系的基本课程如数据结构.操作系统.体系结构.编译原理.计算机网络你全修过 我想大概可以分为4个阶段,水平从低到高从安装使用=>linux常用命令=>linux ...
- atitit.api设计 方法 指南 手册 v2 q929.docx
atitit.api设计 方法 指南 手册 v2 q929.docx atitit.api设计原则与方法 1. 归一化(锤子钉子理论)1 1.1. 链式方法2 1.2. 规则5:建立返回值类型2 1. ...
- Java学习-026-类名或方法名应用之二 -- 统计分析基础
前文讲述了类名或方法的应用之一调试源码,具体请参阅:Java学习-025-类名或方法名应用之一 -- 调试源码 此文主要讲述类名或方法应用之二统计分析,通过在各个方法中插桩(调用桩方法),获取方法的调 ...
随机推荐
- 为IIS增加PHP支持
环境: win2008x64 + PHP5.3
- AC日记——Andryusha and Socks Codeforces 780a
A. Andryusha and Socks time limit per test 2 seconds memory limit per test 256 megabytes input stand ...
- .NET中JSON的序列化和反序列化的几种方式
一.什么是JSON JSON(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式.它基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集 ...
- html中的列表标签
1.<dl>定义列表,<dt>定义列表中的项目,<dd>对项目的描述 例: 效果: 2.<ul>无序列表,<li>列表项 例: 效果: 3. ...
- 关于在iOS设备上探测WIFI,3G,GPRS使用情况的细节
由于设计的游戏需要有一些联网请求,但有时候在设备未连接网络的情况下,如果对网络情况不加以判断,则可能造成游戏为了等游戏超时,浪费不必要的时间. 所以在游戏启动时检测一下网络状况是很必要的,而且当玩家的 ...
- openfire Android学习(五)------连接断开重连
首先要创建连接监听器,用来监听连接状态,这里我写了一个类 继承了ConnectionListener,重写了里面5个方法,最重要的两个方法connectionClosed()和connectionCl ...
- 【bootstrap】Bootstrap Notify的使用步骤
Bootstrap Notify说明文档:http://bootstrap-notify.remabledesigns.com/ Bootstrap Notify的GitHub地址:https://g ...
- BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第2章节--SharePoint 2013 App 模型概览 SharePoint 2013 App 模型
BEGINNING SHAREPOINT® 2013 DEVELOPMENT 第2章节--SharePoint 2013 App 模型概览 SharePoint 2013 App 模型 你能够通过两个 ...
- 转:mybatis——select、insert、update、delete
一.select <!-- 查询学生,根据id --> <select id="getStudent" parameterType="String&qu ...
- [Algorithms] Queue & Priority Queue
In this lesson, you will learn how to create a queue in JavaScript. A queue is a first-in, first-out ...