本周在几种脚本语言之间来回切换后,我发现自己在想它们有多相似。然而,我一直在寻求谷歌(或现在的 SO)来记住诸如“instanceof”和“endswith”的本地等价物是什么,或者声明接口的正确语法等细节。
这让我想起了(人类)语言Europonto。只需选择一些模糊的英语语法和一些模糊的浪漫/日耳曼语/斯拉夫语词汇,一切都很好!
那么如果我们尝试用脚本语言做同样的事情会发生什么。今天想要 Python 风格的缩进块吗?美好的!想使用原型对象吗?好的!只记得某些库函数的 PHP 名称怎么拼写?没问题!
无论如何,这是疯狂而疯狂的想法。既然我们需要一个承认具体答案的问题,让我们像这样收紧它:
在创建允许 [Python、Ruby、PHP、Perl、shell 和 JavaScript] 的所有本机语法和库函数的脚本语言时,最重要的冲突是什么,这样您就可以在语言之间自由混合代码块和函数名称?
假设任何特定的结构都应该在语句级别保持一致。所以我们允许:
foreach( $foo as $bar )
{
if $foo == 2:
print "hi"
}
但不是,说,
foreach( $foo as $bar )
{
if $foo == 2:
print "hi"
endif
end
冲突可能包括:解析器歧义;名称冲突;对象或函数或闭包的语义冲突;等等。我猜这个范围将是一个巨大的问题,但你告诉我。
我将从一开始就将其作为“社区 wiki”开始,因此,如果您认为这是一个有趣的问题,但又想让它更加严谨,请随时进行编辑。