前言

全世界的编程语言有 600 多种,TIOBE 统计的有 100 种,参与排名的有 50 种,前 20 种是常用的,它们目前正在流行,或者曾经非常流行。

图1:2023年 6月份编程语言排名 TOP 20

TIOBE 是全球最著名的编程语言排行榜,它根据互联网上有经验的程序员、课程和第三方厂商的数量,并使用搜索引擎、Wikipedia、Amazon、YouTube 等统计出排名数据。TIOBE 只是反映某个编程语言的热门程度,并不能说明一门编程语言好不好,或者一门语言所编写的代码数量多少。

TIOBE 排行榜每月更新一次,你可以转到 https://www.tiobe.com/tiobe-index/ 查看编程语言的最新排名。

我一直在负责C语言中文网的一对一答疑工作,有很多同学问我,该如何从这么多编程语言中选择一门适合自己的呢?选择标准又是什么呢?很早我就想写一篇文章来回答这个问题了,现在终于如愿以偿了。

要想选择编程语言,首先得确定开发方向,比如网站开发、APP 开发、机器学习、大数据、嵌入式、GUI 软件、算法设计等。编程语言不是万能的,一门编程语言只能胜任一个或者几个开发方向,一个开发方向往往也有多种编程语言可以选择。

我们首先谈一下开发方向的选择,然后再说编程语言的选择。

【----帮助Python学习,以下所有学习资料文末免费领!----】

1. 选择开发方向

选择大于努力,只有切入一个适合自己的开发方向,才能持续进步。关于开发方向,我有以下两个选择标准。

1) 兴趣

学习编程是一个非常枯燥的过程,内容多,时间长,成本高,就算参加全职培训班,至少也得学习半年才能入门,做出一点小玩意来。要想成为别人眼中的大神,或者编程专家,没有三五年的功夫肯定是不行的。

学习编程的过程是比较艰苦的,没有兴趣很难硬扛下来,即使报名了培训班也学不会,所以,我们首先要选择自己感兴趣的一个开发方向,这样不但能快速学习,以后还能持续进步。

比如我就对网站感兴趣,高中阶段我就想开发一个属于自己的网站,感觉非常炫酷,所以大学我毫不犹豫地选择了网站开发这个方向。我在选择开发方向的时候没有任何纠结,我知道自己必须选择网站开发。

我的大学专业是电子信息工程,跟软件开发几乎没有关系,所以网站开发完全是我自学的,我也是凭借兴趣坚持下来的,一直到现在我还在运营C语言中文网,把兴趣变成了职业。

兴趣是最好的老师,没有之一。遗憾的是,对某个事物有强烈兴趣的人很少,大部分人都是被动选择。

此处我说的兴趣,是指别人无法撼动的热爱,是工作之余让你放松的事情。如果你只是有过某种想法,别人告诉你这个想法不靠谱,你就放弃了,这顶多是一时的鸡血。

2) 未来发展

如果你学习编程不是因为兴趣,只是想选择一份职业,那我希望你切入一个有发展潜力的开发方向。

每个产业的发展规律都是类似的,都要经历以下几个周期:

拓荒期 -> 发展期 -> 成熟期 -> 衰落期

我希望你在发展期切入一个产业,然后持续努力和积累,让产业的发展带着你起飞。站在风口上,猪都能飞起来。

你应该听说过很多没啥背景的人,突然之间一夜暴富了,惹得别人羡慕嫉妒恨吧,这些人,大都是在一个爆发式增长的行业里面翻了身,比如十年前的包工头、持续火热的程序员。

注意,最好不要在拓荒期切入一个产业,你很有可能坚持不到曙光到来之时就已经转行或者年老色衰了,成为了别人谈笑中的“烈士”。

对于软件开发产业来说,GUI 桌面软件已经是过去式了,APP 和网站也已经进入成熟期,我推荐机器学习(人工智能)和大数据两个方向,它们都是国家重点扶植的细分产业,而且写入了十四五规划,未来至少还有十年的发展时间。

