跳转至

软件相关知识

计算机的软件指的是计算机的程序和数据的集合。它可以分为系统软件和应用软件两大类。一般的,操作系统、驱动程序等是系统软件,而具体实现某一功能的是应用软件。

操作系统

操作系统是计算机的核心软件,它负责管理计算机的硬件和软件资源。操作系统提供了一个用户界面,使用户可以与计算机进行交互。我们可以认为操作系统是连接现代软件和硬件的桥梁。目前,常见的操作系统有Windows、macOS、Linux等。

Windows 是目前占有市场份额最大的操作系统。它由微软公司开发,广泛应用于个人计算机。Windows以其易用性和兼容性而闻名,广泛支持各种软件和硬件设备,但是缺点是在多数开发场景中的配置非常复杂,但是通过WSL2等工具也可以弥补一部分,且对于游戏开发等场景Windows仍是首选(主要是因为新游戏几乎都需要先适配Windows)。另一方面,Windows的安全性相对较低,容易受到病毒和恶意软件的攻击。

macOS 是苹果公司开发的操作系统,专门用于苹果的计算机产品。macOS以其优雅的界面和强大的功能而闻名,同时安全性相当高。缺点也很明显,macOS的硬件和软件生态系统相对封闭,且只能在苹果的硬件上运行,因此价格较高。

Linux是一个开源的操作系统,它是一个类UNIX操作系统。其学习曲线陡峭,至今在传统个人计算机市场的占有率仍然远低于Windows和macOS,但在服务器和嵌入式系统使用一直占据主导地位。Linux的开源特性使得它可以被自由修改和分发,因此有很多不同的Linux发行版,例如Ubuntu、Debian、Arch等。

对于计算机新手,我们推荐使用Windows和macOS系统作为操作系统,这是因为它们提供了友好的用户界面和丰富的软件支持,适合初学者使用。对于希望深入学习计算机的初学同学,我们推荐使用Linux系统的发行版Ubuntu,因为它具有和Windows与macOS类似的图形界面,并具有良好的社区支持和丰富的学习资源。对于希望进阶的同学,我们推荐使用Arch Linux,它是一个轻量级的Linux发行版,具有高度的可定制性和灵活性。

驱动程序

驱动程序是操作系统和硬件之间的桥梁,它负责将操作系统的指令转换为硬件可以理解的语言。驱动程序通常由硬件制造商提供,并且在操作系统安装时自动安装。驱动程序的作用是使操作系统能够正确地识别和使用硬件设备。

驱动程序通常是特定于硬件的,因此不同的硬件设备需要不同的驱动程序。操作系统通常会自动检测硬件设备并安装相应的驱动程序,但是有时候需要手动安装驱动程序。我们可以到软件官网上下载最新的驱动程序,或者使用操作系统自带的驱动程序更新工具来更新驱动程序。不推荐使用“驱动精灵”等第三方驱动程序更新工具,因为它们可能会安装不必要的驱动程序,甚至可能会导致系统不稳定。

应用软件

应用软件指的是我们具体用于实现某一功能的工具。这类软件有很多,我们常用的通讯软件QQ、微信等,浏览网页的Chrome、Edge等,都是应用软件。在日常生活中,我们提到的“软件”指的就是应用软件。

怎样安装软件

我们下载软件的主要渠道有两种:通过官方渠道下载、通过包管理器(Winget,Homebrew,apt 等)下载。这两种渠道一般认为是最安全且问题最少的。官方渠道包括软件的官方网站、操作系统提供的应用商店(Microsoft Store、App Store)等;包管理器是用于管理软件包的工具。它可以自动下载、安装、升级和卸载软件包,并且可以解决软件包之间的依赖关系。

在 Linux 和 macOS 中,包管理器是非常常用的工具。它可以帮助用户快速安装和管理软件包,避免手动下载和安装软件包的麻烦。比如我希望在 Arch Linux 下安装 GCC,只需要执行以下命令即可:

sudo pacman -S gcc

