近两年来我一直在写很多PHP。现在,我正在进行.NET(主要是C#)开发。但是,有时我回去做一些php。
我的主要问题是,继续执行此操作是否明智?还是应该继续使用C#开发?从长远来看,这会对我造成伤害吗(请注意,我的主要目标不是成为所有交易的杰克)还是这样做是一种好习惯?
近两年来我一直在写很多PHP。现在,我正在进行.NET(主要是C#)开发。但是,有时我回去做一些php。
我的主要问题是,继续执行此操作是否明智?还是应该继续使用C#开发?从长远来看,这会对我造成伤害吗(请注意,我的主要目标不是成为所有交易的杰克)还是这样做是一种好习惯?
Answers:
同时使用两种语言完全没有意义。对于程序员来说,每天使用几种不同的语言并不少见。不同的任务和不同的技术需要不同的语言。
就在今天,我已经使用了四到五种不同的语言,这很有趣,因为到目前为止我还没有进行任何编程。我所做的只是演示文稿上的工作。
作为一名优秀的程序员,本质上要求您了解几种语言,而达到(然后保持)合理流畅度的唯一方法是使用这些语言。
这是一个好习惯吗?
这是一个极好的实践。此外,我建议您通过尝试一种新的语言来定期扩展您的语言列表。
语言和技术在短短几年内迅速受到青睐。例如,Objective C在几乎死了两年半之后就以惊人的力量起飞了 -以该行业的标准来说是永恒的!
计划“不成为所有交易的杰作”并不重要:如果您打算在该行业中停留足够长的时间,可以很安全地假设您必须至少切换一次技术堆栈在您的整个职业生涯中。现在,使用多种语言可以使您准备好在短时间内打开通知。
从长远来看,这会对我造成伤害吗(请注意,我的主要目标不是成为所有交易的杰克)还是这样做是一种好习惯?
知道两种或更多种语言永远不会伤害您。浅浅地了解您的语言(不了解内部工作原理)可能会伤害您。
我个人比较喜欢始终先掌握一种面向对象的编程语言。这将为您提供所有编程概念的深入学习,并在需要时轻松学习下一个。
这是一个好习惯吗?
绝对没错!
我绝对建议您学习多个,并通过构建一些应用程序来实践它们。同时,如果您正在或计划进行Web开发,您可能还计划学习一些脚本语言(jQuery,KnockoutJs等)和库。
从长远来看,它不会对您造成伤害,精通多种语言会使您成为全面的开发人员。使用“正确的工具来完成正确的工作”是最终目标,精通不同的语言可以帮助您实现目标,因为您知道那里还有其他内容,并且可以针对要使用的平台/框架/语言做出明智的决定。做点事情。
在您的职业生涯中,您将必须学习新的语言和新技术。行业完全需要它。在我的第一个专业任务中,我必须交付用Ada,C和Fortran编写的代码,以及一些SQL和Shell脚本。在过去的几年中,我不得不从C ++切换到Java,然后又回来。我已经用csh,bash和perl编写了shell脚本。
花时间学习不同的语言,尤其是如果它们处于不同的领域(OO,功能,逻辑等)时,将以多种方式帮助您。它将使您的大脑保持敏锐。它将帮助您将概念与实现分开(例如,哈希和映射不仅是特定语言中的数据类型)。它将使您更好地了解哪种工具适合于给定的问题(例如,我不会用C建立网站,也不会用Haskell编写设备驱动程序)。这可能使您更容易找到工作(“嘿,他已经知道Intercal 1了,我们不必培训他!”)。它将使您了解语言设计人员面临的挑战。它可能会激发您创建自己的编程语言。
至少,它将使您免于无聊。
1.开玩笑。不要尝试学习Intercal。
这有好处也有缺点。
有好处的...
正如其他人提到的那样,能够学习新知识并能使用多种语言和编程工具对于长期从事编程工作至关重要。多年来,情况发生了变化,工具/语言不断出现。当然,有些人很满足于在1980年代使用的大型机COBOL中进行编程,但这是一种相对罕见的情况。大多数程序员在其职业生涯中都会多次更换工具/语言。有时,您可能会被录用,因为您确实了解一些较旧的技术或公司所使用的所有语言。
缺点是...
一些雇主将您视为“万事通,万事通”,并且拒绝您的申请而没有给您机会。他们正在寻找特定领域的狭窄专家,而不仅仅是一个优秀,全面的程序员。有时,由于没有“ [X]的5年连续经验”,您可能会被HR裁掉。您可以通过量身定制适合您工作的简历来避免这种情况,但这可能无法帮助您进行技术面试。
对我来说,好处要好得多,但您确实需要意识到,少数组织认为这是消极的。
不,学习多种语言并经常使用所有语言没有错。在我的日常工作中,我会遇到Ruby,PHP,JavaScript,CoffeeScript,Python以及偶尔的C语言。我对所有这些语言都非常了解,并且从一种语言过渡到另一种语言只会动摇我的大脑。当然,当我转到另一种语言时,确实会错过某些语言的功能,但是您会克服的。
我尝试始终要拥有一种我正在深入学习的语言,然后再将另一种语言称为“崛起”。这样,您始终有一个明确的教育目标,然后又有了新的目标。现在,Ruby是我的主要语言,并且我正在尝试Go。我可能永远不会找到Go开发人员的工作,但是学习一种新的语言已成为一名更好的开发人员。
当我采访开发人员时,我总是喜欢在简历中看到几种不同的语言。如果开发人员的简历上带有“ C / C ++”或“ PHP and Javascript”,则他们看起来比掌握4或5种语言的人有趣得多。确保您使用列出的任何语言感到自在,简历中的任何内容在面试中都是公平的游戏!
简而言之:定期使用多种语言是优秀的开发人员关心自己的手艺的标志。继续编码!
人们使用一种以上的语言进行编程一直都是这种情况。人们在使用Assembly时,每次更改体系结构时都必须学习一种新的Assembly语言。
当人们在做COBOL或Fortran时,他们通常也会做RPG和/或JCL。
在Unix中,人们将使用C,sed,awk,shell脚本以及Unix厨房接收器中的几乎所有内容(Unix中几乎每个命令行工具都是其自己的,非常特殊的DSL)。
在DOS中,除了批处理脚本外,人们还将使用Turbo Pascal或C进行编程。后来,当Windows出现时,是VB或类似PowerBuilder的工具,再加上SQL以及可能的批处理安装脚本。
如今,它是一个事实上,人们的“工作”与任何一天两种以上的语言(和“工作”我的意思是做实际的一天到一天的编码或已工作的知识)。Java或C#或VB至少与JavaScript和SQL混合在一起。然后,其他语言开始用于批处理/作业脚本等。然后,对于每种语言,您都有一个框架,该框架本身实现了内部DSL,它本身就是一种迷你语言。
因此,使用多种语言不仅有益,而且是必要的。没有办法用一种语言来构建现代的,复杂的系统(“构建”并不是要编写一些可编译的废话,而是要用一个体面的设计来构建。)
哎呀,我会竭尽全力地说,如果他们认真地从事这个专业,我希望大学里的孩子精通两种或多种语言。
因此,关于您的问题:
我的主要问题是,继续执行此操作是否明智?还是应该继续使用C#开发?从长远来看,这会对我造成伤害吗(请注意,我的主要目标不是成为所有交易的杰克)还是这样做是一种好习惯?
因此,简短的回答,不,使用或切换语言不会给您带来麻烦。知道一种以上的语言不会使您万事通,而且开发人员无法通过使用一种以上的语言来成为专家。
与主要语言相比,您需要比较的内容越多,您就会更好地理解设计折衷方案,这些折衷方案使它在某些情况下特别强大或较弱,并利用/补偿了这些事情。掌握至少一个,但不要担心成为许多其他人的杰作。那看起来很好。
最好问一下“高级”开发人员仅列出的一种语言的简历的外观。这个问题的答案是:“对他们的谋生不是很感兴趣。”
两种语言可能对您有无帮助-取决于情况。肯定不会伤害您的。许多开发人员倾向于认为使用除“主要语言”之外的其他内容纯属浪费时间,但我强烈不同意。学习另一种语言(并使用它)纯粹是有益的:它为您提供了解决问题的不同视角。您可能会一直在任何时候都开始使用一种语言来执行特定任务(就像我有机会学习和使用Python之后发生的事情一样)。