搜索
首页后端开发php教程编程语言:变革创业思维的工具

编程语言:变革创业思维的工具

Nov 26, 2016 pm 01:48 PM
工具编程语言

《麻省理工科技评论》本周刊文称,编程语言塑造了用户的思维方式。这也可以反映科技行业创业公司的策略,以及他们为何有能力实现自我变革。

以下为文章全文:

  作为Twitter、Hulu和许多当代互联网服务的开发语言,Ruby备受关注。而当日本计算机科学家松本行宏决定设计这一语言时,他借鉴了萨莫埃尔·德拉尼(Samuel R. Delany)1966年科幻小说《Babel-17》中的概念。这部小说的核心是一种名为“Babel-17”的人造语言,能明显提高使用者的思维水平。“Babel-17是一种准确的分析语言,能让你精通任何技术。”小说主角曾经这样说。通过Ruby,松本行宏希望实现类似的目标:变革及优化程序员的思维方式。

  这一目标听起来非常宏大,但松本行宏的观点已经成为主流。软件开发者通常都会相信,编程语言足以扭转他们的思维方式,从而改变解决问题的方法,甚至改变他们对于应该去解决哪些问题的认识。这也是他们估计某家公司、某一产品和竞争对手规模的方式:“你们使用什么语言?”

  对编程语言的审视将有助于外部人士了解,这些软件公司为何能如此强大,有着如此高的价值,以及它们的产品和服务如何融入我们的生活。这些企业的内部决策,即使用什么样的语言,无论是Ruby、PHP还是C,将对我们所有人产生影响。如果你希望知道,为何 Facebook 看起来及用上去是当前的模样,以及未来会有什么样的发展,你需要去了解马克·扎克伯格(Mark Zuckerberg)使用的编程语言PHP。

  在程序员之中,PHP或许是最不受尊重的编程语言。由于存在许多缺陷,知名技术博客Eevee认为,PHP是“糟糕设计的一块碎片”,而愿意使用PHP的开发者很业余。编程问答网站Stack Overflow联合创始人杰夫·艾特伍德(Jeff Atwood)则表示:“聪明的工程人才纷纷前往Facebook,这非常奇怪。他们在Windows XP环境中开发PHP代码。他们是黑客,但这里的‘黑客’是一种贬义。”艾特伍德将PHP称作“笨拙的巨兽”、“流行病”,以及吸引神秘事件爱好者的“鬼屋”。

  成功的编程语言有着整体化的哲学,或是一整套逻辑自洽的指导原则,以组织词汇和语法(即提供给程序员的指令)。但PHP并非如此。这一语言的设计者拉斯姆斯·莱尔多夫(Rasmus Lerdorf)曾经承认,他只是将许多东西混合在一起。“我不知道怎么阻止这一切。”他在2003年接受采访时表示,“我完全不知道如何编写一款编程语言,我只是在这一过程中不断加入新的逻辑步骤。”

  程序员最喜欢讲的一个例子是PHP函数“mysql_escape_string”。在将信息发往数据库之前,这一函数能从中去除恶意输入请求。(恶意输入的例子包括网站上表格请求用户的电子邮件地址,以及黑客植入一段代码窃取网站用户的密码。)在发现该函数的一个漏洞之后,一个名为“mysql_real_escape_string”的新版本被创建出来,但老版本并未被替换。因此目前的情况就像是在飞机驾驶舱中并排放两个功能类似的按钮:其中一个按钮用于放下起落架,而另一个则用于安全地放下起落架。这不仅违背常理,甚至会引起灾难。

  尽管许多人都不喜欢PHP,但PHP仍是很大一部分网站的基础。一项研究显示,在当前互联网的所有域中,基于PHP技术的部分多达39%。Facebook、维基百科,以及领先的发行平台WordPress均利用了PHP来开发。这是由于,尽管存在许多缺陷,但PHP对入门者来说几乎完美。PHP的名称最初是“个人主页”的英文缩写。通过这一语言,程序员可以方便地在静态HTML页面上添加日期和用户姓名等动态内容。PHP的兴起推动了从网站开发向网页应用开发的飞跃,而开发者甚至不必是专业人士。

  维基媒体基金会负责维基百科项目的首席软件工程师奥利·利夫尼(Ori Livneh)表示,PHP易于上手的特点正是维基百科成功的关键。不过他指出:“我一直讨厌PHP。”由于对PHP的依赖,维基百科在用户规模扩大之后出现了设计漏洞。(正是由于这一原因,在2008年之前,维基百科一直没有支持移动设备。而直到2013年,该网站才提供了对用户友好的编辑界面。)不过,基于PHP,一些不熟悉软件编程的人士也可以开发新功能。例如,利用PHP语言,维基百科在“埃及古物学”条目上展示了象形文字,并可以在页面上实现音乐播放。

   谷歌 无法使用PHP语言,因为当前的谷歌需要非常出色地完成一项工作,即迅速而准确地进行搜索。因此,谷歌搜索引擎采用了更强大的语言,例如Java和C++。与谷歌相比,Facebook是一个小规模实验的集散地,一个按钮、消息流和小发明的大杂烩。在这种情况下,PHP可以更快地实现功能。

  你甚至可以想象,哈佛大学宿舍里的扎克伯格如何在决定性时刻选择Facebook的开发方式。他需要以最小的成本使网站上线。网络发展速度很快,用户的喜好变幻无常,把握机会的唯一方式就是成为市场的先行者。究竟是做成一盘大杂烩,还是一份精致的意大利面,这无关紧要。他首先需要完成这一网站,让用户可以使用。他考虑的并不是代码是否优美,而是如何让好友们登上这一名为TheFacebook的网站,评价他们熟悉的女生。

  今天,Facebook的市值超过2000亿美元,而该公司办公室的墙上有这样的标语:“完成工作比完美更重要”,以及“快速行动,打破僵局”。这些大胆的口号是为了确保员工符合该公司的“黑客”文化。而这也准确体现了PHP的价值。快速行动,打破僵局,这正是PHP的本质,代表了PHP程序员思考问题的方式。你甚至可以这样说:PHP本身创造并维持了Facebook的文化。

  秘密武器:更强大的语言

  如果你希望找到与PHP截然相反的另一种理念,看看另一个极端是什么样,那么金融交易公司Jane Street Capital位于纽约下曼哈顿的总部值得一看。这家有着400名员工的公司目前处理着美国每日证券交易量的约2%。

  当我见到Jane Street Capital技术主管雅隆·明斯基(Yaron Minsky)时,他正坐在办公桌旁,旁边放着一台恩尼格玛密码机,这是为数不多仍然现存的二战时代装备之一。我原本以为,这就是他房间中最酷的秘密武器,但随后我发现自己犯了错误。明斯基谈到了一款名为OCaml的编程语言。作为计算机科学博士,明斯基于10年前说服自己的老板,使用OCaml重新编写公司的整个交易系统。

  在此之前,几乎没有人在实际应用中使用过OCaml。这一语言的设计者是法国一家研究机构,而最初目的是为了优化能自动证明数学定理的计算机系统。明斯基在自己的研究生阶段接触到了这一语言。他认为,这一语言可以取代Jane Street Capital交易系统中使用的Excel电子表格。

  OCaml的最大特点在于“输入检查系统”。这类似于 微软 Word的语法检查功能,能在系统认为错误的代码下方使用绿色波浪线做出标记,随后禁止这样的代码运行。利用这一系统开发出的程序有着极强的可靠性,而当所开发的软件每天需要处理300亿美元的交易时,这一点很重要。

  明斯基表示,通过捕捉漏洞,OCaml的输入检查系统使Jane Street Capital的程序员可以专注于更高大上的问题。而如果该公司能将OCaml的检查功能进一步内化,那么将培养出一种习惯,使程序员不可能再去思考错误的想法。

  此外,为了让输入检查工具发挥功能,程序员需要在代码中添加复杂的注释。这就好比说,Word的语法检查工具要求你对所有句子进行标注。在输入受限制的情况下编写代码有些麻烦,甚至会令人丧气。而更糟糕的是,与其他编程语言相比,OCaml会涉及非常抽象的数学,从而给大部分程序员带来困难。

  不过,这一语言的精确性对某些人来说极具吸引力,同时也给Jane Street Capital带来了不同寻常的招聘优势。尽管一些软件开发者不理会PHP的缺陷而加入Facebook和维基百科,但明斯基表示,OCaml语言以及他的著作《现实世界的OCaml》有助于吸引优秀的编程人才。吸引力并不仅仅在于语言,也在于使用这一语言的人群。在Jane Street Capital,员工在休息时间会去下象棋。这种智力竞争的文化似乎与对OCaml语言的使用密切相关。

  谷歌似乎也试图凭借自主设计的高性能语言Go来实现同样的目的。为了让网络服务变得更优雅、更高效,针对大型网络服务背后的服务器开发更先进的软件颇有益处。此外,对于喜欢新鲜事物、喜欢挑战困难的程序员来说,这也是一种吸引力。

  适当时机:发展壮大之后

  2010年底,Facebook曾遭遇过一场危机。PHP并不是一种强调代码性能的语言,但当时Facebook出现了这方面的需求。Facebook的发展速度很快,因此如果不作出一些重大改变,那么该公司将会走向失败。

  彻底改变编程语言并非可选方案之一。Facebook使用PHP编写的代码已达到数百万行,从事这一开发的工程专家已有数千人,而所形成的产品已积累了数亿用户。因此,Facebook的多名高级工程师成立了一个小团队。他们试图发明一种方式,使Facebook正常提供服务,同时不必放弃自己的“母语”。

  整个解决方案的一部分是开发一款编译器,将Facebook的PHP代码翻译成运行速度更快的C++代码。而另一部分则是计算机语言工程领域的一项壮举:继续给Facebook程序员带来PHP风格的文化,同时让他们编写可靠性更高的代码。

  这一“救援小组”为此设计了PHP语言的一个变种,即Hack。Hack是一种带可选输入检查系统的PHP语言。你既可以像以往一样,快速编写出代码混乱的PHP程序,也可以遵循系统要求,通过添加注释让系统来检查代码的正确性。这一输入检查工具完全使用OCaml来开发,而这并非巧合。Facebook希望程序员使用熟悉的语言来快速编写代码,但并不希望他们将事情搞错。(去年,扎克伯格公布了Facebook新的工程口号:“在确保基础设施稳定的情况下快速行动。”)

  与此同时,Twitter也在进行类似的转型。Twitter的开发最初基于Ruby on Rails。这是一款采用Ruby语言开发的热门网络编程框架,并借鉴了PHP的很多思想。然而,Twitter随后也看到了用户数的暴涨。如果某一用户有着数十万关注者,那么当他发布消息时,数十万用户的时间线需要得到相应的刷新。以往,一些热门Twitter消息常常会压垮系统,导致Twitter工程师不得不暂停服务,对问题进行修复。Twitter也因随之而来的频繁宕机而“名声昭著”。

  Twitter随后用Scala语言重写了服务的很大一部分代码,从而解决了这一问题。意料之中地,与OCaml类似,Scala也是一款由学术机构设计的语言,有着强大的输入检查系统,强调代码的准确性和性能,并因此牺牲了程序员个人的编程自由和娱乐感。

  在找到营收模式之后,创业公司将走向成熟。与此类似,它们也可以利用编程语言的力量来操纵企业文化。编程语言设计师圭多·范洛塞姆(Guido van Rossum)曾在谷歌供职7年,而目前加入了Dropbox。他表示,当软件公司达到一定规模之后,避免混乱的唯一方式是使用对程序员有更多要求的编程语言。“你的速度可能会因此减慢,因为你需要重复3次去表述同一件事情。”他表示。

  因此,许多创业公司希望等待尽可能长的时间再做出改变。它们可能会失去一些起步初期的牛人,同时也不利于小型团队迅速开发出新功能。不过,这样的语言将帮助全公司的程序员相互理解彼此的代码,带来更稳定的产品。如果希望你的产品成为人们日常生活的一部分,那么这样的稳定性必不可少。

  视不同情况采取不同策略的能力在一定程度上推动软件创业公司的发展。软件的发展依赖于计算机的普及,而这些公司也有着独特的方式去重塑自我。随着变化和发展,它们所能做的并不仅仅是调整组织架构,还可以做出一些更深层次的改变,即变革自身的文化及思维方式。


