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

第二天晨曦初露,我缓缓睁开双眼,惊讶地发现,自己竟然坐在一家咖啡馆中,而咖啡馆墙壁上,则贴满了时下流行的英文电影海报,诸如《阿甘正传》和《肖申克的救赎》等。

php做网站

这些影片均是1994年的经典之作,我猛然意识到,自己竟然置身于1994年的美国!

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

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

php做网站

我问道:“这浏览器是安德森制作的吧?看着挺难看的,你为何不选择使用网景浏览器呢?”

网景,这是个啥玩意儿?但你可真不一般,我在这家咖啡馆喝咖啡好些天了,你算是第一个能看懂其中的门道的人。而且你对安德森也有所了解,看来你也是个程序员。不如咱们合作一把如何?

“干什么啊?”

浏览器无疑是互联网发展的关键所在,目前众多企业纷纷热衷于采纳它。他们用Word来编辑文档,再将这些文档转换成HTML格式,并通过FTP上传至网络。这其中蕴藏着巨大的商机。

“写个HTML会有什么商业机会?”

静态的网站往往显得单调乏味,而这些企业很快便会意识到,只有那些能够与用户进行互动的动态网站,才真正具备商业潜力。我计划提供专业的咨询服务,帮助他们打造多样化的动态Web应用。顺便提一下,我还没有自我介绍,我的名字是……

这个人名怎么这么熟悉?

既然我穿越到了这里,便想探究一下1994年那些动态网站的构建过程。

我说:“我叫张大胖,主要用Java编程。”

“Java?那是什么语言?” 他两眼立刻放光了!

我意识到说漏嘴了,Java这时候还没诞生呢!

“其实叫C++--,一个小众语言。”

“和C语言相关,那就好,我们得用C语言写CGI脚本。”

我和他合伙开了个咨询公司,专门接开发动态网站的活儿。

然而,项目启动之初,我便陷入了困境:缺乏前后端分离的设计,没有Java,也没有JSP,更别提ASP,整个项目竟然完全依赖于C语言!

给大家看看:

执行主函数,参数包括整型变量argc和字符指针数组argv。
定义字符指针params、data、dest、s和tmp。
  char *name, *age;
