谈谈编程语言的选择

简介: 常常有新人问我,我该学哪一门编程语言呢?编程语言太多了,我都不知道该选择哪一门编程语言来深入学习了!是的,我也曾被这个问题所困恼,当初学习软件编程时也经历了C/Java/C#这样的路线,后来我也接触并使用过C++/Visual Basic/JavaScript/PHP/Python等语言,并了解过一些冷门语言。

常常有新人问我,我该学哪一门编程语言呢?编程语言太多了,我都不知道该选择哪一门编程语言来深入学习了!是的,我也曾被这个问题所困恼,当初学习软件编程时也经历了C/Java/C#这样的路线,后来我也接触并使用过C++/Visual Basic/JavaScript/PHP/Python等语言,并了解过一些冷门语言。多年下来,我对编程语言的理解是每个编程语言的出现都有它出现的理由,每个编程语言也都有各自最适合的应用场景,没有一门语言能够包办所有。

我们先来看一下2016年3月份的世界编程语言排行榜:

这里写图片描述

这里列出了最流行的TOP20编程语言,我们先来分析一下上面一些常用的编程语言。

Java:应用开发领域的王者,JavaEE和Android的如日中天让Java稳居排行榜第一。
C:在操作系统内核、嵌入式开发等方面具有无可比拟的优势。
C++:适合服务端开发、游戏开发等对性能有一定要求的领域。
C#:Java的直接竞争对手,在应用开发领域有相当的份额,Unity3D的流行,也让C#扩充到了游戏开发领域。
Python:动态脚本语言,随着大数据相关技术的发展,份额不断上升。
PHP:LAMP几乎是网站开发的标配,各种框架模板都比较成熟。
JavaScript:动态脚本语言,网页前端开发的唯一选择,随着HTML5、Node.js等技术的发展,让其在Web端有大一统的趋势,在游戏开发、物联网开发等领域也有其一席之地。
Swift/Objective-C:iOS开发语言,Swift正在进化中。

上面我简要介绍了一下目前几个主流语言各自的应用领域。可以说没有哪个语言能够完全替代掉谁,但是也不能保证随着技术的不断发展,这些语言还能保持领先。

选择了一门语言,实际上就是选择了它背后的技术栈,所以我们应该围绕应用领域来选择语言。比如你要做操作系统内核、嵌入式开发,那你就去学C。你想开发游戏,那你可能要去学Cocos2d-x或者unity3d,分别对应了C++和C#,当然JavaScript也行。如果你想实现Web全栈开发,那么你可能需要精通JavaScript。没有一门编程语言能够包办所有。

但尽管如此,初学编程时,第一门语言的选择还是很重要的,会影响你的思维。我想初学编程时还是选择C语言比较好,C++虽然是C的“扩充”,但是规则过于复杂,概念过多,初学者会失去信心。有了C的基础,就可以学一下C++/Java/C#中的一种,这是目前应用开发领域最主流的语言。

近些年大数据的流行以及前端开发的兴起,使得Python和JavaScript两门动态脚本语言不断流行,与之相应的库和框架也不断进化。所以很多人又转向了这方面的开发。这就引出了我的一个观点:学习编程还有一种思想要不得,就是贪图大而全。一个人的精力和能力都是有限的,很难掌握所有。况且各个技术体系的技术还在不断升级。就是全栈工程师,那也是某个方面的全栈,比如web全栈或者app全栈。不是做不到web全栈+app全栈,而是很难每一块、每一个细节都能一样的达到较高水准。随着软件开发分工的越来越细,还是让更专业的人来做为好。你可以在有时间有精力的情况下,了解一下其它领域的技术,扩充知识面,但不要本末倒置。

最后我想说,不要把自己限死在一门编程语言上,根据市场的变化和自己的兴趣合理选择编程语言,让我们做一个真正的程序员。

目录
相关文章
|
7月前
|
算法 编译器 C语言
C++进阶之路:深入理解编程范式,从面向过程到面向对象(类与对象_上篇)
C++进阶之路:深入理解编程范式,从面向过程到面向对象(类与对象_上篇)
85 3
|
设计模式 Cloud Native Java
Go语言-让我印象深刻的13个特性
我们正在加速进入云原生时代,Go语言作为云原生的一块基石,确有它的独到之处。本文介绍Go语言的几个让我印象深刻的特性。
|
存储 自然语言处理 编译器
GO语言基础语法探究:简洁高效的编程之道 1
GO语言基础语法探究:简洁高效的编程之道
122 0
|
存储 Java 编译器
GO语言基础语法探究:简洁高效的编程之道2
GO语言基础语法探究:简洁高效的编程之道
|
安全 Go C语言
GO语言基础语法探究:简洁高效的编程之道 3
GO语言基础语法探究:简洁高效的编程之道
119 0
|
设计模式 算法 搜索推荐
C++的编程思想和进阶编程
● 一个模式描述了一个不断发生的问题以及这个问题的解决方案;模式是前人的设计经验上总结出来的对于一些普遍存在的问题提供的通用的解决方案;比如单例模式、观察者模式等 ● 软件中有很多模式 面向对象常见的23中设计模式; 反模式;企业应用架构模式等
58 0
|
设计模式 自然语言处理 JavaScript
7 行代码 3 分钟:从零开始实现一门编程语言
本文介绍了多种解释器实现。通过修改最后一个解释器,你应该可以快速测试关于编程语言的新想法。如果你希望有一种语法不一样的语言,就可以构建一个解析器,把 s-表达式转储。这样,你就可以干净利落地将语法设计与语义设计分开。
587 0
7 行代码 3 分钟:从零开始实现一门编程语言
|
Java Linux Go
面试新语言,你确定,不比较下优缺点么
面试新语言,你确定,不比较下优缺点么
126 0
面试新语言,你确定,不比较下优缺点么
|
Java 程序员 编译器
Yin 语言:学习设计和实现一门编程语言
大多数语言没能吸取历史教训 大多数语言受到宗教性的推崇,拥有一个过于狂热的社区,因此难以改正自己的错误 有些语言为程序员做得太少,有些语言为程序员做得太多 有些语言提供了太少的抽象,有些语言提供了太多的抽象 有些语言太不顾及可用性,游戏语言过于重视可用性而忽视了可用性之外的东西 有些语言从数学和逻辑那里学得太少,有些语言学得太多 有些语言太不顾及类型,有些语言对类型考虑过多
603 0
Yin 语言:学习设计和实现一门编程语言
|
设计模式 算法 程序员
【译】需要学习的是编程,而不是编程语言
我们不仅是程序员,而且是个(与时俱进的)学习者。鲜见的是有多少人认为他们是在学习编程的呢。