使用Linux是否有利于您作为程序员?

有什么明确的理由为什么使用Linux可能会使您受益于程序员? 比如只能在linux上使用的工具,或者其他可以让你成为更好的程序员或更高效的程序员的东西?

如果你使用linux或者任何其他的unix版本的开发工具,你可以直接访问sed,grep,awk,pipe道输出,stderr等最好的低级工具套件。Unix是一个开发者游戏平台,我们谁可以build立命令行工具。

另一方面,Windows适合最终用户,这是更受欢迎的主要原因,比开发人员更多的用户。

使用Linux不会比使用其他操作系统更受益。

你可能会学习使用Linux的东西,但你也可以学习使用Windows,Mac OS,FreeBSD,RiscOS,AIX或FreeDOS的东西。

Linux中没有任何东西在另一个操作系统上无法执行。

它是一个不同的操作系统,具有不同的devise哲学,不同的结构,不同的目标 – 即使你从来没有看过它的源代码,你仍然可以从所有着名的(?)sed / awk / grep / cat /pipe道/redirect和无数其他工具神奇地一起工作(UNIX的“做一件事,好”的哲学)。

软件包pipe理员非常好 – aptitude install gcc ,你有gcc和所有需要的。 aptitude install libohnowhereisthatlib-dev ,你有这个项目所需的头文件。

这不是工具,而是UNIX的思维方式或文化 ,就像Joel所做的那样。 知道Linux和Windows将会给你一个不同的观点。

在我的观点/经验中,GNU / Linux如何帮助开发人员:

  • 在Unix和开源世界中,开发人员有许多“良好礼仪”。 如何做的事情往往暴露给你,用户,而且也是感兴趣的开发人员。 所以你可以在自由软件世界学到很多“做”和“不”的事情。 而在Windows下,应用程序和代码质量则更高。 尽pipe很多人谈论Linux应用程序的异构性,但在较低的层面上,你会看到很大的共识。

  • 在自由软件世界中,你没有“不在这里发明”综合征,恰恰相反。 一切都可以通过图书馆来完成。 你学会了build立在别人的工作上。 让你的工作更快完成 您将学习如何创build一个良好的API,最重要的是编写能够很好地插入到其他代码中的代码 – 这使得维护和扩展变得更加容易。

  • Linux是开发者的天堂。 很多人把它归咎于糟糕的可用性 – 对于最终用户! 原因是:开发人员基本上为自己(和服务器pipe理员)构build了一个系统。 如果你有一个开发人员的思想和工作空间,这使得它更加可用。 你在这个系统上获得更多的权力, 知道如何利用它。 两个插图:

    1. 你是否经常想“如果只有一个程序能为我做”,却懒得自己写这个程序只是为了完成一项工作? 在Linux上大多数情况下,这个更改为“我认为一个小的shell脚本就可以做到这一点”。 我在Windows上看到很多人不经意地花了很多时间,只用了5分钟就会手忙脚乱。 它开始于着名的,但subyptile“你必须点击改变焦点”或不断调出窗口一个接一个,因为你没有多个虚拟桌面…

    2. 大家都知道Windows是一个非常“可视”的环境。 你通过点击操作来完成任务。 这对于需要视觉反馈和线索的普通用户来说很重要,否则他不会find他需要的文件或程序。 但是作为一名开发者,你就像一个有经验的棋手:你可以被蒙上眼睛,因为无论如何你已经记住了这个游戏。 你得到的速度要快得多, 不必等待视觉响应,而视觉响应只是实际数据的一个额外的层面(如文件系统)。 或者,你会指出并点击你的程序,而不是把它们写下来?

也就是说,应该清楚的是,在Linux世界中也有许多障碍和烦恼。 所以,当你想要第一次做新的东西的时候,你首先必须要学习所有的东西,当你想快速完成的时候。 (你可以争辩说,在大多数情况下,它会得到回报..一开始,高O(1)就会为大的n打败苗条的O(n);))

我发现我在Linux(或Mac OS X)下编程的效率比在Windows下高得多。

这部分是因为我在工作中遇到的Windows机器被其可笑的文件系统和一个被locking并configuration为扫描访问中的 每个 文件的McAffee病毒扫描器所束缚。 这包括在后台解压zip和jar文件,以确保它们不包含任何恶意。 ( 编辑注:这是Window的弱点,首先需要像McAffee这样的软件。)

在Linux下使用强大的shell(我使用bash和fish )对我来说是另一个节省时间的工具。 在这个基础上,我无法计算每天能够自动化的数字重复性任务。

例如:Subversion Checkout

假设我想检查(从svn中)存储库中所有项目的中继。 大约有50个。 作为本地configuration和构buildpipe理器,我觉得让他们随时可用是有用的。

