细数自己学习过的编程语言

2022-10-30 17:46:05 +08:00
 roseduan

周末了,写篇水文,来看看我从毕业到现在,三年多的时间里,都接触过哪些编程语言,当然最后也有自己的一些思考和看法,Enjoy !

之前发过一个朋友圈,简单罗列了一下自己之前写过的语言,感觉主流的编程语言自己都接触过了,今天就来详细谈一谈。

一些读者都知道,我是在大学期间自学编程,我的专业是国际经济与贸易,然后看到本校的计算机专业课程,他们最开始学习的语言就是 C ,于是便开始接触到了 C 语言。

但那时候我根本没有任何计算机的底子,C 又偏偏是一个很难的语言,对计算机基础的要求比较高,所以是浅尝辄止,只是把《 C Primer Plus 》这本书简单学习了一遍,也没有任何的项目实践和深入学习。

然后到了大三的时候,迫于找实习和工作的压力,从那时起开始系统性的学习 Java 了。

至于为什么选择 Java ,稍微工作几年的同学都知道,Java 当时还是挺火的,语法容易学,对计算机基础的要求并不是特别高,然后培训班铺天盖地的都是 Java 的课程,网上的 Java 教学视频、学习资源等也有很多。

当时学 Java ,人手一个电商 /博客项目,有点像现在,学习数据库的,都得学习 CMU-15445 、MIT-6824 ,然后还要自己参与或者手撸一个数据库项目一样(只能说越来越卷了。。。)

当时写一些商城项目,前端页面也是自己写,所以学习了一些 Html/CSS 和 JavaScript 基础,搭配 Java 的 JSP ,简单的页面就能自己撸出来了,当然现在估计都没人用 JSP 了。

大学毕业参加工作,第一份工作便顺理成章的找了 Java ,毕竟其他的咱也不会。

工作有时候会遇到一些重复机械的活,于是当时就想能不能通过一些脚本,帮助自己提升工作效率。于是简单学习了 Python ,写了一些小工具,例如自动生成 SQL 定义,提取数据库的数据转成 Excel ,等等。

到了 2020 年中,大概毕业后一年的样子,业余的时间开始学 Go ,Go 的语法还是挺简单的,上手很快,rosedb 就是从那个时候开始的。

后来换了工作,找到的职位刚好是用 Go 的,所以便完成了从 Java 到 Go 的跨越,至此 Java 便不怎么接触了。用 Go 最开始也是写业务,然后转到了基础架构方向,用 Go 写了一段时间的数据库中间件。

然后就是接触到了分布式 KV 存储,公司的这个存储项目是用 C++ 写的,于是便开始学习了一些 C++,当然这个项目我参与并不是很多,然后就离职了,所以我对 C++只是很浅显的了解。

后来到了数据库行业做内核开发,开始用 C ,于是便重操旧业,开始复习大学期间最开始接触的 C 语言。

最近,又因为工作的一些要求,开始学习 Rust ,刚接触 Rust 的确不太适应,但是也能够感受到这门语言的强大和灵活。

于是总结一下,从最开始接触编程到现在,我已经写过 Html/CSS 、JavaScript 、Java 、Python 、Go 、C++、C 、Rust 。

工作之后才发现,完全有可能根据工作的改变,而去学习并且切换到新的语言,这是无法避免的,所以还在学校的同学,不用去纠结自己到底应该学哪门编程语言,能够深入任何一门语言,以后再学习新的语言,都会非常的快。

这也是一些大厂面试,并不怎么看重语言的原因之一。

而对于工作之余,想要学习新的语言的同学,可以想想自己学习的目的是什么,例如你想要做什么样的产品,然后再据此去选择一门新的语言。

我之前也在 V2EX 上发表过类似的看法:

接触到多个语言,能够让自己不会成为一个语言控,能够比较清晰的认识到每个语言诞生的背景,以及它的适用场景,总之会更加包容的看待一些问题。

对于语言学习的经验,简单分享一下,如果你有明确的目标,这样学习肯定是最好的。比如你学一门新的语言,就是为了看懂公司的项目,那么可以一边看一边学,并且能够接一些小的需求,逐渐深入。

如果学一门语言并没有太明确的目的,只是为了兴趣,或者说给以后的自己多一个选择,那么可以找一个基础的教程,跟着敲代码,然后自己参与到项目中去。可以是自己折腾的项目,也可以是别人的开源项目,总之,实践起来才是最快的学习方法。

当然工作的这几年,接触了比较多的语言,有一个非常不好的方面,就是对大多数语言的认知都是浮于表面,没有更加深入的去学习。

最好的状态还是能够精通一两门,所以我后续希望能够在 Go 和 Rust 方向有更深入的理解。

最后再说一句,PHP 是世界上最好的语言[Doge][Doge][Doge]

