前端之变:技术的变与不变

微言码道 微言码道     2023-01-08     789

关键词:

从本周开始,我将就前端技术之变做的一些思考记录下来。

这是第一篇: 技术的变与不变

变与不变

首先,做为一个技术人员,你要明白一个道理:

对技术而言:唯一不变的事情就是变化

所以,想要成为一个优秀的程序员,你不能期望只精通一门语言或几种框架类库,就能成为你永恒的资本,让你在技术的世界无往而不胜。

这是不可能存在的事情。

这也是为什么很多技术人员搞了一些年就准备退出的原因所在,可能随着年龄的增长,他们认为自己已经无法再跟得上这种变化了,受困于自己的思维或能力,他们期望能从这种变化中逃出来,去寻找一种他们期望的稳定的能安心立命的东西。当然,在他们的思维中,这个肯定不是『技术』

但显然这是缪论。

因为这些人没有意识到技术在变的过程中,存在着『不变』的东西。一旦你掌握及理解了不变的东西,所谓的变化对你而言,可能就如同换肤一样轻易与简单。

这也是为什么国外很多优秀的程序员一把年纪了还是在技术第一线。这样的例子不胜枚举,Robert C.Martin,Martin Flow还有Linux的作者。

而我们这,可能30还没到,很多编码的就想着怎么逃出去,觉得自己可能学不动了或干不动了。

为什么别人能做到的事,在我们这片土地上,我们做不到?这是非常我们反思与思考的一个现象。

我在2020年与前端的一些交集,让我意识到了技术的这种变与不变。对我而言,仿佛这是一个全新的世界。

这也是我想分享出来的原因所在。

我与前端

大多数前端人员是流水线式的,可能从编码开始就做的前端,然后一直投入在前端这个方向中,后面变化的只是时间及经验,2年,5年或更多。

显然,我并不能算是一个前端技术人员,事实上我与主流的前端技术人员的经历相差过大,我很难说自己是他们中的一员或与他们的经历类似。

我与前端的交集并不是个流水线。它是断点式的。

主要可能有三个阶段:

阶段一:工作之前

在这个阶段,因为自己的专业与计算机有点关联,记得大学还专门有个课程就是学习HTML知识的,当时应该是HTML4,这门课程结束时老师还要求用HTML做个网站。

这可能是我与前端的第一次相遇。

阶段二:后端开发

我工作的很长一段时间是在后端开发,可能现在的后端人员没有这种经历,但在我做后端的那些年,前端并不是一个独立的技术方向,事实上,当时的前端更多的是后端兼顾的。

所以,现在可能大多数前端人员不太知道的一些技术其实在早期也是可以算是前端的技术,比如JSP,Freemarker模板,还有Struts页面等。

这些是什么东西?可能现在的前端与后端人员都不太熟知这些技术了。因为现在的主流开发模式应该是前后端分离。也就是后端逻辑后台人员来实现,然后提供REST API接口。而前端逻辑由前端人员来处理。但在我工作的早几年,可不是这么回事,那个时候的页面可是由后端人员自己来做,方式就是上面说的类似JSP,Freemarker模板这些技术。

为什么?

因为当时前端技术本身不足以提供动态渲染复杂页面的技术能力

随着WEB页面越来越复杂,早期的HTML这种静态页面已经完全不能适应复杂WEB页面的需要,但当时前端本身又根本提供不了动态渲染复杂页面的能力,JQuery这种动态DOM操作虽然有一定的页面操作能力,但不能应付非常复杂的页面,于是由后端动态渲染页面,成为了当时的主流。

阶段三:前后端分离

在2020年之前的几年时间,我都主要是在负责移动端相关的编码工作,这个阶段与后端打交道不多,虽然还是有一些。与前端就基本没打过交道了。

所以,等我2020年再次与前端相遇时,前端已经是完全不同的世界了。我所熟悉的JQuery等框架,在这个前端的世界基本可以说是处在边缘甚至可以说是被抛弃的技术了。

2020年上半年,我开始PCX的开发工作,这个是基于Electron的跨平台桌面开发。

我是用了前端的一整套技术搭配,包括TypeScript,React,WebPack,Mobx等,做了个跨平台的桌面软件。

也就是我并不是做前端开发,但由于这玩意其实就是基于一整套前端技术而开发的,所以我搞完这个,自然也就再次明白现在的前端开发怎么回事了。

哪些改变了,哪些没有改变?

由于不是流水线式的经验,而是这种断点式的,再结合我有后端,移动端的开发经验。所以,我就会觉得前端技术的发展有点不可思议,相比后端与移动端,简单可以说是天翻地覆式的变革。