声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
使用数据库存储会话的优点是什么?使用数据库存储会话的优点是什么?Apr 24, 2025 am 12:16 AM

使用数据库存储会话的主要优势包括持久性、可扩展性和安全性。1.持久性:即使服务器重启,会话数据也能保持不变。2.可扩展性:适用于分布式系统,确保会话数据在多服务器间同步。3.安全性:数据库提供加密存储,保护敏感信息。

您如何在PHP中实现自定义会话处理?您如何在PHP中实现自定义会话处理?Apr 24, 2025 am 12:16 AM

在PHP中实现自定义会话处理可以通过实现SessionHandlerInterface接口来完成。具体步骤包括:1)创建实现SessionHandlerInterface的类,如CustomSessionHandler;2)重写接口中的方法(如open,close,read,write,destroy,gc)来定义会话数据的生命周期和存储方式;3)在PHP脚本中注册自定义会话处理器并启动会话。这样可以将数据存储在MySQL、Redis等介质中,提升性能、安全性和可扩展性。

什么是会话ID?什么是会话ID?Apr 24, 2025 am 12:13 AM

SessionID是网络应用程序中用来跟踪用户会话状态的机制。1.它是一个随机生成的字符串,用于在用户与服务器之间的多次交互中保持用户的身份信息。2.服务器生成并通过cookie或URL参数发送给客户端,帮助在用户的多次请求中识别和关联这些请求。3.生成通常使用随机算法保证唯一性和不可预测性。4.在实际开发中,可以使用内存数据库如Redis来存储session数据,提升性能和安全性。

