当天整顿了一下1970年以来技术的开展趋向:
编程范型 |
干流网络和协定 |
干流架构 |
结构化编程 |
分组替换 |
主机---终端 档次数据库,网状数据库 |
面向对象 |
局域网 |
客户端---主机架构 相关数据库 |
面向对象 面向组件 |
拨号网络 互联网 |
C/S 向 B/S 迁徙 |
面向对象 面向服务 |
互联网,Web 2.0 ,WebService, P2P、HTTP、SOAP、XML-RPC |
B/S架构,面向服务、三层架构、MVC、EAI、ESB、SOA、REST |
多泛型结合 |
移动网络,物联网 3G、4G、5G、Wifi MQTT、WebSocket、WebRTC |
微服务、EDA、无服务架构、云原生、服务网格、散布式架构、并行、容器化、云计算,DevOps |
这个表格年代的形式列出了技术的变动,不必定100%准确,例如以10年为一个单位有些果断,Web Service实践上超过了90年代和2000年代,C/S运行超过了80年代和90年代......
上方开展解释一下:
1970年代
早期的编程言语依赖于GOTO语句,用于控制程序的口头流程,随着程序规模的扩展,过多的GOTO语句会造成程序难以了解和保养,构成所谓的“面条式代码”。
60年代末,出现了软件危机,结构化编程被以为是处置方案之一。
结构化编程经过明白的控制流、明晰的程序结构和模块化设计,使得软件开发变得愈加可保养和牢靠。
Edsger Dijkstra的通常和对GOTO的批判是结构化编程兴起的关键要素,结合Pascal、C等结构化编程言语的遍及,结构化编程逐渐成为编写高品质软件的规范。
这个时代的网络还不兴旺,ARPANET继续开展,成为现代互联网的基础,只管以太网曾经被发明进去,但是还没有获取宽泛运行。
运行程序重要装置在大型机上,用户可以经过终端启动远程访问,经常使用的重要是档次数据库和网状数据库。
1980年代
企业和大学开局经常使用局域网,世界互联网雏形曾经构成。
1983年,TCP/IP取代NCP成为ARPANET的重要协定,并逐渐成为互联网的规范协定。
此时的互联网上还没有Web,盛行的运行是电子邮件、FTP、Usenet、Gopher等网络运行。
以C++,Smalltalk为代表的面向对象编程开局兴起,强调经过类对疑问启动组织和形象,封装、承袭、多态的概念开局为群众接受。
客户端-主机架构开局兴起,软件都装在台式机(客户端)上,而后经过局域网衔接到核心的数据库(主机)口头数据操作。
1990年代
90年代早期,大家重要用局域网,比如十分盛行的Novell,是很多大学局域网的标配。
拖拽式极速开发工具(如Delphi、VB等)大行其道,成为开发桌面软件和C/S软件的不二之选。
用Sybase的PowerBuilder开发MIS在国际也十分盛行,它的DataWindow提供了一个可视化的SQL绘制器,允许外衔接、联结和子查问操作,十分受欢迎。
到了中前期,国际才可以拨号上网,连上了互联网。
1995年,Java的出现给面向对象又加了一把火,面向对象成为干流。
在Windows平台上,微软推出了COM和COM+,主推面向组件编程
90年代前期,Web运行开局出现,但是这个时刻的运行都十分便捷,一个公司和单位能有一个静态页面构成的网站就不错了。
以CGI、PHP、ASP为代表的技术开局让网页可以和用户启动交互,一些运行程序从C/S架构开局往B/S架构迁徙。
2000年代
ASDL进入千家万户,只管网速只要几M,但相比90年代的几十K的拨号网络,曾经快多了。
B/S架构正式占据干流,中小网站特意青睐LAMP:
2000年代早期,Sun推出的J2EE开展到高峰,运行主机(Weblogic、WebSphere)大行其道,不论运行是大是小,跑在运行主机中才显得矮小上。
在这个架构中,企业的业务要封装成EJB,放到运行主机中运转,运行主机提供了散布式、安保性、事物等配置。
理念是挺好的,实践上却跑偏了,J2EE轻便繁琐,到前期被SSH,Tomcat等轻量级的框架和运行主机代替。
面向对象,设计形式更是火得不得了,Java、设计形式、XML成了“绝配”。
面对80年代,90年代建设的各种遗留系统,巨头们提出了面向服务的架构(SOA)来成功系统的集成,ESB、SOAP、WSDL、UDDI、XML-RPC等新概念层出不穷。
2010年代
程序员的黄金时代。
互联网的盛宴还未完结,移动互联网又骤然迸发,再加上大数据、云计算,给程序员带来了无量多的时机。
这个时代,人手一部手机,从3G到4G、5G,移动网络和WIFI无处不在,HTTP协定曾经不够用了,MQTT、WebSocket、WebRTC、QUIC、gRPC等针对不同场景提出了不同的处置方案。
程序员的职业也开局细化:手机端、前端、后端、大数据、算法、运维,堪称百花齐放。
前端程序员操作着各种JS框架成功页面展现和操作流程控制,调用后端的服务来成功业务。
后端程序员则把运行拆成了微服务,运转在云端的Docker容器中,用k8s治理起来。
由于移动互联网带来的海量用户和海量恳求,数据也在疯狂累积,大数据程序员则忙着用Hadoop、Spark、Hive、Kafka、Flink等工具对数据启动剖析,宿愿从中发现一些法令。
DevOps开局遍及,智能化工具使得开发和部署变得愈加极速高效,缩短了从开发到消费环境的期间,同时优化了软件的稳固性和品质。
Java、JavaScript、Python、Go等言语岂但允许面向对象,还允许函数式编程。为了更好地处置数据流,出现了照应式编程。
2020年代
咱们如今还处于2020年代的前期,用的网络、技术、软件架构和2010年代前期差不多,惟逐一个出现渺小变动的就是以ChatGPT为代表的人工智能了。
但人工智能在编程畛域依然还处于辅佐阶段,给它明白的需求,它能帮程序员极速生成代码,但是还不可独立地从需求开局,设计,编码,测试,部署,这或许得等到通用人工智能的打破了。
程序员的35岁危机疑问
从大型机到局域网,从局域网到互联网,从互联网到移动互联网。
技术时代的每一次性变动都会引发通讯协定、编程言语、软件架构出现剧变,这种变动基本上每隔10年左右就来一波。
这种猛烈变动的奇观或许在全行业中都是独一份,程序员也就没有方法像律师、医生等行业可以积攒几十年的畛域常识,成为行业专家。
一个大在校生毕业时,二十出头,上班10来年,出现了新的技术浪潮,可不就遇到危机了吗?
其实这么说也不齐全对,由于:
1. 技术的开展不是突变,而是突变
不是说十年一到,老技术就一刀切,不再用了。
像Servlet/JSP这样的技术,市面上依然很多老旧的系统是用它们开发的。60多岁的COBOL,依然允许世界43%的银行,处置者每天3万亿美元的买卖。
老技术依然有市场,但是大多处于保养形态,不须要那么多的人力了。
2. 程序员会继续学习的
像70后80后,教训了局域网时代,互联网时代,移动互联网时代,有很多人不情愿走出温馨圈,跟不上了,但也有很多人也在不时学习新的技术,新的架构,与时俱进。
这些人或许当上了架构师、技术经理,或许在某个基础技术畛域深耕多年,成为专家,继续坚持竞争力。
3. 在运行层疯狂内卷,被资本家有情压迫
这个才是重要要素,国际公司在基础软件上开展很差,没法养活少量的深耕操作系统、数据库、编译器、两边件等畛域的程序员,大局部公司都是成功业务,在运行层疯狂内卷,拿着国外开源的框架/类库开发一下就行了,不须要在某个畛域积攒深沉的专家级程序员。
既然付出的重要是人力老本,资本家选用的必需是廉价的、年轻的,更能加班的,年岁大的就会被有情放弃。
宿愿再过10年,下一代程序员能过得更好一点儿吧!