主流编程语言的“介绍”与“选择”
前言:
《编程语言》本身没有优劣之分,不同的语言适合不同的场景,文中说的建议,多是站在小白要就业的立场给出的建议。
适合场景:
- Go、Python:算法程序;{ 静谧、蠕动、逻辑、规则、策略、排序、哈希、匹配、搜索、加密;动态规划(DP)、二分查找、线性回归、逻辑回归、梯度增强、递推、递归、穷举、贪心、分治、迭代、分支界限、回溯。决策树、随机森林、马尔可夫、朴素贝叶斯、K 近邻、K 均值、主成分分析、K-means 聚类、Adaboost、Apriori、神经网络、卷积神经网络、循环神经网络、长短期记忆网络、生成对抗网络、人工神经网络、支持向量机、集成学习、深度强化学习;基本算法 [ 深度优先搜索 / 广度优先搜索 / 启发式搜索 /遗传 / 枚举 ]、数据结构算法、数论与代数算法、计算几何算法 [ 凸包 ]、图论算法 [ 哈夫曼编码 / 树遍历 / 最短路径 / 最小生成树 / 最小树形图 / 网络流 / 分团问题 ]、其他算法 [ 数值分析 / 检索 / 随机化 ] 。}
- Perl、VB:系统脚本;
- Ruby、Rust:函数脚本;
- C/C++:运算程序;
- C# .Net:C/S、B/S 系统应用;
- PHP:门户网站;
- Node.js:推广网站;
- Java:服务应用;
正文
我们看这张脑图,这张图右侧是《前端类》的编程语言,左侧是《后端类》的编程语言:
我们先说右侧。
第一个就是 JavaScript,简称 JS。
我强调下它 和 Java 是没有关系的,只是名字类似。
它的用途是前端开发,它负责网页上的交互事件 和 交互数据,比如你在界面上做了点击滑动的操作,这都是 JS 负责的,你能在界面上看到文章、视频等数据,比如在知乎你能看到推荐的文章(数据),这也是 JS 负责的(通过 Ajax 调用后端接口获取)。
建议:你要做前端,那只有这一门语言能选择,属于必选项,JS 占了前端很大的比重,说白了做前端开发就是在搞 JS。
第二个 和 第三个都是原生 App 的开发语言
我对这两个的建议就是不建议作为入行语言,
因为 App 开发分原生 和 混合:
原生开发拥有更好的流畅度,更丰富的动画,但是一套 App 要分两个版本,要两组不同的人来维护。
而混合开发就是前端来做的,不需要分两组,这几年混合开发也在进步,考虑到成本问题,中小公司或者说这个项目没有很高的要求,那一般会采用混合开发的方案。
所以说如果你是已经在做 Android 或者 iOS 的,可以根据情况来斟酌,但作为想入行的小白,不建议以这两个语言入门。
我们再看这张图左边的语言。这边都是后端类的语言。
Node.js
Node.js 用途一般是后端开发,它其实就是 JS,只是 Node.js 多了操作文件 和 数据库的语法,所以可以做后端,但是真用它做后端的公司很少很少。不适合作为第一门语言学,一般是做前端之后,把它作为了解后端的跳板。
PHP
PHP,用途也是 web 后端开发,它还有个头衔是——“世界上最好的语言”。
不过以现在来说,这个世界上最好的语言可以说大势已去~
PHP 在互联网初期因为其轻量 和 快捷,适合中小型应用,再加上易学,所以在以前的互联网很有统治地位,后来前后端分离了,公司也慢慢成熟,面对性能等问题其它语言有更好的解决方案,所以公司大多舍弃了 PHP,到了现在就算是初创公司做web后端的项目适合用 PHP,但是出于跟风或者为了拉投资画饼,以及招人成本,也会选择其它语言。
我认识的在一线工作的 PHP 程序员基本都转前端、转 Go 或者 Java 了,二线做Php还有在坚持的,新手不建议再从 PHP 入手,并不是它不好,语言没有好坏之分,但是我们要考虑到我们要就业的事实。
Python
应该很多人在网上看过 Python 的广告吧,比如 9.9 学 Python,下班早等。
它的用途服务器开发,数据相关工作(采集分析,机器学习)。
Python 语法简单易学,插件丰富,作为工具确实会方便很多人的日常工作。
如果你是以学习为目的,可以把 Python 当成第一门语言,因为更容易上手,能做的事儿也多,会体会到编程的趣味性,从而更积极的学习编程。
如果你是小白,以找工作为目的,我不建议你把 Python 当成第一门语言。因为 Python的主力还是人工智能、数据处理这一块,而这一块对数学是有要求的。
虽然 Python 还能做后端啊,比如知乎 和 豆瓣的后端就是 Python,但是以后端来说 Python 的就业岗位是逊于java的。
当然也有可能你搜 Python 你还会说,老师这 Python 岗位数量也不少啊。
那是因为做数据相关的、做测试时候也需要懂 Python,招聘网站会把这些统计到 Python 工程师之下,这样来说就多了。
总得来说,你以学习为目的,以 Python 为第一语言不会让你自闭,因为它语法简单,插件丰富的特点,能让你学的轻松,并且能快速实现一些东西,让你感受到编程的魅力,但是如果以工作为目的选择第一语言,我不会把这一票投给 Python。
Golang
新晋的宠儿——Golang,说它新晋也不准确,它出来也有10年多了,只是相对其它语言比较年轻。
它的领域也是后端开发,对 Go 的建议嘛 emmm...
我个人认为,小白以找工作为目的,不适合把 Go 当成第一门语言。
因为同样是服务端开发,Go 的生态 和 市场占有率不如 Java,而且 Go 主要集中在一线大厂,并不是每个人都有资格进一线大厂,而且中小公司在技术选择上肯定是愿意用 Java 而不是 Go,
一来 Java 的生态足够丰富,二来员工容易招。所以我不建议把 Go 当成入门第一语言。
当然如果你学历好,对自己的成长有规划,或者目前还是大学阶段不着急找工作,也可以选择 Go。
如果你只是一般学历,就要面临就业还没有熟悉能用来工作的语言,我认为这种情况,随大流更好。
Java
Java——后端第一语言,纵然现在存在内卷严重,但是小白以找后端工作为目的的情况下,我认为 Java 仍然是不二选择,因为生态足够丰富,招聘需求大!
这几年里有人说 Python 会超过它,有人说 Go 会取代它,可事实证明 Java 还是那个 Java,还是那个后端一哥。
所以如果你面临就业没有能够开发的语言,且又想做后端,你就学 Java。
C 语言
C 是底层语言,能做操作系统、嵌入式、网络安全,但是不是学会了 C 你就会以上的事情,C 只是一个工具,你还要搭配相应的知识与工具。比如你想做嵌入式,你还需要了解数字电路、模拟电路、Linux 等
建议:C 语言能够让你更加深刻的认识内存 和 编译原理,还有程序思想,数据结构,了解程序的每一个细节,夯实基本功,所以优秀的程序员都会学习 C 语言。但多数程序员的开发语言不是它,因为它偏向底层,而多数程序员做的事情偏应用层。
所以你不会 C 语言你也能做程序员,计算机也分层,就像你开车并不需要会修车一样,只是 C 语言能让你让你了解的足够深,能让你有希望在技术道路上走的更长远。
C++
C++ 也是偏底层的语言,用途:桌面软件开发、游戏开发。
建议:其实建议 和 C语言差不多,C++ 岗位不多但是精,不少大厂需要性能的业务是由 C++ 来做,比如微软、字节的广告系统都是 C++ 来做的。
如果你是本专业的大一,学 C/C++ 这类偏底层的语言,是能够打好你的基本功的;
如果你面临就业,还是选择 Java、或者前端更合适。
C 和 C++ 也是院校计算机专业基本都教的,虽然工作可能用不上,但是学的是程序思想 和 数据结构,你可以理解打好基本功。
C#
最后一个 C#,这个我了解的不多,我去招聘软件上看了看,它的岗位主要分布在游戏开发、后台、工具开发等方面。
建议:C# 在国内就业市场确实行情不佳,在 Unity 3D 上比较有发展前景,其它领域前景不明。
C# 还经常 和 .Net 连在一起,不过 .Net 不是编程语言,严格来说 .Net 是一个平台,支持很多语言,C# 是支持的最好的,所以在大多数语境下,.Net 工程师等于 C# 工程师。
总结:
如果你是零基础要就业的情况下,前端方向肯定是 JS(唯一的选择),后端方向最建议 Java。
如果你在学校以学习为目的,把学校教的基本功打好,然后从 Python、JS、Java 选择一个来学习,在我看来从 Python 或者 Java 选择了一个,然后 JS 基本也不会绕过去,因为你做了个工具,你肯定还想展示出来嘛,展示的事儿就是前端就需要用到JS了。
其实我也很建议大家大学时候就开始自学,时间多,做出小工具后的成就感能让你继续学下去,很有可能你大学几年能把前端后端(其中一门语言)都学会,再搭配良好的计科基础知识,很有希望进大厂,就算进不去大厂,那这个时候的你也不会为找不到工作发愁。
相反,如果你大学没有自学,那你就算是计算机专业,你毕业也基本找不到工作,别提什么实习,实习也是要的能干活的,大多数计算机专业的同学自己到底几斤几两能不能干活心里都应该有数吧。
到时候只能参加培训,进入大厂的机会减少(因为失去了校招),而且还要交钱学习,不过你如果真的错过了大学自学,到了毕业才开始学,那培训反而成了性价比高的选择了。