您如何在无状态环境(例如API)中处理会议?您如何在无状态环境(例如API)中处理会议?Apr 24, 2025 am 12:12 AM

在无状态环境如API中管理会话可以通过使用JWT或cookies来实现。1.JWT适合无状态和可扩展性,但大数据时体积大。2.Cookies更传统且易实现,但需谨慎配置以确保安全性。

您如何防止与会议有关的跨站点脚本(XSS)攻击?您如何防止与会议有关的跨站点脚本(XSS)攻击?Apr 23, 2025 am 12:16 AM

要保护应用免受与会话相关的XSS攻击,需采取以下措施:1.设置HttpOnly和Secure标志保护会话cookie。2.对所有用户输入进行输出编码。3.实施内容安全策略(CSP)限制脚本来源。通过这些策略,可以有效防护会话相关的XSS攻击,确保用户数据安全。

您如何优化PHP会话性能?您如何优化PHP会话性能?Apr 23, 2025 am 12:13 AM

优化PHP会话性能的方法包括:1.延迟会话启动,2.使用数据库存储会话,3.压缩会话数据,4.管理会话生命周期,5.实现会话共享。这些策略能显着提升应用在高并发环境下的效率。

什么是session.gc_maxlifetime配置设置?什么是session.gc_maxlifetime配置设置?Apr 23, 2025 am 12:10 AM

