PHP到现在为止已经诞生12年了。在这期间它经过不断改善,已经成为Web开发最重要的语言之一。PHP能有今天这样的成就,它的3位创始人(Rasmus Lerdorf、Zeev Suraski和Andi Gutmans)功不可没。

PHP的诞生和Rasmus Lerdorf的经历密不可分。Rasmus Lerdorf于1968年生于格陵兰岛西部迪科斯岛上的Godhavn/Qeqertarsuaq。他是PHP的开山鼻祖。在设计PHP之前,Rasmus Lerdorf曾在上世纪90年代早期维护过新闻卫星通讯系统,并设计了用于验证数据正确性的错误验证协议。然后在1991年获得了2项加拿大的专利。在1991-1993,他做了近3年的Unix程序员,并成功地开发出了一个面向对象接口生成器。在1994年,Rasmus Lerdorf升任产品经理,主持并设计了很多基于Unix的通讯、GUI等系统。在1995年,Rasmus Lerdorf成为了一名IT顾问。在随后几年,他先后在University of Toronto 、Bell Global Solutions以、IBM、Linuxcare Inc和Dot.com Bomb/baby Vacation工作,并设计和开发了大量的软件系统。

Rasmus Lerdorf在2002年正式加盟Yahoo,在Yahoo他一直从事PHP、Apache、Ajax等技术相关的开发工作以及软件构架的研究

图1 Rasmus Lerdorf

图2 Rasmus Lerdorf和他的儿子

多年的软件开发经验使Rasmus Lerdorf拥有了很深的技术功底。在1994年,他设计了PHP的第一个版本PHP1.0,并于1995年将其通过社区发布。在1996年,Rasmus Lerdorf又设计了PHP2,在1998年,由于Zeev Suraski和Andi Gutmans当时正在做毕业设计,需要一个用于开发Web程序的语言,他们也考虑了ASP和JSP,但由于ASP只能运行在Windows平台,而JSP又过于复杂,因此,他们最后选择了PHP,但他们发现,PHP的功能当时还十分有限,因此,他们决定为PHP重新编写底层的解析程序,这就是PHP的第一个被广泛使用的版本:PHP3.0。

Rasmus Lerdorf虽然创造了PHP,但也许他并不打算创业,而是选择了一些公司继续从事他热爱的事业。并作为PHP传道士到世界各地去宣扬PHP。图3是Rasmus Lerdorf正在斯里兰卡首都科伦坡进行一场别开生面的PHP讲座,其中著名科幻小说家Arthur C. Clarke出席了会议。

图3 Rasmus Lerdorf在斯里兰卡

而PHP的另外两位创始人Zeev Suraski和Andi Gutmans就没Rasmus Lerdorf那么安分了。他们在1998年重写了PHP3.0的解析器后,在1999年,他们成立了PHP的商业化公司Zend。再一次演绎了双人创业的神话,记得Google的两位创始人布林和佩奇也是在1999年创办的google,虽然Zend没有Google成功,但Zend的成立却为开源软件的商业化奠定的基础。

图4 Zeev Surask

图5 Andi Gutmans

Zeev Suraski自从1998年以来一直就从事着和PHP相关的工作。在开发完PHP3.0后,Suaraski和Gutmans继续着他们的PHP之梦,开始紧锣密补地开发他们的Zend引擎,也就是后来的的PHP4.0。在设计PHP4.0的同时,他们还为PHP设计了很多的组件,如服务抽象层和多线程支持。
Suraski 和Gutmans 天衣无缝地配合使他们的成就非凡,下面是他们的部分成就:

·Apache软件基金会成员
·获得1999年GNU自由软件奖提名
·获得1998年CNET Web革新奖亚军
·获得1999 LinuxWorld杂志最佳选择奖
·在Web技术杂志上pk ASP获胜,使PHP成为最优秀的Web开发工具之一。

Zend的创立和Google差不多,由于Suraski 和Gutmans都是搞技术出身,而他们并不擅长公司的管理。因此,Zend的另一位联合创始人Doron Gerstel开始进入人们的视线。Doron Gerstel出任了Zend公司的CEO,他拥有丰富的企业管理经验,Doron Gerstel使用这些经验使Zend成功地将PHP商业化,并推出了一系列的产品,如Zend Studio,一个用于Web可视化开发的IDE。

Zeev Suraski是个活跃分子,他正在全力将PHP推往全世界。Suraski为了推动LAMP在中国的应用,于2006年首次访华

图6 Zeev Suraski 在演讲

Zend公司现在已经进入了良性循环,在刚成立时融了800多万美元后,最近又获得了2000万美元的风险投资。在今年10月的Web开发大会上,Zend宣布要使用PHP建立新的Web应用,从而使Web开发更人性化。

图7 Web大会实况

Suraski 和Gutmans进行了多年的合作,他们正在带领着Zend向着预定的目标前进,希望在他们的带领下,PHP能有更美好的明天。

