作为编程环境,Ubuntu 比 Windows 有哪些优势?

作为编程环境,Ubuntu 比 Windows 有哪些优势?

为什么在文本文件或通过终端编写程序比在 Windows 上使用 Visual Studio 等 IDE 更好(据我所知)?IDE 提供的功能是否存在(例如显示编译错误)还是手动过程?

答案1

这种假设可能会更好地程序员.SE因为这里可能相当片面。话虽如此,我做了几年的 .NET 开发人员,开始依赖 Visual Studio。它为您做了很多事情,是的,我特别喜欢集成的调试器……但是,我认为人们选择 Linux 有几个原因:

  • Ubuntu 是免费的。Windows 和 VS 可能非常昂贵。

  • Ubuntu 是自由的。Windows 和 VS 几乎不能让你控制如何使用它们。

  • Ubuntu 是一个开箱即用的编程环境。Bash、、、等工具。Windows 一直以来都是编写脚本的一大痛点。批处理文件很糟糕,即使使用 PowerShell,与 BashgrepsedGNUawk工具相比,Windows 中的命令行体验也显得微不足道。您可以将其中一些移植到 Windows,但体验并不相同。

  • 复杂的设置很容易通过apt-get以下工具实现自动化和复制:木偶厨师朱朱织物和简单的脚本。

  • 有些东西不需要复杂的 IDE。我现在是一名 Python 开发人员,我对它自己的内置工具和调试器非常满意。我使用文本编辑器、命令行和 Fabric……而且我比在 .NET 下控制得更好。我可以用一个 Fabric 命令构建、测试、提交和部署我的 Web 应用程序。

    这并不是说没有单片 IDE。Eclipse 和 Netbeans。MonoDevelop。KDevelop4 和 QT Creator。它们都有自己的忠实用户。

Ubuntu 更好吗为你谁知道呢。这是一个功能强大且可定制性极强的系统。如果您给它一个机会并改变您的工作流程以允许它帮助您,您应该能够坚持下去。

答案2

不过,我想补充一个更重要的原因;Ubuntu 非常适合尝试新的库、语言、IDE 和编译器。一切都只需一个 apt-get 即可完成。

你听说过一种叫做哈斯克尔

sudo apt-get install ghc
nano hello.hs
<copy-paste hello world example>
ghc -o hello hello.hs
./hello
Hello World!

哦,你听说过 Haskell 的一个花哨的编辑器:

sudo apt-get install <fancy-editor-for-haskell>

同样C/C++库,你只需要将apt-get install它们和二进制文件以及标题放入正确的文件夹,然后就可以将#include它们放入你的源文件中,甚至不需要检查它们放在哪里!

本质上,这并不是关于你能多快地设置日常工作环境。它还关于你能多快地设置实验环境。我相信这就是加速 Linux 下学习体验的原因。

答案3

这是一位主要使用 Microsoft 平台的开发人员的观点。如果您的目标不是 .NET 生态系统,我认为 Ubuntu 是您的最佳选择。如果您使用的是 Ubuntu 而不是 Windows,那么获取、配置和使用几乎所有其他平台/语言的工具将更加容易。

微软工具链的价值在于它高度集成。从 IDE 到源代码控制、项目管理、构建、部署、数据库、云基础设施,令人厌烦. 如果您全力使用微软的平台,一切将变得非常容易。

正如一些人提到的,偏离 Microsoft Way 可能会很麻烦。使用 .NET 编写代码,使用 Oracle 编写数据库...哦,那会很麻烦。

想要创建一个 .NET Web 应用程序并将其部署到 Amazon Web Services...不是很直接。

但如果你留在微软生态系统中……那孩子就会像一只嘲鸫一样为你歌唱。在有能力的软件开发人员手中,微软平台就像是天才运动员的 PED。它不会让业余程序员创建下一个 Facebook。但它会给了解如何将各个部分组合在一起的天才开发人员带来优势。

