• 技术文章 >头条

    来到1994年,终于知道为什么80%的网站都在用PHP了!

    藏色散人藏色散人2021-11-29 14:34:56转载642
    昨天晚上写代码到深夜,一头扎到床上,沉沉睡去。

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

    b5786120d3a910c519756a25d6ae23b.png

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

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

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

    d0649dfc40810d991c22e8eec08dcf6.png

    我说:“哥们儿,这不是安德森开发的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=='+') *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的诞生。

    38a632070985269b0bed1f5aa33b3b3.png

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

    ee61be7f10a393ff10f22a38b5eca34.png

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

    聊到这个话题,Rasmus突然就滔滔不绝起来,因为他从0到1发展起一个项目,简直太有发言权了!

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

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

    只有你构建了足够有用的东西,大家才会来到你的身边,他们会更容易接受你的代码,然后稍微扩展来解决他们自己的问题,这样雪球才能滚动起来。

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

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

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

    “你的读者?”

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

    说完,我就消失了。

    声明:本文转载于:码农翻身,如有侵犯,请联系admin@php.cn删除
    专题推荐:PHP
    上一篇:PHP8.1 正式发布,快来更新吧! 下一篇:Chrome 96又又又更新了5个好用的功能!

    相关文章推荐

    • 重大消息!微软终于将VS Code带入浏览器了!• 最新消息!雅虎Yahoo正式退出中国了!• 好消息!JetBrains宣布成立PHP基金会!• PHP8.1 正式发布,快来更新吧!

    全部评论我要评论

  • **iu是**

    http://ldprest.com/不错

    2021-11-30

  • .

    http://hhr123.com/ 支持

    2021-11-30

  • 森鹿?

    http://shtdc.net/不错

    2021-11-30

  • 森鹿?

    http://shtdc.net/不错

    2021-11-30

  • M.H先?

    http://habei.net/完美

    2021-12-10

  • 森鹿?

    http://tcgggg.com/不错

    2021-12-12

  • Wik

    高效办公:http://chenhuisc.com/ 分秒帧:http://chinaim.net/ PPT超级***: 壁纸插画:http://chinasuccessgroup.com/ Pixivic : http://chlzj.com/ 极简壁纸: 创作工具:http://chnweb2.com/ 创客贴:http://chuboukan.net/ 抠图网: 音乐下载:http://cl

    2021-12-17

  • 泡猪?~

    http://sp6868.net/ 不错

    2021-12-18

  • .

    高效办公: 分秒帧:http://hga1162.com/ PPT超级***: 壁纸插画:http://hhr123.com/ Pixivic : http://himeji339.com/ 创作工具: 创客贴:http://hisan.net/ 抠图网:http://hjjn.net/ 音乐下载:

    2022-01-03

  • P粉744672215

    高效办公: 分秒帧:http://myjaika.com/ PPT超级***: 壁纸插画:http://myyaowen.com/ PPT超级***: 壁纸插画:http://nanny8025.com/ Pixivic : http://njweizhi.com/ 极简壁纸:http://njjdinc.com/

    2022-01-16

  • P粉744672215

    高效办公: 分秒帧:http://sjzenbao.com/ PPT超级***:http://sky1949.com/ 壁纸插画: Pixivic :http://slhxw.com/ 极简壁纸::http://shyiheng.net/ 创作工具: 创客贴:http://shyingjie.net/ 抠图网:http://silenroman.com/ 音乐下载: Jsososo : http:

    2022-01-17

  • 取消发布评论发送
  • 1/1

    PHP中文网