热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

你真的需要掌握多种编程语言吗?

编程语言很多,数以百计。有些很常见,例如:Java、C#、PHP、Ruby、Python、和JavaScript,而有些则比较边缘化或是新兴的
简述

我刚刚断送了自己的职业生涯,没错,很多人都这样对我说。

同事得知我即将离开公司的消息,大多数对此表示理解。但让他们困惑的是,我目前就职的公司是一家Windows商店,用C#.net编写代码,而我要入职的岗位要求在Linux环境下进行开发,以Java为主要的编程语言。他们认为编程语言的改变会让我丢失多年经验,许多人都赞同他们的观点。

编程语言很多,数以百计。有些很常见,例如:Java、C#、PHP、Ruby、Python、和Javascript,而有些则比较边缘化或是新兴的,例如:Awk、Go、Julia、Rust。面对如此多的选择,我们又该关注那种语言呢?因此,我开始思考这个问题 你真的需要掌握不止一种编程语言吗?


1、能用多种方式来解决同样的问题,掌握不同的编程语言意味着拥有更多的选择。毕竟,当你只有锤子时,一切看起来都像是钉子。


2、更有竞争力,拥有更多的就业机会。学习第二门编程语言,有时能加倍工作机会的数量。然而,这取决于你学习的语言种类。但无论怎么说,你将会有更多的合适机会,从而增加求职能力。


3、表明你具备学习新语言的能力。潜在的雇主会认为你并非是死板或者惯守成规的人。


4、学习是很有趣的。学习新的事物会让你的头脑保持兴奋。这将有助于你在新领域的成长和提高。


5、紧跟当前的技术发展趋势。了解哪个行业在独领风骚,就可以永远站在潮流的尖端,你的技能便不会过时。


6、这将提醒你为什么应该热爱你的“主”语言,或者如何将事情做得更好。有时候,只有尝试过新语言,才会知道主语言是何等的优秀。你会更加欣赏自己最爱的语言。与此同时,新语言可能会有一些惊人的特性,让你深觉相见恨晚。


7、有助于成为一个更加优秀的程序猿。学习新的语言,有助于提高在所有语言之间通用的技能,例如:设计和架构算法,或处理不同的数据结构。


8、针对工作选择最佳的工具。尺有所短寸有所长 有的语言更善于处理某些特定方面的事情。掌握了多种语言,你可以在工作中选用最佳的工具


9、表明你的学习能力强。没有任何事情比掌握第二语言更能证明你的学习能力。


不想掌握多种编程语言的9个理由


1、掌握一种语言更容易。通常,集中精力和全心投入才能精通某一事物。如果不断地在多种语言之间进行切换,那么真正精通一门语言的概率就会降低。掌握一种语言也有助于你集中精力。


2、大多数人只需要一份工作,大部分公司只使用一种语言。在你被录用后,掌握多种语言不一定会有所帮助。有时候,只要掌握项目所用的语言就够了。


3、总有一些东西值得学习;有时候,这意味着要更深入地学习一种语言。


4、大多数情况下,专家能提更高的薪资要求,因为人们更愿意为专家支付更多的薪水。John Sonmez在其视频《 I’m Not Sure I Want To Be A Specialist》中谈到为什么多面手并不总是最好的。


5、即便仅掌握一种语言,仍然可以被认为是一个伟大的开发者。是否是伟大的开发者与你掌握多少种语言无关。关键在于你创造的是什么。因为只涉及一种语言,所以你可以花更多的时间进行创造。


6、你只需要学习有限的软件开发工具。大多数语言只有为数不多的一些工具。切换语言往往意味着要切换工具。只掌握一种语言,你就可以更快地掌握相关的工具。这将有助于提高工作效率。


7、更易于定位自己的市场。因为只掌握一种语言,基本上你只会朝这个方向安顿下来(即使不是出于自己的选择)。


8、你可以凭借任何一种语言解决大多数软件问题。不管有多少人告诉你,大多数语言可以用于解决任何问题。如果解决问题是你的主要目标(本应当是),掌握更多的语言并不一定有助于实现这个目标。


9、深入理解一件事比表面了解十件事更好。


这并非是一个非黑即白的问题。和其他问题一样,最好的解决办法是取中间值:总有一片灰色地带。如果你是一个初学者,那么学习一种语言,并将其应用到前十多个项目中会比较容易。但此之后,建议你成为一个「T形」软件开发者。


什么是「T形」软件开发者?


所谓「T形」软件开发者在某一个特定的区域拥有很深的造诣,而且是一种语言的专家,T字母中的垂直线代表了这一点;此外,他们会继续广泛学习另一种技能,T字母中的水平线代表了这一点。


那么,这与软件开发,特别是编程语言的学习,有什么关系呢?我的建议是精通一种编程语言,这将成为你以后的生计,并用于解决大部分问题。你应该尽你所能掌握这门语言。在此基础上,可以学习最适合工作的第二种语言或技能。假如你不知道应当学习什么技能,可以阅读我之前的帖子《 Finding What To Learn Next 》这个帖子。


T形软件开发者是一个多面手,精通于某一领域。


在成为T形开发者的历程中,你将灵活地掌握多种语言,同时具备某个领域专家的优点。


