学习编程时一些常见英文名的含义解释(持续更新)

大三上学期,我在上一门名为科学计算程序设计的课程时,按照讲义里的教程利用 MSYS2 一步步在 CodeBlocks 中配置了GSL(GNU Scientific Library,由一系列数值计算程序组成的程序包)库,但过程中照猫画虎、懵懵懂懂不知所为而为之的感觉让我很难受。
比如:我需要先安装 MSYS2,再利用它进行配置,但我为什么要安装它才能配置,这个 MSYS 又是个什么东西?
再联想起大一学 C 语言以及平时使用电脑时老是看到却又“不求甚解”的英文名称,我一时心血来潮,决定自己第一个博客就用来干解释这些英文名称这个没啥技术难度但又有点意义的事儿吧。
由于本人学识实在有限,以后必然还将遇到更多不明其意的东西,因此这篇文章将会长期更新。

  1. OS

即 Operating System 的简称,操作系统的意思,是运行计算机的总控制程序,其功能是高效地利用硬件。为完成这一任务,操作系统充当硬件的基本接口,既为使用计算机的用户提供界面,也为正在执行的程序提供界面。无论何时,当计算机启动并运行时,操作系统就存在,等待提供服务,并管理计算机的资源。
一个操作系统往往由内核(Kernel,可分为单内核和微内核,操作系统的核心)、shell(计算机壳层,管理我们与操作系统间的交互,本质上就是命令解释器,解释命令并送到内核)、 GUI(graphical user interface,图形用户界面,通过窗口、鼠标指针、图标等提供图形界面),以及大量其它辅助实用工具程序组成。
常见的操作系统包括微软公司的 MS DOS(Microsoft Disk Operating System),Microsoft Windows 系统及 Unix,Linux 系统等,当然也包括我国华为公司的鸿蒙系统(HarmonyOS)。
有的读者可能会对 Unix 和 Linux 系统非常陌生,因为目前最经常使用、我们最常接触到的计算机操作系统是 Windows 系统,而 Unix 和 Linux 系统却离我们的生活很远。这其实是一个广泛的误解。事实上,在目前的智能手机时代,我们的生活早已被它们统治——苹果公司基于 Unix 开发的 macOS 及其衍生出的 iOS、iPadOS 以及谷歌公司基于 Linux 开发的 Android OS。

  1. GNU、GPL 以及 Linux

GNU:这就要从上面的 Unix 系统说起了,第一个原始的 Unix 系统由程序员 Ken Thompson 在 1969 年开发,该工作是在贝尔实验室完成的,属于 AT&T 公司。从那时起,有无数人投身于 Unix 系统的开发,从而使其成为一个现代的操作系统家族。但后来因为种种原因,它开始收费和商业闭源了。
这时,一个叫 Richard Stallman 的大叔觉得很不爽,于是发起了开源运动。1985年,他启动了一个叫做自由软件基金会(Free Software Foundation, FSF)的组织,希望通过从头开始创建大量编写出色、有用的自由发行软件来解决那些商业、专有的系统带来的问题。
因为任何计算机的核心都是操作系统,所以 Stallman 为 FSF 指定的第一个目标就是创建一个可以自由共享并且可以被任何人修改的操作系统。由于他希望 FSF 的产品能够平稳地融入到目前流行的编程文化中,因此他决定让新的操作系统与 Unix 兼容,也就是说它看上去就像 Unix 系统一样,并且还能够运行 Unix 程序。他选择了一个古怪的名称,即 GNU(GNU’s Not Unix),发音为“ga-new”。它是一个递归的缩写词:
GNU
(GNU’s Not Unix)
((GNU’s Not Unix) Not Unix)
(((GNU’s Not Unix) Not Unix) Not Unix)
((((GNU’s Not Unix) Not Unix) Not Unix) Not Unix)
多年以来,Stallman 和许多其他支持自由软件基金会的程序员们一起勤奋工作,创建了大量的开放源代码软件,其中包括了编辑器 Emacs(Editor MACroS,编辑器宏的缩写)、C 编译器(GCC——其含义从GNU C Compiler 逐渐扩展成 GNU Compiler Collection)、C++编译器(g++)、调试器(gdb)、一个 Unix shell(Bash)等等。所有这些软件都被遍布全球的用户所使用,被认为是拥有最高质量的工具。