10890 次点击
所在节点    程序员
104 条回复
Aloento
2022-10-30 17:58:27 +08:00
C / C++ / Go / Rust / C# / Java / JS / TS / HTML / CSS / Java / Python / Powershell / Shell / ASM
hsfzxjy
2022-10-30 18:05:26 +08:00
C / C++ / Go / Rust / Kotlin / JS / TS / HTML / CSS / Python / Pascal / Shell / ASM / Dart / Haskell
learningman
2022-10-30 18:10:32 +08:00
C / C++/ Go / TS / JS / Python / Kotlin / Java / C#
楼上连 HTML 都整进来了多少有点凑数了
yougg
2022-10-30 18:14:34 +08:00
C, C++, VB, Java, HTML, JavaScript, CSS, SQL, Shell, Bat, VBS, Python, Go, Dart, Lua, Rust
AmosAlbert
2022-10-30 18:24:44 +08:00
C/C++/Python/Java/Go
none
2022-10-30 18:26:30 +08:00
卷到天荒地老
ijrou
2022-10-30 18:39:34 +08:00
C# Java HTML JavaScript Jquery Vue Linux Go Rust CSS SQL Python Git Android
yzbythesea
2022-10-30 18:40:03 +08:00
工作中用过的:C++ / Java / Python / Ruby / Go / TS,JS / Clojure / Shell
读书时用过的:Logo / Pascal / C / Fortran / ASM / R / Verilog,VHDL
majula
2022-10-30 18:47:38 +08:00
仔细想了想,还真没有我没学过的主流编程语言

但学过不表明写得好
iwh718
2022-10-30 18:58:00 +08:00
仅限学,不限水平的话历史( c,js,php,kotlin,swift ),目前 js,ts 为主。
pocarisweat
2022-10-30 19:17:20 +08:00
工作里用过的:
C++,虽然很复杂,但还是很值得学的语言,其他很多语言的理念和想解决的问题在这里都有源头。
Ruby ,动态语言里最舒服的那个,Rails 更是实打实的生产力。
Python ,相比 Ruby 比较中规中矩,作为胶水和运维 CI 等脚本用到的场合更多。
Perl ,正则强归强,要不是某些环境没 Ruby 解释器我真不想用这玩意,write-only 的语言,过段时间自己都不知道代码是干啥的。
Shell ,语法极其鬼畜,但习惯了之后能做很多事情,因为能调用一切命令。但复杂一点就得和 sed/awk/find/grep 甚至 ruby/perl 一起用。

自己玩过的:
JavaScript/TypeScript/CoffeeScript ,JS 社区喜欢函数式,可能除了 JS 本身确实有函数式特性之外,还因为 JS 前面那个 Java 的部分用起来太难受了,动态弱类型是真难受。TS 之于 JS 有点像 C++之于 C ,我喜欢这种渐进式的语言改进。TS 的类型系统已经很强了,恭喜前端又找到了整活场景。CoffeeScript 估计入行新点的前端都不知道了吧,我觉得纯粹是一部分用 Python/Ruby 的程序员觉得和 JS 语法反差太大搞出来的玩意。
PHP ,同样是动态弱类型,但是因为最基本的应用场景是生成 HTML 的脚本而不是写逻辑,所以弱类型在这里体验没有 JS 那么奇怪。玩过就知道为什么说 PHP 是最好的语言了,直接.php 一把梭,不要什么维护性,什么 CodeIgniter 、Laravel 没那味了。
Swift ,像是个天赋很好但不努力的学生。并发那一套做得很好,一些类型上的设计也算是恰到好处,对 Unicode 字符串的处理可能也是这些语言里最完备的,不过代价就是苹果花了 4 年每年都大改一遍语法。因为语言里所有对象都是原子引用计数,所以性能比 C++和 Rust 差了一大截。虽然名义上可以跨平台,但很少看到有人在苹果之外的平台真正用它。
Objective-C ,乍看是很落后的语言,但因为语言特性很简单,且奇怪的语法和 C++不冲突,导致其可以和 C++代码写在同一个文件里。OC 实质上还是动态语言,非常适合写 GUI 然后底层调 C++逻辑的场景,乔布斯确实有眼光。
Rust ,内存管理的理念很先进,工具链很完备,丰富的函数式特性( Rust 之父就是函数式粉丝)。但是语言里符号真的多,代码写起来也难看。而且目前没有特别强的 IDE.

C#/Java/Scheme/OCaml 这几个都是浅尝辄止,不发表评论了,但都是值得学习的语言。Java 虽然古板,但真能干活。
churchill
2022-10-30 19:17:54 +08:00
10 楼了,还没有 MATLAB 我不认可,手动狗头。
ajaxgoldfish
2022-10-30 19:23:45 +08:00
C/C++、Java 、Python 、html 、vue 、JavaScript 、PHP 、shell 、CSS 、kotlin 、SQL 、JSP
lisongeee
2022-10-30 19:27:15 +08:00
python 不是有类型注释吗?写类型注释之后就好很多了,python 最大的问题是没有块级作用域

python 是 `弱类型` 吗?我现在不用 强 /弱 /动 /静 去描述一个语言

我用 `编译期类型是否确定`/`运行时类型可变` 和 `是否可隐式转换` 来描述,显然 python 是 `编译期类型不确定+不可隐式转换`
cyersvet
2022-10-30 19:30:46 +08:00
看来都是年轻人呀,没看到学过 vb 的
sokach
2022-10-30 19:34:33 +08:00
从入门到入门,想学却又一直没有开始过 XD
996bujiaban
2022-10-30 19:35:43 +08:00
现在薪资多少...
TWorldIsNButThis
2022-10-30 19:39:46 +08:00
其实现在我比较推荐 kotlin 入门

越早接触 immutable ,declarative ,high order function 越好
imperative 和 mutable 只是 escape hatch
yolee599
2022-10-30 19:48:06 +08:00
C/C++,VB6.0 ,ASM ,java ,shell ,Lua ,C#,Python ,SQL
swsh007
2022-10-30 19:57:49 +08:00
一个 pascal 都没看见

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/891197

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX