第四代编程语言

  第四代编程语言,或者说是第四阶段的编程语言,这是我本身理解定义的一个概念,请勿告诉我说4gl是SQL。程序员

  我的认为,对程序员而言,编程语言已经发展到第四个阶段了。数据库

  第一阶段,汇编语言。在此以前,还有机器语言,即0101010101010这样的二进制代码。对程序员来讲,机器语言无疑是天书,彻底不可接受。而汇编用针对指令的符号代替二进制代码,对程序员来讲无疑的莫大的福音。可是,咱们直接去操做寄存器,须要了解不一样硬件平台,比较抽象,相对于人们平常生活描述方式差之极远。编程

  第二阶段,以C为表明,它给咱们抽象一些底层的东西,咱们大部分时间是关心业务逻辑,而不要了解咱们当前的硬件。这类语言充分接近人们生活描述习惯,比较容易理解和学习。可是程序员编写它们,除了业务逻辑,咱们还须要进行内存管理,这无疑增长了开发负担。网络

  第三阶段,以JAVA为表明,它为咱们进一步抽象底层,有了类、接口等OO概念,程序员也无需管理内存。它基本上是人们生活的描述,程序员很容易学习和编写本身的业务逻辑。多线程

  第四阶段,随着CPU性能的提高,计算速度愈来愈快,可是I/O性能却没有成比例的提高,大部分的时间耗在I/O等待上(网络I/O和磁盘I/O),CPU没有充分利用起来。第三代语言的解决办法是多进程和多线程,然而不管是多进程仍是多线程,须要消耗额外的资源,好比资源消耗在线程同步、上下文切换等上面。为了解决这些问题,我的定义的第四代语言应运而生。他们充分利用CPU的性能实现并行、非I/O阻塞的计算,而这些特性是他们天生就有的,不须要程序员关心的。架构

Go、Lua、Node.js便是我认为的第四代的编程语言。并发

  Go经过goroutine来实现多并发,尽管goroutine的底层实现是线程,但他经过封装,程序员不须要关心这些线程,并且是轻量级的。编程语言

Node.js采用了一个称为“事件循环(event loop)”的架构,举个例子吧,咱们小学学过一篇华罗庚先生的《统筹方法》的课文,告诉咱们要想提升效率,主要是把工序安排好。Node.js就是这样的,采用一系列“非阻塞”库来支持事件循环的方式。本质上就是为文件系统、数据库之类的资源提供接口。向文件系统发送一个请求时,无需等待硬盘(寻址并检索文件),硬盘准备好的时候非阻塞接口会通知Node.js。oop

  Lua一样是非I/O阻塞的,它里面有个协程的东西。关于协程的概念,能够看看这篇文章http://www.douban.com/note/185796525/性能

从以上的分析来看,程序语言一代比一代简单易用,它为程序员封装了不少东西,程序员只需写具体的业务逻辑代码就能够了。

  我的意见,欢迎探讨。

相关文章
相关标签/搜索