学习某些 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的方法的更多相关文章

  1. canvas学习之API整理笔记(二)

    前面我整理过一篇文章canvas学习之API整理笔记(一),从这篇文章我们已经可以基本了解到常用绘图的API.简单的变换和动画.而本篇文章的主要内容包括高级动画.像素操作.性能优化等知识点,讲解每个知 ...

  2. MVC学习系列4--@helper辅助方法和用户自定义HTML方法

    在HTML Helper,帮助类的帮助下,我们可以动态的创建HTML控件.HTML帮助类是在视图中,用来呈现HTML内容的.HTML帮助类是一个方法,它返回的是string类型的值. HTML帮助类, ...

  3. 学习FFmpeg API

    ffmpeg是编解码的利器,用了很久,以前看过dranger 的教程,非常精彩,受益颇多,是学习ffmpeg api很好的材料.可惜的是其针对的ffmpeg版本已经比较老了,而ffmpeg的更新又很快 ...

  4. Java操作mongoDB2.6的常见API使用方法

    对于mongoDB而言,学习方式和学习关系型数据库差不太多 開始都是学习怎样insert.find.update.remove,然后就是分页.排序.索引,再接着就是主从复制.副本集.分片等等 最后就是 ...

  5. 【转】学习FFmpeg API – 解码视频

    ffmpeg是编解码的利器,用了很久,以前看过dranger 的教程,非常精彩,受益颇多,是学习ffmpeg api很好的材料.可惜的是其针对的ffmpeg版本已经比较老了,而ffmpeg的更新又很快 ...

  6. 基于孪生卷积网络(Siamese CNN)和短时约束度量联合学习的tracklet association方法

    基于孪生卷积网络(Siamese CNN)和短时约束度量联合学习的tracklet association方法 Siamese CNN Temporally Constrained Metrics T ...

  7. 学习linux/unix编程方法的建议(转)

    假设你是计算机科班出身,计算机系的基本课程如数据结构.操作系统.体系结构.编译原理.计算机网络你全修过 我想大概可以分为4个阶段,水平从低到高从安装使用=>linux常用命令=>linux ...

  8. atitit.api设计 方法 指南 手册 v2 q929.docx

    atitit.api设计 方法 指南 手册 v2 q929.docx atitit.api设计原则与方法 1. 归一化(锤子钉子理论)1 1.1. 链式方法2 1.2. 规则5:建立返回值类型2 1. ...

  9. Java学习-026-类名或方法名应用之二 -- 统计分析基础

    前文讲述了类名或方法的应用之一调试源码,具体请参阅:Java学习-025-类名或方法名应用之一 -- 调试源码 此文主要讲述类名或方法应用之二统计分析,通过在各个方法中插桩(调用桩方法),获取方法的调 ...

随机推荐

  1. C语言指针与数组

    C语言指针与数组 数组的下标应该从0还是1开始? 我提议的妥协方案是0.5,可惜他们未予认真考虑便一口回绝    -- Stan Kelly-Bootle   1. 数组并非指针 为什么很多人会认为指 ...

  2. 关于Xcode6.0.1创建项目不自动创建Prefix.pch文件的解决办法

    1. 新建工程 2. 创建pch文件: 新建文件->Other->PCH File  新建一个pch文件 3. 在setting里面进行设置: 项目配置->Build Setting ...

  3. 备份MySQL数据库的方法

    前言 我们试着想一想, 在生产环境中什么最重要?如果我们服务器的硬件坏了可以维修或者换新, 软件问题可以修复或重新安装, 但是如果数据没了呢?这可能是最恐怖的事情了吧, 我感觉在生产环境中应该没有什么 ...

  4. zookeeper源码 — 四、session建立

    目录 session建立的主要过程 客户端发起连接 服务端创建session session建立的主要过程 用一张图来说明session建立过程中client和server的交互 主要流程 服务端启动 ...

  5. Codeforces Gym 100733I The Cool Monkeys 拆点+最大流

    原题链接:http://codeforces.com/gym/100733/problem/I 题意 有两颗树(只是树,不是数据结构),每棵树上有不同高度的树枝,然后有m只猴子在某棵树的前m高的树枝上 ...

  6. luogu P1402 酒店之王

    题目描述 XX酒店的老板想成为酒店之王,本着这种希望,第一步要将酒店变得人性化.由于很多来住店的旅客有自己喜好的房间色调.阳光等,也有自己所爱的菜,但是该酒店只有p间房间,一天只有固定的q道不同的菜. ...

  7. 深入理解Atomic原子类

    Atomic是基于unsafe类和自旋操作实现的,下面以AtomicInteger类为例进行讲解. 要理解Atomic得先了解CAS CAS CAS全程Compare And Swap ,是条并发原语 ...

  8. 321. Create Maximum Number

    /* * 321. Create Maximum Number * 2016-7-6 by Mingyang */ public int[] maxNumber(int[] nums1, int[] ...

  9. SQL 列转行与行转列

    假设有张学生成绩表(tb)如下:Name Subject Result张三 语文 74张三 数学 83张三 物理 93李四 语文 74李四 数学 84李四 物理 94*/ -------------- ...

  10. oracle function dtrace

    https://andreynikolaev.wordpress.com/2010/10/28/appetizer-for-dtrace/ Appetizer for DTrace Filed und ...