我穿越到了1994年,终于发现了现在80%的网站都用PHP的原因!

UE4_SpeedTree Shader源码分析 目录 1.UMaterialExpressionSpeedTree::Compile 2.Compiler->SpeedTree 3.GetSpeedTreeVertexOffset 4.Scene中的SpeedTree应用 (Scene->UpdateSpeedTreeWind) 5.GetSpeedTreeVertexOffsetInner 由于之后做风场,也需要在S... 阅读详情

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

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

c3b382162e3ddda3e042abffff0749b3.png

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

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

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

1f6b599cf632e394cb647c53a8e7c649.png

3e483bc03cac24f11488eb7a40e8551c.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的诞生。

4be3003d3933cca9a8c04239ddfed9d9.png

4bbfeee436dafc829c49ad106bb72b7d.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!

599b9e4173d847068c35809d559815e2.png

23fb78c3f309ea54926bf7ab98c6851e.png

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

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

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

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

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

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

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

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

“你的读者?”

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

说完,我就消失了。

后记:这次尝试了一个新的写法,让张大胖穿越到了1994年,以旁观者的身份讲解了PHP的起步历程。最精华的部分就是末尾关于“如何创建一个成功的开源项目”。

有人可能要问,哪些情节是真的?这个要卖个关子,只要在公众号回复“PHP之父”就能得到答案。

(完)

我的新书《半小时漫画计算机》京东、当当热销中,五折优惠,不容错过,长按二维码即可购买

009ffbad7a180deb9449798f687ba552.png

另外,没有看过第一本《码农翻身》的小伙伴可以考虑下,也是5折,点击阅读原文即可购买。

用gm/Id方法设计简单折叠式共源共栅放大器 gm/Id 阅读详情

相关推荐

反射机制——通过反射调用service中方法

需求:现在有一群service接口,有同一个方法名称,内部逻辑除了调用不同的调用自身的方法外其他基本都一致,那现在就需要一个独立的方法来勾勒出这个方法 1.SpringContextUtil package com.XXX.report.util; import org.apache.log4j.Logger; import org.springframework.beans.BeansE...

东天里的冬天 8522

2024年还有多少人在使用PHP?

PHP不仅因其在WordPress等平台上的广泛使用而重要,还因为其性能改进、现代功能引入以及活跃的社区和资源。这些因素共同使得PHP在2024年仍然是一个优选的Web开发语言。根据JetBrains的调查,在过去7年中,大约20-30%的开发人员使用过PHP语言。根据W3Techs的最新数据,2024年PHP仍然支持76.5%的网站,这一数字在一年内下降不到1%(截至2023年为77.3%)。尽管这一数字有所下降,但这表明PHP仍然是Web开发中非常流行的语言。

cd_farsight的博客 978

Project 编制进度计划【项目管理】

Project 项目管理编制进度计划详解。

m0_52861684的博客 5089

2025 年,PHP 依然是 Web 开发的中流砥柱?

在技术浪潮不断奔涌向前的2025年,各种新兴编程语言层出不穷,竞相争夺开发者的注意力。然而,有这样一门“老将”语言,依旧在Web开发领域稳稳占据着重要地位,它就是PHP。从诞生之初到如今,PHP已走过近30个年头,历经岁月洗礼,却始终保持着旺盛的生命力。那么,在当下这个技术日新月异的时代,PHP究竟凭借什么持续散发魅力,它的现状又如何呢?

weixin_54447959的博客 1582

从零到一:ArduPilot无人船PID调参实战指南

本文详细介绍了ArduPilot无人船PID调参的实战指南,从基础参数设定到高级调参技术,帮助用户掌握水面环境下的PID控制逻辑。通过案例分析和参数示例,解决无人船在空载、负载变化及不同水域环境中的航行问题,提升无人船的稳定性和精确度。

weixin_29266647的博客 507

基于Claude AI的Dex个人操作系统:从零部署到高效工作流实战

在当今信息过载的时代,个人知识管理(PKM)和任务自动化成为提升效率的关键技术。传统PKM工具如Notion、Obsidian虽然提供了强大的信息存储能力,但本质上是被动的数据库,需要用户手动维护结构和链接,容易形成信息孤岛。其核心原理在于通过预设的文件夹结构和智能路由,实现信息的自动归类与关联。这种自动化同步机制的技术价值在于彻底消除重复劳动和决策疲劳,让用户从繁琐的信息整理中解放出来,专注于高价值思考。在实际应用场景中,它尤其适合需要处理大量会议、任务和人际关系的知识工作者,如产品经理、项目经理和团队领

weixin_42521558的博客 379

昔日辉煌不再,PHP老矣,尚能饭否?

韩天峰,识沃科技 CEO,Swoole 开源项目创始人,PHP 官方 PECL 开发组成员。曾任好未来学而思网校首席架构师,在腾讯朋友网、淘宝搜索、虎牙直播等互联网企业担任架构师和技术负责人。