机器学习需要大数据提供原料,反过来,大数据分析也依赖机器学习模型,它们是相辅相成的,很难隔离开。

以上是我基于 10 年的编程经验和 7 年的创业过程给出的建议,如果你觉得不对,就当做耳旁风吧,毕竟我也才三十出头,阅历还不是很丰富,难免有偏颇。

另外,选择产业方向也是有风险的,也是一次命运赌博,谁也不能确定这个产业能不能发展起来,就算发展起来,又需要多少年呢?又有多大的产值呢?

比如人们一直谈论的人工智能已经发展了几十年了,到现在还是“人工智障”,底层理论并没有本质的突破。虽然国家把人工智能选为重点产业,注入了海量资金和人才,各家大公司也跟风进入,但是底层理论如果不突破,十年以后没准还是智障,只不过应用场景多了。谁也不能穿越到未来,谁也不能告诉你确定的答案。

就算一个国家,也会点错科技树,比如:

  • 美国认为自己无人能敌,发展了朱姆沃尔特级驱逐舰,打算近岸攻击,想不到中国突然崛起,海军开始下饺子,美国不得不转为远洋作战,废掉朱姆沃尔特级。
  • 日本押宝混动汽车和氢能汽车,积累了大量专利,但是中国却切换了赛道,倾力发展纯电动汽车,并且积累了一定的优势,日本想逆袭非常困难,汽车产业岌岌可危。

在产业发展过程中,会有很多不确定因素,我们只能尽力选择一个有前景的产业。

其实吧,很多“暴发户”也不懂得什么产业发展规律,他们只是阴差阳错地进入了某个产业,恰好赶上产业崛起而已。我自己当初也不懂互联网,只是对网站感兴趣,就进入了互联网产业,抓住了 PC 互联网的尾巴,所以才比其他行业的同学混得好点。

也就是说,我混得好点,不是因为我足够优秀,而是因为我进入了互联网产业,搭上了产业的便车,我只是比我的同学更加幸运而已。

2. 选择编程语言

确定了开发方向,接下来就可以选择编程语言了。有的开发方向比较纯粹,只有一两种编程语言,有的开发方向鱼龙混杂,有五六种编程语言,选择编程语言也是一个让人纠结的过程。

以下是部分开发方向可以选择的编程语言:

1) GUI 桌面软件

能开发 GUI 软件的编程语言众多,既有传统的 C++、C#、VB、Delphi、Java,也有新晋选手 Python、Node.js(JavaScript),还有小众的易语言(中文编程语言)。

如果你只是想玩玩,那么你随意,适合自己的就行,其中 Python 上手比较简单。

如果你想找一份工作,建议学习 C++ 或者 C#。C# 虽然比 C++ 简单一点,但是它只适用于 Windows 平台;而 C++ 是一种通用语言,它可以应用于 Windows、Linux 以及嵌入式平台,就业选择较多。

2) 网站开发

网站开发分为前端和后台,前端就是用户在浏览器中看到的界面,后台就是放在服务器上的程序。

前端开发需要学习 HTML、CSS 和 JavaScript,没得选,而且必须都学习。

后台发开语言则多如牛毛,有走进坟墓的 ASP、Ruby on Rails,也有常用的 PHP、Java(JSP)、C#(ASP.NET),还有新晋选手 Python、Node.js(JavaScript)、Go 语言。

如果你想自己玩玩或者创业,建议选择 PHP,上手非常简单。我使用的也是 PHP,因为当时学不会 ASP.NET 和 JSP,所以选择了简单的 PHP。

如果你想找一份工作,那么已经走进坟墓的 ASP、Ruby on Rails 就不要选了,没人用了。C# 也不要选了,只适用于 Windows 平台,而大量的服务器都是 Linux。

剩下的 PHP、Java、Node.js 你自己看着办吧,没法说哪种语言一定有优势,它们只是适用于不同的场景。

