我喜欢在 Linux 上编码的 5 个原因我喜欢在 Linux 上编码的 5 个原因我喜欢在 Linux 上编码的 5 个原因我喜欢在 Linux 上编码的 5 个原因
  • 文章
  • 正则表达式
    • 工具
  • 登录
找到的结果: {phrase} (显示: {results_count} 共: {results_count_total})
显示: {results_count} 共: {results_count_total}

加载更多搜索结果...

搜索范围
模糊匹配
搜索标题
搜索内容
发表 admin at 2025年2月28日
类别
  • 未分类
标签

我喜欢在 Linux 上编码的 5 个原因

Linux 是一个很棒的编程平台——它符合逻辑、易于查看源代码并且非常高效。

2021 年,人们喜爱 Linux 的理由比以往任何时候都多。在本系列中,我将分享 21 种使用 Linux 的不同方法。在这里我将解释为什么这么多程序员选择Linux。

当我第一次开始使用 Linux 时,是因为它出色的多媒体支持,因为我从事电影制作工作。我们发现,典型的专有视频编辑应用程序无法处理我们从几乎任何可以记录图像的设备中提取的大部分素材。当时,我并不知道 Linux 作为服务器和程序员的操作系统享有盛誉。我在 Linux 上做的越多,我就越想控制它的各个方面。最后,我发现当计算机的用户可以“说”它的语言时,计算机的功能最为强大。在切换到 Linux 的几年内,我编写了无人值守视频编辑脚本、串接音频文件、批量编辑照片以及任何我能想象到的事情,然后发明了解决方案。没过多久我就明白了为什么程序员喜欢Linux,但正是Linux教会了我热爱编程。

事实证明,Linux 对于新手和经验丰富的程序员来说都是一个出色的平台。这并不是说您需要 Linux 来编程。各种不同的平台上都有成功的开发人员。然而,Linux 可以为开发人员提供很多东西。以下是我发现有用的一些内容。

逻辑基础

Linux 是围绕自动化构建的。 Linux 上的主要应用程序至少可以从具有附加选项的终端启动,而且通常它们甚至可以完全从终端使用,这是非常有意的。这种想法有时被误认为是一种原始的计算模型,因为人们错误地认为编写从终端运行的软件只是为了获得一个可用的应用程序而做的最低限度的工作。不幸的是,这是对代码工作原理的误解,但我们许多人时常会犯这样的错误。我们认为更多总是更好,因此包含 1,000 行代码的应用程序一定比包含 10 行代码的应用程序好 100 倍,对吗?事实是,在所有条件相同的情况下,具有更大灵活性的应用程序是更可取的,无论其如何转换为代码行。

在 Linux 上,手动完成的过程可能需要一个小时,使用正确的终端命令实际上可以缩短到一分钟,并且在解析为 GNU Parallel 时可能会更少。这种现象需要你改变对计算机功能的看法。例如,如果您的任务是向 30 个 PDF 文件添加封面图像,您可能会认为这是一个明智的工作流程:

  1. 在 PDF 编辑器中打开 PDF
  2. 打开前盖
  3. 将 PDF 附加到封面文件的末尾
  4. 将文件另存为新的 PDF
  5. 对每个旧 PDF 重复此过程(但不要对每个新 PDF 重复此过程)

这大多是常识性的东西,虽然重复起来很痛苦,但它确实完成了工作。然而,在 Linux 上,您可以更智能地工作。思考过程类似:首先,设计获得成功结果所需的步骤。经过一些研究,您会发现 pdftk-java 命令,并且您会发现一个简单的解决方案:

$ pdftk A=cover.pdf B=document_1.pdf \
 cat A B \
 output doc+cover_1.pdf

一旦您向自己证明该命令适用于一个文档,您就需要花时间了解循环选项,并确定并行操作:

$ find ~/docs/ -name "*.pdf" | \
 parallel pdftk A=cover.pdf B={} \
 cat A B \
 output {.}.cover.pdf

这是一种略有不同的思维方式,因为您编写的“代码”处理数据的方式与您习惯的强制线性不同。然而,摆脱旧的线性思维方式对于以后编写实际代码非常重要,而且它还有一个好处,就是使您能够更智能地进行计算。

代码连接

无论您在编写代码时为什么平台编程,您都会在许多不同的文件之间编织一个由不可见连接组成的复杂网格。除了最罕见的情况外,在所有情况下,代码都会从标头中提取并依赖外部库来成为完整的程序。这种情况在任何平台上都会发生,但 Linux 倾向于鼓励您自己理解这一点,而不是盲目地相信平台的开发工具包会为您处理它。

现在,信任开发工具包来解析库和包含路径并没有什么问题。相反,这种抽象是你应该享受的奢侈。但是,如果您永远不了解发生了什么,那么当您需要执行开发工具包不知道的事情或在出现问题时对其进行故障排除时,覆盖该过程就会困难得多。

这也可以跨平台翻译。您可以在 Linux 上开发打算在 Linux 以及其他操作系统上运行的代码,并且您对代码编译方式的理解有助于您实现目标。

诚然,仅仅使用 Linux 并不能学到这些教训。完全有可能在一个好的 IDE 中愉快地编码,而不必考虑您安装的库的版本或开发头文件的位置。然而,Linux 不会向您隐藏任何内容。深入系统、找到重要部分并阅读它们包含的代码很容易。

现有代码

了解头文件和库的位置很有用,但引用它们是 Linux 编程的另一个额外好处。在 Linux 上,您基本上可以看到任何您想要的内容的源代码(不包括非开源但在 Linux 上运行的应用程序)。这里的好处怎么强调都不为过。当您了解有关一般编程或新编程内容的更多信息时,您可以通过参考 Linux 系统上的现有代码学到很多东西。许多程序员通过阅读别人的开源代码学会了如何编码。

在专有系统上,您可能会找到包含代码示例的开发人员文档。这很好,因为文档很重要,但与找到您想要实现的确切功能,然后找到演示它如何在您每天使用的应用程序中完成的源代码相比,它就显得苍白无力了。

直接访问外设

在使用 Linux 为媒体公司开发代码后,我经常认为对外围设备的访问是理所当然的。例如,将摄像机连接到 Linux 时,您可以从 /dev/video0 或类似位置提取传入数据。一切都在 /dev 中,并且它始终是到达那里的两点之间的最短路径。

在其他平台上并非如此。连接到操作系统之外的系统通常需要复杂的 SDK、受限库,有时还需要保密协议。当然,这取决于您编程的目的,但很难击败 Linux 的简单且可预测的界面。

抽象层

相反,Linux 还提供了一组健康的抽象层,以应对直接访问或手动编码最终导致的工作量超出您预期的情况。 Qt 和 Java 提供了便利,并且有完整的堆栈,例如 Pulse Audio、Pipewire 和 gstreamer。 Linux希望你能够编码,它也体现了这一点。

添加到此列表

还有更多原因让 Linux 上的编码成为一种乐趣。有些是宽泛的概念,有些是过于具体的细节,这让我免去了几个小时的挫败感。无论您的目标平台是什么,Linux 都是一个很棒的地方。无论您是刚刚学习编程,还是正在寻找新的数字家庭的程序员,Linux 都是最好的编程工作空间。

©2015-2025 艾丽卡 support@alaica.com