所以,我也时常思考,什么原因?

它改变了

是的,很显然,它改变的太多了。

后端与移动端这几年的技术变化远不能与前端相提并论。

虽然我在前几年没怎么接触后端,但等我再回到后端时,没有任何生疏感。主流的无非是从SSH变为Spring Boot,再就是微服务的流行。事实上,就算微服务兴起,它仍然没有办法取代过往的单体或集群服务这种模式。或者新兴的Kotlin或响应式编程这种模式,但这种本来也是少众,不可能成为主流,而且就算以这些来论,其变化的幅度仍然与前端不可相提并论。

而在移动端,无非是原生开发,Hibrid混合开发,再就是类似React Native与Flutter跨平台开发这些,这些远称不上改变,它们也只是不同的解决方案而已,适应不同的场景,并不算得上演进或改变。因为它们之中没有任何一种模式能压倒性的取代其它模式。

而前端则全然不同,它并不只是出现了新的技术或框架这么简单,更多它是一种新的编码理念完全取代了旧有的编码理念,新的编码模式压倒性的取代了旧有的编码模式。

包括但不限于:

  • 前端由后端渲染转变为前端动态渲染

  • 从HTML+JS这种脚本式编码变化为TypeScript+React这种面向对象的编码

  • 出现了React,Vue这种组件式的UI编码,取代了旧有的HTML+JQuery的DOM操作这种模式的UI编码

  • 从命令式UI到声明式UI的转变

  • 从编码就是产物,到编码与产物完全是两种截然不同的东西

这些改变,用天翻地覆来形容并不为过。

它没有变化

当然,由于我在后端与移动端也有编码经验,所以当我把前端的这些变化放大到整个技术背景来看,我就能发现它又有很多东西其实并没有改变。

给人一种以前游离在外的小孩回到了主流的队伍的感觉而已。

包括但不限于:

  • TypeScript是面向对象的语言,它与Java极为类似。
  • 我把DDD领域驱动应用取了PCX的开发
  • 我在PCX抽取的数据库的框架,是我在iOS抽取的数据库框架的复刻版而已。
  • 前端可以应用基本的面像对象的原则及设计模式了

所以,看到没,如果把范围放大,你说它改变了么?

道与术

这就是我在2020年的感悟到的一个最大的事情 ,技术这个东西原来存在变与不变两方面的东西的。

这就是道与术

理解并掌握了这个,你就能成为一名优秀的程序员,不会害怕任何改变或新技术。

关于道与术,我后续另外会专门讲这些话题。

事实上,我在准备做PCX时,上面讲的几个前端技术我一个都没有接触过,而TypeScript还是我从其他前端人员中听来的,直至要搞前我都不知道前端还有这个技术,这些玩意我当时也只是花了2周看了下是什么就开始搞了。最终我花了不到5个月的时间,完成了PCX的第一个版本。

而在今年搞myddd-vertx之前,我对kotlin与vert.x也基本一无所知,但myddd-vertx从我起意到实现再到应用到一个具体的项目,可能2个月时间都没有。

所以,你想成为优秀的程序员,一定要去追寻编码之道。

不变的前端

从技术上看,前端发生了巨大的变更,但如果我们探究其内部,却发现一个额外的挺有意思的现象,就是前端没有变化的地方。

下个文章我再来讲述:前端之变(二):不变的前端

前端之变:王者归来

