怎样选择编程语言

发布于 2021-11-18 17:31 ,所属分类:软件编程学习资料

我个人已经经历过了不少所谓的“时代”,比如:个人计算机时代、互联网时代、移动互联网时代、大数据时代、云计算时代,以及正在开启的(新)人工智能时代,等等。


很显然,这些时代都是基于计算机的。可以说,它们都是计算机革命的延续。更重要的是,随着这些时代的到来,计算机对于人类来说越来越重要了。它的重要性甚至已经到了我们每个人都不得不与之结伴生活的地步。


1. 必须了解计算机


正因为如此,我们必须要了解计算机。否则就会比较被动,而且以后会越来越被动。请回忆一下,我们的父辈在摆弄智能手机的时候与那些蹒跚学步的孩子是多么的相像。


作为在计算机这个大领域里摸爬滚打十数年的人,我一直强烈建议,所有愿意参与数字世界构建的同学(不论是否是技术出身)都要去学习至少一门编程语言(或者称计算机程序设计语言)。


计算机世界完全是由硬件和软件构建起来的。而软件世界完全是由计算机程序构建起来的。毫不夸张地说,如果不会编写程序,那么我们肯定会在真正融入数字世界的过程中举步维艰


为什么这么说呢?古话说得好,“要知其然,更要知其所以然”。我们平常使用计算机和智能手机的时候其实只是在用其中的软件所实现的功能。如果不知道这些软件的基本构建方式和运作原理,那么我们最多也只能算是忠实的普通用户。


这就意味着,我们根本不可能从这个层面出发去切身参与到数字世界的建设当中。普通的用户和旁观的看客在数字世界里都会比较弱势。因为数字世界更加讲究主动和创造,更希望广大专业用户的参与。数字世界几乎拥有无限的可能,并可以承接人类大脑中无穷的想象力。


数字世界其实已经来到了我们的身边。甚至连曾经仅仅作为科幻小说元素的“元宇宙”也离我们不远了。我们确实应该马上行动起来了。


2. 挑选一门编程语言:出于目的


那么,怎样挑选一门编程语言呢?我们分别从两个维度去讨论这个问题。


先来说“目的”这个维度。也就是说,你是要把它用在工作当中?还是要自己使用并作为探索数字世界的工具?


如果你挑选一门编程语言完全是为了找到一份待遇不错、前景可期的工作。那么我建议你去看看各大编程语言的排行榜,然后最多在前20名的语言中挑选一个。


当然了,这个挑选的过程还会涉及到很多更细的问题。比如:


  • 在你想工作的城市中,哪些编程语言相关的岗位更多?

  • 在你想工作的城市中,哪些相关岗位的待遇更好?

  • 在你想工作的公司中,哪些相关岗位的需求更大?

  • 哪些编程语言对你来说更容易掌握?

  • 哪些编程语言你更加擅长?


如下图所示。其中的 Python、Java、C++、JavaScript、PHP、Go 等都属于非常通用的主流编程语言,市场上的需求都不小。而且,它们在不同的热门领域中都有着不俗的表现。所以你可以把它们当作自己的候选工作语言。


摘自https://www.tiobe.com/tiobe-index


换句话说,出于上述的目的,你选择的策略应该完全基于对应市场的需求。你个人的偏好在这里起到的作用应该并不大。


如果你想挑选一门编程语言自用,那么我首先会建议你选择一门在语言的设计上更加优秀、在编程的范式上更加多样、在用途上更加广泛的语言。因为只有这样,你才能够通过它对编程、软件、计算机等事物有更加正确且深入的理解。


其次,这门编程语言应该足够的简约,并且很容易上手。虽然一些语法过于复杂、编程流程过于繁琐的编程语言,仍然拥有相当数量的爱好者和拥趸,但总的来说,这样的编程语言的用户群体是相对小的。这常常意味着,你在编程过程中遇到的问题会更少有人经历过和研究过,基于它的第三方程序库会更少,以及基于它的软件生态的规模会更小。我尤其不建议初学者以及没有多余精力的同学去学习这样的编程语言。


再次,这门编程语言应该很符合你的口味,或者说很受你的喜爱。你的青睐可以促使你在更多的场合中使用它,从而不断地增强你的技能、扩充你的认知,以便更快地帮助你举一反三、触类旁通。


我在这里向你推荐 Julia 语言和 Go 语言。不论你的电脑使用的是 Windows 操作系统还是 macOS 操作系统,这两门编程语言安装起来都非常的方便,而且用它们写程序也都是比较简单的,很容易上手(即使相对于很多主流的编程语言,也是这样的)。


其中, Go 语言是榜上有名的,我就不多说了。而 Julia 语言却没有出现在上面的榜单当中。有些同学可能并不熟悉。


实际上,Julia 是一门比较新的编程语言,最初脱胎于麻省理工学院的一个项目。近两年,它的排名都在 30名上下,但总体趋势是上升的,还是比较有潜力的。至于怎么有潜力,大家可以看一看我在前不久发布的这篇文章:Julia编程基础 - 前言。


3. 挑选一门编程语言:面向用途


接下来,我们简要说说“用途”这个维度。我们编写的程序一般都可以被看作是一堆功能的集合。而这样的集合一般都会处于或靠近某个细分的方向,比如,命令工具方向、Web 服务方向、数据分析方向、人工智能方向,等等。


如果你选择编程语言的目的是用于工作,那么不论你想把它用在哪个方向上,选择的自由度都会比较小。因为这肯定会涉及到你所在的技术团队、部门以及整个公司正在使用和倾向使用的技术栈。


而且,你个人的选择几乎不会对团队、部门、公司的选择产生颠覆性的影响。比如,如果你想使用 Python,而你所在的技术团队和部门使用的都是 Java,那么你通常最多只能在一些比较边缘的项目上使用 Python。


这样肯定是合理的。因为团队的技术知识和经验都是基于 Java 语言的,不可能全然不顾延续性、稳定性以及非常可观的切换成本,而改投其他的编程语言。除非公司的业务发生了巨大的调整或变动,或者有一整块新业务要做。所以,在通常情况下,你只能提出建议,但无法深入影响到最终的决策。


倘若你选择编程语言是为了自用,那就灵活很多了。比如,如果你的方向是命令工具、Web 服务,那么完全可以选择 Go 语言。如果你的方向是科学计算、数据分析、机器学习,那么真的可以考虑 Julia 语言。


不论如何,若你是一名业余的程序员要选择自己的第一门编程语言,或者你是一名专业的程序员要选择自己的辅助编程语言,那么我强烈建议你使用 Go 语言和 Julia 语言。尤其在如今这样的信息爆炸的年代,人人都应该好好学一学数据的处理和分析,学一学统计学,Julia语言肯定会在这方面帮上你很大的忙。(至于为什么不选择 Python 语言,并不是因为它使用起来不方便,只是我觉得,它不太利于初学者(尤其是学生们)对现代编程理念的正确认知)


4. 小结


好了,我今天就说到这里吧,大家对这个话题还有什么疑问,欢迎在下面留言。我们积极讨论,共同进步!


相关资源