WEB编程语言发展回顾…

    今日学习python,学到Django框架,觉得有必要暂时停下来,回顾一下计算机编程及WEB编程的发展。
    从世界上第一台计算机ENIAC开始,计算机软件开发经历了从“服务器/瘦客户”到“个人计算机”再到“客户端/服务器(C/S)”再到WEB以及目前的“浏览器/服务器(B/S)”、分布式计算大数据等等。
    到今天为止,还能回忆起Apple II上的小乌龟爬出圆形时的新奇,当年在VAX上打出第一条纸带时的激动,听到8086第一声开机蜂鸣时的兴奋,以及上世纪90年代,第一次听到Modem拨号的声音并通过Netscape浏览器看到长城外面的世界时的震惊。
    那时候的计算机应用,除了特定领域(如科学计算、气象、军事等,需要进行服务器级别的分布式计算),都是需要拿到一个大小不等的安装包,在自己的电脑上(个人计算机)上安装后再运行。再后来出现的客户服务器结构(B/S)的应用,例如各种MIS/ERP,虽然数据库和业务逻辑运行在服务器上,但客户端电脑还是要安装特定开发的应用才能和服务器进行数据交换完成业务流程。
    互联网和WEB的出现,World Wide WEB,初期的WEB,是静态的,也就是说,客户浏览器经由HTTP协议,通过URL访问特定网站所得到的回馈网页,其内容都是固定的,就像是买一本纸质书,如果有错误,只能等下一次再版时改正。那时的网页是由HTML语言写成的。

    后来,随着客户需求的发展,例如,对动态网页的需求出现,例如图书馆系统,读者希望能及时看到书记的更新、库存、借阅状态等信息,也就是说,希望网页能和业务逻辑及数据库结合起来,出现了对B/S应用的需求,相应地编程开发语言和通信标准协议也发展壮大。

  •     静态HTML之后是CGI:Common Gateway Interface ,CGI定义了WEB服务器与外部应用之间的通信标准(外部应用,就是在客户端或服务器端,独立于WEB服务器运行的应用程序),WEB服务器可以通过CGI协议执行外部应用,实现与数据库的交互,完成业务逻辑。这时的典型语言是Perl,但CGI + Perl的模式存在两个弊病:

    • 性能不好,每个请求分配一个新的进程;
    • 不太安全,直接使用文件系统或者环境变量。
  • CGI之后,出现了一个全新的时期,即将WEB服务器和业务模型完全分开,以Microsoft的技术来说,就是IIS + ASP,IIS构建WEB服务器,ASP构建业务模型,这时期主要的编程语言有PHP/ASP/JSP。我个人认为,这种模式 + DHTML是现如今框架模式的技术基础。DHTML(Dynamic HTML)包括两个部分,一是静态内容(称为模版),二是动态内容(CSS,JavaScript),动态内容通过“标记”嵌入在静态内容中,并由WEB服务器根据业务流程处理结果填充,再返回给客户端浏览器。
        这时,主要的WEB编程语言,或者说三大阵营分别是是Sun公司的JSP、Microsoft的系列语言(VB,VC及后来的.Net等等)和PHP。
        先说Java、JavaScript和JSP。JAVA,Sun公司提出,和C++类似是一种桌面型的语言,虽然Java不是编译型语言,但也只要面向开发桌面型应用,虽然也可以开发WEB程序,但Java的WEB程序主要以applet存在,类似于Microsoft的ActiveX组件。JavaScript,Netscape公司提出的,是一种解释型脚本语言,以源码形式存在于HTML文件中,由浏览器解释执行。JSP,即Java Server Pages,顾名思义,是运行在服务器端的,我的理解,JSP和Microsoft的ASP一样,就是符合Java语言规范的Serverlet技术。
        无论是JSP、ASP,存在的问题是:

    • 对客户端有要求,例如,ASP或使用ActiveX技术开发的一些WEB应用,在第三方浏览器,如Firefox、Safari就无法运行,正如现在仍然存在的许多网银,在IE之外无法运行。
    • 一旦有恶意代码嵌入到动态网页中,会造成客户端崩溃,这也就是原来很多地方禁用JS的原因。
  • 第三阶段,标志性的节点是2005年Ajax的出现。AJAX允许客户端的JavaScript脚本为局部页面提供请求服务,然后可以在无需回到服务器情况下动态刷新部分页面,这种突破性的“文档对象模型DOM(Document Object Model)”创造了“前后端”分层架构,
  • 2007年,Rails框架的出现,首次提出了框架的概念。
       > 2007年,37signals公司那个基于Ruby on Rails 5分钟构建博客的演示完全征服了全世界的开发者。一夜之间,所以谈论的焦点都是关于Rails!Rails的不同之处在于使用规定的方式(框架)去设计你的web应用程序,这种模式就叫做模式(数据)-视图(模板)-控制器(业务逻辑)。

    【完】
    2018年12月20日
    参考材料
        Web开发的发展史—Web开发技术的演变

