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

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

Nov 29, 2021 pm 02:32 PM
php

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

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

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==&#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的诞生。

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

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

CakePHP 项目配置 CakePHP 项目配置 Sep 10, 2024 pm 05:25 PM

在本章中,我们将了解CakePHP中的环境变量、常规配置、数据库配置和电子邮件配置。

适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 适用于 Ubuntu 和 Debian 的 PHP 8.4 安装和升级指南 Dec 24, 2024 pm 04:42 PM

PHP 8.4 带来了多项新功能、安全性改进和性能改进,同时弃用和删除了大量功能。 本指南介绍了如何在 Ubuntu、Debian 或其衍生版本上安装 PHP 8.4 或升级到 PHP 8.4

CakePHP 日期和时间 CakePHP 日期和时间 Sep 10, 2024 pm 05:27 PM

为了在 cakephp4 中处理日期和时间,我们将使用可用的 FrozenTime 类。

CakePHP 文件上传 CakePHP 文件上传 Sep 10, 2024 pm 05:27 PM

为了进行文件上传,我们将使用表单助手。这是文件上传的示例。

CakePHP 路由 CakePHP 路由 Sep 10, 2024 pm 05:25 PM

在本章中,我们将学习以下与路由相关的主题?

讨论 CakePHP 讨论 CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP 是 PHP 的开源框架。它的目的是使应用程序的开发、部署和维护变得更加容易。 CakePHP 基于类似 MVC 的架构,功能强大且易于掌握。模型、视图和控制器 gu

如何设置 Visual Studio Code (VS Code) 进行 PHP 开发 如何设置 Visual Studio Code (VS Code) 进行 PHP 开发 Dec 20, 2024 am 11:31 AM

Visual Studio Code,也称为 VS Code,是一个免费的源代码编辑器 - 或集成开发环境 (IDE) - 可用于所有主要操作系统。 VS Code 拥有针对多种编程语言的大量扩展,可以轻松编写

CakePHP 创建验证器 CakePHP 创建验证器 Sep 10, 2024 pm 05:26 PM

可以通过在控制器中添加以下两行来创建验证器。