在 Windows 中,包管理器的使用不普遍。虽然有一个官方的包管理器 winget,但是支持的软件包较少(但也基本够用);还有一些例如 Chocolatey、Scoop 等第三方包管理器。除此以外,使用 MSYS2、Cygwin 等类 UNIX 环境也可以从某种程度上当成包管理器使用。例如后文讲的安装 GCC 的过程,我们就是使用 MSYS2 来安装的,比下载预编译版本简单许多。

如果不使用包管理器安装软件,则从官方渠道等下载的软件往往是一个压缩包或者一个可执行文件(安装包)。对于压缩包,我们只需要解压到某个目录即可使用;对于安装包,我们需要运行安装包,然后按照提示进行安装即可。为了防止过量占用 C 盘空间,我们建议将软件安装到非系统盘(C 盘)中,例如 D 盘、E 盘等;有些软件在安装时可能会允许你将该软件加入到系统的 PATH 环境变量中,我非常建议大家这么做。

除了上述两种手段,还可以从“松散来源”安装软件,也就是以压缩包形式分发的软件,这类软件只需要解压缩就可以使用。然而松散来源的软件往往需要手动添加到环境变量等。

我们并不推荐在非官方渠道下载软件,这些非官方渠道往往以某某软件站、某某下载站、某某应用商店(Microsoft Store 这类系统自带的除外)等形式出现。通过上述方式下载的软件可能导致使用盗版、附带流氓插件甚至木马、病毒等问题,或者遇到一些其他各种问题。

使用软件的时候,我们往往会发现在软件的安装目录下除了软件本身,还有很多诸如dll等文件。这些都是软件运行所需要的支持文件,在Windows上被称为“应用程序扩展文件”。如果这些文件丢失或损坏,软件往往也无法正常运行。因此,我们不能把软件单独地从安装目录中移动或复制出来到桌面上,这往往会导致软件无法执行;正确的做法是创建一个指向该软件的软链接,也就是Windows下的“创建快捷方式”。我们可以右键该软件,找到“发送到-桌面快捷方式”,于是就可以在桌面上看到并运行这个软件了。

怎样卸载软件

我们不推荐反复装卸软件,因为这可能会导致系统不稳定或者软件残留。但是有些时候,我们认为某个软件长期内不会再需要了,且磁盘空间告急,这时我们应该考虑将其卸载。

计算机小白最喜欢做的一件事是把桌面上的快捷方式移动到回收站,这是非常错误的做法。快捷方式只是指向软件的一个链接,删除快捷方式并不会卸载软件本身。对计算机半懂不懂的人喜欢找到软件的安装目录,直接删除软件的文件夹,这也是错误的做法。因为对于许多软件而言,这样做会导致软件的注册表项和其他配置文件残留在系统中,可能会导致系统不稳定或者软件无法正常工作。

正确的做法有两种:要么使用计算机自带的“程序与功能”界面删除软件,要么使用软件自带的卸载程序(通常命名为 uninstall.exe 或者类似名称)。某些软件可能会在安装时提供一个卸载程序,我们可以在开始菜单或者软件的安装目录中找到它。使用这些方法可以确保软件被完全卸载,留下的残留文件也较少。如要彻底删除残留文件,可以使用一些专业的卸载工具,例如 Geek 等。

另外,对于从“松散来源”安装的软件(例如在Windows上从各种地方下载来的MinGW版GCC),在卸载时确实删除掉软件的文件夹即可,但不要忘记把该软件从环境变量中删除。

Tip

对于macOS用户而言,卸载软件不需要上文叙述那么麻烦,只需要将应用程序拖到废纸篓中即可。或者也可以模仿Linux常见的卸载方式,使用包管理器(如Homebrew)来卸载软件。

软件的版权与开源协议

