昨天晚上写代码到深夜,一头扎到床上,沉沉睡去。
第二天醒来戴上眼镜,我发觉自己竟在一家咖啡厅,旁边的墙壁上悬挂着近期上映的英文电影招贴,包括《阿甘正传》和《肖申克的救赎》

这些片子都是1994年的代表作,我明白过来,自己竟然到了1994年的美国!
对面坐着一个帅哥,一边操作电脑,一边在不停地赞叹。
我探过头去,发现他正在看这个东西:
我讲道:那位伙伴,这难道不是安德森制作的浏览器么?它长得这般不中看,你为何不选用网景呢?
那个叫网景的,是做什么的?不过你这人真不一般啊,我在咖啡馆连续多日点单,你是头一个认出它的,并且清楚安德森这个人,想必也是位软件开发者吧,要不咱们一起合作试试?
“干什么啊?”
网络浏览器将是数字世界的核心,众多企业正积极接纳这一技术,它们借助文字处理软件编辑资料,再将其转化为网页格式,利用文件传输协议发布到服务器上,这其中蕴藏着巨大的商业价值。
“写个HTML会有什么商业机会?”
静态的网页显得乏味无趣,那些企业很快会意识到,只有能与访客互动的、动态的网页才具备实际的市场意义。我打算专门从事此类服务,为他们构建各类动态的互联网应用。说来惭愧,我还没来得及做自我介绍,我的名字是。
这个人名怎么这么熟悉?
既然已经时空穿梭,那就去探究一下1994年的动态网页是如何制作的吧。
我说:“我叫张大胖,主要用Java编程。”
“Java?那是什么语言?” 他两眼立刻放光了!
我意识到说漏嘴了,Java这时候还没诞生呢!
“其实叫C++--,一个小众语言。”
“和C语言相关,那就好,我们得用C语言写CGI脚本。”
我和他合伙开了个咨询公司,专门接开发动态网站的活儿。
但是项目启动时,我感到十分沮丧:既不存在前后端分离架构,也没有Java技术,更没有JSP和ASP,完全是依靠C语言来构建!
给大家看看:
启动程序时接收参数数量和参数字符串数组,然后执行主函数
指针params, 指针data, 指针dest, 指针s, 指针tmp
char *name, *age;
输出内容类型为文本html换行,
puts("Form Example ");
puts("My Example Form
");
puts("");
变量data获取环境变量QUERY_STRING的值
if(data && *data) {
params = data; dest = data;
while(*data) {
当数据等于加号时,目标位置赋值为空格字符
如果数据指针指向百分号,且其后两个字符都是十六进制数字,那么
将data加一后的值强制转换为字符类型,然后赋值给dest变量
data+=2;
} else *dest = *data;
data++;
dest++;
}
*dest = '\0';
s = strtok(params,"&");
do {
tmp = strchr(s,'=');
if(tmp) {
*tmp = '\0';
当字符串s与"名字"相同时,将name的值设置为tmp的下一个字符开始的字符串
如果字符串s不是"age",那么年龄age保持不变,否则年龄age增加1
}
} while(s=strtok(NULL,"&"));
输出"你好"加上名字,然后是"你"加上年龄,最后是换行符
}
puts("");
}
用一句话来说那就是:在C语言当中输出HTML代码。
这是人干的活吗?我都快写吐了!
:没有办法呢,用C语言来写CGI程序,用来生成动态网页,就是得这样做啊,顺便问一下,你会用Perl编程吗?
“就是那个写出来以后代码谁都不认识的语言?我不想用!”
日子久了,也实在难熬了:那些CGI脚本基本上就是用来操作表单,发送数据,进行筛选之类的,冗余的代码实在太多,究竟如何才能提升工作效率呢?
他时常思考这件事,某日,他觅得良策,将诸多常用功能悉数封装进一个C语言库,并将其“融入”NCSA Web服务器(彼时最为盛行),随后在服务器上增设了模板系统,便于便捷调用这些功能。
于是代码就是变成这个样子:
Form Example
My Example Form
Hi , you are years old
换句话说:就是在HTML中“混入”代码。
与CGI相比较,这种办法让程序开发者倍感轻松,我们的产出速度显著加快。
坦白讲,我之前就清楚这种技术,就是ASP和JSP,只是自身缺乏相应的能力,无法完成。
迅速觅得一位新客户,借助新手段为他们构建网络应用,接入数据仓库,充分应对他们纷繁复杂的要求。
用户数量增加后,客户的具体要求各有差异,因此持续扩充它的功能集合,从基础的解析组件逐步演变为集成条件标识,接着加入循环机制、函数调用等多元要素,最终形成了完整的语言体系。
把它们称为 Home Page,简称PHP。
我这才意识到,原来遇到了PHP之父!
紧接着,陆续有其他软件开发者登门拜访,向我们询问:,你们为何能够如此迅速地完成项目!
说:我有个人工具箱啊!
“那我能不能用?”
说:“可以啊,工具只是我的锤子,每个人都可以用我的锤子。”
我赶忙阻止他:“, 你把锤子给别人, 那咱们靠什么赚钱?”
“我不靠锤子赚钱,我卖的是解决问题的服务。”
我觉得他太笨了,怎么不靠卖自己的工具来挣钱呢?可以参考比尔盖茨的做法,过些时候把公司推向市场!
让我没想到的是,神奇的事情发生了。
PHP开发者开始提交修正程序了,他们发现了一些此前未被察觉的问题
到客户那里讲:我又推出一个更新版本,调整了这些,修正了那些。
客户十分认可,他们觉得我们的工作成效显著,不仅能够迅速实现功能,而且能够迅速解决故障。
我突然意识到:这不就是开源吗?
那会儿是1994年和1995年,开源这个概念尚未问世,当时仅有RMS在倡导自由软件。
随着众多开发者贡献补丁,PHP的功能持续增强,到了1995年,版本迭代达到一定阶段,团队决定正式发布PHP 1.0版本,标志着其正式走向成熟。

