设为首页收藏本站

LUPA开源社区

 找回密码
 注册
文章 帖子 博客
LUPA开源社区 首页 业界资讯 技术文摘 查看内容

编程语言简史

2014-11-10 12:12| 发布者: joejoe0332| 查看: 4501| 评论: 0|原作者: deepinmind.com|来自: deepinmind.com

摘要: 一个朋友在跟我一块吃午饭的时候问了我一个问题:现代编程语言的发展历程是什么样的,它是如何发展到现在这样的?他觉得我应该能答得上来,但其实我只能说个大概。我跟他提了下机器语言,以及人们为了简化它所做的努 ...


B

  B语言由贝尔实验室于1969年所发明。它的设计受到了Fortran和BCPL的影响。

B语言实际上就是去除了Thompson所认为的无用组件的BCPL系统,以便使得它能适合当时微机的内存容量。 [http://en.wikipedia.org/wiki/B_(programming_language) ](http://en.wikipedia.org/wiki/B_(programming_language))


  B引入了+=操作符(尽管应该念成=+),以及自增/自减操作符(++和--)

printn(n,b) {
        extrn putchar;
        auto a;
 
        if (a=n/b) /* assignment, not test for equality */
                printn(a, b); /* recursive */
        putchar(n%b + '0');
}

C

  C语言就是是B语言加上了Pascal里面的一些好的特性所组成的。它由Dennis Ritchie于1969年到1973年间在贝尔实验室所发明。

  C语言应该是最重要的一门语言了。它获得了前所未有的成功。

  除此之外,许多语言都是在C的基础上进行设计的,包括:

  • C++(1976)
  • Objective-C(1986)
  • Perl(1988)
  • Java(1991)
  • Python(1991)
  • JavaScript(1995)
  • PHP(1995)
  • C#(1999)
  • Go(2007)
  • 等等

Simula

  挪威的仿真语言Simula I和Simula 67——从语法上来讲——是ALGOL 60的完整的超集。

  它的影响非常深远。Simula以ALGOL 60为基础,并添加了对象的概念,因此它也被认为是第一门面向对象的编程语言。

  Simula 67(于1967年发布)引入了对象,类,继承和子类的概念,同时还有虚函数,协程,以及离散事件模拟。

  这还不止,它还引入了垃圾回收的特性。

  它的程序是这样的:

Begin
   Class Glyph;
      Virtual: Procedure print Is Procedure print;
   Begin
   End;

   Glyph Class Char (c);
      Character c;
   Begin
      Procedure print;
        OutChar(c);
   End;

   Glyph Class Line (elements);
      Ref (Glyph) Array elements;
   Begin
      Procedure print;
      Begin
         Integer i;
         For i:= 1 Step 1 Until UpperBound (elements, 1) Do
            elements (i).print;
         OutImage;
      End;
   End;

   Ref (Glyph) rg;
   Ref (Glyph) Array rgs (1 : 4);

   ! Main program;
   rgs (1):- New Char ('A');
   rgs (2):- New Char ('b');
   rgs (3):- New Char ('b');
   rgs (4):- New Char ('a');
   rg:- New Line (rgs);
   rg.print;
End;

Smalltalk

  Simula对Alan Kay的影响极大——他曾经就职于Xerox PARC,并于1972年开始研发Smalltalk。

  Smalltalk最初是设计给小孩用的。它在真实环境下做了充分的测试,并进行了数次重构。它历经了多次改版在首次发布8年后才最终面世。

  Smalltalk是一门伟大的语言,它是第一个真正的现代面向对象编程语言。

  由于它的语法很难掌握,因此它一直也没能流行起来。然而,它几乎对所有的现代编程语言都产生了影响。Objective-C, C++, Java, C#, Eiffel, 和Ruby基本上都是C和Smalltalk的混合体。

  下面这个例子演示了Smalltalk版的控制结构:

result := a > b
    ifTrue:[ 'greater' ]
    ifFalse:[ 'less or equal' ]
   

Self

  这是Smalltalk所影响的又一门语言——它也是在Xerox PARC中研发的——它就是Self)。

  Self的设计目标是为了提升性能。它以Smalltalk为原型,并去掉了其中类的概念,以便运行速度能更快。

  它没有使用类的概念,而是用到了原型:Self允许对象可以不通过类而直接继承自其它对象。

  你可能也猜到了,JavaScript正是受它所影响的语言之一。


Scheme

  Scheme是基于Actor模型设计的。Actor模型最早是1973年提出的,刚出现的时候被认为是个很前卫的概念。它是LISP语言)的一门方言,LISP是MIT于1958年所设计的一门人工智能语言。

  它包含尾递归,词法闭包,以及许多很酷的特性。

  示例:

;; Calculation of Hofstadter's male and female sequences as a list of pairs
 
(define (hofstadter-male-female n)
  (letrec ((female (lambda (n)
             (if (= n 0)
             1
             (- n (male (female (- n 1)))))))
       (male (lambda (n)
           (if (= n 0)
               0
               (- n (female (male (- n 1))))))))
    (let loop ((i 0))
      (if (> i n)
      '()
      (cons (cons (female i)
              (male i))
        (loop (+ i 1)))))))
 
(hofstadter-male-female 8)
 
===> ((1 . 0) (1 . 0) (2 . 1) (2 . 2) (3 . 2) (3 . 3) (4 . 4) (5 . 4) (5 . 5))

E

  E语言揉合了Java与Joule,它是一门专为安全相关的应用程序所设计的语言。

  它以Actor模型为基础,并实现了能力对象模型

def makeMint(name) :any {
   def [sealer, unsealer] := makeBrandPair(name)
   def mint {
     to makePurse(var balance :(int >= 0)) :any {
       def decr(amount :(0..balance)) :void {
         balance -= amount
       }
       def purse {
         to getBalance() :int { return balance }
         to sprout() :any { return mint.makePurse(0) }
         to getDecr() :any { return sealer.seal(decr) }
         to deposit(amount :int, src) :void {
           unsealer.unseal(src.getDecr())(amount)
           balance += amount
         }
       }
       return purse
     }
   }
   return mint
 }

JavaScript

  终于说到它了。

  JavaScript已经成为了一门非常重要的语言。在能访问到网络的设备里总会出现它的身影,它是WEB平台的顶梁柱,也是绝大多数WEB应用及移动应用的基石。多亏了Node.js,它现在也活跃到了服务端开发中。

  JavaScript是基于Java, Scheme与Self来设计的。

  它最初是由Netscape公司开发的,原本是希望实现一套类似于苹果公司的HyperCard的东西——这是苹果公司的Macintosh与IIGS电脑上的一款应用程序以及编程工具,它可以使程序开发变得更为简单——Netscape把它集成到了浏览器里。

  它的作者Brendan Eich希望基于Scheme来进行设计,但Netscape的管理层认为大家不喜欢Scheme的语法,并要求他将其设计得与Java更像一点。

  JavaScript综合了Java的语法(要不就不叫JavaScript了),Scheme的函数模型,以及Self的原型的特性。

  由于Netscape公司的推动,它仅花了两周时期便实现完成并发布了出来。

  注:本文讲的主要是与JavaScript相关的一些编程语言的历史。


原创文章转载请注明出处:编程语言简史

英文原文链接


酷毙

雷人

鲜花

鸡蛋

漂亮
  • 快毕业了,没工作经验,
    找份工作好难啊?
    赶紧去人才芯片公司磨练吧!!

最新评论

关于LUPA|人才芯片工程|人才招聘|LUPA认证|LUPA教育|LUPA开源社区 ( 浙B2-20090187 浙公网安备 33010602006705号   

返回顶部