库是什么
实际开发中,程序员要经常和各种库打交道,比如用 Qt、Tkinter、JavaFx 等图形界面库开发用户界面,用 OpenCV、Pillow 等图像处理库处理图像,用 NumPy、TensorFlow 等数学计算库进行数据处理等。
本教程将带领大家系统地学习链接库,链接库就属于库的一种。考虑到很多初学者对库的概念一知半解,作为本专题的第一篇文章,先给大家解释清楚什么是库。
代码库可以简单地认为是一系列函数的集合,在硬盘上往往是一个文件夹,里边包含多个(≥1)代码文件。例如,下面是我用 C 语言写好的一个代码库,它的功能非常简单,只包含一个名为 myMath.c 的源代码文件:
在实际开发中,直接使用现成的代码库能够节省开发成本,提高开发效率,并且很多库都是编程专家写好的,库代码的执行效率、严谨性、安全性和规范性往往要优于我们自己编写的代码。市面上有很多优秀的代码库,有的收费,有的免费,我们要善于利用这些库,尽量不要重复造轮子。
通常情况下,我们将代码库细分为以下两种:
也就是说,标准库指的是官方(编程语言的开发者)编写的代码库,学习编程语言时会顺带着一起学习;第三方库指的是非官方(组织机构或者个人)编写的代码库,没有质量把控,良莠不齐,需要单独花精力了解它们的功能和用法。
开源库指的是公开源代码的库,任何人都可以查看、使用和修改库的代码。下面列举了开源库的一些好处:
库的拥有者可以选择不公开库的源代码,而是将所有源代码编译成二进制代码,然后只公开二进制版本的库。以下是闭源库的一些好处:
注意,开源库和闭源库都存在二进制的版本。大多数闭源库公开的就是二进制版本;开源库公开了源代码,只要把所有源代码编译成二进制代码,就能生成它的二进制版本。
本教程要讲的链接库,本质上就是二进制版本的代码库。关于链接库更多的具体细节,会在下节做详细地讲解。
声明:《链接库系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。
本教程将带领大家系统地学习链接库,链接库就属于库的一种。考虑到很多初学者对库的概念一知半解,作为本专题的第一篇文章,先给大家解释清楚什么是库。
什么是库
库(Library)本意指的是存放钱、粮、物品的场所,比如粮库、油库、仓库等。程序员使用的库,存放的全部是写好的代码,所以全称叫做代码库。代码库可以简单地认为是一系列函数的集合,在硬盘上往往是一个文件夹,里边包含多个(≥1)代码文件。例如,下面是我用 C 语言写好的一个代码库,它的功能非常简单,只包含一个名为 myMath.c 的源代码文件:
//myMath.c int add(int a, int b) { return a + b; } int sub(int a, int b) { return a - b; } int mul(int a, int b) { return a * b; } int div(int a, int b) { if (b != 0) { return a / b; } return -1; }myMath.c 中有 4 个函数,可以完成两个整数的四则(加、减、乘、除)运算。把 myMath.c 添加到某个 C 语言项目里,就可以直接调用这 4 个函数完成四则运算,每个函数可以调用很多次。
在实际开发中,直接使用现成的代码库能够节省开发成本,提高开发效率,并且很多库都是编程专家写好的,库代码的执行效率、严谨性、安全性和规范性往往要优于我们自己编写的代码。市面上有很多优秀的代码库,有的收费,有的免费,我们要善于利用这些库,尽量不要重复造轮子。
通常情况下,我们将代码库细分为以下两种:
- 标准库(Standard Library):编程语言的开发者在开发编程语言的时候,一般都要预先写好常用的代码,或者说常用的功能,例如输入输出、数学计算、文件操作、网络操作、日期时间、错误处理、字符串处理等,这些由官方编写的库称为标准库,它们随编程语言一起发布,可以认为是编程语言的一部分。
- 第三方库(Third-party Library):有一些组织机构或者个人也会开发一些库,有的是为了盈利,有的是业余爱好,有的是本公司正在使用的代码,开源出来造福人类,这些库称为第三方库。
也就是说,标准库指的是官方(编程语言的开发者)编写的代码库,学习编程语言时会顺带着一起学习;第三方库指的是非官方(组织机构或者个人)编写的代码库,没有质量把控,良莠不齐,需要单独花精力了解它们的功能和用法。
事实上,有相当一部分第三方库也是非常优秀的,已经得到了大家的认可,已经应用在大公司的项目开发中,这些库能够和标准库媲美。
开源库VS闭源库
根据拥有者是否公开库的源代码,库又可以分为两类,分别是开源库(Open-source Library)和闭源库(Closed-source Library)。开源库指的是公开源代码的库,任何人都可以查看、使用和修改库的代码。下面列举了开源库的一些好处:
- 通过公开库的源代码,拥有者可以邀请其他人为库的更新和维护贡献力量,共同推动项目的发展;
- 对所有人公开库的源代码,任何人都可以审查代码,确保库中没有潜在的漏洞、后门等,有助于和用户建立信任;
- 有更多人对库代码进行测试和改进,有助于提高代码库的质量和可靠性;
- 开源库可以展示拥有者的技术实力,增加知名度和声誉,有助于吸引更多潜在用户和合作伙伴的注意,带来更多商业机会和合作。
除了开源库,剩下的都是闭源库,也就是那些不公开源代码的库。注意,开源和免费是两个不同的概念,开源的目的也不是做慈善事业。开源库的盈利模式有很多,比如在免费版本基础上迭代一个收费的商业版本、为用户提供有偿的技术支持、通过提供技术文档、培训、二次开发支持等服务获得收益等。
库的拥有者可以选择不公开库的源代码,而是将所有源代码编译成二进制代码,然后只公开二进制版本的库。以下是闭源库的一些好处:
- 对于普通用户来说,二进制代码是不可读的,只公开二进制版本的代码库,可以隐藏库的具体实现细节,大大避免抄袭代码、篡改等情况的发生,保护自己知识产权。
- 拥有者可以将闭源库作为付费产品进行销售,从而获取收入。此外,库的拥有者可以为客户提供专业的技术支持和维护服务,也可以从中获得收益;
- 由于库的源代码不公开,攻击者难以发现库代码中潜在的漏洞,增加了攻击的难度;
- 通过只公开库的二进制版本,拥有者能够更好地控制代码库的更新方向和版本,确保库的稳定性和一致性。
注意,开源库和闭源库都存在二进制的版本。大多数闭源库公开的就是二进制版本;开源库公开了源代码,只要把所有源代码编译成二进制代码,就能生成它的二进制版本。
本教程要讲的链接库,本质上就是二进制版本的代码库。关于链接库更多的具体细节,会在下节做详细地讲解。
声明:《链接库系列教程》为本站“54笨鸟”官方原创,由国家机构和地方版权局所签发的权威证书所保护。