值得一提的是,这里我们将 Node.js 和 JavaScript 看做是等价的,如果你选择了 JavaScript,那么你既能开发网站前端,也能开发网站后台,就不用学习多种编程语言了。

3) APP 开发

这个开发方向比较简单,Android APP 开发使用 Java 或者 Kotlin,iOS APP 开发使用 Objective-C 或者 Swift。

每种操作系统都有两种编程语言,一种是传统的,一种是新晋的,选择好了操作系统,把两种语言都学了吧。

4) 嵌入式开发

一般使用汇编、C语言和 C++,近年来也有开发板支持 JavaScript 和 Python。

自己玩的话,可以选择 Python,上手简单。

想找工作的话,还是走传统路线吧,把汇编、C语言和 C++ 都学了吧。

只有那些有 Web 开发基础的程序员才会选择 JavaScript。

5) 机器学习

这是一个比较综合的开发方向,初学者一般从 Python、MATLAB 开始搭建模型,实际工程应用中可能需要使用 C++、Java 等其它语言去实现。

Python 是必学的,MATLAB 最好也要掌握,C++ 和 Java 视情况而定。

6) 大数据

这也是一个比较综合的开发方向,相关语言有 Python、R语言、Java、Scala。把 Python 和R语言学习一下,剩下的看情况吧。

由于我的能力所限,我无法对所有开发方向做深入的分析,有说得不到位的地方,请大家留言,或者在公众号聊天框中反馈给我。

以上说的仅仅是编程语言,除了编程语言,大家还需要学习某些框架或者库,比如:

  • Java 网站开发需要掌握 Servlet、JSP 技术,以及 Spring、Spring MVC、Spring Boot、Spring Cloud、Mybatis、Hibernate 框架;
  • Python 机器学习需要掌握 PyTorch、TensorFlow、Caffe 等框架,以及 sklearn、NumPy 等模块。

除了编程语言和框架/库,你当然还要掌握一两种数据库,常用的有 MySQL、Oracle、MongoDB、Redis、Sqlite 等,这里不再展开讨论。

总结

软件开发是一个大产业,其中有很多细分方向,每个方向使用的技术栈都不一样,而且要经过长期学习才能掌握,所以大部分程序员都只擅长某个开发方向,那些多面手,要么是学艺不精,要么是技术大咖。

人们之所以迷茫,就是不知道如何选择,这篇文章虽然不一定能让你做出最终的决定,但是可以给你一种不同的视角和标准,帮助你打开思路。

最后给大家介绍一个完整的python学习路线,内容是从入门到进阶,既有思维导图,也有经典书籍,还有配套视频,给那些想学习python以及数据分析的小伙伴们一点帮助!

一、Python入门

下面这些内容是Python各个应用方向都必备的基础知识,想做爬虫、数据分析或者人工智能,都得先学会他们。任何高大上的东西,都是建立在原始的基础之上。打好基础,未来的路会走得更稳重。

包含:

计算机基础

python基础

Python入门视频600集:

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。

二、Python爬虫

爬虫作为一个热门的方向,不管是在自己兼职还是当成辅助技能提高工作效率,都是很不错的选择。

通过爬虫技术可以将相关的内容收集起来,分析删选后得到我们真正需要的信息。

这个信息收集分析整合的工作,可应用的范畴非常的广泛,无论是生活服务、出行旅行、金融投资、各类制造业的产品市场需求等等,都能够借助爬虫技术获取更精准有效的信息加以利用。

Python爬虫视频资料

三、数据分析

清华大学经管学院发布的《中国经济的数字化转型:人才与就业》报告显示,2025年,数据分析人才缺口预计将达230万。

这么大的人才缺口,数据分析俨然是一片广阔的蓝海!起薪10K真的是家常便饭。

四、数据库与ETL数仓

