第二天睁开眼镜,我创造自己居然坐在一个咖啡馆里,阁下的墙上贴着最新的英文电影海报《阿甘正传》、《肖申克的救赎》

这都是1994年的经典电影,我意识到,自己穿越到了1994年的美国!

对面坐着一个帅哥,一边操作电脑,一边在一直地惊叹。

为什么使用php我穿越到了1994年终于发明了如今80的网站都用PHP的原因 PHP

我探过分去,创造他正在看这个东西:

我说:“哥们儿,这不是安德森开拓的Mosaic浏览器吗?这么丑,你怎么不用网景?”

“网景?那是什么东西?不过兄弟不大略啊,我在咖啡馆喝了这么多天的咖啡,你是第一个识货的,还知道安德森,肯定也是个程序员吧,要不一起干吧!

“干什么啊?”

“浏览器绝对是互联网的未来,现在很多公司都在狂热地拥抱它, 他们就利用 Microsoft Word写文档,然后将文档保存为 HTML,通过 FTP 将它们放到网上,这里边有商业机会啊。

“写个HTML会有什么商业机会?”

“静态的网站是和呆板的,这些公司很快就会创造,可以和用户交互的、动态的网站才有商业代价。
我准备专门供应这样的咨询做事,为他们开拓各种动态的Web运用程序。
对了,忘了自我介绍了,我叫Rasmus Lerdorf。

这个人名怎么这么熟习?

我想既然穿越而来,那就看看1994年的动态网站是怎么开拓的吧。

我说:“我叫张大胖,紧张用Java编程。

“Java?那是什么措辞?” 他两眼急速放光了!

我意识到说漏嘴了,Java这时候还没出身呢!

“实在叫C++--,一个小众措辞。

“和C措辞干系,那就好,我们得用C措辞写CGI脚本。

我和他合资开了个咨询公司,专门接开拓动态网站的活儿。

但是开拓一开始,我就崩溃了:没有前后端分离,没有Java,没有JSP,ASP, 真的全靠在C措辞!

给大家看看:

void main(int argc, char argv[]) { char params, data, dest, s, tmp; char name, age; puts(&#34;Content-type: text/html\r\n"); puts("<HTML><HEAD><TITLE>Form Example</TITLE></HEAD>"); puts("<BODY><H1>My Example Form</H1>"); puts("<FORM action=\"form.cgi\" method=\"GET\">"); puts("Name: <INPUT type=\"text\" name=\"name\">"); puts("Age: <INPUT type=\"text\" name=\"age\">"); puts("<BR><INPUT type=\"submit\">"); puts("</FORM>"); data = getenv("QUERY_STRING"); if(data && data) { params = data; dest = data; while(data) { if(data=='+') dest=' '; else if(data == '%' && ishex((data+1))&&ishex((data+2))) { dest = (char) htoi(data + 1); data+=2; } else dest = data; data++; dest++; } dest = '\0'; s = strtok(params,"&"); do { tmp = strchr(s,'='); if(tmp) { tmp = '\0'; if(!strcmp(s,"name")) name = tmp+1; else if(!strcmp(s,"age")) age = tmp+1; } } while(s=strtok(NULL,"&")); printf("Hi %s, you are %s years old\n",name,age); } puts("</BODY></HTML>");}

用一句话来说那便是:在C措辞当中输出HTML代码

这是人干的活吗?我都快写吐了!

Rasmus:“没办法啊,C措辞编写CGI脚本,实现动态网页,可不就得这样嘛?对了,你会用Perl吗?”

“便是那个写出来往后代码谁都不认识的措辞?我不想用!

韶光长了,Rasmus 也受不明晰:“这些CGI 脚本无外乎便是处理表单, Post数据,过滤等,重复代码太多了,怎么样才能提高效率呢?”

他有空就琢磨这件事情,有一天,他想到了一招,把这些常用的功能都包装到一个C措辞库中,它“植入”NCSA Web 做事器中(这是Apache之前最盛行的做事器),然后在上面添加了一个模板系统,可以轻松地调用他们。

于是代码便是变成这个样子:

<html><head><title>Form Example</title></head><body><h1>My Example Form</h1><form action="form.phtml" method="POST">Name: <input type="text" name="name">Age: <input type="text" name="age"><br><input type="submit"></form><?if($name):?>Hi <?echo $name?>, you are <?echo $age?> years old<?endif?></body></html>

换句话说:便是在HTML中“混入”代码。

和CGI比拟,这种办法对程序员来说非常友好,我们的事情效率一下子提高了很多。

说实话,我早就知道这种办法,便是ASP,JSP嘛,但是自己没那技能实力,实现不了啊!

Rasmus 很快就找到了一个新客户,用新工具为他们开拓Web程序,连接到数据库,知足他们各种各样的需求。

随着客户的增多, 客户的需求也略有不同,于是,Rasmus 就不断地扩展它的工具箱, 从大略的解析器逐步发展为包含条件标签,然后是循环标签、函数等各种繁芜的东西,这已经是一门措辞了。

Rasmus 把它们称为Personal Home Page,简称PHP。

我这才意识到,原来碰着了PHP之父!

很快就有其他程序员找上门来, 问我们:Rasmus, 你们怎么开拓得这么快!

Rasmus说:我有个人工具箱啊!

“那我能不能用?”

Rasmus说:“可以啊,工具只是我的锤子,每个人都可以用我的锤子。

我赶忙阻挡他:“Rasmus, 你把锤子给别人, 那咱们靠什么赢利?”

“我不靠锤子赢利,我卖的是办理问题的做事。

我心想他真是傻瓜,为什么不靠卖他的工具来赢利呢?学学Bill Gates,过几年上市!

让我没想到的是,神奇的事情发生了。

利用PHP的人开始给Rasmus发送补丁了 ——他们创造了Rasmus都没有创造的Bug!

于是Rasmus到客户那里说:我又升级了一个新版本,改了这个,改了那个。

客户非常满意,他们认为我们的事情效率非常高,不但能快速完成功能,还能快速修复Bug。

我溘然意识到:这不便是开源吗?

当然,这是1994、1995年,开源这个词还没有涌现,当时只有RMS提倡的自由软件。

随着越来越多的人提交补丁,PHP逐渐完善,1995年,Rasmus看到机遇成熟,正式宣告了 PHP 1.0的出身。

原来PHP便是这么起步的啊!

Rasmus展示出了一个领袖的大度和风范,他放弃了对PHP的独家掌握权。

通过把项目的所有权分给其他人,这样大家都可以投入,PHP成了大家的项目,而不是Rasmus一个人的项目。

当时,PHP源码放在CVS中,我想让Rasmus把PHP源码放到GitHub, 可是那个时候连Git都没有,哪而来的Hub?

在这里没有管理,大家是自我组织的小群体,可以环绕自己感兴趣的东西,自我组织。

任人唯贤, 代码说话。

这真正地改变了PHP的实质。

有一个周末,我又和Rasmus来咖啡馆喝咖啡,我说:“我以为你得给PHP添加一些高等的特性了!

“比如泛型,表明,面向函数编程,Lambda之类。

“不不,我希望 把进入PHP的门槛掌握在很低的水平,无论是利用它还是向他做贡献。
任何想办理Web问题的人常日会通过PHP找到非常直接的办理方案,许多声称可以办理 Web 问题的替代方案太繁芜了,想想看,你须要在周五之前完成事情,但是得翻阅800页的手册,这让人崩溃。

“你有没有想过,将来PHP会统治Web?”

“哈哈, 有这种可能吗?”

当年的Rasmus并不知道,PHP将在互联网大潮中野蛮成长,和Linux, MySQL , Apache联姻, 不断攻城略地。

W3Tech的统计显示,PHP统治了Web, 靠近80%的网站在利用PHP!

“如果让你总结一下,如何才能创建一个成功的开源项目,你会怎么说?”

聊到这个话题,Rasmus溘然就滔滔不绝起来,由于他从0到1发展起一个项目,切实其实太有发言权了!

“如果你只有一个很酷的想法, 没有人会加入你的项目,每个人都有很酷的想法。

如果你创建的东西是半生不熟的,那么人们可能对你做的事情不屑一顾,他们会用自己的办法来办理问题。

只有你构建了足够有用的东西,大家才会来到你的身边,他们会更随意马虎接管你的代码,然后轻微扩展来办理他们自己的问题,这样雪球才能滚动起来。

以是,要开始一个开源项目,你必须办理一个困扰你一段韶光的问题,这可能会花费数月的韶光才能找到真正的问题并办理掉,然后你必须接管早期采取这的建议,尽最大努力让工具对更广泛的受众有用。

末了可以考虑放弃掌握权,让其他人和你一起努力,当人们用你的代码做他们任何想做的事情的时候,你的开源项目就成功了!

“太棒了,我希望我的读者们都能看到这段话。

“你的读者?”

“是的,码农翻身头条号,我不能说太多了,天机不可透露,我得走了。

说完,我就消逝了。