应该掌握哪种编程语言?


一个常见的问题是,应当学习哪种语言。或者说,假如你是初学者,应当首先学习哪种语言。通常,我会选择有一定历史的语言作为主要语言。这种语言应当用于多个行业,并且有广泛的使用群体和大量的开发工具。符合这些标准的语言有:Java、C#、.NET、Ruby、Python和Swift。


Tiobe软件基于这些标准持续跟踪软件语言的流行性,并编入索引中。你可以点击TIOBE Index查看完整的编程语言列表。索引会每月更新,前20名中的大多数语言都是不错的选择。未来10年,这些语言还会流行吗?我不确定。不过至少在未来四年内还是很可能保持流行的,我想,这对任何准备着手的项目都是够用的。


是否需要掌握多种语言取决于你的目标


想开始新的业余项目或业务?或许你只需要掌握一种语言。


想换行业或驾驭技术发展趋势?或许你需要掌握不止一种语言。


想在企业环境中工作?或许你只需要掌握一种语言。


想工作在前沿项目?或许你需要掌握不止一种语言,因为潮流总是在变化。


说实话,关于是否需要掌握更多的语言,其实并没有绝对正确或错误的答案,最后的决定取决于你。


你掌握了多少种语言?你擅长的领域是什么?你如何扩展它?欢迎分享。

推荐阅读
  • 本文内容为asp.net微信公众平台开发的目录汇总,包括数据库设计、多层架构框架搭建和入口实现、微信消息封装及反射赋值、关注事件、用户记录、回复文本消息、图文消息、服务搭建(接入)、自定义菜单等。同时提供了示例代码和相关的后台管理功能。内容涵盖了多个方面,适合综合运用。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文是一位90后程序员分享的职业发展经验,从年薪3w到30w的薪资增长过程。文章回顾了自己的青春时光,包括与朋友一起玩DOTA的回忆,并附上了一段纪念DOTA青春的视频链接。作者还提到了一些与程序员相关的名词和团队,如Pis、蛛丝马迹、B神、LGD、EHOME等。通过分享自己的经验,作者希望能够给其他程序员提供一些职业发展的思路和启示。 ... [详细]
  • 本文讨论了Alink回归预测的不完善问题,指出目前主要针对Python做案例,对其他语言支持不足。同时介绍了pom.xml文件的基本结构和使用方法,以及Maven的相关知识。最后,对Alink回归预测的未来发展提出了期待。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • Python如何调用类里面的方法
    本文介绍了在Python中调用同一个类中的方法需要加上self参数,并且规范写法要求每个函数的第一个参数都为self。同时还介绍了如何调用另一个类中的方法。详细内容请阅读剩余部分。 ... [详细]
  • 本文介绍了C#中数据集DataSet对象的使用及相关方法详解,包括DataSet对象的概述、与数据关系对象的互联、Rows集合和Columns集合的组成,以及DataSet对象常用的方法之一——Merge方法的使用。通过本文的阅读,读者可以了解到DataSet对象在C#中的重要性和使用方法。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 导出功能protectedvoidbtnExport(objectsender,EventArgse){用来打开下载窗口stringfileName中 ... [详细]
  • 本文是关于C#类型系统、值类型和引用类型的概念性笔记。介绍了C#1系统类型的三个特性,静态类型的含义,显式类型和隐式类型的区别。还讨论了类、结构、数组类型、枚举、委托类型和接口类型属于哪一种类型。同时纠正了关于结构、引用类型和对象传递的错误表述。最后提到了C#4中使用动态类型的关键字。 ... [详细]
  • 本文整理了315道Python基础题目及答案,帮助读者检验学习成果。文章介绍了学习Python的途径、Python与其他编程语言的对比、解释型和编译型编程语言的简述、Python解释器的种类和特点、位和字节的关系、以及至少5个PEP8规范。对于想要检验自己学习成果的读者,这些题目将是一个不错的选择。请注意,答案在视频中,本文不提供答案。 ... [详细]
  • 在C#中,使用关键字abstract来定义抽象类和抽象方法。抽象类是一种不能被实例化的类,它只提供部分实现,但可以被其他类继承并创建实例。抽象类可以用于类、方法、属性、索引器和事件。在一个类声明中使用abstract表示该类倾向于作为其他类的基类成员被标识为抽象,或者被包含在一个抽象类中,必须由其派生类实现。本文介绍了C#中抽象类和抽象方法的基础知识,并提供了一个示例代码。 ... [详细]
  • Unity3D引擎的体系结构和功能详解
    本文详细介绍了Unity3D引擎的体系结构和功能。Unity3D是一个屡获殊荣的工具,用于创建交互式3D应用程序。它由游戏引擎和编辑器组成,支持C#、Boo和JavaScript脚本编程。该引擎涵盖了声音、图形、物理和网络功能等主题。Unity编辑器具有多语言脚本编辑器和预制装配系统等特点。本文还介绍了Unity的许可证情况。Unity基本功能有限的免费,适用于PC、MAC和Web开发。其他平台或完整的功能集需要购买许可证。 ... [详细]
author-avatar
喵屎柔_
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有