在Windows下,我花了半天的时间点击我自己,直到死亡。 在每次结账之间,我都会捻着我的拇指,等候麦克菲来摆脱困境,让我继续工作。 (在我的特殊情况下,在Windows下的Checkout只要在Linux下使用10次就可以了。)

在Linux上,这是几行shell。 然后它自己运行,没有我的进一步互动,并在十分之一的时间完成。

示例:构build软件

我主要用Java编程。 我用maven构build了大部分的东西。 Maven构build的最终结果是一个包含所有已编译的类文件和其他东西(资源)的jar文件。 Maven本身就是由大量的jar文件组成,并且在Java下运行。 你认为这样做在Windows下使用病毒扫描程序,坚持在每次访问每个jar,class,java和xml文件的内容时都要执行扫描。

像一个slu </s>。 游泳的。 在一个果冻池。


我希望,如果我的雇主把我的Linux盒子拿走,我的生产力将下降到现在的一半。 我也会感到非常沮丧,而且通常情绪低落。 (我讨厌自己做什么,显然应该自动化。)

据我所知,没有工具只能在Linux或Unix上使用。 还有其他好处。

我发现Linux是一个更舒适的编程环境。它本质上是为像我这样的人使用而devise的,而Windows是为那些不想知道计算机工作原理的人devise的。 (想要完成其他事情肯定没有错,不想详细了解计算机,但是我不在这个目标受众中)。我并不是特别喜欢Visual Studio。 它做了一些很好的事情,但是使其他事情变得困难。 例如,去年我正在修改我们的软件以64位运行,而且有很多重复性的改变很容易使用标准的Linux工具来完成,但是在原始的Visual Studio中需要大量的点击操作。 我相信,有些工具可以在Windows上处理这种事情,但是它们往往比较模糊。

我喜欢Linux文化。 从开发人员那里学到很多东西,就像从Windows和Mac OS文化中学到很多东西可以帮助不熟练的最终用户一样。 我向任何开发人员推荐Eric Raymond的“Unix编程艺术” ,尤其是那些主要从事Windows编程的开发人员。

Windows源代码没有特别的缺乏,但是在Linux上有更多的源代码需要检查。 在源代码附带的Windows上,您不会获得那么多的大型和工业级应用程序。 这并不是说你需要运行Linux来检查它,但是当你想要使用它的时候,它会有很大的帮助。 我喜欢了解我正在工作的层次下面发生了什么,在Linux上比在Windows上更容易。

为了成为一名优秀的开发者,你应该学习各种语言。 我发现在Linux上比在Windows上更好地实现奇怪的语言。

我build议开发人员在软件工具方面有丰富的经验,以便他们可以从不同的环境中学习不同的东西。 这与操作系统一样适用于语言。

除了这些工具之外,如果遵循UNIX / Linux的意识形态,就像在命令行中看到的一样,它会使一个更好的程序员成为一个更好的程序员 – 使小的,通用的,孤立的组件完成有限的逻辑数量的工作,高度可重用。

考虑一下你可以使用和组合cat,grep,awk和co的所有方法,每个方法都有一个简单的function,当一个失败的时候,它不会把剩下的部分放在一起。

不是真的。

还有一些优秀的软件包pipe理,可以把各种各样的库放在一个公平的地方,但如果说search库是使Windows开发人员效率低下的话,那就太虚伪了。

披露:我现在运行Linux多年。

您将成为一名更好的程序员,因为您将知道如何在Linux下进行编程。 你将会是编程Linux程序中更高效的程序员。

一个真正的好处是你可以学习如何使用Emacs或Vim,这可以帮助你将来使用远程terminal。

很长时间以来,Linux / GNU作为程序员对我来说是非常宝贵的。 我不需要购买书籍(尽pipe我买了几本书),获得企业级质量代码的过程非常简单快捷,系统捆绑了一个出色的C库和工具链以及一些出色的编辑器。 文档可能缺乏一些应用程序,但是开发工具和库文档很多(从一开始就是这样)。

自从90年代末以来,我一直在编写服务器和应用程序,以在Linux(和其他类似Unix的内核)下运行。 对我来说最有帮助的是工具链的一致性,GNU获得了最大的荣誉。 同样美好的一致性也开始让我受宠若之于我习惯了glibc生物的舒适和扩展,我离真正的低级系统编程越来越远。

所以现在我想说,像HelenOS这样的新兴操作系统正在帮助我成为一个更好的程序员。 我回过头来使用一个原始的,不完整的C库,回到每天使用交叉编译器,并被迫自行实现,因为它们还不存在。

Linux教会我单片内核devise可能是非常可行的,同时给我一个很好的POSIX接口来编写应用程序。 GNU给了我所有的工具,我需要成为一个更好的程序员。

现在,我觉得自己并没有受到足够的挑战,所以我真的在磨练自己的技能,重复整个循环,同时又做了一些全新的,不同的事情。这一次,它是一个微内核。我的温暖和模糊的“标准”出来了。 🙂