虽然计算机是一个非常强大的工具,但是它也可能被滥用,造成严重的后果。因此,我们需要遵守计算机伦理、法律和合规要求,以确保我们使用计算机的行为是合法和道德的。有时候我们认为稀松平常的事情,也有可能被警告。比如说用爬虫爬取IEEE论文,可能就会被IEEE警告;或者在GitHub上上传了一些别人写的GPL代码,也有可能被GitHub报DMCA警告。因此我写了本节,以提醒同学们规避风险。

软件可以认为是“数字作品”,因此也受版权法的保护。一般软件有商业软件和开源软件两种。商业软件通常是收费的,用户需要购买许可证才能使用;而开源软件则是免费的,用户可以自由地使用、修改和分发。

商业软件一般遵循专有许可证,例如微软的Windows、Office等。这些软件的源代码是保密的,用户只能使用软件的二进制文件,也不能随意修改和分发软件。这类许可证一般被叫做Copyright。对于此类软件的盗版,即使是个人使用也面临侵权风险;如果是把它用于商业则风险更大,可能面临严厉的惩罚。

而与Copy'right'相对应的也有Copy'left',即开源许可证。开源许可证允许用户自由地使用、修改和分发软件,但是需要遵守一些规定。常见的开源许可证有GPL、MIT、Apache等。这些许可证一般要求用户在分发软件时附带原始许可证,并且在修改软件时注明修改内容。

以 GPL(GNU General Public License)为例,它是最具代表性的 Copyleft 许可证之一。GPL 的核心思想是:任何人都可以自由地使用、修改和再发布软件,但如果将修改后的版本公开发布(例如发布到网上或提供给他人使用),那么整个衍生作品也必须以 GPL 许可证发布。这意味着,基于 GPL 代码开发的软件也必须开源,从而确保“自由”能够延续下去。这种“传染性”特征使得 GPL 在开源社区中备受推崇,但也引发了一些商业公司的顾虑。

除了GPL以外,还有以下这些常见的开源许可证:

  • MIT:MIT许可证是一种非常宽松的开源许可证,允许用户几乎无限制地使用、修改和分发软件。唯一的要求是必须在软件中包含原始许可证和版权声明。MIT许可证非常适合那些希望最大限度地推广其软件的开发者。
  • Apache:Apache许可证也是一种宽松的开源许可证,允许用户自由地使用、修改和分发软件。与MIT许可证类似,Apache许可证要求用户在分发软件时附带原始许可证和版权声明。此外,Apache许可证还包含了一些专利授权条款,允许用户在某些情况下使用专利技术。
  • BSD:BSD许可证是一种宽松的开源许可证,允许用户自由地使用、修改和分发软件。与MIT许可证类似,BSD许可证要求用户在分发软件时附带原始许可证和版权声明。BSD许可证有多个版本,最常见的是3-Clause BSD和2-Clause BSD。
  • MPL:MPL(Mozilla Public License)是一种中等宽松的开源许可证,允许用户自由地使用、修改和分发软件。MPL协议和GPL有许多相似之处,例如该协议也有传染性。与GPL不同的是,MPL允许用户将修改后的代码与闭源代码混合使用,但要求对修改过的文件进行开源。MPL适合那些希望在保护部分代码的同时,仍然参与开源社区的开发者。

值得一提的是,开源并不等于“没有限制”。虽然用户可以自由使用、修改和分发软件,但必须遵守相应的开源许可证条款。违反这些条款,比如未按要求附带许可证、未注明修改内容,或者将 GPL 代码用于闭源商业软件,都可能构成侵权行为,甚至引发法律诉讼。

实用软件推荐

