首頁  >  文章  >  來到1994年,終於知道為什麼80%的網站都在用PHP了!

來到1994年,終於知道為什麼80%的網站都在用PHP了!

藏色散人
藏色散人轉載
2021-11-29 14:32:422147瀏覽

昨天晚上写代码到深夜,一头扎到床上,沉沉睡去。

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

來到1994年,終於知道為什麼80%的網站都在用PHP了!

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

对面坐着一个帅哥,一边操作电脑,一边在不停地赞叹。

我探过头去,发现他正在看这个东西:

來到1994年,終於知道為什麼80%的網站都在用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("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==&#39;+&#39;) *dest=&#39; &#39;;
      else if(*data == &#39;%&#39; && ishex(*(data+1))&&ishex(*(data+2))) {
        *dest = (char) htoi(data + 1);
        data+=2;
      } else *dest = *data;
      data++;
      dest++;
    }
    *dest = &#39;\0&#39;;
    s = strtok(params,"&");
    do {
      tmp = strchr(s,&#39;=&#39;);
      if(tmp) {
        *tmp = &#39;\0&#39;;
        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

我这才意识到,原来遇到了<strong>PHP之父</strong>

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

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

“那我能不能用?”

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

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

“我不靠锤子赚钱,我卖的是解决问题的服务。”

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

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

使用PHP的人開始給Rasmus發送補丁了 ——他們發現了Rasmus都沒有發現的Bug!

於是Rasmus到客戶那裡說:我又升級了一個新版本,改了這個,改了那個。

客戶非常滿意,他們認為我們的工作效率非常高,不但能快速完成功能,還能快速修復Bug。

我突然意識到:這不就是開源嗎?

當然,這是1994、1995年,開源這個詞還沒出現,當時只有RMS提倡的自由軟體。

隨著越來越多的人提交補丁,PHP逐漸完善,1995年,Rasmus看到時機成熟,正式宣布了 PHP 1.0的誕生。

來到1994年,終於知道為什麼80%的網站都在用PHP了!

原來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!

來到1994年,終於知道為什麼80%的網站都在用PHP了!

「如果讓你總結一下,如何才能創建一個成功的開源項目,你會怎麼說?」

聊到這個話題,Rasmus突然就滔滔不絕起來,因為他從0到1發展起一個項目,簡直太有發言權了!

如果你只有一個很酷的想法, 沒有人會加入你的項目,每個人都有很酷的想法。

如果你創造的東西是半生不熟的,那麼人們可能對你做的事情不屑一顧,他們會用自己的方式來解決問題。

只有你建構了足夠有用的東西,大家才會來到你的身邊,他們會更容易接受你的程式碼,然後稍微擴展來解決他們自己的問題,這樣雪球才能滾動起來。

所以,要開始一個開源項目,你必須解決一個困擾你一段時間的問題,這可能會花費數月的時間才能找到真正的問題並解決掉,然後你必須接受早期採用這的建議,盡最大努力讓工具對更廣泛的受眾有用。

最後可以考慮放棄控制權,讓其他人和你一起努力,當人們用你的程式碼做他們任何想做的事情的時候,你的開源專案就成功了!

「太棒了,我希望我的讀者都能看到這段話。」

「你的讀者?」

「是的,碼農翻身頭條號,我不能說太多了,天機不可洩露,我得走了。」

說完,我就消失了。

陳述:
本文轉載於:码农翻身。如有侵權,請聯絡admin@php.cn刪除