外链论坛

 找回密码
 立即注册
搜索
查看: 10|回复: 1

我穿越到了1994年,最后发掘了此刻80%的网站都用PHP的原由

[复制链接]

2853

主题

220

回帖

9909万

积分

论坛元老

Rank: 8Rank: 8

积分
99099672
发表于 2024-10-4 17:09:03 | 显示全部楼层 |阅读模式

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

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

这都是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发展起一个项目,简直太有发言权了!

倘若仅有一个很酷的想法, 人会加入你的项目,每一个人都有很酷的想法。

倘若你创建的东西是半生不熟的,那样人们可能对你做的事情不屑一顾,她们会用自己的方式来处理问题。

仅有你构建了足够有用的东西,大众才会来到你的身边,她们更易接受你的代码,而后稍微扩展来处理她们自己的问题,这般雪球才可滚动起来。

因此,要起始一个开源项目,你必须处理一个困惑你一段时间的问题,这可能会花费数月的时间才可找到真正的问题并处理掉,而后你必须接受初期采用这的意见,尽最大奋斗让工具对更广泛的受众有用。

最后能够思虑放弃掌控权,让其他人和你一块奋斗,当人们用你的代码做她们任何想做的事情的时候,你的开源项目就成功了!

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

“你的读者?”

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

说完,我就消失了。

回复

使用道具 举报

2920

主题

1万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99139495
发表于 前天 18:33 | 显示全部楼层
感谢你的精彩评论,带给我新的思考角度。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|外链论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-10-18 21:16 , Processed in 0.069937 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.