我看朋友圈,有些地方已经开学了哈,我们这边推迟到了 9 月 15 号以后。那对于大一新生/准大一新生来说,该如何选择编程语言就是个头大的问题,因为谁都怕选择错了呀。
大家好,我是二哥呀。
我看朋友圈,有些地方已经开学了哈,我们这边推迟到了 9 月 15 号以后。那对于大一新生/准大一新生来说,该如何选择编程语言就是个头大的问题,因为谁都怕选择错了呀。
主流的大学一般都会在大一上半学期开设 C语言这门课,但 C语言是面向过程的,应用领域比较窄,以后工作后用到 C语言的可能性不大。像 Java 啊、Python 啊、C++啊,是面向对象的,应用领域更广泛,以后也更容易找到工作。
那到底还要不要学习 C语言了呢?那到底是选择 Java 呢?还是 Python 呢?还是 C++ 呢?
还有前端的 JavaScript,新兴的 Go 语言,天下第一的 PHP?
麻了麻了。
二哥作为一名 18 岁却拥有 13 年编程经验的老学长,奔着为人民服务的态度,我就把几大编程语言拉倒了一个群里,给他们了一个勇于表达自己的机会。
C语言
大家好,我是 C语言。
作为开场演员,我需要大家更多的掌声,快。
我是由贝尔实验室的 Dennis Ritchie 在 1969 年~ 1973 年间发明创造的,瞧,就他——你们眼中的 C语言之父。
父亲是这样评价我的:“古怪的、有缺陷的,但同时也是一个巨大的成功。”
的确,我的指针不知道劝退了多少初学者,但如果有幸迈过去这一关,可以说潜力无限。
那为什么我还能获得如此大的成功呢?
第一,我和 Unix 操作系统关系密切。
大部分 Unix 内核,以及所有支撑工具和函数库都是用我来编写的。20 世纪 70 年代至 80 年代,Unix 风靡于各大高校,许多人开始接触到我,并且深深地爱上了我。
以至于后来几乎所有的操作系统都用到了我,比如说 Windows、Linux、macOS 等等。
第二,小而美是我的优点。
我非常的简洁,几乎没有任何冗余。以至于我的库函数,嗯,都少得可怜。
这有利有弊,有利的是,上手难度几乎为 0,除了指针难以被新手控制意外,其他的基础语法都很容易上手。
与此同时,由于库函数的缺失,导致新手在开发任何一块小程序的时候都必须得亲力亲为。
很多编程语言都受到了我的影响,比如说 Java、C++、C#、Python、Go 等等。
《指环王》里有这样一句话:“one ring to them all”,可以把 ring 换成 language,这个 language 就是我,恐怕没有人会不同意。
但我也必须得承认,如果大学只学我这一门编程语言,毕业后的就业形势确实不容乐观,因为你们当中的大多数人,都不会从事嵌入式开发和硬件驱动开发。
当然了,以后嵌入式会不会也火起来,也不一定,比如说,在眼镜里植入一个芯片,让镜片变得更轻更薄更智能,就只能用我来搞定了。总不能再装个 JDK 吧,哈哈哈。
最后我想说的是,如果你想成为特别牛逼的程序员,一定要对计算机原理、编译原理有所了解,那么我更接近底层,显然是绕不开的。
像 CSAPP 这本经典书,例子就是用我编写的。
大家懂我了吗?
C++
大家好,我是 C++,对,比 C 多了两个+号,意味着我就是 C语言的增强版本。
20 世纪 80 年代,比雅尼·斯特劳斯特鲁普博士在贝尔实验室工作期间发明并创造了我。瞧,就他——你们眼中的 C++之父。
从诞生之初,我就一直不停地增长,添加了诸多的新特性:
- 虚函数
- 运算符重载
- 多继承
- 标准模板库
- 异常处理
- 运行时类型信息
- 命名空间
我必须得承认,我不适合作为第一门编程语言来入门,除非你极具天赋,否则你可能会因为我“从入门到放弃”的。在学习我之前,必须得搞一波 C 语言。
如果你想以后开发高性能的客户端或者游戏服务器,建议学我。
Java
大家好,我是 Java。
一开始,我叫 Oak,1990 年,我就由詹姆斯高斯林等人创造发明了,算是雏形吧。瞧,就他——你们眼中的 Java 之父。
说起来,也挺有意思的。我当初瞄准的是智能家电这块,也打算搞嵌入式呢,父亲曾把我起名为 C++ ++ —,哈哈哈。直到 1995 年,我才正式改名为 Java。
我的优势主要有四点:
第一就是学习资料丰富,几乎遍地都是,这就极大地降低了学习的成本。
就连培训班,为了品牌的宣传,都忍痛割爱把视频教程开源到 B 站上了,直接就能白嫖,可以说是省了一大笔培训费,哈哈哈哈。
GitHub 上这份星标 200+ 的《Java 程序员进阶之路》不错啊,顺带推荐一把。
https://github.com/itwanger/toBeBetterJavaer
第二就是就业前景乐观,虽然我现在已经很卷了,但是需求量仍然很大,因为我的生态好,车轮子多,能节省开发成本,不管是大厂,还是小厂,都比较钟爱。
像阿里、美团,都是我的重度用户。
如果要说哪门语言在国内找工作最吃香?
如果我喊是我,那绝对没有第二门编程语言出来瞎逼逼。
像企业级 Web 开发、大数据分析处理、微服务、云计算、移动开发都是我的主战场。还有图像处理、桌面应用开发、分布式系统开发、嵌入式等等,我也都能自由切入。
第三就是我搞出来了一个 JVM,可以跨平台,你只需要敲一次代码,编译好,就能在所有平台上运行。
第四就是我把指针这块给砍掉了,这对新手来说,简直就是福音。你只管折腾,内存什么的我来帮你搞定。当然了,也不能太瞎糊弄,OOM 也是会发生的。一旦发生,找起来问题就也挺头大的。
综合实力来看,我应该是编程语言中的大王。
Python
大家好,我是 Python。
由吉多·范罗苏姆发明创造,第一版发行于 1991 年。瞧,就他——你们眼中的 Python 之父。
我的优势就在于简单易上手。
但讲真,我的两大核心应用领域,比如说人工智能、数据分析,对学历都是有比较高的要求的。
还有爬虫这块,如果作为学习,比如说去爬爬网易云音乐下的评论,豆瓣上的高分电影,我觉得还可以。
但爬虫这块说实话,有风险。尤其是一些需要付费的内容,或者比较私密的数据,尽量不要去爬。
我比较疑惑的一点是,有些学校,明明牌子不是很响亮,却特别喜欢拿我来给学生讲。
恐怕以后的就业真的是大问题。
如果你是一名编程爱好者,那么推荐你来学我,写一些自动化的测试脚本了,我觉得蛮 OK 的,因为学习曲线比较平缓。
如果你想以我为生,那么尽最大可能提高你的学历,很关键。
Go
大家好,我是 Go,也可以叫我 Golang。
对了,我爸是 Google,背靠大树好乘凉啊。主创人员主要有三个,都是计算机领域的宗师级大牛:Rob Pike、Ken Thompson 和 Robert Griesemer。
像 docker、k8s 都是用我编写的。
我敢这么拍着胸脯说,我就是目前发展最迅猛的编程语言了,没有之一,国内很多大厂都开始张开双臂拥抱我了。
国内的字节就是重度用户。
为什么大厂会青睐我呢?
因为第一,微服务和云原生已经成为一种趋势,而我作为一款高性能的编译型语言,非常适合承载落地微服务的实现,又容易生成跨平台的可执行文件,相比于其他语言,也更容易在 docker 上部署。
第二,我兼具了 Java 和 C语言的量大优势,比如说 Java 的垃圾回收,但 Java 需要 JVM 才能运行,我可以像 C语言一样直接编译运行。
第三,我是用 Goroutine(协程)实现的并发,避免了上下文切换的额外耗费,兼顾了多线程的优点,简化了高并发程序的复杂。
但我也有自身的缺陷,比如说,不支持多态,没有注解,缺少框架等等。
C#
大家好,我是 C#,似乎比 c++ 又多了两个 ++。
对了,我爸是微软,由C和C++派生出来的面向对象的编程语言。由安德斯·海尔斯伯格主持开发,2000 年首次发布,我爸的野心也很大,就是为了取代 Java 的。
怎么评价我自己呢?
前后端的事都可以办,但是,主要是针对 Windows,跨平台性差。
当然了,最大的问题还是封闭性吧,再加上多次推倒重来的反复摩擦,铁粉都离我而去了,伤心。
国内的职位还有一定数量,但大多集中在工具定制开发、游戏开发(unity 3d)等方面。
PHP
大家好,我是 PHP。
1995 年由拉斯姆斯·勒多夫开发,瞧,就他——你们眼中的 PHP 之父。
对,“我曾是世界上最好的编程语言”。
曾几何时,我有多火,你们这些年轻一代的同学都想象不到。2000 年到 2010 年,可以说是我最辉煌的十年,几乎每一家中小型公司的后台都是用我开发的。
你们知道吗?曾经,我才是 BAT 最主流的编程语言。现如今,他们都在冷落我。。。。。。
从神坛上跌落的我,有多伤心难过,你们恐怕也是难以想象。
但不管怎么说,不管是开发传统网站还是前后端分离的网站,还是开发小程序和App的后端接口,我绝对是开发速度最快的语言,没有之一。
当然了,这也可能是我被人诟病的地方,入门简单意味着门槛低,很多开发者在使用我的时候就不那么注重代码规范,只管代码跑起来完事。
害,总之,我。。。。。。哭了。。。。。。
JavaScript
大家好,我是 JavaScript,作为压轴的表演嘉宾,你们能想象到,我的分量有多重。
布兰登·艾克在1995年5月仅花了十天时间就把我的原型设计出来了。woc,真的牛逼坏了!瞧,就他——你们眼中的 JavaScript 之父。
一开始,我叫 Mocha,后来网景公司为了让我蹭点 Java 的“热度”,就把我临时改名为了 JavaScript。
以至于后来的很多初学者还以为我是 Java 的脚本语言呢,害!
世界上的大多数网站都是我的使用者,主流的浏览器(Chrome、IE、Firefox、Safari)都支持我。
讲真,我也没想到我会发展得这么好。
对于前端程序员来说,我、HTML、CSS 是三巨头,缺一不可,我们可以说是相得益彰吧。
以前,我仅限于客户端,也就是浏览器这边,随着 Node 的横空出世,我竟然可以跨界到服务器端,着实爽了一把。
可能有人诋毁我,说我烂,屎山很多,但只要有浏览器在的那一天,我就会拥有众多的佣歹。
总结
好了,就到这吧,这几个家伙 BB 了这么多,是时候安静一会了。
作为群主,二哥就来简单总结一下吧。
编程语言没有优劣之分,只有适不适合。
学习编程,千万不要贪多,既想学这个,又想学那个,可能到最后,哪一个也不精通,不,精通这个词可能过了,哪一个都不熟练。
也千万不要有这种想法,这个简单点,我学这个,学了一段时间后,发现有点难,觉得另外一个容易,换另外一个。那可真的是糟蹋了自己的大学时光啊。
哪怕只是大一,时间也是宝贵的。
如果你想走开发这条路,考虑到招聘岗位和学习成本,第一门编程语言首选 C 语言(科班)、Java(后端)、JavaScript(前端)。
其次,可以选择 C++、Go、Python、C#。
当然了,对于编程语言的学习来说,我是极度不推荐新手看书学习的,因为书要考虑到严谨性,很难兼顾趣味性。
这就导致很多初学者还没入门就劝退了。
我推荐前期跟着视频入门,然后不断 coding 加深理解,最后再看书深入浅出。
完美的节奏,perfect。
有想要不同编程语言的学习路线和学习资料的吗?可以在评论区里喊出来。
(转载本站文章请注明作者和出处 沉默王二)