原来PHP就是这么起步的啊!
彰显了领袖的胸襟与气度,他舍弃了对PHP的独占管理权。
将项目的归属权交给他人之后,众多人士得以参与其中,PHP因此转变为集体的事业,而非个人的专属创作。
那个时刻,PHP的原始代码被存放在CVS系统里,我希望能把它迁移到, 但在那个年代,Git工具还未出现,更谈不上有平台了。
此地的运作模式并无上级约束,参与者自发形成若干独立单元,能够依据个人志趣,自主构建活动框架。
任人唯贤, 代码说话。
这真正地改变了PHP的本质。
某个周末,我再度来到那家咖啡馆,点了一杯咖啡,接着说道:认为你应当为PHP增添一些更复杂的功能了!
“比如泛型,注解,面向函数编程,之类。”
不可以,我期望把进入PHP的领域难度设置得非常小,无论是利用它还是为其献力。任何想要处理网络难题的人通常能借助PHP迅速找到简便的路径,许多标榜能处理网络难题的替代品过于繁琐,设想一下,你必须在周五前搞定任务,却要钻研800页的指南,实在令人抓狂。
“你有没有想过,将来PHP会统治Web?”
“哈哈, 有这种可能吗?”
那时候的人不曾想到,PHP会于网络浪潮里迅猛发展,与Linux、MySQL结合,持续拓展疆域。
调查表明,PHP在互联网领域占据主导地位,大约有八成的网页采用PHP技术构建!
“假如请你归纳一下,怎样才能建立一个杰出的开源项目,你会怎么讲?”
谈及此事,他立刻就讲个不停,因为他亲手将一个项目从无到有建立起来,实在非常有资格评论这件事!
假如你仅有一个新颖的主意, 就不会有人参与你的计划,因为每个人心中都有创新的想法。
倘若你的造物不够完善,那么旁人或许对你的作为缺乏兴趣,他们更倾向于自行设法应对。
只有你创造了极具价值的成果,人们才会聚集到你这里,他们会更愿意采纳你的方案,进而稍作修改以适应自身需求,如此一来事业才能不断壮大。
因此,启动一个开源项目的前提是处理一个让你长期纠结的难题,这个过程或许需要数月才能准确识别并攻克,接着要乐于听取早期用户的反馈,务必使这个工具能为更多群体提供便利。
最终能够选择交出主导权,与众人并肩奋斗,当他人借助你的程序达成各种目标时,你的开源工程便算获得了成就!
“太棒了,我希望我的读者们都能看到这段话。”
“你的读者?”
的确,码农翻身头条号,涉及内容不能详述,机密信息不宜外泄,因此我需要暂时告辞。
说完,我就消失了。
扫一扫在手机端查看
我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求,请立即点击咨询我们或拨打咨询热线: 13761152229,我们会详细为你一一解答你心中的疑难。


客服1