昨天夜晚写代码到深夜,一头扎到床上,沉沉睡去。
次日睁开眼镜,我发掘自己居然坐在一个咖啡馆里,旁边的墙上贴着最新的英文电影海报《阿甘正传》、《肖申克的救赎》
这都是1994年的经典电影,我认识到,自己穿越到了1994年的美国!
对面坐着一个帅哥,一边操作电脑,一边在一直地赞叹。
我探过头去,发掘他正在看这个东西:
我说:“哥们儿,这不是安德森研发的Mosaic浏览器吗?这么丑,你怎么不消网景?”
“网景?那是什么东西?不外兄弟不简单啊,我在咖啡馆喝了这么多天的咖啡,你是第1个识货的,还晓得安德森,肯定亦是个程序员吧,要不一块干吧!”
“干什么啊?”
“浏览器绝对是互联网的将来,此刻非常多机构都在狂热地拥抱它, 她们就运用 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("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发展起一个项目,简直太有发言权了!
“倘若你仅有一个很酷的想法, 无人会加入你的项目,每一个人都有很酷的想法。
倘若你创建的东西是半生不熟的,那样人们可能对你做的事情不屑一顾,她们会用自己的方式来处理问题。
仅有你构建了足够有用的东西,大众才会来到你的身边,她们会更易接受你的代码,而后稍微扩展来处理她们自己的问题,这般雪球才可滚动起来。
因此,要起始一个开源项目,你必须处理一个困惑你一段时间的问题,这可能会花费数月的时间才可找到真正的问题并处理掉,而后你必须接受初期采用这的意见,尽最大奋斗让工具对更广泛的受众有用。
最后能够思虑放弃掌控权,让其他人和你一块奋斗,当人们用你的代码做她们任何想做的事情的时候,你的开源项目就成功了!”
“太棒了,我期盼我的读者们都能看到这段话。”
“你的读者?”
“是的,码农翻身头条号,我不可说太多了,天机不可泄露,我得走了。”
说完,我就消失了。
|