纵观计算机编程技术历史变迁,可以归纳为如下几个阶段:
能分析的机器(Analytical Engine)->电子计算机->大型机时代->PC时代->互联网时代->移动互联网->云服务和大数据
最早的能执行特定计算的机器普遍被认为是19世纪中期由Babbage发明的,并由Ada为之编写了若干数学计算的程序,Ada(诗人拜伦之女),可以说是第一个程序员;
20世纪开始的几十年,程序主要以穿孔卡片的方式编制。
主要被军事目的所驱动,如加解密、弹道计算,这个时期的语言由于内存和计算能力的有限,都是使用硬件相关的汇编语言;
主要用于系统级编程和数学计算,
Fortran(1950s由IBM团队发明的数学计算语言),
COBOL(1950s由IBM等行业领袖推行的金融、商务系统开发语言),
LISP(用于人工智能领域,主要的数据结构是Linked List,全名为List Process语言,引入了很多先进的特性如递归、动态类型、自动内存管理等特性)
ALGOL(用于算法描述、学术领域,引入嵌套结构,语法范围等,很大的影响了BPCL,B,PASCAL等语言
Basic(最早是为给非科学领域的学生所编写,Microsoft VB的前身)
C(1970s由Dennis Ritchie和Brian Kernighan发明的为DEC机开发的系统编程语言,前身是BPCL,B语言)
Simula(第一个支持面向对象的编程语言)
SmallTalk(第一个完整实现面向对象特性的编程语言)
C++(综合了SmallTalk面向对象特性和C语言语法,最为广泛应用的面向对象语言之一)
MATLAB(工业领域,工程计算语言)
Objective-C(iOS编程语言,已经是Top5的语言之一)
Erlang(多重范式编程语言,函数式、并发式、分布式,80年代由爱立信发明用于通信网络编程,现已广泛应用于互联网高并发分布式计算领域,最有名的作品包括CouchDB/RabbitMQ)
Perl(源于Unix脚本的动态语言,初衷是为了使报告更容易处理,借鉴了C/sh/AWK和SED)
Tcl(曾经是很流行的测试脚本语言,现在已经没落)
Windows由于垄断PC市场,其基于VC/VB的桌面应用开发曾经是客户端开发技术的主流,
随之而来催生了大量的基于Windows SDK客户端应用,MFC是其中最为知名的一个C++类库实现
Python/Ruby/Lua/PHP/JS
Java(发展为3个体系,J2SE/J2EE/J2ME,J2EE包含一些企业特性如JDBC, JPA, JTA/JMS/EJB,J2ME是移动版本)
Visual Basic/Visual C++/Delphi(Object Pascal)/Power Builder
Javascript(浏览器客户端脚本,Netscape发明,包含ECMAScript核心脚本, DOM文档对象模型, BOM浏览器对象模型三部分)
ActionScript(Adobe公司发明,面向对象的Flash开发语言)
C#/Visual Basic.Net
Groovy(由VMVare支持,基于Java平台的动态语言,支持元数据编程Metaprogramming,动态扩展对象数据,如反射,
还比如范型编程(如C++的STL,最早版本由HP实现)能为语言提供运行时再确定的动态类型特性,可以大大简化编码)
Go (C语言之父发明的并行计算语言)
Node.js(服务器端的JS运行环境,Js语言在服务器端的延伸,具有单线程,高并发的特性)
当前编程语言本身发展变化不大,对应于敏捷的开发模式和工程化水平的提高,各个语言体系都开发出了快速开发框架,
另外为了应对移动/互联网领域高并发、分布式和大数据的挑战,有很多基础服务产品被开发和广泛应用。
在快速开发框架方面:基于PHP的Yii/CI/Cake/Smarty,基于Java的Sping/Struts/Hibernate/Tapestry,基于Ruby的Rails,基于Python的Django
在基础服务方面:有Java写的Lucence,C++写的Sphinx全文检索引擎,Erlang开发的CouchDB,Java编写的Hbase/Mahout等
在应用和代理服务器方面:C语言写的httpd/nginx,Java的tomcat/jetty,C和Java混合编写的Resin,C语言写的haproxy
在并行开发方面:C语言写的Github
可以看出来,前端的语言越来越偏动态,而后端基础服务则还是C/Java为主,同时需要去了解Go/Node.js这些为并发计算而专门设计的新编程技术。
by iefreer