本周继续就前端之变阐述自己的思考。这是本系统的第五篇,前四篇为:前端之变(一):技术的变与不变前端之变(二):不变的前端前端之变(三):变革与突破前端之变(四&#x... 查看详情

前端之变:变革与突破(代码片段)

本周,我将继续就前端之变阐述自己的思考,这一次讲到前端之变的重点:变革与突破这是前端之变系列的第三篇文章,前两篇分别是:前端之变(一):技术的变与不变前端之变(二)... 查看详情

移动端跨平台技术之下的变与不变

一.跨平台,是想跨哪些平台?目前(2020/7/18)来看,移动端跨平台需求主要集中在:跨PC端与移动端:PC向无线过渡的早期,希望PCWeb与移动Web复用同一套代码跨Native与Web:商品详情页等要求有一套功能差不多的Web页能够在端外... 查看详情

跨端开发浪潮中的变与不变

自90年代初开启PC时代以来,随着移动网络的快速普及,在2010年左右,进入移动时代、IOT时代,各种移动互联设备不断涌现,除了最常见的PC、Pad、智能手机外,它还可能是小小的一块智能手表,也可以... 查看详情

虚拟主播也带货?直播电商的变与不变

5月6日晚,海外虚拟主播vox在B站开启了中国直播首秀。从最终数据来看,直播1.7小时,营收111万人民币,当晚还登上平台热门首位,这样的直播吸金能力,让不少明星都望尘莫及。更值得关注的是,直... 查看详情

大模型时代的ai之变与开发之根

自2018年谷歌发布Bert以来,预训练大模型以强大的算法效果,席卷了NLP为代表的各大AI榜单与测试数据集。随着产学研各界的深入研究,大模型在AI产学研各界的地位得到不断加强。到2021年,我们可以看到各大学术... 查看详情

长跑11年,腾讯开源的变与不变

...面给予了开源更多的帮助,大企业不断的为开源输送技术和人才。近日GitHub发布2021年度报告:在GitHub全球7300万的开发者中,中国开发者无论是数量还是开源项目的贡献上,均已名列第二。腾讯开源是世界开源舞... 查看详情

前端之变:进击的前端

本周继续就前端之变阐述自己的思考。前面我讲了前端的一些变化,但是事实上,过去数年,前端不仅是在自己的技术方向发生了巨大的变化,它试图向所有技术方向发起进攻,取代其主流技术。那这一切又... 查看详情

前端之变:前端的困境(代码片段)

这些年,前端发生了颠覆性的变革,这种变化极大地改变了前端的生态,前端从很多年前一个不起眼的角色跨步式的演变为一个不可或缺的存在。前端的技术不仅是在前端开发本身,它的触角伸向移动开发,... 查看详情

分层自动化测试模型变与不变

分层自动化测试模型变与不变最近在思考自动化分层模型,多少有些相关,所以就赶紧总结出来。分层自动化测试模型的发展分层自动化测试模型最早是由MikeCohn在2009年出版的《SucceedingwithAgile》书中的第十六章进行阐述的,他... 查看详情

分层自动化测试模型变与不变

分层自动化测试模型变与不变最近在思考自动化分层模型,多少有些相关,所以就赶紧总结出来。分层自动化测试模型的发展分层自动化测试模型最早是由MikeCohn在2009年出版的《SucceedingwithAgile》书中的第十六章进行阐述的,他... 查看详情

网络-数据包在路由转发过程中mac地址和ip地址,变与不变

关于MAC地址和IP地址在传输过程中变与不变的问题:  结论:MAC地址在同一个广播域传输过程中是不变的,在跨越广播域的时候会发生改变的;而IP地址在传输过程中是不会改变的(除NAT的时候),总结为路由转发MAC不变,IP变... 查看详情

java中的协变与逆变

JAVA中的协变与逆变首先说一下关于Java中协变,逆变与不变的概念比较官方的说法是逆变与协变描述的是类型转换后的继承关系。定义A,B两个类型,A是由B派生出来的子类(A<=B),f()表示类型转换如newList();协变:当A<=B时,f(... 查看详情

文本主题模型之ldalda求解之变分推断em算法

 本文是LDA主题模型的第三篇,读这一篇之前建议先读文本主题模型之LDA(一)LDA基础,同时由于使用了EM算法,如果你对EM算法不熟悉,建议先熟悉EM算法的主要思想。LDA的变分推断EM算法求解,应用于SparkMLlib和Scikit-learn的LDA算法... 查看详情

通用程序的特点的总结

...是可扩展的,接口的调动方式是支持多种协议的4.系统中的变与不变的地方一定是分离的5.代码的组织结构或者逻辑结构至少有一个是可扩展的; 查看详情

禾木之变:2021我们该如何持续拥抱ai?

自2017年7月8日《新一代人工智能发展规划》印发起到今天,人工智能上升为国家战略已经来到了第五年。在此期间,我们经历了AI产业的巨大发展。人脸识别已经成为全民通用的技术;国家人工智能先导区已经增至8个... 查看详情

15年后我仍是it界的好汉!

1张图,带你看看IT界/互联网这15年来翻天覆地的变化与进程!从2001年开始到2016年为止,那些我们曾经熟悉的场景将会一一再现!看完后,您有什么感慨和想法呢?欢迎在下方留言,一起聊聊这15年来&#x... 查看详情

ta们用数字种植绿色山河:牛津博士与储能之变

10月24日,《关于完整准确全面贯彻新发展理念做好碳达峰碳中和工作的意见》正式对外公布。其中指出,实现碳达峰、碳中和是着力解决资源环境约束突出问题、实现中华民族永续发展的必然选择,是构建人类命运... 查看详情