在学习和工作中,我们常常需要一些实用的软件来提高效率。以下是笔者个人推荐的一些实用软件,以供同学们参考。这些软件中有些是免费的,有些是收费的,具体使用时请注意软件的授权和使用条款。同时,为了防止功能冗余,我们非常建议每类软件只安装一个(尤其是播放器和杀毒软件!)。

  • 下载器类
  • Internet Download Manager(IDM):一个极为强大的收费下载软件,可以显著加速下载速度,并支持断点续传等功能。遗憾的是,它不支持磁力链接和BT下载。
  • Free Download Manager(FDM),一个免费的下载软件,界面友好且现代,且支持磁力链接和 BT 下载。
  • 比特彗星(BitComet):一个免费且经典的BT下载软件,支持磁力链接和BT下载。
  • qBittorrent:免费且开源的 BT 下载软件。
  • 浏览器类
  • Google Chrome:一个免费的浏览器,基于Chromium内核。
  • Mozilla Firefox:一个免费的浏览器,基于Gecko内核。
  • 油猴:一个浏览器扩展,可以让用户自定义网页的样式和功能。它可以通过安装脚本来实现各种功能,例如广告拦截、界面美化等。油猴支持多种浏览器,包括Chrome、Firefox等。这里推荐一个链接:PKU-Art,它可以给你一个风格现代、足够好看的教学网。
  • 压缩与解压缩类
  • 7-Zip:一个免费且强大的开源老牌压缩软件,支持多种压缩格式,包括7z、zip、rar等。它的压缩率高(7z格式压缩号称全球第一压缩率),速度快,功能强大。
  • NanaZip:在 7-Zip 基础上提供更现代化的界面(Windows 11 风格),并增加对 ZStd、LZ4 等压缩算法的编解码支持。此外,它使用 MSIX 打包,因此可上架 Microsoft Store,且可以在 Windows 11 的默认右键菜单中直接使用,而无需打开扩展右键菜单。
  • 播放器类
  • VLC Media Player:一个免费的开源播放器,支持众多音频和视频格式。
  • MPV:免费且开源的播放器,支持格式众多。可以使用命令行、脚本或着色器来精细地控制播放器行为,但上手难度较高。
  • PotPlayer:另一个免费的播放器。
  • 杀毒软件类(Mac和Linux因为其高安全性,通常不需要安装杀毒软件)
  • Windows Defender:Windows系统自带的杀毒软件,功能强大,查杀率接近100%,已经和老牌专业杀软(卡巴斯基、BitDefender等)不相上下,能够有效地保护常规情况下计算机免受病毒和恶意软件的侵害。但是误报率较高,可能会误报一些正常的软件为病毒。
  • 火绒:一个免费的国产杀毒软件,误报率很低,界面友好,适合普通用户使用。然而,火绒的杀毒能力要低一些。
  • 其他
  • Everything:一个免费的文件搜索工具,能够快速地搜索计算机上的文件。它的搜索速度极快,支持多种搜索方式,包括模糊搜索、正则表达式搜索等。
  • Wallpaper Engine:一个收费的动态壁纸软件,能够让你的桌面变得更加美观。它支持多种动态壁纸,包括视频壁纸、动画壁纸等。
  • Rufus:一个免费的U盘制作工具,能够将ISO镜像文件写入U盘,制作成可启动的U盘。它支持多种操作系统的ISO镜像,包括Windows、Linux等。
  • Ventoy:一个开源的u盘启动工具,能够使多个ISO镜像共存于U盘,而不必格式化U盘,选择从其中的一个镜像启动。它能使多个镜像文件和U盘其他文件共存,是装机盘和资料盘合一的好工具。
  • UltraISO:一个收费的光盘镜像制作工具,能够创建、编辑和转换光盘镜像文件。它支持多种光盘格式,包括ISO、BIN、CUE等。
  • VMware/VirtualBox:两个免费的虚拟机软件,能够在计算机上创建虚拟机,运行其他操作系统,可以用于测试软件、学习操作系统等。
  • Cherry Studio:一个LLM管理器,能够帮助你使用各种LLM来简单地创建Agent,来辅助你的开发和生活。

另外,除非有相关向下兼容的需求,否则不要使用软件的过低版本。这是因为,许多软件都在不停地更新以不停的向上兼容,并修复一些已知的漏洞和问题;而过低版本的软件往往也会逐渐的停止支持。于是,过低版本的软件往往都会面临许多问题。所以我们建议同学们使用软件的一个较新版本。