曾经听大佬说:作为软件从业人员,至少每年学一门新的编程语言。但事实往往是知易行难,工作了十多年,除非实践中用到了,才会去学习和运用一些。
但最近两个月换了新工作,连续学了两门新的编程语言:Python和Golang。本身自己做了十多年的Java开发,从比较复杂的面向对象语言向Python和Golang转型,学习曲线还是非常平滑的。两周左右一个Python项目已经上线,不到一周的时间已经可以写Golang代码。
曾经对全栈工程师很是羡慕,没想到自己也慢慢成为了他们。可能是孕妇效应吧,当学习和关注全栈开发(多门编程语言)之后,发现有很多事已经存在很久。
下面分享一些关于学习全栈之后才关注的人、事、思考:
一、超哥之前也是搞Java的,突然有一天看到他在朋友圈虎虎生风地敲Golang代码,一问才知道,他已经成功转型全栈工程师,Java、Golang、Python都搞了起来。当时那是非常羡慕,没想到两个月后,自己也成为了他。有一次技术峰会遇到,没想到他也转到教育相关领域,也在玩GPT。
二、最近在大量看Golang的简历,发现大量PHP从业人员开始转Golang。虽然说PHP是世界上最好的语言,但的确有些老了,也有一些没落了。无论是大厂,还是中小企业,要么直接以Java开始,要么开始重构为Golang。据百度的同事说,百度的某些业务板块已经开始着力将PHP的项目重构为Golang。同时也得知,从PHP到Golang的学习曲线要比从Java到Golang的学习曲线稍微陡峭一些。
三、自己的亲身感受:学习Python和Golang并不难,从语言本身来讲它们比Java简化了许多语法,只需要几天时间熟悉它们的编码风格和语法差不多就能上手了,不要怕。
四、看到一份简历,原本是PHP工程师,但在简历中明确注明:可转其他语言。从大量的简历看来,如果是PHP工程师,那么转Golang好像是PHP从业者的大趋势。当然,如果你能够超越语言本身,可随便转,那就更好了。
五、Python在数据计算、图表展示、人工智能方面,简直不要太便利。一行命令,一个复杂的数学函数便实现了;几行命令一个图标便出现了;几行命令,一个人工智能的算法便验证了……当用于各类脚本编写,Python太方便了。
六、Golang在云原生、高并发方面应用的比较广。我们知道的k8s和docker都是基于Golang编写的。但Golang的精专人员并不多,大多数是其他编程语言转过来的,或者在写主业务的同时,用它来写一些辅助功能。可能样本有误,但相对来说应该没偏差太多。
七、昨晚一朋友打电话,询问.net是否要转Java,我说,还犹豫啥,必须转,即便不转,多学一门语言也多了一些生存的空间。
八、学习了Python之后,才了解原来静态语言(Java)和动态语言(Python)在发布流程上有很大的区别。像Java和Golang,强类型,在编译期即可发现一些错误,但Python就不一样了,不运行,你可能不知道它有错。当对照学习时,才发现之前以为正确的,完美的流程,可能并不适合另外一门语言。当时还有一段感想:当我们固执的坚持这是最好的时候,往往是受到思维、认知和水平等限制,找不到看问题或解决问题更多维度的外在表现。
九、在学习Golang时,发现Golang的结构体(struct)与Java的类(class)很像,但又不一样;Golang的切片(slice)和Java的ArrayList很像;Golang的指针(point)类型与Java的引用类型很像,但又不一样,但对于方法(或函数)参数来说,它们本质上都是值传递。Java基础类型是直接复制值,引用类型复制引用,而Golang的值类型直接复制一份当前值,指针类型复制指针指向的地址。还有其他很多可对照的。
十、当学习了多门语言之后,会发现没有十全十美的语言,只有最适合某一场景的语言。
曾经有人说,当你学习一门外语之后,便拥有了他们的思考方式。对于编程语言来说,也同样如此。曾经以为程序就应该这么写,这发布,这么运维……但当学习一门新的语言之后,你会发现,还有一群人,在用着另外一种方式改造着世界。
现在该我对大家说了:没事多学一门编程语言吧,即使做不到一年新学一门。学习一门新的语言,它能让你的编程思想更加抽象和丰富,它能给你提供一种全新的思维方式,它能促进对原有语言的对照理解,它也能够给你更多的求职机会,它也能让你结识另外一群不一样的人。
另外,告诉大家一个可怕的事实:Java语言的排行逐年在下滑。