GPL:为了实现非盈利版权这一思想,Stallman 提出并编写了通用公共许可证(General Public License, GPL),并于 1989 年发布。GPL 本身相当复杂,但基本而言,当在软件上应用 GPL 协议时,允许任何人发行该软件、查看其源代码、修改该软件并发行修改后的软件。此外,GPL 协议要求任何重新发行软件(包括修改后的版本)的人,都不能剥夺软件的使用自由或者添加自己的限制——这是 GPL 的关键。

Linux:GNU 系统在刚诞生时缺少操作系统内核,原来的 BSD(一种 UNIX 发行版)陷入版权纠纷,需要向AT&T公司支付逐年增长的许可证费用,而不包含 AT&T 公司源代码的 Minix 系统(minimal Unix)又过于简单,仅能用于教学。因此,尽管此时 Stallman 和 FSF 已经创建了大量高质量自由软件,但离 GNU 本身还相差甚远。
1991 年,芬兰 Helsinki 大学计算机科学系二年级学生 Linus Torvalds 出于个人兴趣,在Minix 的基础上,编写了自己的 Unix 内核——因为FSF已经提供了各种实用工具(gcc 和 bash 等),在编好内核后,他可以直接使用这些实用工具。Linus 在发布 Linux 的时候选择了 GPL,因此符合 GNU 的宗旨,全世界的程序员都可参与其中,这也使得它始终能够处于高速迭代中。有了内核后,GNU系统就真正地走上了正轨,于是大家把之前的软件与它合在一起打包发布,叫 GNU/Linux。最后,大家念着念着省掉了前面部分,也就变成了 Linux 系统。
这就是 Linux 系统诞生的来龙去脉,实际上,在 Debian、RedHat 等 Linux 发行版中,内核只占了很小一部分容量。

  1. Cygwin、MinGW 以及 MSYS

Cygwin:一个在 Windows 平台上运行的功能强大的 Linux 环境,是由 Cygnus Solutions 公司(现已被 RedHat 公司收购)开发的自由软件。由于有cygwin1.dll 实现了底层的 Windows API 到 Linux API 的转化,所以在 Cygwin 里开发就相当于在 Linux 上开发,这样开发的程序也可以直接移植到 Linux 上。但是这样的程序如果要在 Windows 上执行,运行时必须要有 cygwin1.dll 支持。
总而言之,Cygwin 是运行于 Windows 平台的 POSIX(Portable Operating System Interface of UNIX,可移植操作系统的UNIX接口,缩写为 POSIX )“子系统”,提供 Windows 下的 Linux 环境,并能将部分 Linux 应用“移植”到 Windows 平台的开发环境的一套软件。

MinGW:Minimalist GNU for Windows 的缩写,它是用于开发原生Windows应用的开发环境,提供了针对 win32 应用的 GCC、GNU binutils 等工具以及一些头文件和函数库。MinGW 编译出来的应用不依赖于第三方的模拟层支持,且其支持 GCC 支持的其它语言。由于它的优点,MinGW 被许多 Linux 上发展起来的开发工具选择为 Windows 版本的默认编译器,例如 CodeBlocks、DevC++。
总而言之,MinGW 是用于进行 Windows 应用开发的 GNU 工具链(开发环境),它的编译产物一般是原生 Windows 应用,虽然它本身不一定要运行在 Windows 系统下(它也存在于 Linux、BSD 甚至 Cygwin 下)。
值得一提的是,MinGW 是针对32位 Windows 应用开发的,且由于版本问题,不能很好支持新的 Windows API,因此出现了新一代的 MinGW——MinGW-w64。

