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

news/2024/5/20 10:47:45/文章来源:https://blog.csdn.net/chengjun_java/article/details/121299079

见字如面,我是军哥!

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

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

a4e5971ffd00c47d1762613860792d9c.png

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

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

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

cb2f679fdeda39e4b6d9815c554a5c82.png

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

7862298488ac5dc71f52877e91b020a3.png

ef46c0a948b3758f7f1c2d18e0686bbb.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!

594e357bd517d5cb5d0ef6922262c873.png

1bbdc01a402f23b3cb20f0dcb9aa921a.png

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

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

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

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

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

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

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

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

“你的读者?”

“是的,军哥手记公众号,我不能说太多了,天机不可泄露,我得走了。”

说完,我就消失了。

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

「关于作者:军哥,前饿了么、贝壳技术总监,目前是一名自由职业者兼公司顾问,乐于结交朋友,也欢迎加我微信与我做朋友(公号输入框回复“w”即可),朋友圈做个点头之交!

另外军哥写了一些,关于个人如何快速成长、深度思考、程序员或产品经理能力模型、架构,OKR干货,技术管理等电子书资料,公号后台回复 “9”获取不谢。」

以往热文推荐:

从饿了么收购百度外卖,聊聊技术和之外的那些事!

5 条碎片化思考,条条与你有关!

空降了位前阿里的领导,三个月后我被离职了!

如何找到适合自己的副业?亲身经历!

去年一起写公众号的 10 位朋友只剩 1 位了!

为什么说优秀的程序员或产品都有这三个品质?


更多精彩,关注我公号,一起学习、成长

590bc30a640060c6013c401dc02f9c2f.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_754027.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java程序员进阶笔记实操—大型网站架构技术之负载均衡详解(3)

欢迎关注专栏&#xff1a;Java架构技术进阶。里面有大量batj面试题集锦&#xff0c;还有各种技术分享&#xff0c;如有好文章也欢迎投稿哦。 上一篇&#xff1a;Java程序员进阶笔记实操—大型网站架构技术之负载均衡详解&#xff08;2&#xff09; 本次分享大纲 软件负载均衡概…

使用SEP实现:禁止访问特定的网站

利用SEP自带的防火墙可以禁止客户所需要禁止的网站。具体操作如下&#xff1a; 1、点击【Policies】选【Firewall】&#xff0c;在右边右击&#xff0c;选择【Add】。 2、选择【Rules】&#xff0c;可以再【Policy name】里更改名字&#xff0c;便于识别。 3、选择【Add Rule】…

允许网站使用相机和麦克风_新一代网红神器 佳能G7 X Mark III相机评测

1英寸卡片机向来是很多玩家首选的随身摄影器材。一方面&#xff0c;1英寸传感器相较手机等常规装备而言具备更高的成像水准&#xff1b;另一方面&#xff0c;“小巧机身大光圈变焦镜头”的配置不仅带来了出色的便携性&#xff0c;同时还能满足各种复杂的拍摄需求&#xff0c;实…

怎么arm数据上传到云服务器_纵横数据:在日本服务器上搭建外贸网站怎么样?...

​​现在外贸建站赚取外汇已经成为不少企业的收入来源&#xff0c;而对于外贸网站的搭建&#xff0c;不少企业或者网站开发者都会选择使用wordpress程序&#xff0c;而且近几年采用wordpress搭建外贸用户的增长一直都比较快。那么使用wordpress搭建外贸网站有什么好处&#xff…

Magento网站迁移指南

上周五&#xff0c;为MKT同事迁移了一个从本机到GODADDY的MAGENTO系统。 中间出了不少状况&#xff0c; 现在写个迁移纲要&#xff1a; ~~~~~~~~~~~~~~~~ 1&#xff0c;网页和数据库文件上传&#xff0c;最好采用压缩方式&#xff0c;节约网络流量和布置时间。 2&#xff0c;如…

网站php.ini在哪,php.ini在哪

最近在centos中安装lamp环境&#xff0c;发现装完php之后&#xff0c;没有php.ini文件&#xff0c;那么php.ini在哪呢&#xff1f;正常情况下php.ini文件是在php的安装目录下的lib目录里&#xff0c;比如我的php安装目录在/usr/local/php/中,而我进到/usr/local/php/lib目录中却…

总用这个网站把ppt,doc转成PDF,还挺好用,记一下

2019独角兽企业重金招聘Python工程师标准>>> http://www.freepdfconvert.com/ 转载于:https://my.oschina.net/ahuaahua/blog/132714

10个帮程序员和站长减压放松的良心网站!

2019独角兽企业重金招聘Python工程师标准>>> 1. Calm 这是同类型中最火的网站了&#xff0c;站如其名&#xff0c;「平和」&#xff0c;通过自然的图像&#xff08;阳光下的暖流、淙淙的小溪等&#xff09;与缓缓的音乐&#xff0c;帮你在短时间内放松下来。 左侧有…

php网站栏目隐藏,phpcms 首页需要隐藏栏目的代码