知识回顾之一:WEB编程语言发展回顾...相关推荐

  1. 通过系统回顾的方法来发展循证的管理知识*。

    英国管理杂志,第14卷.207-222 (2003) 通过系统回顾的方法来发展循证的管理知识*. David Tranfield, David Denyer 和 Palminder Smart 高级管 ...

  2. 2015前端生态发展回顾(转)

    引用苏宁前端架构师的一个总结作为开篇 编程技术及生态发展的三个阶段 最初的时候人们忙着补全各种API,代表着他们拥有的东西还很匮乏,需要在语言跟基础设施上继续完善 然后就开始各种模式,标志他们做的东西 ...

  3. 程序设计语言发展回顾与展望

    文章转载自:计算机世界网,原文链接地址:http://www2.ccw.com.cn/1995/13/138106.shtml 编者按:程序设计语言是与现代计算机共同诞生.共同发展的,至今已有40余年 ...

  4. 【报告分享】砥砺前行 智启新章:2019-2020中国银行业发展回顾与展望.pdf(附下载链接)...

    今天给大家分享的报告是德勤发布的<砥砺前行 智启新章:2019-2020中国银行业发展回顾与展望.pdf>,报告包含如下四大部分: 1.2019年经济和金融形势回顾: 2.2019年大型上 ...

  5. 编程语言发展70年,用50种不同语言输出「Hello World」

    「免费学习 60+ 节公开课,投票页面,点击讲师头像」 作者 | Sylvain Saurel 译者 | 风车云马 责编 | 屠敏 [导读]历经 70 年,不断出现的编程语言为开发者解决了哪些难题?其 ...

  6. Web(万维网)发展简史

    静态网页的诞生 1989年,在欧洲粒子物理实验室(粒子物理研究通常与来自世界各地的研究所进行合作)的IT部门工作的Tim Berners-Lee向其领导提出了一项名为Information Manag ...

  7. 编程语言发展历程_计算机和编程的发展,个人历程

    编程语言发展历程 重点 (Top highlight) As I see my son casually flipping his fingers on his touchpad and creati ...

  8. 泛前端知识图谱(Web/iOS/Android/RN)

    泛前端知识图谱(Web/iOS/Android/RN) 从属于笔者的程序员成长道路上的阅读学习资料工具集锦系列,主要是对于笔者这几年在前端开发中总结出来的知识点的归集与整理,也是笔者的笔记排布目录结构 ...

  9. 微软架构师谈编程语言发展

    大约2个月前,在Herb Sutter的网站上看到了一个链接,内容是Channel9网站对他和其他三名微软架构师就"编程语言发展"进行的采访,架构师中有Anders Hejlsbe ...

  10. 网络安全基础知识学习之Web安全百问百答

    网络安全基础知识学习之Web安全百问百答 1.什么叫Web应用系统? 答:Web应用系统就是利用各种动态Web技术开发的,基于B/S(浏览器/服务器)模式的事务处理系统.用户直接面对的是客户端浏览器, ...

最新文章

  1. 【hdu5285】wyh2000 and pupil
  2. android开发检测用户是否使用了虚拟定位
  3. haproxy mysql配置文件详解_HAProxy基础配置-haproxy的配置文件说明
  4. CF176E Archaeology(set用法提示)
  5. windows 下安装 rabbitmq报init terminating in do_boot错误
  6. leetcode266. 回文排列
  7. linux下mkdir头文件_Linux中mkdir函数与Windows中_mkdir函数的区别
  8. mvdr波束形成原理_有了波束赋形这个5G黑科技,让你畅享飞一样的网速
  9. 【渝粤教育】国家开放大学2019年春季 690化工原理及实验 参考试题
  10. 屏蔽系统的故障定位案例
  11. 平面内 两直线/两向量的夹角方向 逆时针 还是顺时针
  12. ubuntu下人体姿态识别OpenPose编译运行
  13. 国外永久免费5G大容量网盘--SugarSync
  14. WPS文字常用快捷键大全
  15. 车辆碰撞起火事故的规律特点及常见起火原因 | 事故分析
  16. 计算机桌面调音量的图标不见了,如何解决电脑音量图标不见了
  17. 带小数的二进制转十进制(C代码)
  18. 使用mmdetection做实例分割
  19. matlab 梳妆函数,梳状函数.PPT
  20. CPU,处理器插槽,逻辑处理器,处理器内核

热门文章

  1. android 圆角图片 imageview,【android 图片圆角设定】CustomImageView简单一览
  2. (8)Redis-Cluster集群理论及实践【中】
  3. ES6 var,const , let三者区别
  4. Java使用POI导出excel(下)——实例与小技巧
  5. Git 常用操作(一)
  6. css一行内容过多显示省略号
  7. 编程珠玑Column11中插入排序和快排序
  8. java的注解定义map_java – MapStruct:丰富映射注释以定义自定义映射器
  9. 程序员!你还能年轻几岁?
  10. Spring整合MyBatis为什么导致MyBatis一级缓存失效