C、C++、Java到Python,编程入门学习什么语言好?
摘要:回顾编程语言几十年来的兴衰起伏,似乎也折射了整个信息产业的变迁消亡,想要在技术的洪流里激流勇进,找准并学精一两门编程语言更加显得至关重要。
最近,TIOBE更新了7月的编程语言榜单,常年霸榜的C、Java和Python依然蝉联前三位。万万没想到的是,R语言居然冲到了第八位,创下了史上最佳记录。而且后续随着业内对数据统计和挖掘需求的上涨,R语言热度颇有些势不可挡的架势。
然而作为程序员吃饭的工具,编程语言之间也形成了某种鄙视链,各大论坛里弥漫着剑拔弩张的气氛,众口难调。也难怪有很多初学者会有疑惑,为什么会有这么多编程语言,我到底应该学什么语言?
回顾编程语言几十年来的兴衰起伏,似乎也折射了整个信息产业的变迁消亡,想要在技术的洪流里激流勇进,找准并学精一两门编程语言更加显得至关重要。
编程语言的黄金时代
“有人不喜欢花括号,开发了Python;有人在一个周末设计了出了JavaScript;有人因为上班太无聊,于是发明了C语言”。关于编程语言的八卦轶事很多,但归根结底,一个编程语言的诞生一定是需求的推动。
从面向机器的语言、面向过程的语言到面向对象的语言,编程语言的历史也经历了由繁到简。而互联网崛起的90年代,无疑也是编程语言的黄金时代。
套用维基百科的总结,“1990年代未见到有什么重大的创新,大多都是以前构想的重组或变化。”
但就是这样的一个时代,却是各种编程语言大放异彩的开始。
彼时最主流的编程语言是贝尔实验室两位大佬发明的C/C++语言,互联网的载体计算机的基础设施,都是用这套语言来编写的,包括Linux操作系统、数据库、编译器等等。
这也奠定了C语言在IT领域的地位,只要有计算机的存在,C/C++肯定会有它们的一席之地。
但后来者居上的故事也随时在发生,这里的主角是已经落幕的昔日巨头网景和Sun。
1994年,网景发布了一款真正的网络浏览器Navigator,但受限于当时的技术限制,Navigator更像是一个本地展示页面,不具备任何交互功能。巧的是,Sun公司在1995年正式向市场推出他们开发的Java(即Oak语言),特点是“一次编写,到处运行”,网景看中了这个潜力股,选择与Sun结盟。
当时的Java可以作为脚本嵌入到网页中实现交互功能,即我们所熟知的Java Applet。然而,网景认为Java作为网页脚本还是过于复杂,程序员Brendan Eich就在10天内,集百家之长,开发了Javascript,如今所有浏览器前端库都需要基于JavaScript实现。
计算机的普及、互联网的崛起,Web应用的出现,Ruby、PHP等语言也悉数登场。
如知乎作者“强哥学堂”述,“这段时间,虽然没有创造编程语言,但是由于大量企业的参与,编程语言得到了空前的发展,形成了今天的编程语言的基本形态。也使得软件开发越来越标准化,规模化。”
与此同时,还有一些“小众”的编程语言,正蓄势待发中,等待着“爆红”的机会。
苹果的搅局,生态很关键
2010年iPhone 4问世,乔布斯用智能手机改写了之后的互联网发展轨迹。iOS和Android支撑起的智能手机市场,让移动互联网成为绝对的舞台主角。
苹果开创了一个全新的生态,作为iOS的应用开发语言,始于1984年的Objective-C从籍籍无名走向声名大噪,依托各种iPhone、iPad应用程序的开发,Objective-C曾一度挺进TIOBE排行榜的Top 3。
不过,苹果在2014年的WWDC上推出了新的编程语言Swift,支持编写macOS/OS X、iOS、iPadOS、watchOS和tvOS的软件应用,并在第二年宣布开源、支持Linux。
自此之后,Objective-C的市场份额逐年递减,从2014年的12%下降到2016年的1%。从下图也可以看出,新语言Swift从0开始,这几年一直处于稳定增长中,今年1月也冲进了TIOBE榜单的第九位。
虽然一门计算机语言从编译器、语法、基础库到在程序员的圈子中普及,并不是短时间可以一蹴而成,但苹果仍然以一己之力将Objective-C和Swift带入了编程语言的主流市场,由此可见,编程语言和一个产品的生态规模息息相关。
微软和Visual Basic的关系也是如此,移动互联网时代之前,VB曾经依靠可视化的开发环境,成为最炙手可热的桌面开发工具,并一度拥有300万开发者。而且借助Windows操作系统市场优势,VB如今也一直保持着居高不下的热度(遗憾的是,微软表示不打算继续演化 Visual Basic了)。
回到移动互联网时代,另一边的Android选择的是Java,随着Android阵营的越来越庞大,Java一直是TIOBE榜单上的第一,成绩最差也能拿个第二。
一个编程语言的长盛不衰,除了它本身的优势之外,其生态的建设也至关重要,毕竟用的人多了,也就能自成一派,这一点在Python的流行中体现的淋漓尽致。
大数据+AI时代,Python一骑绝尘
当学Python要从娃娃抓起的口号开始流行时,编程语言从IT圈子进入到大众圈。
大数据、AI的时代,Python可以说是一骑绝尘,从数据分析、机器学习、Web开发到爬虫开发都可以在Python的帮助下非常轻松的解决。
统计分析人员可以用Python解决数据爬取和分析的问题,大学生可以用Python解决租房的问题……
最关键的是,Python的学习门槛比C++,Java都要低,简洁的语法、成熟的第三方库,即使是非程序员群体,也能在短时间内速成。
用于统计分析、绘图、数据挖掘的R语言也是如此,赶上了数据应用分析的潮流,自然能从众多编程语言中脱颖而出。
针对今年7月榜单R语言创纪录的成绩,TIOBE的 CEO Paul Jansen 明确表示有两大趋势起着关键作用:一是商业统计语言和软件包(如 SAS、Stata 和 SPSS)的时代已经结束,大学和研究机构采用Python和R进行统计分析;二是与COVID-19相关的研究需要进行大量统计和数据挖掘,所以易于学习和使用的统计编程语言热度上升。
再比如诞生于2010年,由Mozilla主导开发的Rust语言,其更加强调安全性、存储器配置、以及并发处理等特性。去年Facebook推出的区块链项目Libra,就选择了Rust语言来构建,因为它足够安全。
Rust的排名也从2012年的200名开外,在最新一期TIOBE榜单上冲进了Top20。
我们以互联网的崛起为分界线,可以看到各个编程语言的此消彼长,必然伴随着新的产品和技术。顺应新技术发展的编程语言,即便时隔几十年,也可以重新焕发光彩。而且随着开源社区的壮大,一门优秀的编程语言可以博采众家之长,成长为后起之秀。
结语
如果你想以编程语言立生,建议你先学习Java,然后是Python和C++,因为这三种编程语言,基本上可以解决我们工作中遇到的大部分问题。
所以,不妨先试试华为云推出的Java开发全栈成长计划,让你0基础入门,构建Java技能体系,向全栈工程师迈进!
最后,如C#之父Anders Hejlsberg曾总结:如果要我概括在未来十年编程语言会变成什么样,首先,我认为编程语言应该变得更加“声明式”,我们需要设法为语言引入一些如元编程,函数式编程的能力,同时可能也要寻找让用户有办法扩展语法,使他们可以构造领域特定语言等等。不过总体来说我想强调的是,对于编程语言,新的范式则是“多范式”编程语言。
本文部分内容有参考以下文章:
1、《IT行业激荡30年->编程语言变迁史》
https://zhuanlan.zhihu.com/p/106808045
2、《计算机和编程语言的发展历史》
https://blog.csdn.net/abc6368765/article/details/83990756
C、C++、Java到Python,编程入门学习什么语言好?的更多相关文章
- Python编程入门(第3版)|百度网盘免费下载|零基础入门学习资料
百度网盘免费下载:Python编程入门(第3版) 提取码:rsd7 目录 · · · · · · 第1章 编程简介 11.1 Python语言 21.2 Python适合用于做什么 31.3 程序员 ...
- 【python】入门学习(十)
#入门学习系列的内容均是在学习<Python编程入门(第3版)>时的学习笔记 统计一个文本文档的信息,并输出出现频率最高的10个单词 #text.py #保留的字符 keep = {'a' ...
- Python编程入门(第3版) PDF|百度网盘下载内附提取码
Python编程入门(第3版)是图文并茂的Python学习参考书,书中并不包含深奥的理论或者高级应用,而是以大量来自实战的例子.屏幕图和详细的解释,用通俗易懂的语言结合常见任务,对Python的各项基 ...
- 第15.25节 PyQt(Python+Qt)入门学习:Model/View开发实战--使用QTableView展示Excel文件内容
老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 一.概述 在前面的订阅专栏<第十九章.Model/View开发:QTableView的功能及属 ...
- 第15.37节 PyQt(Python+Qt)入门学习:containers容器类部件QMdiArea多文档界面部件详解及编程开发案例
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.引言 老猿在前期学习PyQt相关知识时,对每个组件的属性及方法都研 ...
- Python 编程入门
我喜欢直接了当, 这次主要是推荐蟒营大妈的 Python 入门课(https://py.101.camp), 还有不到一周就要开课了, 欢迎转发推荐~ 点击"夏日大作战:从小白到小能手的 P ...
- 编程入门选什么语言好?C 语言还是Python ?为你解析
前面我分享过计算机行业已经成了学校选择排名第一,家长和学生都很看好计算机类专业.现在IT行业也越来越火爆,程序员越来越被人看好.面对相比同龄人高薪资的诱惑,人们很难不心动,即使秃头也值得! 那么问题来 ...
- 第15.41节、PyQt(Python+Qt)入门学习:输入部件QComboBox组合框功能详解
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 Designer中输入工具部件中的Combo Box组合框与 ...
- 第15.38节 PyQt(Python+Qt)入门学习:containers容器类部件QDockWidget停靠窗功能详解
专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 一.概述 QDockWidget类提供了一个可以停靠在QMainWin ...
随机推荐
- HTML中doctype的作用及几种类型详解
一.DOCTYPE标签的定义与作用 <!DOCTYPE>是一个用于声明当前HTMl版本,用来告知web浏览器该文档使用是哪种 HTML 或者 XHTML 规范来解析页面,以便浏览器更加准确 ...
- jmeter跨线程组传值和jmeter跨线程组调用
Jmeter的线程组之间是独立的,用Jmeter做接口测试或者是性能测试时,经常会涉及到多个线程组.那么如何将A线程组返回的变量信息提取后,传递给B,C线程组使用呢?这里以已登录接口返回的access ...
- 10、一个action中处理多个方法的调用第二种方法method的方式
在实际的项目中,经常采用现在的第二种方式在struct.xml中采用清单文件的方式 我们首先来看action package com.bjpowernode.struts2; import com.o ...
- jvm基础知识1
堆放实例对象,栈放实例对象的引用,方法区存储创建类的信息 上面堆和垃圾回收的关系,垃圾回收回收的是堆内存的数据,s0和s1区域, 例如现在我们要清除s0中的堆对象,将s0中正在运行的对象从s0区域移动 ...
- Selenium+Python调Chrome浏览器时报Traceback (most recent call last): File "C:/Users/EDZ/Desktop/selenium_demo/demo001.py", line 12, in <module>
上次使用Selenium+Python还是好几个月前了 今天想再用一下,结果写个打开网站的小demo报错,报错如下: 检查了一下,查看报错日志,应该是chrome版本和driver版本不一致导致的. ...
- 解决UEditor编辑时,只添加视频内容,不添加文字,视频信息不能保存到数据库的问题
造成这个问题的原因是富文本保存内容时会筛除空标签,然后统计是否有内容,通过字数统计也可以看到,上传完视频后字数还是零,因为视频上传后是<video></video>标签,这个标 ...
- 锐捷交换机18010-X端口假死现象
一次上架锐捷交换机,由于ODF光衰不稳定,导致交换机端口down,排查很多发现以下故障: 重置18010-X端口发现提示一下命令: Port in violation! Use 'errdisable ...
- windows下 react-native环境搭建
跟着慕课网做案例,搭建rn环境遇到很大问题. 下面说一下: 首先看一下文档:http://reactnative.cn/docs/0.44/getting-started.html#content 注 ...
- dart快速入门教程 (7.2)
7.4.抽离类为单独文件 新建一个文件,单独存放一个类,例如:Person类抽离到person.dart文件中 class Person { final String name; final num ...
- plsql截取字符串字段中的某个字符段
截取字符串 字符串s=" hello world ! (name) " 如果要截取括号中的字符串可以采取如下方法. select substr(s,instr(s,'(')+1, ...