Ubuntu 免费(如啤酒)的论点已经过时了,微软提供了许多程序,让您免费开始使用他们的工具。包括 Bizspark,它为您的初创公司提供 3 年的许可证(包括其工具的生产使用许可证)。还有 Dream spark,它免费提供给学生。

话虽如此,如果您想探索和学习新的语言和平台,您会找到更好的工具来开始使用 Ubuntu,如果您正在寻找 Microsoft 生态系统之外的工作,那么您将需要熟悉 Ubuntu。

答案4

我会公开我的答案(尽管我相信这些都是很好的答案)。

你可以得到的最基本的答案是这全是哲学。


在微软的世界里,这有点宗教色彩——如果你想实现任何东西,就必须向雷德蒙德山上的众神请愿。有时他们会倾听,有时你的牺牲和恳求会被置若罔闻。也许他们出去打猎了。微软控制着整个生态系统——他们拥有操作系统,他们拥有 IDE,他们以可能不适合在 SE 网络上谈论的方式将它们结合在一起。即使在 IDE 中,各个部分也是紧密耦合的——可以称之为融合的但我认为“耦合”更准确。如果你想要稍微改变一下,盖茨禁止你以 Windows 或 Visual Studio 的设计者没有明确允许的方式改变某些东西。然后加入 IE、IIS、Microsoft 服务器、MS SQL Server 和 Office 等技术……一切都是一个幸福的大家庭。但如果你想抛弃部分家庭呢?不寒而栗


另一方面,Linux 继承了 Unix 的哲学,即每个部分都应该负责自己的小职责范围。它应该做某件事,并做好它。最好通过文本字符串进行交流。正如其他人指出的那样sed,、、、等就是完美的例子。他们做awkgrep它们的设计初衷就是做这件事,而且它们做得很好。如果你需要做然后你就可以把这两个工具结合起来。这很容易做到。

因为sed除了输入文本之外什么都不期望,这意味着任何事物可以生成文本的程序不必重新发明轮子。他们只需使用sed。因为sed可以生成文本,所以任何可以text 可以使用 的输出sed。Text 非常通用(有一些例外),并且很容易将这些类型的东西组合在一起。

不仅可以轻松地将它们组合起来,而且可以轻松地将它们分开 - 如果我决定不再需要编辑流,但我想过滤结果,而不是将我的文本传递给,而是将sed它传递给grep

现在,这是 Linux 环境中开发背后的基本理念 - 所以即使你从那里开始,许多工具提供了类似的接口。它们允许您将它们分解成多个部分,或者通过命令行、端口或 HTTP 与它们交互。

即使如此不是在这种情况下,您还有开源软件。Linux 平台上的大多数(如果不是全部)软件都是开源的。因此,如果您不喜欢它的编写方式,您完全可以自己更改软件。这非常令人鼓舞。无法按您想要的方式拆分该 IDE?要么进行更改并将其提交回上游,要么分叉该项目。不确定为什么某些行为会这样?使用来源,卢克!需要能够通过命令行自动执行某些操作?破解项目并粘贴您的更改。遇到错误或安全问题?嘿,猜猜怎么着 - 您可以自己修复它,而不必等待 SP3.432vb89234.startdate1eQ 出来。

你可以组合你想要和需要的工具。如果有什么阻碍你,你 100% 能够改变它。即使你没有能力,你也可以付钱给别人来开发这种改变——或者甚至建议给其他有诀窍的人。

这对编程来说更好,因为当你遇到摩擦,你可以从你的工作流程中消除它。因为开发是难的要想成为一名成功的程序员,你需要考虑很多事情,你考虑的事情越多,思考其他事情就更难

消除摩擦是关键。

因此,如果您对 Microsoft生态系统感到满意,并且非常喜欢这些工具,以至于它不会给您带来太多/任何摩擦……那么,它可能就很好。

但如果你不符合微软模具(tm,正在申请专利),那么你就会遇到阻力。开发将是一件痛苦的事。每次你希望你可以做一些事情,但做不到,这会消耗宝贵的认知资源。如果是这样的话,那么 Linux 开发环境可能适合你。

相关内容