Ubuntu是免费的。Windows和VS可能非常昂贵。
Ubuntu是免费的。Windows和VS让你对如何使用它们几乎没有控制权。
Ubuntu是一个开箱即用的编程环境。像Bash,grep
,sed
,awk
这样的工具。从历史上看,Windows很难从脚本中编写。批处理文件很糟糕,即使使用PowerShell,在Windows中的命令行体验与Bash和GNU工具相比也微不足道。你可以将其中一些工具移植到Windows上,但体验并不相同。
有些事情不需要复杂的集成开发环境(IDE)。我现在是一名Python开发者,我对它自带的工具和调试器非常满意。我使用文本编辑器、命令行和fabric...我比在.NET下更具控制力。我可以通过一个Fabric命令构建、测试、提交和部署我的Web应用程序。
这并不是说没有大而全的IDE。Eclipse和Netbeans。MonoDevelop。KDevelop4和QT Creator。它们都有自己的忠实用户。
Get-ChildItem -Recursive
很啰嗦,但是使用别名,你可以输入ls -r
(是的,这是PowerShell而不是bash)。较新版本的ISE还可以帮助使其更直观(尽管有些地方可能会让不谨慎的人出错)。 - JohnLtar xjf
这样的命令很直观吗?(每次我使用它时都要去谷歌一下,因为我不经常用它。) - svickman tar
比google tar更容易和更快一些。 - Warren Ptar
比一些工具更加晦涩,但也非常灵活。 - Olisudo apt-get install ghc
nano hello.hs
<copy-paste hello world example>
ghc -o hello hello.hs
./hello
Hello World!
sudo apt-get install <fancy-editor-for-haskell>
apt-get install
命令安装它们,二进制文件和头文件就会自动放置在正确的文件夹中,你甚至不需要检查它们的位置,只需在源文件中使用#include
即可。apt-get
以及一切都必须通过这种方式安装的心态,或许是Linux最好的地方。无论是OSX还是Windows,在这方面都无法与之相比。 - Nathan Longfink
、macports
和 homebrew
,Windows 有 Cygwin
。两个系统都有二进制和源代码软件包管理器,因此我不确定 apt-get
在这里有何独特之处。 - kara denizyum
, pacman
, emerge
, petget
, pkgadd
... - Aesinalias fancynewpackagemanager=apt-get
然后,你就有了一个“新”的软件包管理器。重要的是仓库要全面且可靠。你必须信任维护者自己,更重要的是你必须相信他们会非常小心地确保恶意代码不会溜进来。刚想到,我搜索了 sfml
(我使用的一个库),在 MacPorts 仓库中没有找到,对其可靠性很难说。 - enobayramapt-get
有系统软件的控制权,因为它进行了安装。但是,如果您开始手动下载其他东西并将其随意放置在系统中,APT可能无法识别并对其产生不良反应。 - Aesin关于使用Ubuntu开始免费(免费啤酒)的论点已经不成立了,微软提供了许多免费使用其工具的程序。包括Bizspark,可以为你的创业公司提供3年的许可证(包括生产使用许可证)。还有Dreamspark,可以免费提供给学生。
话虽如此,如果你想探索和学习新的语言和平台,你会发现在Ubuntu上有更好的工具进行开始,如果你希望在微软生态系统之外找工作,你需要熟悉Ubuntu。
我同时使用IDE和文本编辑器与命令行界面(以下简称CLI)来编写程序。
Linux提供的CLI非常有用,从默认安装开始就可以使用。如果你不需要它,而且只是使用IDE,那么它们之间就没有太大的区别了(个人意见)。
grep
不是CLI,它没有界面(只是一个命令行工具)。 - kirigrep
没有什么接口,对吧?我查了一下,CLI 似乎是指 shell 提示符。我一直认为 CLI 是文本界面的 GUI,但维基百科将 rm
等程序列为 CLI,所以我也不太确定。 - kirigrep
的界面是参数、标准输入和标准输出,这个词并不意味着任何图形或伪图形。其他类型的接口包括 Web API、串行协议等。 - Izkatased
,我可以传递给grep
。而且即使那不是事实,你还有开源软件。Linux平台上的大多数(如果不是全部)软件都是开源的。因此,如果你不喜欢它的编写方式,你完全、彻底、绝对可以自己更改软件。这具有极大的赋权意义。无法按照自己的意愿拆解IDE吗?要么进行更改并向上游提交,要么分叉项目。不确定某个功能的行为原因?看源代码,卢克!需要通过命令行自动化某个操作吗?参与项目开发并添加你的修改。遇到错误或安全问题?嘿,你可以自己修复,不必等待SP3.432vb89234.startdate1eQ发布。
你可以组合你想要和你需要的工具。如果有阻碍,你百分之百能够进行更改。即使你没有能力,你也可以付给别人来开发这种变化,甚至向其他有专业知识的人提出建议。
这种方式对编程更好的原因是,当你遇到摩擦时,你可以将其从工作流中消除。因为开发是困难的,所以有很多事情需要考虑才能成为一名成功的程序员,而你需要考虑的事情越多,就越难想到其他事情。
消除摩擦是关键。
所以,如果微软的生态系统宗教是你感到舒适的地方,并且你非常喜欢这些工具,以至于它们没有给你带来太多/任何摩擦...那么,这可能就很好了。
但是,如果你不符合微软的模具(商标待注册),那么你会遇到摩擦。开发将会很痛苦。每次你希望做某事,但却不能做到,都会消耗宝贵的认知资源。如果是这种情况,那么Linux开发环境可能适合你。
除了Visual Studio和Xcode,它们各自有特定用途外,大多数流行的IDE都是跨平台的。看起来有数不清的IDE适用于多种语言,但实际上它们大多基于Eclipse、IntelliJ IDEA或NetBeans。它们的共同之处在于它们都是基于Java的。Java在Linux上的工作效率比在其他操作系统上高。事实上,在相同硬件上,Java在Linux上的速度比在OS X上快20%。许多这些IDE可以通过在Ubuntu软件中心点击一次即可安装。
GCC已经成为业界标准。毫无疑问,它的主要平台是Linux,在Linux上得到最好的支持。而且它是免费且无版税的。
Linux提供了独特的工具,这些工具在其他平台上不可用,例如Valgrind(一种用于内存调试、内存泄漏检测和性能分析的工具)。Linux还配备了调试工具,如strace和ltrace,可以用于调试生产代码(即未使用调试符号编译的代码)。而Windows的等效工具要么不存在,要么非常昂贵,并且功能不同。
Ubuntu拥有出色的软件包管理器。在大多数情况下,安装软件只需执行apt-get install package-name
(也可以使用图形界面,无论是Ubuntu软件中心还是Synaptic)。一旦安装完成,系统会自动通过补丁版本进行更新。软件包系统还会自动跟踪依赖关系,因此您不必担心其他所需的软件包;它们将被自动安装。
如果您从事后端、网络、云等任何类型的编程工作,那么您的目标机器很可能是Linux。当您使用与目标机器相同的操作系统进行开发时,往往会遇到更少的令人讨厌的意外情况。
当然,您可能正在为Windows开发桌面应用程序,但如今这算是程序员的一种小众求职市场。
bash
作为命令提示符,也是可能的,甚至可以在没有Cygwin的情况下实现。我从事嵌入式系统开发,大部分时间都没有问题,使用Windows桌面扩展传统Unix命令行实用程序的本地端口以及Make和GCC来支持该开发。 - RBerteigapt-get
非常出色。你可以快速获取工具、库和调试符号,例如sudo apt-get install libcurl4-openssl-dev
,sudo apt-get install valgrind
,sudo apt-get install libz-dbg
,并且可以轻松地尝试各种东西。 - Alex Jasmin我的经验是,转换到Linux进行编程的程序员(大多数情况下)对技术背景和基础工作原理有更深入的理解。而Mac和Windows用户往往不知道为什么某些东西会这样工作或者为什么不工作。我不确定你是否真的能够通过使用Linux来学到一些东西,或者只是那些愿意学习的人才会转向Linux。
希望我的"胡言乱语"能有所帮助...
我认为Linux发行版就是一个集成开发环境(IDE)。
从一开始,Unix就被设计成为一个开发环境。它是由程序员为程序员编写的。大多数Unix和Linux仍然默认配置带有开发工具。而缺失的部分只需要执行apt-get
(或等效命令)即可获取。然而,Windows在安装IDE之前是一个糟糕的开发环境,而安装一个IDE并不便宜,也不是一个简单的过程。
一个IDE更加集成化,这意味着IDE比使用GCC、Git和Vi(例如)更加紧密耦合。紧密耦合可以使诸如"智能感知"等功能更好地工作。但另一方面,松散耦合也有许多优势(例如灵活性、互换性、没有锁定)。
而且,编译器设计的进展(例如具有易于分离的前端的编译器,如LLVM)最终可能会在松散耦合的环境中提供更好的支持,例如语法错误高亮显示。
vim
这样的编辑器。这是一个非常主观的领域!尽管如此,许多人在 Linux 上使用 IDE,因此您现在正在混淆多种事情。 - Warren Pman
,你可以轻松查看文档内容。 - Alvin Wong