Muh*_*raf 60 programming application-development
为什么在文本文件中或通过终端编写程序是比在 Windows 上使用 IDE(如 Visual Studio)更好的选择(如我所见)?IDE 提供的功能是否存在(例如,显示编译错误)还是手动过程?
Oli*_*Oli 87
这种假设可能在Programmers.SE 上做得更好,因为它在这里很可能是片面的。也就是说,我当了几年 .NET 开发人员并且开始依赖 Visual Studio。它对您有很大帮助,是的,我特别喜欢集成调试器……但是,我认为人们选择 Linux 有几个原因:
Ubuntu 是免费的。Windows 和 VS 可能非常昂贵。
Ubuntu 是免费的。Windows 和 VS 几乎无法让您控制如何使用它们。
Ubuntu 是一个开箱即用的编程环境。像 Bash、grep
、sed
、等工具awk
。从历史上看,Windows 是从底层编写脚本的一大难题。批处理文件很糟糕,即使使用 PowerShell,与 Bash 和 GNU 工具相比,Windows 中的命令行体验也显得微不足道。您可以将其中的一些移植到 Windows 上,但这不是相同的体验。
有些东西不需要复杂的 IDE。我现在是一名 Python 开发人员,我对它自己的内置工具和调试器非常满意。我使用文本编辑器、命令行和结构……而且我比在 .NET 下更有控制力。我可以使用单个 Fabric 命令构建、测试、提交和部署我的 web 应用程序。
这并不是说没有单一的 IDE。Eclipse 和 Netbeans。MonoDevelop。KDevelop4 和 QT Creator。他们都有对他们发誓的用户。
Ubuntu 更适合你吗?谁知道。这是一个功能非常强大且非常可定制的系统。如果你给它一个机会并改变你的工作流程以让它帮助你,你应该能够让它坚持下去。
eno*_*ram 37
不过,我想补充一个更重要的原因;Ubuntu 非常适合尝试新的库、语言、IDE 和编译器。一切都是一蹴而就的。
所以你听说过一种叫做Haskell的奇特语言:
sudo apt-get install ghc
nano hello.hs
<copy-paste hello world example>
ghc -o hello hello.hs
./hello
Hello World!
Run Code Online (Sandbox Code Playgroud)
哦,你听说过 Haskell 的一个花哨的编辑器:
sudo apt-get install <fancy-editor-for-haskell>
Run Code Online (Sandbox Code Playgroud)
与C / C++库一样,您只需将apt-get install
它们和二进制文件和头文件放在正确的文件夹中,您就可以将#include
它们放在源文件中,甚至无需检查它们的放置位置!
从本质上讲,这与您设置日常工作环境的速度无关。它还与您设置实验环境的速度有关。我相信这就是加速 Linux 下学习体验的原因。
小智 20
这是主要来自 Microsoft 平台开发人员的意见。如果您不针对 .NET 生态系统,我认为您最好的选择是 Ubuntu。如果您使用的是 Ubuntu 而不是 Windows,您将可以更轻松地获取、配置和使用几乎所有其他平台/语言的工具。
微软工具链的价值在于它高度集成。从 IDE 到源代码控制、项目管理、构建、部署、数据库、云基础设施、令人厌烦的。如果您要全面使用他们的平台,Microsoft 会使其变得非常容易。
正如一些人所提到的,偏离 Microsoft Way 可能会很痛苦。将 .NET 用于您的代码,将 Oracle 用于您的数据库......天啊,这会很痛苦。
想要创建一个 .NET Web 应用程序并将其部署到 Amazon Web Services...不是很简单。
但是,如果您留在 Microsoft 生态系统中……那个婴儿会像一只知更鸟一样为您唱歌。在称职的软件开发人员手中,Microsoft 平台就像是天才运动员的 PED。它不会让业余程序员创建下一个 Facebook。但它会给了解各个部分如何组合在一起的有才华的开发人员带来优势。
关于开始使用 Ubuntu 的免费(如啤酒)成本的争论是不可能的,Microsoft 提供了许多程序,可让您免费开始使用他们的工具。包括 Bizspark,它为您的初创公司提供 3 年的许可证(包括其工具的生产使用许可证)。以及免费提供给学生的Dream spark。
话虽如此,如果你想探索和学习新的语言和平台,你会找到更好的工具来开始使用 Ubuntu,如果你正在寻找 Microsoft 生态系统之外的工作,你需要熟悉与 Ubuntu。
Mad*_*ike 15
我使用这两种工具,IDE和文本编辑器与ç ommand-大号INE我覆盖整个院落(波纹管被称为CLI),写程序。
Linux 提供的是一个从默认安装开始的有用的CLI。如果您不需要它并且您只是在使用 IDE,那么就没有太大区别(恕我直言)。
我经常使用基于文本的工具进行原型设计。后来,当有更多文件需要管理时,我会重视IDE 为我提供的重构工具。
Way*_*ner 12
我会把我的答案扔进戒指中(尽管我相信这些都是好的)。
你能得到的最基本的答案是,这一切都与哲学有关。
在微软的世界里,这有点宗教信仰——你在雷德蒙德山上有神,如果你想实现任何东西,必须向他们请愿。有时他们会倾听,有时你的牺牲和请求会被置若罔闻。也许他们出去打猎了。微软控制着整个生态系统——他们拥有操作系统,他们拥有 IDE,他们以在 SE 网络上谈论可能不合适的方式将它们结合在一起。即使在 IDE 中,各个部分也是紧密耦合的 - 它可以称为集成但我认为耦合更准确。如果你想稍微改变一下,盖茨禁止你以 Windows 或 Visual Studio 的设计者没有明确允许的方式改变某些东西。然后加入诸如 IE、IIS、Microsoft 服务器、MS SQL Server 和 Office 之类的技术……一切都是一个美好的大家庭。但是,如果您想留下部分家庭成员呢?颤抖吧!
另一方面,您有 Linux,它继承了 Unix 哲学,即每个部分都应该负责自己的小范围责任。它应该做一件事,并且把它做好。最好是通过文本字符串进行通信。正如其他人所指出的那样,sed
,awk
,grep
,等都是这个完美的例子。他们只做他们被设计要做的一件事,而且他们做得非常好。如果你需要做两件事,那么你可以结合这两个工具。这很容易做到。
因为sed
除了输入的输入之外没有任何东西是文本,这意味着任何可以生成文本的东西都不必重新发明轮子。他们可以简单地使用sed
. 并且因为sed
生成文本,任何可以读取文本的东西都可以使用sed
. 文本非常普遍(有一些例外),并且很容易将这些类型的东西组合在一起。
不仅很容易组合它们,而且很容易将它们分开 - 如果我决定不再需要编辑流,但我想过滤结果,而不是将我的文本传递给sed
,我可以通过它grep
改为。
现在,这是在 Linux 环境中开发背后的基本哲学——所以即使你从那里开始,许多工具也提供了类似的接口。它们允许您将它们分解为多个部分,或者通过命令行、端口或 HTTP 与它们交互。
即使情况并非如此,您也拥有开源软件。Linux 平台上的大多数(如果不是全部)软件都是开源的。因此,如果您不喜欢它的编写方式,那么您完全、完全、绝对可以自己更改软件。这是令人难以置信的授权。无法按照您想要的方式拆分 IDE?要么进行更改并将其提交回上游,要么分叉项目。不确定为什么某些事情会这样?使用来源,卢克!需要能够通过命令行自动执行某些操作吗?破解项目并坚持更改。遇到错误或安全问题?嘿,你猜怎么着 - 你可以自己解决这个问题,你不必等待 SP3.432vb89234.startdate1eQ 出来。
您可以组合您想要和需要的工具。如果有什么阻碍了你,你 100% 能够改变它。即使您不具备这种能力,您当然也可以花钱请人来开发这种更改——或者甚至将其推荐给拥有专有技术的其他人。
这更适合编程的原因是,当您遇到摩擦时,您可以将其从工作流程中消除。因为开发很难,要想成为一名成功的程序员,你必须考虑很多事情,而且考虑的越多,其他事情就越难考虑。
消除摩擦是关键。
因此,如果 Microsoft生态系统信仰让您有宾至如归的感觉,并且您非常喜欢这些工具,以至于它不会给您带来太多/任何摩擦……好吧,那可能就好了。
但是,如果您不适合正在申请专利的 Microsoft Mold(tm),那么您就会遇到摩擦。发展会很痛苦。每次您希望自己能做某事但不能做时,这都会消耗宝贵的认知资源。如果是这种情况,那么 Linux 开发环境可能适合您。
我想提供我对这个问题的更一般的想法:
“为什么 Linux 是更好的编程环境?”
我认为在 Linux 上开发的最重要原因是因为您对大多数软件内部结构有充分的了解。如果您有兴趣,您可以了解事物的实际运作方式。这使您可以通过观察实践来学习和适应好的或坏的做法。这为您的想法提供了更多的多样性。
除了用于特定目的的Visual Studio和 Xcode,大多数流行的 IDE 都是多平台的。似乎有数十种语言的无数 IDE,但最终它们中的大多数都基于Eclipse、IntelliJ IDEA或NetBeans。它们的共同点是它们都是基于 Java 的。与在相同硬件上的任何其他操作系统相比,Java 在 Linux 上的工作效率更高。事实上,Java 在 Linux 上的速度比在相同硬件上的 OS X 上快 20%。其中许多 IDE 已准备好在 Ubuntu 软件中心一键安装。
GCC 已成为行业标准。毫无疑问,它的主要平台是 Linux,在那里它得到了最好的支持。而且它是免费且免版税的。
Linux 提供了其他平台上没有的独特工具,例如Valgrind(用于内存调试、内存泄漏检测和分析的工具)。Linux 还带有调试工具,例如strace和ltrace,它们甚至可以用于调试生产代码(即不使用调试符号编译)。Windows 的等效工具要么不存在,要么非常昂贵,并且不提供相同的功能。
Ubuntu 有一个优秀的包管理器。在大多数情况下,安装软件只是apt-get install package-name
(您也可以使用 GUI 来完成,无论是 Ubuntu 软件中心还是 Synaptic)。安装后,它们会被系统自动更新为错误修复版本。包系统还会自动跟踪依赖关系,因此您不必担心需要其他包;它们将被自动安装。
另一方面,在 Windows 中,您必须手动下载和安装软件包,如果它们需要其他一些软件包,您也必须手动进行。也没有系统范围的更新,每个软件包要么实现自己烦人的更新程序,要么根本不更新。
如果您为后端、Web、云等进行任何类型的编程,那么您的目标机器很可能是 Linux。当您在与目标机器相同类型的操作系统上进行开发时,令人讨厌的惊喜要少得多。
当然,您可能正在为 Windows 开发桌面应用程序,但如今这对程序员来说是一个利基就业市场。
小智 7
为什么在文本文件中或通过终端编写程序是比在 Windows 上使用 IDE(如 Visual Studio)更好的选择(如我所见)?
不是的,我可以说它恰恰相反。不过,一般来说,人们往往更喜欢他们更擅长的工具。您使用的工具类型可能有助于轻松编写程序。例如,我可以用 vim 很好地编写 Java 程序,但与 Eclipse 或 IntelliJ 等成熟的 IDE 相比,它确实适得其反。Jon Skeet 很好地回答了为什么使用 IDE的问题。
回到您最初的问题,Linux 唯一擅长的是 C 编程。你在 Linux 上可以做的所有其他事情你也可以在 Windows 上做,反之亦然(编程明智)。由于历史原因,C 编程在 Linux 上更好,它提供了一组很棒的工具(您可以在 Windows 上获得这些工具,但为它设置 Linux 要容易得多)。同样,如果您正在编写 C# 并且喜欢 .NET,那么出于显而易见的原因,Windows 是更好的选择。其他一切都是完全主观的,你会听到双方的利弊。
您用于编程的工具(文本编辑器或 IDE)是一个选择问题。一般来说,您可以说:初学者和非常小的项目倾向于使用更好的文本编辑器,例如 sublime text 或 gedit 的修改版本。只是因为您在使用纯文本编辑器时会学到更多。IDE 可以通过自动化操作来破坏您的学习过程(就像 Visual Studio 所做的那样;))。
对于专业人士来说,使用大量工具和语言,IDE 会派上用场,因为如果您愿意,它们可以为您做更多的事情。有许多 IDE 可供选择,具体取决于您要使用的编程语言。有更好的也有不太方便的。
我的个人经验是,Ubuntu 操作系统比 Windows 更快、更容易设置开发。我想,这是因为我使用的大多数工具和程序都是在 Linux 上构建的,而且因为我不必在互联网上搜索我最喜欢的程序的下载链接。它只是一个“apt-get install program1 program2 program3”。相比之下:我需要 3 个工作日来安装和配置一个全新的 Windows 安装,其中包含我编程所需的一切(公司,而不是私人,那会更快),但在 Ubuntu 中执行相同的任务只需一天。
我的经验是,切换到 Linux 进行编程的程序员(大部分时间)对技术背景和基础知识的工作方式有更深入的了解。Mac 和 Windows 用户往往不知道为什么某些东西会以这种方式工作或为什么不会。我不确定你是否真的可以从使用 Linux 中学到一些东西,或者只是那些愿意学习的人切换到 Linux。
希望我的“blafasel”有所帮助...
归档时间: |
|
查看次数: |
28208 次 |
最近记录: |