我想更多地使用Linux,我所有的编程和开发都是在Windows下完成的。但我想知道使用 Linux 相对于 Windows 的核心优势是什么?有哪些可以在 Linux 中执行而在 Windows 中无法执行的操作?
答案1
以下许多要点同样适用于所有 POSIX 操作系统和许多其他替代操作系统。
- 强大的终端仿真器,具有管道、重定向和后台进程。 bash 是默认 shell,是一种可用于日常系统管理的编程语言。它比 DOS 强大几个数量级,因此许多人选择使用终端和文本编辑器而不是 IDE。
- Linux 提供了许多不同类型的进程间通信。套接字、共享内存、管道、FIFO 等。
- Linux 的 fork-exec 模型使您可以更轻松地编写并发程序。
- 标准化的文件系统布局,虽然各个发行版略有不同,但允许创建自动安装脚本。
- 由于上述原因: 包管理器自动安装新的库和程序及其依赖项。在 Windows 上,您必须手动安装大多数库和配置你的编译器;在 Linux 上,输入“apt-get install”或“yum install”或“emerge”(分别适用于 Debian/Ubuntu、Fedora 和 Gentoo)。这也是分发可供大众使用的软件的好方法。
- 免费,持续更新。无需付费升级操作系统。
- 更好的社区和社区知识。 Linux 程序员更了解他们的操作系统的功能,因为您可以 A) 阅读其源代码,B) 更接近它,以及 C) 找到更多有关其内部工作原理的参考资料。他们还通过邮件列表、论坛和此类网站进行更多交流。开源软件在 Linux 上变得显而易见,我们喜欢共享代码。
- 更好的文档。不知道如何运行某个程序?输入“男人”。想了解 C 函数的行为吗? “男人”或有时“男人3”。
- 定制。您可以自定义任何内容,包括内核。您可以更改桌面 GUI,甚至尝试平铺窗口管理器。大多数发行版允许您在几种不同的文件系统之间进行选择,包括 ext4、XFS、JFS、Reiser 等。这也有助于 Linux 用户更多地了解他们的操作系统。
答案2
我相信最大的优势是您不依赖于特定的供应商。例如,如果您不喜欢 GNU C,则可以使用 Clang。如果您不喜欢 Apache,请使用 lighttpd 或 Nginx 或 cherokee 或......任何给定技术堆栈的极少数部分不允许替代品。
不依赖于供应商的另一面是标准,书面标准,几乎所有东西都存在。这是一个比任何来自“专有世界”的人都可以想象的更大的优势。人们使用书面标准编写文档。人们编写的代码符合(至少大部分)书面标准。没有人会像大型软件供应商所做的那样*咳嗽*BEA*咳嗽*。拒绝修复错误的项目最终会被“分叉”并被取代,因此标准实际上倾向于被遵守,而不是口头上*咳嗽*OOXML*咳嗽*。
答案3
我总是对我的朋友说,Linux 对待开发者就像对待自己的孩子一样。将程序与库链接起来真的很容易,你有很多很棒的编辑器可以使用(vi、emacs、Code::Blocks、Geany...),bash 非常灵活(一开始你不会使用它)非常多,但是当你开始时,你会发现有些事情变得更容易),并且如果你愿意,你可以编辑基本上所有内容的代码。
但对我来说最重要的是包管理器(fedora 为 yum,ubuntu 为 apt,arch 为 pacman)。包管理器会检查您想要安装的每个软件和库的每个依赖项并安装给您。它会检查每一个更新。总的来说,它……让您的生活更轻松。
Windows 本身没有这样的东西。
此外,Linux 还兼容 POSIX。这意味着为其他 POSIX 兼容操作系统(如 FreeBSD、OpenBSD、OpenSolaris,甚至 Mac OS/X)制作跨平台软件应该更容易。 Linux 的几乎每个库都是标准的(Windows 有许多仅适用于它的超级特定实现,如 MFC 或 DirectX),因此制作适用于 Windows 的软件版本也不应该那么困难。