gpt4 book ai didi

PHP 形式语义?

转载 作者:可可西里 更新时间:2023-11-01 13:19:27 25 4
gpt4 key购买 nike

我的任务是学习PHP,但是有很多东西我不懂。例如,the concept of "variable functions"不是我在其他任何地方见过的。还有很多其他例子,但为了简洁起见,我找到了PHPWTF ,其中有许多 PHP 特性的示例。

我使用过的大多数其他语言要么有正式规范(例如 Haskell 2010),要么至少有一篇关于其正式语义的研究论文(例如 this for Javascript)。但是,我找不到任何可与 PHP 相媲美的东西。

有一个official "language reference" .但是,它非常不正式,读起来像 wiki,并且缺少整个部分(例如,the section on syntax 根本没有定义语法)。确认我的怀疑,this guy告诉我没有官方规范,甚至没有定义的语法。

维基百科有一篇关于 "PHP syntax and semantics" 的文章, 但它只涉及语法,几乎没有提到语义。

我在 PHP 上找到的一篇论文是 this paper on its assignment semantics .这是该语言的一个非常小的片段,如果没有一些上下文,可能对我没有多大用处。还有this paper on 'SaferPHP' ,它可能必须与 PHP 的某些定义一起使用,尽管我看不到任何定义。

解释器/编译器提供语义,所以我想看看这些。然而,the Zend source令人生畏(尽管它确实提供了 useful test cases ),并且 HipHop runs to 2.7 million LoC . (我发现人们付出了巨大的努力为一种语言编写编译器而从未编写过规范之类的东西,这真是令人惊讶。)

我想查看 PHP 的类型系统以获取指导,就像 TypeScript 为 JavaScript 提供一些指导一样。我找到了 these tantalising slides on Hack ,一个可选的 PHP 类型系统。然而,这只是幻灯片,而且该项目目前似乎是 Facebook 的内部项目。

有谁知道比这些可怜人的语义更好的东西吗?还是每个人都只是“以身作则”?

最佳答案

您似乎不是在追求官方标准(例如,这可能对编写独立的符合标准的实现的人有用),而是为了让您对语言有连贯的理解。不幸的是,不可能有这样的事情,因为 PHP 背后没有一个连贯的正式模型。它已经有机地发展起来,现在却充满了不一致,最臭名昭著的是函数和方法命名,但在一些细节上也是如此比如什么算作 truefalse,以及其他类似的令人担忧的细节。

在我看来,接触 PHP 的最佳方法是对核心功能和库、您需要注意的“陷阱”以及(为了阅读现有代码)有良好的感觉不分心)针对在现实世界的 PHP 脚本中非常常见的反模式。我的猜测是,最好在知道如何有效使用 PHP 的人的指导下学习 PHP,但我没有那么奢侈。 (关于文档:我花了很长时间才注意到您可以使用方括号对字符串进行索引。文档中的某处可能会提到该功能,但至少在当时,它所属的任何地方都没有提到。)

This article很好地介绍了使您想要的那种语义模型变得不可能的事情。 (您可能想跳过开头的咆哮,直接转到 discussion of PHP features.)还有很多很多其他类似的文本。引用:“PHP 最初是专门为非程序员(并且,从字里行间,非程序)设计的;它并没有很好地摆脱它的根源。”

不要误会我的意思:我使用 PHP,虽然它不是我最喜欢的语言,但我不会说我讨厌它。我说,要有效地使用它,必须了解它的性质和局限性。如果您是从 Haskell 学来的,您会大吃一惊。

关于PHP 形式语义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20595696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com