输出内容类型为:text/html,回车换行符。
  puts("Form Example");
  puts("

My Example Form

"); puts("
"); puts("Name: "); puts("Age: "); puts("
"); puts("
"); 获取环境变量"QUERY_STRING"的值,并将其赋值给变量data。 if(data && *data) { params = data; dest = data; while(*data) { 若数据指针指向的内容等于正号,则目标指针指向的字符将被设置为空格。 若数据指针指向的字符为百分号,且其后两位字符均为十六进制数,则执行相应操作。 dest赋值为data字符串中从第二个字符开始的子串转换成的字符类型值。 data+=2; } else *dest = *data; data++; dest++; } *dest = '\0'; s = strtok(params,"&"); do { tmp = strchr(s,'='); if(tmp) { *tmp = '\0'; 若字符串`s`与“name”不进行区分大小写比较后相等,则将`name`的值设为`tmp`加1。 若字符串s与"age"相等,则将age的值设为tmp加1。 } } while(s=strtok(NULL,"&")); 输出信息如下:“你好,%s,你现在的年龄是%s岁。” } puts(""); }

用一句话来说那就是:在C语言当中输出HTML代码。

这是人干的活吗?我都快写吐了!

确实如此,用C语言来编写CGI脚本,以实现动态网页的功能,这是必须的途径。而且,顺便问一下,你对Perl语言熟悉吗?

“就是那个写出来以后代码谁都不认识的语言?我不想用!”

日子久了,便觉得难以忍受:“这些计算机生成图像的脚本大多只是处理表格、提交数据、筛选等操作,重复的代码实在太多,究竟该如何提升工作效率呢?”

他时常思考这一问题,某日,他灵机一动,决定将那些常用功能整合进一个C语言库中,并将其嵌入当时广泛使用的NCSA Web服务器中php做网站,随后又增设了一个模板系统,使得调用这些功能变得简便易行。

于是代码就是变成这个样子:

Form Example

My Example Form

Name: Age:
Hi , you are years old

换句话说:就是在HTML中“混入”代码。

与计算机生成图像技术相较,此方法对软件开发者而言极具亲和力,使得我们的工作效率显著提升。

坦白讲,我其实对这种技术手段,比如ASP和JSP,并不陌生,只是自身缺乏相应的技术能力,因此无法将其付诸实践。

迅速锁定了一位新客户,借助新型工具,为其量身定制Web应用程序,实现与数据库的顺畅对接,全面满足其多样化的需求。

客户数量的增加带来了多样化的需求,因此,该系统不断丰富其功能,起初只是基础的解析器,随后逐渐融入条件标签、循环标签以及函数等复杂元素,如今它已经演变为一门完整的语言。

把它们称为 Home Page,简称PHP。

我这才意识到,原来遇到了PHP之父!

不久,其他程序员纷纷前来询问,好奇地问道:你们是如何如此迅速地完成开发的呢?

说:我有个人工具箱啊!

“那我能不能用?”

说:“可以啊,工具只是我的锤子,每个人都可以用我的锤子。”

我赶忙阻止他:“, 你把锤子给别人, 那咱们靠什么赚钱?”

“我不靠锤子赚钱,我卖的是解决问题的服务。”

我暗自思忖,他怎么这么不明智,为何不利用自己的工具来赚取收益呢?何不效仿比尔·盖茨,待时机成熟便将公司上市!

让我没想到的是,神奇的事情发生了。

PHP用户们已经开始提交补丁——他们竟然发现了之前未曾察觉的漏洞!

于是,我向客户汇报道:我已经推出了一个更新的版本,对这里进行了调整,对那里进行了修改。

顾客对我们的服务感到十分满意,他们觉得我们的工作效率极为出色,不仅能够迅速实现功能需求,而且能够迅速解决程序中的错误。

我突然意识到:这不就是开源吗?

当然,在1994年和1995年那个时期,"开源"这一概念尚未问世,那时人们所倡导的仅仅是RMS所推崇的自由软件理念。

随着越来越多的人提交修正方案,PHP的功能不断完善,到了1995年,鉴于条件已经成熟,官方正式宣告了PHP 1.0版本的问世。

php做网站

原来PHP就是这么起步的啊!

彰显了一位领导者的宽广胸怀与高尚气度,他毅然决然地放弃了对于PHP的独占控制权。

将项目的所有权转让给他人,使得众人得以共同参与,PHP因此变成了众人的共同项目,而非单一个人的专属。

那时,PHP的源代码存储在CVS系统中,我打算将其迁移至其他位置,然而那个时期Git尚未问世,又怎能提及的存在呢?

此处缺乏管理机制,众人形成各自独立的小团体,他们能够依据个人兴趣自发地组织起来。

任人唯贤, 代码说话。

这真正地改变了PHP的本质。

那是一个周末,我再次光临了咖啡馆,一边品味着咖啡,一边说道:“我觉得PHP应该增添一些更为高级的功能!”

“比如泛型,注解,面向函数编程,之类。”

不是的,我期望将踏入PHP领域的门槛设定得相当低,不论是运用它还是为其贡献力量。对于那些寻求解决Web问题的人来说,PHP往往能提供非常直观的解决方案;而许多宣称能解决Web问题的替代方案却过于繁琐复杂。试想,你需要在周五前完成工作,却不得不翻阅800页的指南,这无疑让人感到极度沮丧。

“你有没有想过,将来PHP会统治Web?”

“哈哈, 有这种可能吗?”

往昔无人预见,PHP将在网络洪流中迅猛发展,与Linux、MySQL结盟,持续扩大其势力范围。

数据显示,PHP在Web领域占据主导地位,约有80%的网站采用了PHP技术。

php做网站

若要我对创建一个成功的开源项目的方法进行概括,我的回答会是:首先,需要有一个明确且吸引人的项目理念,其次,构建一个活跃的社区至关重要,再者,确保代码质量与良好的文档支持,最后,持续的项目维护和社区互动是不可或缺的。

谈及这个议题,他顿时话匣子打开,滔滔不绝,这全因他亲历从无到有打造一个项目的全过程,对此他有着丰富的经验和充分的发言资格。

若你仅持有独到的创意,鲜有人会投身你的计划,因众人皆怀揣着出色的点子。

若你所造之物尚显稚嫩,他人或许会对你的所作所为嗤之以鼻,他们倾向于采取自有的方法去解决难题。

唯有你打造出极具价值的成果,众人方会聚拢于你身旁;他们更倾向于采纳你的代码,进而稍作拓展以应对个人需求,如此方能推动雪球持续滚动。

因此,若欲启动一个开源项目,你需先克服一个长期困扰你的难题,这一过程可能耗时数月,才能精准定位并解决该问题。之后,你还需采纳早期用户的建议php做网站,竭尽全力使该工具对更广泛的用户群体具有实用性。

最终,你可以选择放手,与他人携手共进,一旦他们运用你的代码去实现各自的愿望,你的开源项目便宣告胜利!

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

“你的读者?”

确实,作为码农翻身头条号的作者,我无法说得过多,其中的奥秘不宜外传,现在我得离开了。

说完,我就消失了。