传奇的诞生,PHP三位创始人简介的更多相关文章

  1. 关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其他位数)

    关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其... 方法一:使用to_char的fm格式,即: to_char(round(data.amount,2),'FM9999 ...

  2. 用1、2、2、3、4、5这六个数字,用java写一个main函数,打印出所有不同的排列,如:512234、412345等,要求:"4"不能在第三位,"3"与"5"不能相连。

    最近在看算法,看到这个题,觉得挺经典的,收起. 分析: 1 .把问题归结为图结构的遍历问题.实际上6个数字就是六个结点,把六个结点连接成无向连通图,对于每一个结点求这个图形的遍历路径,所有结点的遍历路 ...

  3. php实现数字格式化,数字每三位加逗号的功能函数

    原地址:http://www.jb51.net/article/73781.htm php实现数字格式化,数字每三位加逗号的功能函数,具体代码如下: ? 1 2 3 4 5 6 7 8 9 10 11 ...

  4. PHP数字格式化,每三位逗号分隔数字,可以保留小数

    在报价的时候为了给浏览者更清晰明确的数字,所以需要用到数字格式化,有两种方法,一种自己写函数,另一种当然是系统自带的,其实我更喜欢系统自带的. 先来系统简单的: string number_forma ...

  5. C++ Ouput Exactly 2 Digits After Decimal Point 小数点后保留三位数字

    在C++编程中,有时候要求我们把数据保留小数点后几位,或是保留多少位有效数字等等,那么就要用到setiosflags和setprecision函数,记得要包含头文件#include <ioman ...

  6. 学习练习 java 不重复的三位偶数

    编写一个Java程序,计算一下1,2,…,9这9个数字可以组成多少个互不相同的.无重复数字的三位偶数. package com.hanqi; //编写一个Java程序,计算一下1,2,…,9 //这9 ...

  7. js验证连续两位数字递增或递减和连续三位数字相同

    <!DOCTYPE html><html><head lang="en"> <meta charset="UTF-8" ...

  8. js给数字加三位一逗号间隔的两种方法(面试题)

    方法一:   <script type= "text/javascript"> //保留三位小数,toLocaleString() 方法可把一个 Number 对象转换 ...

  9. 取小数点后三位的方法(js)

    使用js取小数点后三位的方法,我觉得这个方法最好 Math.round(num*100)/100 还有其他方法: http://hi.baidu.com/yansueh/item/f026d8d759 ...

随机推荐

  1. JQuery中如何处理键盘事件

    背景:比如在页面中,敲击回车键以后,实现登录功能,在之前的Winform开发时,也遇到过处理键盘事件的功能,比如游戏软件中,上下左右的移动等. 代码如下: $(document).keydown(fu ...

  2. DocView mode 2 -- 快捷键

    ** 启动 C-c C-c    切换DocView和文件内容显示 M-x doc-view-mode    启动主模式 M-x doc-view-minor-mode    启动辅模式 k    k ...

  3. SQLAlchemy常用操作

    Models 只是配置和使用比较简单,因为他是Django自带的ORM框架,也正是因为是Django原生的,所以兼容性远远不如SQLAlchemy 真正算得上全面的ORM框架必然是我们的SQLAlch ...

  4. python数据类型小结

    变量 变量是 为了存储程序 运算过程中的一些中间结果,为了方便日后调用. 变量的命名规则1.要有描述性2.变量名只能_,数字,字母组成,不可以是特殊字符(#)3.不能以中文为变量名4.不能以数字开头5 ...

  5. lfyzoj103 割海成路之日

    问题描述 现在,摆在早苗面前的是一道简单题.只要解决了这道简单题,早苗就可以发动她现人神的能力了: 输出 \[1\ \mathrm{xor}\ 2\ \mathrm{xor} \cdots \math ...

  6. 剑指offer面试题43:n个筛子的点数

    题目描述: 把n个筛子扔在地上,所有筛子朝上的一面点数之和为s,输入n,打印出s的所有可能的值出线的概率. 书上给了两种解法,第一种递归的方法由于代码太乱,没有看懂=.= 第二种方法很巧妙,lz已经根 ...

  7. find_element——By 元素定位

    • find_element(By.ID,”loginName”)• find_element(By.NAME,”SubjectName”)• find_element(By.CLASS_NAME,” ...

  8. Python第三方库之openpyxl(2)

    Python第三方库之openpyxl(2) 简单的使用 写一个工作簿 >>> from openpyxl import Workbook >>> from ope ...

  9. pytorch中Math operation操作:torch.ger()

    torch.ger(vec1, vec2, out=None) → Tensor Outer product of vec1 and vec2. If vec1 is a vector of size ...

  10. 九度oj 题目1214:丑数

    题目描述: 把只包含因子2.3和5的数称作丑数(Ugly Number).例如6.8都是丑数,但14不是,因为它包含因子7. 习惯上我们把1当做是第一个丑数.求按从小到大的顺序的第N个丑数. 输入: ...