thesession.gc_maxlifetimesettinginphpdeterminesthelifespanofsessiondata,setInSeconds.1)它'sconfiguredinphp.iniorviaini_set().2)abalanceIsiseededeedeedeedeedeedeedto to to avoidperformance andununununununexpectedLogOgouts.3)

您如何在PHP中配置会话名?您如何在PHP中配置会话名?Apr 23, 2025 am 12:08 AM

在PHP中,可以使用session_name()函数配置会话名称。具体步骤如下:1.使用session_name()函数设置会话名称,例如session_name("my_session")。2.在设置会话名称后,调用session_start()启动会话。配置会话名称可以避免多应用间的会话数据冲突,并增强安全性,但需注意会话名称的唯一性、安全性、长度和设置时机。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

Video Face Swap

Video Face Swap

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热工具

螳螂BT

螳螂BT

Mantis是一个易于部署的基于Web的缺陷跟踪工具,用于帮助产品缺陷跟踪。它需要PHP、MySQL和一个Web服务器。请查看我们的演示和托管服务。

SecLists

SecLists

SecLists是最终安全测试人员的伙伴。它是一个包含各种类型列表的集合,这些列表在安全评估过程中经常使用,都在一个地方。SecLists通过方便地提供安全测试人员可能需要的所有列表,帮助提高安全测试的效率和生产力。列表类型包括用户名、密码、URL、模糊测试有效载荷、敏感数据模式、Web shell等等。测试人员只需将此存储库拉到新的测试机上,他就可以访问到所需的每种类型的列表。

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)