企业需要定期将冷数据从业务数据库中转移出来存储到一个专门存放历史数据的仓库里面,各部门可以根据自身业务特性对外提供统一的数据服务,这个仓库就是数据仓库。

传统的数据仓库集成处理架构是ETL,利用ETL平台的能力,E=从源数据库抽取数据,L=将数据清洗(不符合规则的数据)、转化(对表按照业务需求进行不同维度、不同颗粒度、不同业务规则计算进行统计),T=将加工好的表以增量、全量、不同时间加载到数据仓库。

五、机器学习

机器学习就是对计算机一部分数据进行学习,然后对另外一些数据进行预测与判断。

机器学习的核心是“使用算法解析数据,从中学习,然后对新数据做出决定或预测”。也就是说计算机利用以获取的数据得出某一模型,然后利用此模型进行预测的一种方法,这个过程跟人的学习过程有些类似,比如人获取一定的经验,可以对新问题进行预测。

机器学习资料:

六、Python高级进阶

从基础的语法内容,到非常多深入的进阶知识点,了解编程语言设计,学完这里基本就了解了python入门到进阶的所有的知识点。

到这就基本就可以达到企业的用人要求了,如果大家还不知道去去哪找面试资料和简历模板,我这里也为大家整理了一份,真的可以说是保姆及的系统学习路线了。


但学习编程并不是一蹴而就,而是需要长期的坚持和训练。整理这份学习路线,是希望和大家共同进步,我自己也能去回顾一些技术点。不管是编程新手,还是需要进阶的有一定经验的程序员,我相信都可以从中有所收获。

一蹴而就,而是需要长期的坚持和训练。整理这份学习路线,是希望和大家共同进步,我自己也能去回顾一些技术点。不管是编程新手,还是需要进阶的有一定经验的程序员,我相信都可以从中有所收获。

资料领取

这份完整版的Python全套学习资料已经上传CSDN官方,朋友们如果需要可以点击下方CSDN官方认证微信卡片免费领取 ↓↓↓【保证100%免费】

好文推荐

了解python的前景:https://blog.csdn.net/SpringJavaMyBatis/article/details/127194835

了解python的兼职副业:https://blog.csdn.net/SpringJavaMyBatis/article/details/127196603

初学者避坑指南:如何选择编程语言和开发方向(非常详细)相关推荐

  1. IT:后端进阶技术路线图(初级→中级→高级)、后端开发工程师(技术方向分类之后台业务开发/中间件/内核/分布式架构)基础知识简介、技术路线/技术趋势指南(如何选择自己的技术方向)之详细攻略

    IT:后端进阶技术路线图(初级→中级→高级).后端开发工程师(技术方向分类之后台业务开发/中间件/内核/分布式架构)基础知识简介.技术路线/技术趋势指南(如何选择自己的技术方向)之详细攻略 目录 后端 ...

  2. 新人小白如何选择编程语言和开发方向(非常详细)初学者避坑指南!!

    如果你听说IT编程很赚钱,想入坑,不想入行,那你可以来看一看这篇文章!! 有些坑你应该没入之前就就应该知道! 全世界的编程语言有 600 多种,TIOBE 统计的有 100 种,参与排名的有 50 种 ...

  3. 初学者如何选择编程语言和开发方向(非常详细)

    全世界的编程语言有 600 多种,TIOBE 统计的有 100 种,参与排名的有 50 种,前 20 种是常用的,它们目前正在流行,或者曾经非常流行. 图1:2021 年 10 月份编程语言排名 TO ...

  4. CSC访学、博士后、联培选择国家的避坑指南-美英篇

    2023年国家留学基金委(CSC)公派出国项目申报即将开始.知识人网小编根据CSC要求,结合近年来各主要国家的签证政策与访问学者.博士后.联合培养博士的申请需求,整理出主要留学国家申请的避坑指南.因篇 ...

  5. Python+Selenium 网页自动化 exe 程序编程实现(最全避坑指南)

    前言 在我的日常工作中,经常需要在内网(不连接互联网)的网页版办公系统中进行抓取网页数据.修改表单等大量重复性的操作.我就想是否可以编写出自动化的工具,将这些日常琐碎的操作变得轻松而高效.虽然本人非计 ...

  6. @程序员,区块链开发平台避坑指南!

    来源 | Michiel Mulders 译者 | 火火酱 责编 | Carol 出品 | 区块链大本营(blockchain_camp) 市面上有很多不同的区块链网络,就可扩展性和功能而言,每个区块 ...

  7. 17条避坑指南:一份来自谷歌的数据库经验贴

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 来源 | https://medium.com/@rak ...

  8. 怎么把原来的墙拆掉_电视墙避坑指南要收好!拆掉重装太心累...

    电视墙是家里装修最为重要的一个地方. 相信很多人都想要把电视墙装修得简单又大气,而且还是容易搞卫生的整洁类型~但是,电视墙贴砖过程中,有很多坑需要注意,一不小心就要像下面的业主一样,拆掉重装. 业主反 ...

  9. VMProtect SDK完全避坑指南

    文章目录 前言 编译VMProtect Demo 生成机器码 替换密钥对 生成序列号 总结 前言 在编写软件的时候,通常会有这样一个需求,需要对自己写的软件实现一机一码加密保护,并且最好能够限制使用时 ...

