【发布时间】:2013-12-15 14:39:18
【问题描述】:
我的任务是学习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的语义是由官方实现的行为AFAIK定义的。
-
“形式语义”?别逗我笑。正如蒂姆所说,它由它所做的定义。它所做的事情是“有机地”增长的(“哦,让我们添加这个很酷的功能”的委婉说法,据我所知,这主要是出于对其他语言的嫉妒)。
-
@IraBaxter:是的,看起来是这样。虽然我认为 Javascript 也是如此,并且它已经可以进行一些形式化。也许 PHP 也可以。
-
PHP 最好由其创建者 Rasmus Lerdorf 总结:"I have absolutely no idea how to write a programming language, I just kept adding the next logical step on the way."
标签: php formal-semantics