前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >细数自己学习过的编程语言,附学习建议

细数自己学习过的编程语言,附学习建议

作者头像
roseduan
发布2024-03-20 14:37:40
1520
发布2024-03-20 14:37:40
举报

今天给大家分享一下我从大学自学编程,然后毕业四年多以来,学习过的编程语言,然后也会对这些编程语言做一个简单的比较,最后也会给出我的学习建议。

学习历程

我最开始接触编程,是在大一的时候,学的是 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 上手实践的帮助还是挺大的。

这就是我毕业这几年以来的编程语言学习历程,涉及到

  • 前端:Html/CSS、JavaScript
  • C
  • C++
  • Java
  • Python
  • Go
  • Rust

到目前为止,我使用得比较频繁的语言是:

  • 开源项目的维护主要是用 Go 语言
  • 自己的兴趣 Rust 语言,业余时间会写一些有意思的项目
  • 工作上 C/C++/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、针对已经工作的同学,其实最好是在一门语言上多花时间,最好能够精通,也就是先纵向发展,培养自己的核心竞争力。然后在此基础之上,结合自己的兴趣以及实际情况,去学习一门新的语言其实上手就会非常快了。

最后,编程语言具体的学习方式,比如如何快速上手一门语言,就后面再分享了,感谢大家。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2024-03-18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 roseduan写字的地方 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 编程语言比较
  • 学习建议:
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档