MSYS:Minimal GNU system on Windows 的缩写,是一个小型的 GNU 环境。由于 MinGW 本身仅代表工具链,而 Windows 下可以使用它的命令行工具不够齐全也不舒服,因此 MinGW 开发者从比较旧的 Cygwin 创建了这个分支,也用于提供 Linux 环境,以使用 MinGW。与 Cygwin 的大而全不同,MSYS 是冲着小巧玲珑的目标去的,所以整套 MSYS 以及 MinGW,主要以基本的 Linux 工具为主,大小在200M左右,没有多少扩展能力。
总而言之,MSYS 是用于辅助 MinGW 进行命令行开发的配套软件包,提供在 Windows 上模拟 Linux 环境来使用 MinGW,是Windows下最优秀的 GNU 环境。在 MSYS 模拟的 unix 环境下使用 MinGW,就像在 Linux中 使用 GCC 一样。(厌倦了 Cygwin 蜗牛般的 shell 环境,试试 MSYS 中的 rxvt 吧,但如果喜欢完整体验,并且不在乎磁盘占用,还是推荐 Cygwin
值得一提的是,由于 MinGW 万年不更新,MSYS 更是,Cygwin 的许多新功能 MSYS 没有同步过来,于是 Alex 等人建立了新一代的 MSYS 项目。仍然是 fork 了 Cygwin(较新版),但是有一个更优秀的包管理器 pacman,有活跃的开发者和用户组以及大量预编译的软件包,这就是MSYS2。

最后我们再来总结一下,MinGW 和 Cygwin 均可用来编译程序(但如果程序用到了 POSIX API,则只能用 Cygwin 编译),而 MSYS 则是代替 Windows 中的命令行,以更好地应用 MinGW 的配套软件包。
如果你想在 Windows 系统中开发 Linux 跨平台的程序,Cygwin 是很好的选择,但是这样开发的程序必须依赖一个安装时附带的 cygwin1.dll;如果你只是想在 Windows 下使用 GCC 编译器,同时也不想依赖其他的 dll,那么 MinGW 将是很好的一个选择。
似乎介绍的还不是那么清楚,不过以上已经是我所能搜集到的所有信息的精简了,期待有大佬能用简明语言在评论区帮忙指正,不胜感激!

  1. bin、lib、dll、xml 以及 api

bin:即 binary,二进制的意思。安装完一个软件之后,我们经常能在其安装目录下发现这个名字的文件夹,顾名思义,里面存放的一般是可执行的二进制文件,所以它在每个软件中都非常重要,大家在操作的时候千万不要为了清理空间将其删除哦。

lib:即 library,库的意思。也是安装完软件后常见的文件夹,在里面放的都是库文件。
同时,.lib 也是一种文件名后缀,代表的是静态数据链接库,在 Windows 中起到链接程序和函数(或子过程)的作用,相当于 Linux 中的 .a 或 .o 、.so 文件。

dll:即 Dynamic Link Library 的缩写。.lib 文件是静态链接库,对应地,.dll 文件就是动态链接库。相比前者,后者通过允许程序共享执行特殊任务所必需的代码和其它资源,大大节约了应用程序运行所需的磁盘和内存空间,使程序不至于太过巨大。
它的广泛应用使得早期的 Windows 系统能够在紧张的内存条件下运行。

API:即 Application Programming Interface 的缩写,应用程序编程接口的意思。是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节。
简单地说,操作系统为用户提供了用户接口(用户与操作系统的接口),该接口支持用户与 OS 之间进行交互;同时又为编程人员提供了“程序与操作系统的接口”,也就是 API,该接口是程序员在编程时使用的,它是程序取得操作系统服务唯一的途径。借助 API,在通过程序请求操作系统服务的过程中,程序员无需再从头仔细看操作系统的源码及功能实现过程,使用那些函数即可。
值得一提的是,由于 API 的 A——“应用”可以指代很多事物,API 的具体含义在当下也得到了广义化,此处就不再赘述了。

注:以上内容绝大部分来自网络,侵删。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值