最新文章

  1. Pandas中 DateFrame 修改列名
  2. 腾讯员工晒出薪资:真实985毕业薪资,大家看我还有救吗?网友:日薪?
  3. 自动化生成 Openstack 新项目开发框架
  4. 为什么有些产品不尽完美 但还是有大批用户愿意购买(转)
  5. 实现物体绕不同轴旋转,并可以外部调用的函数
  6. 燕赵志愿云如何认证_人物|志愿者讲解员王静雅:用心讲好河北历史故事
  7. Web前端行业普遍底薪20K,还有项目提成,你达到了么?教你这一招
  8. xhtml 1.0与html4.0区别大全
  9. OpenCV实现图片素描风(调用摄像头+中值滤波+拉普拉斯边缘检测)
  10. [Java][Liferay] 模拟用户
  11. AnyChart如何快速创建3D饼图和圈图(含代码)
  12. 2020年 Java开发者进阶手册.pdf(吐血整理)
  13. 【高德地图API】从零开始学高德JS API(四)搜索服务——POI搜索|自动完成|输入提示|行政区域|交叉路口|自有数据检索...
  14. 如何通过DOI号来获取相关文献并下载?
  15. ArcGIS pro/ArcGIS 10.6及以上版本的最强工具箱——“WhiteboxTools”(468新功能:GIS分析,水文分析,图像分析,激光雷达分析,数学和统计分析,数据流网络分析和)!
  16. Tool:Visio2016/Visio2019专业版64位中文下载、安装(图文教程)之详细攻略
  17. 读书笔记——《802.11无线网络权威指南》
  18. [Alpha] Scrum Meeting 7 - TEAM LESS ERROR
  19. Sampling Heuristics for Optimal Motion Planning in High Dimensions论文总结
  20. 服务器主板u3芯片配i3CP0,【铭瑄B75评测】寝室限网怎么办? 主板化身无线路由器-中关村在线...

热门文章

  1. python iocp_【tulip】 - IOCP
  2. iOS项目中的URL Schemes与白名单
  3. Flash游戏制作--五子连珠(一)
  4. 录录(高清录屏) - Video321 产品宣讲方案
  5. c语言排序程序ppt,冒泡排序 ---C语言程序设计.ppt
  6. html ajax打包成app,利用HTML5与ajax完成拖拽上传文件
  7. php怎么做数据透视表,sql上使用excel表格数据透视表-会excel基本函数和数据透视表,加基本的SQL增删改......
  8. dreamweaver网页制作成品
  9. Vue Injector组件库易于维护和例行测试
  10. 回调地址常见问题及修改方法