QcloudCommunity的博客 2931

记录思科cisco交换机升级iso步骤

Cisco Nexus 93180交换机版本升级

a635161812的博客 4378

为什么用php的人越来越少了?

可以明显看出,这样的分工是不合理的,客户端的工作量都移动了服务器端,假如有较高的并发要求,后端的开销是巨大的,因此前后端分离的概念也随之提出,后端提供一个api接口,接受请求返回数据,客户端拿到数据,渲染模板,分工变得合理了,同时数据的通用性更强了,android,ios等客户端也可以获取数据。私以为,一个万人骂娘说速度慢的Python都能在性能上和Php齐平,在社区上齐平(嗯当然中文社区不太平)的现在,Php由以前的不可取代变成了可以取代并且有全面更好的选择,剩下国内用Php最大的优势大概是人多价低了。

爱编程的鱼的博客 3725

使用 MATLAB/Simulink 对基于同步发电机的双机系统进行建模

双机系统(Two-Machine System)是电力系统中用于研究动态稳定性和控制策略的一个典型模型。它由两台同步发电机通过输电网络相互连接,模拟实际电网中的互联操作。当发生短路故障时,系统的暂态稳定性会受到挑战,可能导致发电机失步或电压崩溃。本教程将带你使用 MATLAB/Simulink 对基于同步发电机的双机系统进行建模,并对其在短路故障条件下的暂态稳定性进行仿真和分析。

amy_mhd的博客 217

如何通过Davinci Configurator来新增一个BswM仲裁规则

详细介绍如何通过Davinci Configurator来新增一个BswM仲裁规则。

initiallizer的博客 773

2022了 为啥 php 还有这么多人在用?

php和java的选择也是如此,上过大学的都认为java是正统,因为从学校里就学,大学课本里就有,java被很多程序员当成了最高的追求,学java,走java学习路径是个正统路线,认为学php属于歪门邪道,不够系统,永远都做不专业。反而用了,把简单的问题复杂化了。我之前用php制作了一个百万日活的论坛,里面的功能也是很复杂的,客户端管理后台都有,别人听我讲了里面的功能,很多人觉得这个项目是个有点规模的项目,很多人做的,实际上就是2个后端加1个前端做的~~后端部署都是公司买的云服务,我来搭建的~~

PHP1155的博客 2626

BEV和OCC学习-4:数据准备生成pkl文件(NuSences)

info[‘cam_instances’][‘CAM_XXX’][i][‘bbox_3d’]:长度为 7 的列表,以 (x, y, z, l, h, w, yaw) 的顺序表示实例的 3D 边界框。info[‘cam_instances’][‘CAM_XXX’][i][‘bbox’]:2D 边界框标注(3D 框投影的矩形框),顺序为 [x1, y1, x2, y2] 的列表。info[‘cam_instances’][‘CAM_XXX’][i][‘attr_label’]:实例的属性标签。

zfjBIT的专栏 1701

我穿越到1994年,终于发现80%的网站都用PHP的原因!

见字如面,我是军哥!昨天晚上写代码到深夜,一头扎到床上,沉沉睡去。第二天睁开眼睛,我发现自己居然坐在一个咖啡馆里,旁边的墙上贴着最新的英文电影海报《阿甘正传》、《肖申克的救赎》这都是199...

chengjun_java的专栏 457

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

全球 77.5% 的网站,都在使用“世界上最好的语言” PHP!

整理 | 郑丽媛出品 | 优快云(ID:优快云news)27 年前的今天,即 1995 年 6 月 8 日,拉斯姆斯·勒多夫公开发布了 PHP,当时的他肯定没有想到,这个最初仅为维护其个人网页而创建的编程语言,会如此“世界闻名”。“PHP 是世界上最好的 Web 开发语言”,“PHP 是有史以来最好的语言,没有之一”——资历稍长的程序员可能对这两句话有所了解:当年 P......

优快云资讯 4346

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

为什么程序员喜欢深更半夜写代码

程序员自己也常说,工作效率最高的时候总是在深夜,不是凌晨还在写代码就是凌晨爬起来写代码。 深夜之所以工作效率高是因为不易分心,额!其实仔细想想晚上和白天并无多大区别,但程序员们也总是有自己的理由,大致分为一下三点。 1.生产型时间表 记得曾看过一篇关于时间表的文章,他们把时间基本分为两类:管理型和生产型时间表,所谓的管理型时间表是把一天的时间分成每小时来安排,就算是有别的事打扰到你也只是浪费

坚持!! 4041

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

为什么做博客都用php,为什么要用PHP Migrations