这就是为什么我build议任何程序员都可以像操作系统一样探索一个UNIX系统,这是为了不断增长您的知识和经验。

只要使用linux,你不会马上成为一个更好的程序员,但随着时间的推移,肯定是一个更有效的。 你可以在壳上做更快的事情(在Windows中使用鼠标迟早会在你的手腕上造成痛苦)。 只是通过使用Linux,你会学到很多,但是可能是一个陡峭的曲线。

我认为从本质上来说,没有任何工具只能在Linux上使用。 我肯定会同意使用Linux工具可以教你很多,例如grep,sed,awk。

不,大多数工具也被移植到Windows,例如。 GNU工具链(Cygwin)。 有些东西需要其他的工具(是的,通常不是免费的)来获得一些类似于Linux下的工作stream程,但这不是一个大问题。

用Linux你可以学习很多Unix和networking原理。 一个开发人员应该有足够的知识,在基于Unix的系统上使用webserver,ftp,ssh,svn / cvs设置一个开发环境…是的,我看到Linux更多的好处在于networking而不是程序员操作系统。

从90年代中期开始,我就和Linux一起工作,并且热爱自由概念,稳定性以及networkingfunction。 Linux是服务器系统。 由于虚拟化的技术进步,现在我们很容易在同一主机系统上使用不同的系统。 但是,Linux不像其他系统那样,让程序员受益匪浅。

我想指出一些突出的点完全错过了其他人张贴。 Linux提供了一些我在其他操作系统(如Windows)上尝试过的工具,但是却没有合适的stream程。 这主要是关于Windows的缺点,也可以将Linux与GNU交换为那些认为这很重要的人。

真正的X鼠标Gizmo 。 在Linux Sloppy-Focus中,一旦你习惯了它,它就非常棒。 中老鼠过去很好地融合在一起。

VirtuaWin MacOS在这方面做得很好,但是又一次,Windows在虚拟桌面上失败了(你会爱上它们的)

在Windows中,你可以得到一个合适的Cygwin和SSH服务器 ,但是它很好地融入了Linux的生活。 如果你还不是一个shell用户,那将会帮助你成为程序员。

正确的窗口pipe理也很重要。 在这个领域,每个人都有自己的需求,Linux提供了让自己适应的select。

所有这一切都将取决于你的实际发展。 对于一些人来说,Windows确实是一个完美的开发环境,但是如果它不适合你的需求,那么它的select就很less。 如果你是.Net开发者,Linux可能不是改进的最佳select。 如果你对IDE有很大的了解,那么你可能看不出太多的区别,但是不要害怕shell是一个很大的胜利。 如果你想要Linux教你成为一个更好的程序员,交换机将不会在公园散步(我build议打破你的系统,至less每周重新安装两次:) Linux可能并不适合你但唯一的办法就是试一下。

我没有深入这些事情的重要性,因为不是每个人都认为它们很重要,而且很难真正解释。 正如其他人所说,这不仅仅是环境,而是心态。

一般来说,我倾向于将操作系统视为一种商品。 只是另一个平台,不pipe它的Windows,Linux,Mac,solaris等。 所有标准的unix应用程序已经被移植到今天使用的所有其他通用操作系统中,所以很难声称你可以从Linux独有的环境中受益。

就开发而言,MS IDE具有上下文敏感的帮助和编辑和继续function,可以在不重新启动应用程序的情况下实时更改代码,这在任何平台上都是难以企及的。 就我所知,Suns IDE是唯一具有此function的其他c / c ++系统。

一个主要的例外是valgrind。 对于debugging应用程序,valgrind实际上已经很好地发现了多年来的问题(并且抑制了虚惊)。 在我看来,它和理性的净化一样正好在那里。 我们经常在linux平台上进行相当多的testing,因为valgrind在这里和其他地方都存在。

我不会说Linux必然会让你成为更好的程序员。 它可以使用比Windows更好的工具,具体取决于分布。 如果您知道自己在做什么,那么在某个地方可以更快地完成任务,使用Cron的自动化任务比使用Window的计划任务更容易。 我发现所有这一切都可以归因于使用命令行,Linux提供了更多的工具来在命令行方面做事情。 例如,设置一个Cronjob会比在Windows中设置一个自动化任务花费更less的时间,因为我必须通过Window在GUI中提供的步骤,而在Linux中,我只需键入我需要的操作。

