选择何种编程语言似乎无关紧要,因为大多数流行语言基于相同的基本概念,对于未经训练的人来说,大多数语言看起来都是一样的,都能得到大致相同的结果。但从开发人员的角度来看,编程语言不仅是一种工具,选择正确的编程语言将影响一个人的职业生涯,经济前景和未来的幸福。本文将推荐五种当下和未来一段时间最值得学习五种编程语言,并逐一介绍它们的特点和优点,以及面试中需要注意的要点。
对于初学者来说,选择编程语言是一件非常纠结耗神的事情,你需要结合自身需求找到平衡点,同时还要留意一门语言的长期前景。对于21世纪初的Web开发人员来说,PHP和Ruby on Rails看起来是推动职业发展的最佳语言。但是今天,市场条件已经发生了变化,PHP和Ruby不属于我们接下来的讨论范围。
本文我们将推荐2019年最值得学习的编码语言。对于每种语言,我们都会简要概述用途和长期前景。对于每种语言的市场份额和采用率,我们的主要依据是 Stack Overflow的2018年开发者调查报告 。 此外,我们将推荐范围限制在 命令式语言 ,不包括声明性语言,如HTML,CSS和SQL,它们在Stack Overflow的调查中占据第二,第三和第四位,以及shell脚本语言,如Bash。
根据 Stack Overflow的2018年开发者调查 ,71.5%的专业开发人员将 JavaScript 评为最受欢迎的编程语言。这比 2015年 提高 了很多,当时只有54.4%的开发人员将JavaScript列为最受欢迎的技术。
JavaScript火速流行的原因之一是JavaScript无处不在。在客户端,您可以使用前端JavaScript框架(如 Angular , React 和 Vue) 来构建基于浏览器的Web应用程序。在浏览器之外, Node.js 允许您使用与编写客户端代码相同的语言编写后端应用程序。使用Node,您可以编写Web服务,管理物联网(IoT)以及机器学习实验。JavaScript领跑其他语言的一个关键原因是在整个软件行业的广泛支持 – 包括来自谷歌,Facebook,微软和亚马逊的鼎力支持。此外,JavaScript的学习资源也异常丰富, 学习者还可以找到各种各样的付费或免费课程、网站、书籍、视频和博客,涵盖该JavaScript相关的几乎所有主题。
在大部分时间里,JavaScript被看作是编程语言的“丑小鸭”,虽然它从未成为美丽的天鹅,但就像童话故事一样,JavaScript社区已经齐心协力将其从基于浏览器的脚本语言打造成现代的多功能语言。随着时间的推移,许多JavaScript的粗糙面已经被打磨平整,但有些仍然存在。
值得注意的是,关于JavaScript,许多未来的雇主将在编程面试中根据他们对JavaScript更加模糊的功能的知识对潜在候选人进行评估。常见的编码面试问题涉及变量范围,闭包,回调和条件运算符。任何寻找JavaScript相关工作的应聘者都应该为这类问题做好准备。我们还建议您提前深入了解您感兴趣的公司,研究他们的开发堆栈,并在相关的现代框架(例如React,Angular或Vue)上展示您的技能。
根据Stack Overflow调查,Python受37.9%的专业开发人员欢迎。我们的评估基于Python 快速增长的采用率, 在过去五年中,Python比其他任何语言的发展速度都快。Python已经变得如此有影响力, “ 经济学人” 杂志甚至为Python撰写了 专题深度报道。
Python受欢迎的部分原因是它摆脱了其他语言的恼人惯例,例如使用分号来表示语句的结束。这可以解释为什么Python正在取代Java作为计算机科学教学的主要语言 – 不仅在大学,高中和小学课程中也开始纳入Python教学内容。Python在学术界已经根深蒂固,是机器学习和数据科学最流行的通用编程语言。事实上,Python目前在这些领域占据主导地位,最近业界提出了将Python与数据科学语言R进行 合并 。
Python与其他编码语言有相似之处但又有着明显不同。Python开发岗位的面试中,往往要求应聘者阐述对Python如何实现公共语言功能的理解,例如数据类型、模块化、函数和类等。面试官还可能会问如何使用Python作为脚本,面向对象或函数式编程语言,或者是否了解Python特定的数据类型和功能,例如元组、列表推导、字典和装饰器(decorators)。
排在第三位的是 Java ,根据Stack Overflow 2018年的调查,45.5%的专业开发人员青睐Java。
Java保持持久吸引力的一个重要原因是 Java虚拟机(JVM) 。JVM使得在不同的硬件平台和设备上运行每种语言成为可能。Java还能处理让开发人员感到头疼的,数据类型和内存管理相关的许多任务。简化应用程序开发并在不同操作系统中部署应用的能力使Java成为大型组织的首选语言。这意味着,Java可以让你在一家大公司找到稳定的工作。Java的另一个重要用途是编写原生Android应用程序。 Android市场份额 在 智能手机操作系统一股独大,这也是许多开发人员学习Java的主要动机之一。
近年来,已经为JVM创建或移植了许多流行语言,并广泛使用Java生态系统。这些语言在特定环境中很流行,包括Scala,Closure和Kotlin。Kotlin有许多有趣的用途,包括编写 Android应用程序 和使用 Corda 框架创建智能合约。
在寻找Java开发工作时,理解语言的范围非常重要。编程访谈会包含任何可想到的与Java相关的主题。对于企业开发工作,您可能需要证明您对Java基础结构的理解,常见的问题与 JDK,JRE和JVM 有关。Android开发人员将被问及与Android相关的问题,包括SDK版本管理,intents,设备模拟和应用程序部署过程。即使您应聘一家运行Java以外的特定JVM语言的公司,那么Java经验也可以成为一种优势。
Stack Overflow 2018年调查开发者中,35.5%是 微软C#的 粉丝。不仅Python和Java排名高于C#, Bash 脚本语言在开发人员中的得票率也达到了40.4%,许多开发人员对微软的所有事情都表示反感。
在今天的市场中,Java仍然比C#更好,但从长远来看,C#未尝不能逆袭。 Java的功能更新 已开始放缓,而微软却一直在积极增加新的特性和功能,这也是微软摆脱对Windows操作系统的依赖的诸多努力的一部分,其他还包括购买 Xamarin 及其跨平台开发环境,发布多平台 .NET Core , 以及持续投资 Azure 。 C#在微软的新战略中扮演着重要角色 ,微软也努力确保C#同时使用微软技术和开放行业标准。
与Java一样,C#语言的生态系统也很庞大。与Java一样,大多数C#编程面试都包含与C#基础架构相关的问题,包括 .Net框架 和 公共语言运行时(CLR) 。值得注意的是,CLR还托管其他语言,例如F#和VB.net。如果您准备面试使用C#之外其他CLR语言的公司,C#经验依然会为你加分。
虽然 C 和 C ++ 是具有不同编程模型的两门相对独立的语言,但它们之间的联系也非常紧密,本文将一起讨论它们。
对于通用和专用任务,例如应用程序开发,用户界面,移动应用程序和机器学习,C已被Stackoverflow列表中的其他语言取代。但是,在嵌入式系统和构建操作系统方面,C仍然拥有自己的一席之地,Linux就是最好的证明。Linux是有史以来最流行的操作系统,从最大的大型机到Android设备都能看到Linux的影子。Linux的关键部分是Linux内核,Linux内核是用C语言编写的。C的另一个常见用途是编写其他编程语言,本推荐清单中排名第二的Python。
C ++是一个更现代,面向对象的C语言版本.C ++是用于偏重性能的应用程序的开发语言。例如,许多公司,特别是金融部门的公司,在其后端系统中使用C++。C ++既可以被用于无聊的应用,也出现在一些最令人兴奋的技术领域。由于其高效率的声誉,C ++也是图形密集型应用程序的首选语言,包括游戏开发,图形引擎,虚拟和增强现实。
在寻找C或C ++的工作时,一些面试官会提出可能同时适用于这两种语言的问题,例如编程相关的数据类型,运算符,循环,条件语句,指针和内存管理方面的面试问题。您可能还会被要求定义和解释链接列表,以及编写实现和管理链接列表的简短程序。由于C ++是面向对象的语言,因此面试官很有可能会询问类似对象,类,方法,属性等的支持的相关问题。
我们列表中的五个选项都是通用语言。以下是其他几种语言,它们要么更专业,要么服务于较小的垂直市场。
一种受到大量关注的语言是Apple的 Swift 。Swift旨在成为Apple新的通用语言,旨在取代Objective-C。Swift可用于编写iOS和Mac桌面应用程序,并由Apple在开源许可下发布,希望它成为服务器语言。不幸的是,这种希望尚未实现。
在Web开发领域, PHP 仍然非常受欢迎。尽管PHP存在局限性和被替代的可能性,PHP仍然被许多大型网站使用,例如Facebook和维基百科。Facebook甚至创建了自己的PHP方言,名为Hack。PHP也是许多大型开源平台使用的语言,例如 WordPress 和 MediaWiki 。这些平台有广泛大量的应用,而PHP被用于为它们创建插件。Facebook仍然致力于PHP,甚至还创建了自己的现代化版本的 Hack 语言。然后是 Ruby ,一种现代的,设计更好的PHP的替代品。Ruby在 Ruby on Rails的 Web开发框架得到广泛部署,并拥有庞大而活跃的支持社区。
对于高度专业化的用途,例如系统编程, Google的Go 和 Mozilla的Rust 看起来前景不错。两种语言都旨在构建高度并发的系统。在函数式编程领域, Elixir 是 Erlang 的现代替代品, Clojure 是一种在JVM上运行的现代化的Lisp,而 F# 是一种在.NET运行时中运行,并具有许多主流功能的函数式语言。最后,如果您对快速增长的智能合约和 基于以太坊的 加密货币领域感兴趣,您应该好好了解一下 Solidity 。
在我们推荐的五种语言中,您如何选择适合您的语言?根据当前趋势,具有最广泛应用的最佳通用语言是JavaScript。您可以在大多数设备上运行它,并使用它来构建客户端,服务器和无服务器应用程序。在过去的十年中,JavaScript已经被不断迭代改造,现在与C#和Lisp等现代语言有很多共同之处。是的,JavaScript仍然有一些粗糙的地方,但已经大大改善。
对于开发人员来说,Python可能是跨职业生涯的最佳选择。正如我们所指出的,Python已成为用于研究和教育的首选语言,同时也是机器学习,人工智能和数据科学相关领域的主导语言。在开发用户界面时,JavaScript相比Python具有明显的优势,但随着时间的推移,这种优势可能变得不那么重要。对于初学者来说,Web Assembly标准使得开发者可以使用任何高级语言来编写浏览器应用程序。此外, 如果基于语音的用户界面得到大众认可,图形用户界面将变得不那么重要 。而且Python是开发亚马逊Echo语音助手应用的编程语言,因此在语音用户界面领域,Python已经占据了先机。
在企业领域,您需要在Java和C#之间进行选择。这两种语言在语法,功能和基础结构方面都非常相似,您可以根据个人偏好,工作需要或掷硬币来选择它们。正如我们所指出的,Java存在的时间C#更长,更受欢迎,并且有更多的职位机会。但另一方面,微软对C#的积极推动有望使其成为真正的跨平台解决方案,因此长期看C#有可能是更值得下注。Java仍然是Android的语言,但Microsoft的Xamarin允许您使用C#编写Android,iOS和Mac应用程序。但值得注意的是,C#在创业社区中声名狼藉,在硅谷非常不受欢迎。在这些圈子中,C#开发人员通常被视为二等公民。
同样要特别注意的是,在申请Java / C#企业计算职位时,面试官关注的重点往往是你创建后端应用程序的能力,而不是你使用何种语言。因此编写解决方案时,您最好使用惯用语言,这样可以 在 解决实际问题的 同时 展示你对语言功能的理解。
最后,C和C ++都算是通用语言,但在实践中,它们主要用于特定领域。对于C,主要面向的是系统和嵌入式编程; 对于C ++,主要面向高性能,资源密集型应用程序,如实时图形处理。
最重要的一点是,在进行编码面试时,请确保对面试语言的来龙去脉多做了解。 开发面试 是应聘最难的一个环节,如果你对一门语言的优势、局限性和应用了然于胸,将会让面试变得更加容易。
英文原文