曾经也思考过,代码管理可以用代码版本控制git、svn来协同,怎么数据库字段就不能用git、svn来同步?后来在团队开发中认识到Migrations数据库迁移工具,我的理解是【数据库字段同步工具】,正是我想要数据库字段同步工具;原来Laravel和Symfony有集成这样的工具,孤陋寡闻了,应该多学些框架,了解一下其他框架的精髓,哈哈哈。在团队开发中,学会了Migrations基本操作,有一天想查...

weixin_42611310的博客 123

渗透测试对网站漏洞代码分析

近期许多网民跟我说为何出現系统漏洞的网站程序全是PHP开发设计的,而非常少有JAVA和Python的渗透案例,先不用说python,就PHP和Java谈一谈。在这以前,先何不记牢那么一个依据(眼底下也无需担心它对吗):PHP网站系统漏洞类型多但不繁杂,Java网站系统漏洞则反过来。 为什么在被实战渗透中的网站大部分是PHP代码开发设计的?这个问题可以先放一放,先说下边的这几个问题。 1.为...

网站安全专家 519

深夜写代码…

       周六日了,可是新闻管理系统还没来得及做,打算周末补补,可是白天宿舍太吵,索性就晚上写,周末这几天每天晚上都写到1点多,直到笔记本电池没电(注:宿舍23点熄灯)... 我发现晚上写程序思路非常清晰,效率出奇的高,而且过了12点之后都没有困意了,要不是没电了我觉得我能写到天亮…     晚上…晚上…  不错  ^_^    ps:不过可能对身体不好,程序员的身体,身体!注意,

backslash的专栏 1027

2013年3月6日最新网站服务器端开发语言,PHP接近80%

Usage of server-side programming languages for websites How to read the diagram:This diagram shows the percentages of websites using various server-side programming languages. Seetec...

weixin_34237596的博客 140

为什么PHP在很多公司遭到弃用?

前有以Java为上的学术派地位难以撼动,后有新兴崛起的Python等语言的猛烈夹击。没错,如今PHP的地位很尴尬。 PHP相对于其他语言,编辑简单,实用性强,更适合初学者。跨平台性强优势明显,由于PHP是运行在服务器端的脚本,可以运行在UNIX、LINUX、WINDOWS、Mac OS下。而且PHP效率奇高,系统消耗资源相当之少。这是当时很多人选择学习或者使用PHP的初衷。但是现在为何PHP被很...

码农王也的博客 1万+

php用什么系统好_php编程用什么系统好?

PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。根据动态网站要求,PHP语言作为一种语言程序,其专用性逐渐在应用过程中显现,其技术水平的优劣与否将直接影响网站的运行效率。其特点是具有公开的源代码, 在程序设计上...

weixin_30367805的博客 463

php占市场份额,PHP 目前的市场占用率(Market Share)

看到越来越多的站点以及B/S系统在使用 PHP 开发了,下面是Nexen.net对目前PHP市场占有率(market Share)的最新统计: 该站点按PHP以及版本的比率做了详细的统计,另外还根据域名做了统计。台湾(.tw)使用PHP的站点远大于中国国家域名(.cn)。值得我们深思看到越来越多的站点以及B/S系统在使用PHP开发了,下面是Nexen.net对目前PHP市场占有率(market S...

weixin_33736514的博客 2492

php语言运用广泛吗,php语言运用多么

PHP即“超文本预处理器”,是一种通用开源脚本语言。PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言。PHP独特的语法混合了C、Java、Perl以及 PHP 自创的语法。利于学习,使用广泛,主要适用于Web开发领域。php语言运用多么?php语言运用很多。● PHP是目前最流行的编程语言,这毋庸置疑。它驱动全球超过2亿多个网站,有全球超过81.7%的公共网站在服务器端采用PH...

weixin_29894169的博客 378

为什么大部分大型网站都用PHP?

网站      操作系统  Web服务器        脚本语言Sina     FreeBSD  Apache/2.0.54      PHPYahoo    FreeBSD  Apache             PHP网易      Linux    Apache2.24         PHP/Java Livedoor FreeBSD  Apache             PHP/Pe

做技术强人,也做好男人。 2352

InnoDB 内存结构总览:Change Buffer、AHI 与 Log Buffer

本文系统梳理InnoDB内存结构中的ChangeBuffer、Adaptive Hash Index(AHI)与LogBuffer。ChangeBuffer缓存二级索引页不在内存时的变更,减少随机IO,仅在页加载时合并;聚簇索引修改立即执行,因数据本身不可延后。AHI基于高频等值查询自动构建哈希索引,加速定位,仅支持等值操作。LogBuffer为redo log内存缓冲,配合磁盘日志实现崩溃恢复。三者均服务于性能优化,其中ChangeBuffer与AHI共享BufferPool空间,而LogBuffer独立

bksczm的博客 303
上一篇: 谁能悄悄告诉我:EDG到底是啥?
下一篇: 各位,说一件事
码农翻身
码农翻身 《码农翻身》作者 《码农翻身》作者
博客等级 码龄8年 3万+粉丝 1084原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值