找到首页模板搜索{php $num}在其后面增加代码即可{php if($r[ismenu]!1) continue;}完成代码如下{loop subcat(0,0,0,$siteid) $r}{php $num}{php if($r[ismenu]!1) continue;}{$r[catname]}更多>>{pc:content action"lists" catid"$r[catid]" order…

ie连接服务器被系统禁止,防止IE被流氓网站乱改

随着互联网的普及和网民队伍的壮大&#xff0c;网络也变的越来不安全。病毒、木马日益侵蚀着我们的网络&#xff0c;让我们感到网络上到处都存在着危险。尽管FireFox、Maxthon等的浏览器以其独特的功能和安全性被越来越多的用户接受&#xff0c;但是IE仍然是浏览器中的“老大”…

JSP网站开发基础总结《一》

经过JAVASE的学习相信大家对JAVA已经不再陌生&#xff0c;那么JAVA都可以干什么呢&#xff1f;做算法、应用程序、网站开发都可以&#xff0c;从今天开始为大家奉上JAVAEE之JSP动态网站开发基础总结。 既然是动态网站开发&#xff0c;那它与传统的静态网站有什么区别呢&#xf…

css3媒体查询实现网站响应式布局

响应式建筑设计、响应式家具设计、响应式办公设计&#xff0c;这些词可能是已有的专业名词&#xff0c;也可能是我自己想出来的一些名词。因为在生活中&#xff0c;我们常常会见到很多让人惊叹的设计&#xff0c;为什么同一套东西经过不同的方式变化之后会给人不同的使用感受和…

ubuntu下webbench作网站压力测试教程【webbench安装】

webbench最多可以模拟3万个并发连接去测试网站的负载能力&#xff0c;个人感觉要比Apache自带的ab压力测试工具好&#xff0c;安装使用也特别方便。 1. 安装教程 1.1 安装依赖 exuberant-ctags sudo apt-get install exuberant-ctags1.2 下载源码并安装 wget http://blog.s…

考试网站暂时关闭_高权重网站站长之家,站长专栏申请暂时关闭了!

站长之家&#xff0c;站长专栏申请暂时关闭了&#xff0c;做SEO的朋友应该知道站长之家是可以免费投稿的&#xff0c;且发布内容是可以带外链。不论是从SEO角度发布外链&#xff0c;还是软文推广方面来看&#xff0c;站长之家确实是非常不错的一个外链推广平台&#xff0c;近日…

php视频网毕业论文范文,毕业设计论文-基于PHP的精品课程网站的设计与实现.doc...

毕业设计论文-基于PHP的精品课程网站的设计与实现.doc还剩41页未读&#xff0c;继续阅读下载文档到电脑&#xff0c;马上远离加班熬夜&#xff01;亲&#xff0c;很抱歉&#xff0c;此页已超出免费预览范围啦&#xff01;如果喜欢就下载吧&#xff0c;价低环保&#xff01;内容…

网站重定向次数过多怎么解决_网站关键词排名怎么查询,网站排名差怎么解决?...

网站关键词的的排名可以为企业带来流量和客户&#xff0c;网站运营人员也为提升网站排名为工作的目标。那么在做网站排名的时候网站关键词排名是怎么查询的呢&#xff1f;网站排名差怎么解决&#xff1f;  一、查询网站排名的方法:1、手动查询我们可以在百度上搜索我们想要查…

我的第一个响应式网站zz

一些废话&#xff08;马克思主义乖巧&#xff09; 上班快四个月了&#xff0c;码了一堆无聊的页面&#xff0c;终于&#xff0c;来了一次好玩点的&#xff0c;要我做个响应式网站。正好之前有在看Bootstrap。只是光学习不练的话效率比较慢&#xff08;有跟着写demo&#xff09;…

网站开发流程以及HTML5简介(十三)

2019独角兽企业重金招聘Python工程师标准>>> HTML代码编辑工具 ExHtmlEditorExHtmlEditor是一个用于学习和编写HMTL的工具。在你边写代码时&#xff0c;就可以实时可视化查看最后的结果。支持HTML5, Javascript 和 CSS3 元素。UltraEdit ltraEdit 是一套功能超级强大…

图片上传到阿里云服务器_阿里云2核4G云服务器能做几个网站?

阿里云2核4G云服务器能做几个网站&#xff1f;技术方面阿里云对网站数量没有限制&#xff0c;只要计算性能和存储方面放得下&#xff0c;想放几个网站就放几个网站&#xff0c;另外网站程序效率以及网站访问流量也有很大关系&#xff0c;数据云安全防护来详细说下阿里云服务器2…

微信和网站不在同一个服务器,同IP空间服务器多个网站是否不利于SEO排名

同个IP空间服务器解析了多个站点&#xff0c;共享IP&#xff0c;站长们还是有点担心是否会出事不利于SEO排名。共享IP上放置的多个网站&#xff0c;俗话说物以类聚、人以群分&#xff0c;遇到些优质站点的小伙伴&#xff0c;搜索引擎自然会以为你站点也是优质的&#xff0c;如若…