Linux也具有虚拟桌面的优势,因为您可以设置多个工作区并减less桌面混乱。 不过,我觉得这是一个很温和的讨厌,更喜欢多显示器的方法,Windows处理更好。 一个朋友和我在X Windowing系统(大多数Posix兼容系统的窗口pipe理器)中花费了数个小时的时间,试图让双显示器与NVidia驱动程序一起工作,但很less显示它。 监视器的分辨率都不正确,但是比我们开始的时候更近。 话虽如此,我的桌面几乎完全运行Windows(我也玩游戏),我的笔记本电脑运行Linux。 主要是因为支持多显示器,所以我主要使用桌面进行开发。 我认为这取决于个人喜好和可用资源。 我会推荐Linux,除非你想得到多显示器支持完全工作,然后去与Windows XP(我有Vista的问题)。 我知道它有一点点的挑剔,如果你的显示器能够以更低的分辨率运行,那么我会回头推荐Linux,如果你有时间来处理它的话。

无论Linux实际上是否有更好的工具或其他任何使其独特的东西都值得商榷。 我会说是的,但后来我是一个Linux用户:-)。

不过,我相信任何严肃的开发者都应该知道不同的工具和环境,即使他们不是每天都在使用。 所以我肯定会推荐至less对Linux有些熟悉,只是为了扩大你的视野。

那么你可以自己回答问题的其余部分。

从另一个操作系统切换到Linux,或者实际上在任何操作系统之间进行切换都会为你做很多事情,但是它不会立即让你成为更好的程序员。 您将获得使用不同操作系统的经验,学习新的方法和方法来打包,实现和安装软件并创build用户界面。

希望一旦你使用不同的软件来实现你所学的课程,你的软件对于最终用户来说会更容易使用。

显然,如果你为某些平台开发软件,你可能需要使用该平台的IDE或者其他什么,但是根据我的经验,一个高效的程序员应该使用他/她感觉舒适的任何工具和平台。

即使你喜欢新操作系统的其他方面(无论哪种操作系统,我都不会在Linux上select – 我在主笔记本电脑上使用它),如果IDE是垃圾,如果你不能轻易地testing和debugging你的代码这没关系。

如果你是Windows程序员,那么是的,使用Linux将帮助你更好。 任何时候你都可以从新的angular度看待这个世界。

第一。 Linux操作系统被7400万用户所使用,你作为程序员,当你编程时或者当你学习新的编程语言的时候是你的目标用户,所以如果你把所有的时间花在Windows上,而你忽略了Linux,你将会错过74您的软件有百万以上的样本用户,他们在使用Linux时可能不会使用Windows。

第二。 通过Linux的另一个好的理由是Windows操作系统的通用编程范围依赖于.net框架的编程界限,并简单地忽略其他编程语言,如PHP,Perl,Ruby,Python,Java,而Linux支持各种编程语言。

第三。 另外考虑一下,Linux作为一个操作系统运行着各种各样的设备,世界上大约94%的超级计算机运行Linux,还有复杂的工程图计算器,布法罗,Linksys,华硕,运行Linux的Netgear路由器,运行Linux的索尼PS3,系统运行Linux, 全球主要公司运行Linux

第四。 Linux是可移植的,它可以运行而不需要在多个硬件平台上安装,就像当你说某个软件是多平台的时候,这意味着它可以运行在不同的操作系统上,Linux在硬件方面是多平台的,它可以在很多设备上运行的select,你几乎可以把它放在你的口袋里的闪存驱动器,并运行任何一台电脑(只需从闪存驱动器启动)。

我希望我是一个帮助。

干杯。

我会说是的,主要是预算明智 –

1)Linux工具大多是免费的,包括一些非常好的工具。

2)Linux有非常好的免费文档。

3)调整你的Linux是常见的。 调整Linux有助于了解操作系统

无论如何,任何程序员都应该至less了解一下Unix世界。 (以及任何其他重要的操作系统)

我认为这取决于你正在编程。 对于简单的GUI应用程序,Linux是一个障碍。 没有什么像.NET + WinForms。 现在你已经拥有.NET中的LINQ和一stream的function,甚至可以和Python / Ruby /等竞争。 performance力。 我在工作中使用Java和VB.NET,在VB.NET中经过了很长一段时间,Java感觉就像是石器时代。 所有的东西都像Visual Studio中的WinForms .NET一样。

Linux仍然是非常黑客,而不是terminal用户,它会影响那些易于编写的程序。 我可以用Ruby和Shell脚本来做一些令人难以置信的事情,但是我还没有find让GUI应用程序像.NET一样令人满意的方法。

是。 它不是RTOS,但它的执行时间比Windows更可预测。 就像,这个动作将在0.1s发生,几乎不会发生,否则就不会发生,因为我犯了一个错误。 在Windows上,假设你运行一个程序,你可以等待0.1s或1s或更多。

Linux对平铺窗口pipe理器也有更好的select,我认为这是开发人员必须具备的。 我build议dwm。 如果他们有平铺的支持,我会使用Compiz。

其他一切都很好的移植,或者我们正在讨论特定于操作系统的开发。 而且你可以调整和定制你的windows系统,不过在linux下它可以更简单。