那些年

编程语言之争

11年正式进入IT行业,成为一名程序员。那时候的技术圈还停留在语言之争上,那时候争论的是到底谁是世界上最好的编程语言,php说过自己是世界上最好的语言,C#说过自己是世界上最好的语言,那时候Python这个小兄弟还没来到Top3,彼时JAVA长期位于榜首。随着技术的进步,编程语言的排名也是不断变化。

2011编程语言排行榜

下面这张是2011年的编程语言排名。

2022编程语言排行榜

下面这张是2022年的编程语言排名

你可以看到,现在大热的人工智能,机器学习,python变得越来越流行,它已经占据了top1的位置。而企业中大量采用的还是Java开发语言,Java依然排在top3。

话说,各位小伙伴们,在你的从业经历中有没有见证或者亲身经历了哪门编程语言的消亡。在我的职业经历中就亲身经历了delphi这门语言的企业消退。

职业经历

本文从入行开始一只使用JAVA开发语言,虽然业务会去看看其它编程语言,比如PHP,C#,Python,但局限于语法层面的,没有经历过大规模的企业应用实战开发。所以就从自身的角度聊聊那些年,我们所经历的技术变迁。

彼时的技术圈,从架构上来讲,很多都是单体化架构,前台和后台、数据库、运维几乎都干过。每个同学都是多面手,擅长多个领域的技术。本人也是,后端、前端、数据库、运维、架构、项目管理也是都经历过。

1、后端

记得11年那会,去企业面试,基本都是问SSH(Spring+Struts2.x/1.x+Hibernate),甚至一些运营商的管理系统都是用这种架构来做,所以只要掌握SSH这三大框架,基本找份工作是没有什么问题。分享一个Struts2的架构,那时候SpringMvc还没那么流行,Struts2真的是无敌的存在。当然还有一些老的项目也还是使用Struts1

还记得那时候,Hibernate的教程是多如牛毛,很多培训的网站上都是讲的Hibernate,仿佛学会了Hibernate,走遍填写都不怕。而且当年写代码,还是用的基于Xml的配置,多么熟悉的味道。

至今还能找到以前学过的Hibernate古董级资料。

现在看起来真的特别有趣。仿佛真的一招鲜吃遍天。

2、混乱的jar包管理

彼时,我们用得最多的jar管理还是来得非常简单而粗暴,没有maven,没有gradle,我们简单的引入jar包,采用原始的方式,直接放在lib目录下。比如下面这种,在那个洪荒时代,加入遇到jar不兼容的情况,那就恭喜了,我们采用最原始的人工处理模式。

3、后端数据层

彼时的数据库,关系型数据库还是一枝独秀,可以凭此绝技包打天下。放一张彼时的数据库神仙打架,群雄割据的局面。

当时的大哥是Oracle,真正的一哥,那时候mysql刚发布5.5的版本,对事务有了更好的支持。办公室里还充斥着单库的优化,性能提升,可能还听得到一些存储过程这样依赖数据库的开发模式。而现在,企业级开发,恐怕用存储过程这种技术的也不多了。

而后,阿里轰轰烈烈的去IOE,数据库界迎来了新的一春。下图是阿里去IOE的关键节点。面对互联网海量数据,高性能,高可靠,最终,变成了OceanBase的全面开花,现在OceanBase已经全面对外提供服务。

4、缓存系列

当时我们开发的应用系统,不是面向互联网用户,企业用户的话,针对不同的量级有不同的部署方案。可以用集群模式,可以增加一点服务器,初步具备高可用。缓存慢慢进入我们的视野。于是在大家的技术方案或者架构中,会在技术那一层逐渐加入缓存,用来保护数据库层,避免数据库层容易被打爆。

那会,会开启ehcache,这种单例级的缓存,复杂一点也会开启memcached,它的架构图如下,一般这就是比较有流量的应用会采用的架构:

刚开始的时候,对于memcached和redis也是神仙打架,redis也还没有开启碾压式的领先,两者还是和谐共存,甚至redis还有些吃亏,memcached出道时间早些,技术圈引入的时间还早一点。而现在,memcache已经被遗忘了。redis几乎成了缓存事实的存在。

5、前端

在单体化架构时代,甚至是SOA年代,微服务还未流行,很多的企业都还在搞JSP技术,稍微先进一点可能会用thymeleaf或者freemarker模板技术。前端jquery是标配,还没有现在这种前后端分离。

以前,能将Jquer用得很熟练就敢宣布自己是一个前端攻城狮,再会一点css就是全栈了。当然,现在前端继续在发展。

做过后台管理系统的恐怕对layui都不陌生,很多后台管理系统都采用过它的模板。而在2021年10月13日宣布下线,不再开源维护。

面向未来

回顾历史,展望未来,我们可以看到,不论前后端户,都在往专业化的道路发展。后端的架构已经从单体化进化到SOA,到微服务,现在的的服务网格。

后端不断在进步,与前端关系更加密切,前后端攻城狮融合更加紧密,一个项目,需要团队中不同的角色一起完成。

在存储这层,newSQL发挥了越来越重要的作用,比如图数据库,文档数据库,弥补了关系型数据库的不足,让我们的系统发挥得越来越好。

更加专业的前端,我们在全面拥抱新的前端,比如Vue还有React,当然在前端界,关于Vue和React谁是前端一哥的争议也是一直居高不下,从业务的角度讲,不论选择react或者vue,只要是满足了业务需要便是好技术,至于语言的灵活性,代码的可读性和扩展性,这更考验的是技术leader的能力。

最后,作为技术人,尤其是IT圈的技术人,我们需要不断得钻研技术。这个世界上唯一不变的就是变化,这句话放在技术圈就是不容置疑的真理。朋友们,技术之路很苦,想要深耕在这条道路上,需要付出很多,需要不断清空自己的旧有思想,汲取新的营养,这样才能不被过去所迷惑,才能面向未来,从容的应对所有的变化。不论是低代码平台的流行,还是人工智能的快速发展,对会思考的程序员还是依赖的,掌握这些技术的核心,变化的都是外在的表现形式。回顾IT这条从业之路,有辛酸也有一丝成就感,祝大家都不迷茫,勇往直前。