然而作为程序员吃饭的工具,编程语言之间也形成了某种鄙视链,各大论坛里弥漫着剑拔弩张的气氛,众口难调。也难怪有很多初学者会有疑惑,为什么会有这么多编程语言,我到底应该学什么语言?
回顾编程语言几十年来的兴衰起伏,似乎也折射了整个信息产业的变迁消亡,想要在技术的洪流里激流勇进,找准并学精一两门编程语言更加显得至关重要。
不同的语言在各自的领域中都有各自的优势!
编程语言的黄金时代
”有人不喜欢花括号,开发了Python;有人在一个周末设计了出了JavaScript;有人因为上班太无聊,于是发明了C语言”。关于编程语言的八卦轶事很多,但归根结底,一个编程语言的诞生一定是需求的推动。
从面向机器的语言、面向过程的语言到面向对象的语言,编程语言的历史也经历了由繁到简。而互联网崛起的90年代,无疑也是编程语言的黄金时代。“1990年代未见到有什么重大的创新,大多都是以前构想的重组或变化”,但就是这样的一个时代,却是各种编程语言大放异彩的开始。
彼时最主流的编程语言是贝尔实验室两位大佬发明的C语言,互联网的载体计算机的基础设施,都是用这套语言来编写的,包括Linux操作系统、数据库、编译器等等。这也奠定了C语言在IT领域的地位,只要有计算机的存在,C/C++肯定会有它们的一席之地。
2010年iPhone 4问世,乔布斯用智能手机改写了之后的互联网发展轨迹。iOS和Android支撑起的智能手机市场,让移动互联网成为绝对的舞台主角。虽然一门计算机语言从编译器、语法、基础库到在程序员的圈子中普及,并不是短时间可以一蹴而成,但苹果仍然以一己之力将Objective-C和Swift带入了编程语言的主流市场,由此可见,编程语言和一个产品的生态规模息息相关。
一个编程语言的长盛不衰,除了它本身的优势之外,其生态的建设也至关重要,毕竟用的人多了,也就能自成一派,这一点在Python的流行中体现的淋漓尽致。
当学Python要从娃娃抓起的口号开始流行时,编程语言从IT圈子进入到大众圈。大数据、AI的时代,Python可以说是一骑绝尘,从数据分析、机器学习、Web开发到爬虫开发都可以在Python的帮助下非常轻松的解决。
我们以互联网的崛起为分界线,可以看到各个编程语言的此消彼长,必然伴随着新的产品和技术。顺应新技术发展的编程语言,即便时隔几十年,也可以重新焕发光彩。而且随着开源社区的壮大,一门优秀的编程语言可以博采众家之长,成长为后起之秀。
C语言
一种面向过程的编程语言,也是最基础的入门语言。在这里用户创建过程或函数来执行他们的任务,主要用于一些底层系统的开发。例如我们熟悉的微软的Windows操作系统就是用C语言和一些汇编语言混合编写的。还有Unix操作系统也是用C作为语言标准来编写的。这里需要说明一下,苹果电脑的macOS和iOS系统都是基于Unix系统的变种,所以本质上也是用C编写。
C语言更接近于底层,方便直接操作内存。C语言不仅拥有计算机高效运行的实用性特征,同时还致力于提高大规模程序的编程质量与程序设计语言的问题描述能力。如果你未来想从事操作系统层面的编程工作,学好C是再好不过的。
用途:操作系统,软件开发,硬件等
优势:可移植性强,体型小巧,易镶入现代处理器,了解了C语言,相当于了解了编程语言的一切,支持硬件级别的处理
缺点:不具备运行时检查机制,不支持面向对象编程,上手较难

C语言叫做C语言是因为它是在B语言之后被创造的,甚至它和B语言也有不小的渊源。C语言是由Dennis Ritchie(C语言之父)创建的,此时他就职于贝尔实验室。而在这之前,贝尔实验室就已经有了一门语言叫做B语言。而B语言是由Thompson创建的高级语言,它本身是由编程语言BCPL实现。最初Unix系统是打算用B语言写的,只因为B语言存在某些缺陷,于是C语言之父就打算弄出一种新的高级编程语言来完善它,于是就搞出了C,而这个过程是借鉴了B语言的。
Java语言
Java语言最早是由Sun公司开发的一种跨平台的语言。他和C语言不同的是,Java是一种面向对象的编程语言。他最大的特点就是通过Java虚拟机实现跨平台效应。Java语言可以说是当今公司用的最多的一种语言。
Java的语法比较规则,采用严格的面向对象编程方法,同时有很多大型的开发框架,比较适合企业级应用。Java的学习曲线较长,不仅要学习语言相关的特性,还要面向对象的软件构造方法,在此之后要学习一些框架的使用方法。基本很多大中小型公司的提供数据的后台数据接口都是用这种语言编写的。而世界上最大的移动操作系统安卓操作系统的开发也是用Java语言来开发。所以说,如果你想找一份好一点的工作,或者找工作更容易一点,学习Java是一个不错的选择。
用途:Android & IOS 应用开发,视频游戏开发,桌面GUIs(即图形用户页面),软件开发,架构等。
优势:市场对JAVA开发者需求旺盛,Android开发的基石,java跨平台实现一处编译多处执行,拥有强大的类库,Web开发(主流语言)。
缺点:占用大量的内存,启动时间较长,不直接支持硬件级别的处理

Java最初是为交互式电视而设计的,而且最开始它的名字也不是叫Java,而是叫Oak。但是后面发现,不能使用Oak这个名字,因为它已经被注册了。Sun公司特地组织了一次头脑风暴。大家广泛讨论,胡思乱想,最终产生了几十个名字,而经过一番评选讨论,名字个数缩小到十几个,名单上的名字除了Java外,还有Silk,Lyric,Pepper,NetProse,Neon…等等。当时会议的人决定从这十几个名字中选出最终的名字,排名第一的名字叫“Silk”,很多人都表示同意,但 James Gosling(Java之父)表示反对,大伙只好作罢,而排第二第三的都让律师否掉了,最终,排第四的Java被所有人接受,这也就有了现在我们熟知Java语言。
Python语言
python语言最早是有一个荷兰人在1981年推出的一种面相对象编程语言。最主要的特点是简单,上手快。
python比较容易学习,语法很简单,融入了很多现代编程语言的特性。python的库非常丰富,可以迅速地开发程序,无论是网站还是小游戏都非常方便。不过,python的脚本的运行效率较低,不适合对运行效率要求较高的程序。python语言也可以用来写网站。我们熟悉的豆瓣网,最早就是用纯python来编写的。而随着阿尔法狗击败李世石,宣告了人工智能AI的到来,越来越多人使用python了。python简洁明了,是一种脚本语言,更适合用来做算法,写人工智能方面的编程。如果未来你想从事AI人工智能方面的工作,python语言能够帮助你实现你的这个理想。
用途:爬虫,Web开发,视频游戏开发,桌面GUIs(即图形用户页面),软件开发,架构等。
优势:拥有强大的开源类库,开发效率高,作为Raspberry Pi等新型平台开发基础,易上手
缺点:运行速度低于编译型语言,在移动计算领域乏力

Python的名字也挺有意思的,意思是蟒蛇。这缘于Python的创造者Guido van Rossum当时喜欢看一款BBC的节目“Monty Python’s Flying Circus”。而正好 Guido van Rossum需要一个简短,独特且略显神秘的名字,因此他决定将语言称为Python(大神就是任性啊)。