我是一名学习Java和C#(。NET)的PHP / Python程序员。
我的主要开发操作系统是Windows 7,但我使用过Linux,目前与Ubuntu双重引导。但是,我的Linux知识非常有限。我可以在简单的任务上使用命令行,但是仅此而已。我不执行任何shell脚本编写,也不了解许多重要命令。
我的兴趣是网站开发,移动应用程序以及将来的一些嵌入式内容。Shell脚本编写技能是否对这些兴趣有用?如果是,怎么办?
我是一名学习Java和C#(。NET)的PHP / Python程序员。
我的主要开发操作系统是Windows 7,但我使用过Linux,目前与Ubuntu双重引导。但是,我的Linux知识非常有限。我可以在简单的任务上使用命令行,但是仅此而已。我不执行任何shell脚本编写,也不了解许多重要命令。
我的兴趣是网站开发,移动应用程序以及将来的一些嵌入式内容。Shell脚本编写技能是否对这些兴趣有用?如果是,怎么办?
Answers:
如果我正在为Windows应用程序(或Mac应用程序)编写代码,为什么我需要了解Linux?福特机械师应该认识约翰·迪尔的拖拉机吗?这一切都取决于您在做什么,是专业上还是您自己的“业余时间”。
现在,知道它并没有什么害处。实际上,我坚信“您知道的越多,身体就会越好”。
如果您是PHP程序员,则一定要了解Linux。PHP是在Linux上创建的,PHP是LAMP堆栈的重要组成部分:Linux + Apache + MySQL + PHP。即使您现在有机会针对Windows服务器进行开发,您的下一份工作也可能是您针对Linux服务器进行开发,并且您将需要熟悉Linux环境,这样您才不会遇到与Window特定的'现象' PHP。
在移动应用程序领域,了解Linux将(可悲)与您要开发的环境没有多大关系。iPhone OS与Linux无关,而Android则将您紧密地束缚在虚拟机中,您永远不会知道下面有Linux。您可以在Meego或Maemo上为Linux编程,但是这些都远没有iPhone和Android受欢迎。
在嵌入式领域,您必须了解Linux。嵌入式Windows很少见,但嵌入式Linux相当普遍。(当然,裸机嵌入式编程也很常见,因此取决于您要去的地方。)
如果您对Linux进行了多年的深入学习,您将对内核,启动过程,命令行和GUI等系统的各个部分有一定的了解。
在某种程度上,您可以在这里申请80/20的想法。实际上,不需要花很长时间就可以了解Linux的工作原理以及您需要从Shell那里了解的核心命令。同样,如果需要,基本的Apache配置非常方便。您不需要为此花费很多时间,但是如果您必须运行自己的服务器,那么当然值得学习足够的基础知识。
这是一条好线。如果您不小心,很快就会发现Windows逐渐使您逐渐适应Linux提供的功能……
您不必学习它,但是它将使您成为更好的程序员。您将学习如何以不同于Windows的方式来做事。使用任何* sh shell最终将导致脚本编写和使用正则表达式,自动安装,解析大文件等。
我不在乎因为不了解而被嘲笑,就像我每次学习如何在Linux中做其他事情一样,我都在乎它有多酷。每增加一个新点,它就会变得越来越好。
Powershell有很多来自尼克斯世界的东西,他们最终意识到,要实现自动化,您需要一个好的控制台(为此,对MS表示敬意)。Perl和Python似乎都是C,bash,sed,awk的混合物,它们都以自己的方式融合为一件好事。
至少,您的简历中还有其他内容,但这并不是您能从中得到的最好的东西。
我敢肯定,您会发现自己的东西可以带您去:“哇,太酷了!” 我的第一个方法是能够使用USR1信号“杀死” Apache,以使其重新加载新的配置文件并重新启动日志,而无需停止服务并继续接收连接。还ssh和rsync,令人难过的是,为什么MS不能将它们移植到我之外。
不会伤害你的 即使在一家全微软公司中,至少会遇到几台Linux服务器的可能性也越来越高。例如,Stack Overflow将Linux用于其负载均衡器。当虚拟化发挥作用时,尤其如此。
作为程序员,考虑考虑熟悉POSIX,而不仅仅是一个类似UNIX的变体,可能会做得更好。尽管它确实有一些古怪之处,但它代表了许多努力,以令人难以置信的尝试建立了(大多数情况下)可在所有类似UNIX的环境中移植的标准接口。注意,许多类似UNIX的系统并非100%“正确”,但这是一个很好的起点。
作为一个临时用户,我只能建议在新事物中闲逛并学习新事物很有趣。我想每个人可能想到的每个操作系统都可能成为“专家”,但我认为这不是程序员最有用的努力。尽管如此,您可能会遇到的东西的实用知识还是不错的..从您的问题出发,您似乎将来可能会遇到Linux。
当我参加“操作系统计算机科学”课程时,我们研究了基于UNIX的操作系统,并在RedHat上进行了工作,因为它是开源的,因为我们可以看到代码,并且可以用它做一些事情,但这在视窗。
我想说的是,如果您要学习操作系统在幕后工作的基础知识,那么即使在学术环境中,您也应该对Linux有一定的经验。
我刚刚从Ubuntu 10.04切换回Windows 7。如果没有grep和其他一些命令行工具,我会感到有些迷茫。我更喜欢在Linux环境中进行开发,因为我觉得该系统更适合于高级用户和开发人员。
我确实知道大学毕业的非常好的.NET程序员,他们对Linux一无所知,所以这不是必需的,但是我希望拥有5年以上编程经验的任何人都可以以一种或另一种形式接触Linux。他们的职业生涯中的时间。
您必须是您专注于什么的判断者;然而。如果目前您有开发移动应用程序的途径,并且知道Linux不是真正的要求,那么您可能会专注于更多地了解移动SDK而不是Linux。一切都有一个权衡,听起来您确实对Linux有一些基本了解,可以在需要时了解更多有关Linux的知识。
Linux是工具箱中的工具,就像Windows“只是”工具一样。都流利地使您可以做一些更好的事情,但与其他事情无关。
我个人发现Ubuntu形式的Linux非常有用,因为它使我可以轻松地在虚拟机中创建和维护数据库服务器,邮件服务器,测试Web服务器等内容,而无需考虑许可证成本(加上服务器版本比Windows需要更少的资源)。如果您不执行任何这些操作,那么我认为Linux对您而言并不重要。
不知足,如果您打算部署到特定的操作系统,那么你就可以确保你的应用程序的工作就可以了,否则......你不有知道的任何事情/一切。