今天给大家分享一下我从大学自学编程,然后毕业四年多以来,学习过的编程语言,然后也会对这些编程语言做一个简单的比较,最后也会给出我的学习建议。
学习历程
我最开始接触编程,是在大一的时候,学的是 C 语言,因为那个时候 C 语言是计算机系的第一门课程了吧,我虽然不是计算机系的,但是也能从其他同学那里打听到一些信息,于是自己也开始学习 C 语言了。
买了一本 C 语言的书,是谭浩强的《C 语言程序设计》,这本书总体来说一言难尽,然后买了第二本是《C Primer Plus》,跟着大致敲了一遍代码。只是当时计算机基础很差,学习断断续续,很不成系统。
到了大三,为了能够毕业时找到工作,开始自学 Java,Java 当时还是非常火爆的,培训班、网上的资料铺天盖地的都是 Java 相关的,我那时候还学习了 Java Web,做了一个类似淘宝的商城项目,自己写了简单的前端,所以用到了 Html/CSS 、JavaScript。商城系统/XX 管理系统那个时候还是很流行的练手项目(以致于后来有一个梗,面试官说你们项目组人还挺多的......)。
不像现在,人手都是高并发、 CMU 15445、MIT 6824 这些项目和课程,只能说越来越卷了。
毕业之后,在工作中有一些比较繁琐、重复劳动的工作,比如生成一些随机数据的 Execl 文件,根据字段自动生成 sql,文本内容替换等等,所以学习了 Python,用 Python 写这类小工具非常适合,能够大大提升工作效率。
工作业余时间我还自学了 Go 语言,开始用 Go 写开源项目,围绕存储引擎写了很多开源项目和小轮子,比如 rosedb、lotusdb、wal、diskhash、mini-bitcask 等等。然后还找到了 Go 后端开发的工作,去了 B 站做后端开发,也算是实现了从 Java 到 Go 的转变,从那以后就没怎么接触 Java 生态了。
后来我又转到了数据库方向,这个方向整体还是 C 和 C++ 比较多,所以又重新开始了学习 C 语言。同时工作中偶尔也接触到了 C++,但我对 C++ 了解比较一般,不算特别熟悉。
在工作中维护的组件是 Rust 写的,并且我本身也对 Rust 比较感兴趣,所以就学习了 Rust,并且实现了一个 Bitcask 存储模型的 Rust 语言实现,相当于是 rosedb 的 Rust 版本(只不过没有开源),对熟悉基础语法、Rust 上手实践的帮助还是挺大的。
这就是我毕业这几年以来的编程语言学习历程,涉及到
到目前为止,我使用得比较频繁的语言是:
基本上比较主流的后端语言我都接触到了,这里简单谈谈自己的看法吧,
Java
比较适合用来写一些企业级后端业务,大一统的后端框架 Spring 全家桶,业务开发的效率比较高,安卓开发也用的较多,移植性好,面 向对象、泛型,自动内存回收。Java 总体来说是一门综合实力挺强的一门语言。
Go
的杀手锏是高效易用的并发,比如 goroutine 协程,channel 通道,比较适合用来构建云原生微服务、网络编程、中间件等等,kubernetes 和 docker 也是 Go 比较知名的项目了。
Python
比较简洁,主要场景目前主要在机器学习、网络爬虫、当然也有一些 web 开发,比如 Django、Flask 框架,也比较适合用来写自动化测试。
C/C++
目前主要是在系统级编程领域发挥重要作用,执行效率高,性能好,但是也相对复杂,手动管理内存。主要应用于系统级软件,比如操作系统,数据库,驱动程序,嵌入式等等。
Rust
是近些年来崛起的比较火热的语言之一了,具备内存安全、高性能的特点,在系统级编程领域对 C/C++ 发起了挑战,现在很多新兴的数据库软件都开始使用 Rust 了,比如 neon、risingwave、databend、influxdb、surrealdb,同时也在区块链、web3 方面有应用。
1、不要给自己设限,通常情况下我们会给自己打上一个标签,比如 Java 程序员、Go 程序员、C++ 程序员等等,程序员不应该和一门语言绑定在一起,可以根据自己的兴趣去学习自己感兴趣的内容。工作之后,更多的是根据实际情况去进行转换,学习新的语言以及技术栈,而不是一成不变。
2、如果你只是为了快速上手,然后找到一份工作的话,在这种功利目的下,可以按照市场需求去学习,比如 Java、Go、C++ 都非常的不错,当 然目前相对来说 Java 是最卷的了,Rust 也是近些年来非常不错的语言,也建议去上手学习。
3、针对在校学生,建议学好 C 语言,C 语言是贴近系统层的语言,对自己的计算机基础有非常大的帮助,不要觉得 C 语言很无趣,这个世界上最伟大的一批软件,Linux、Nginx、Redis、SQLite、Postgres、Git、Vim、curl 都是使用 C 语言写的。有了 C 语言的基础,再去学其他的语言会容易很多。
4、针对已经工作的同学,其实最好是在一门语言上多花时间,最好能够精通,也就是先纵向发展,培养自己的核心竞争力。然后在此基础之上,结合自己的兴趣以及实际情况,去学习一门新的语言其实上手就会非常快了。
最后,编程语言具体的学习方式,比如如何快速上手一门语言,就后面再分享了,感谢大家。
本文分享自 roseduan写字的地方 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!