Language agnostic 在发布后必须撤销的编程语言的增强功能?

Language agnostic 在发布后必须撤销的编程语言的增强功能?,language-agnostic,release,Language Agnostic,Release,是否有对主要编程语言进行重大改进的例子,这些改进已经完全发布,但发现有足够的缺陷,因此不得不撤销 UPD@Jeff Foster举了一个未持续实施的功能的例子,我将这些作为答案 UPD在弃用和撤回之间有一个灰色区域。我怀疑有成千上万个不推荐使用的示例,它们仍然可以使用,但不建议使用。我可以想象,有些创造者认为他们可以完全或一致地实现某些功能,但实际上破坏了系统的完整性 我特别寻找增强功能(而不是原始功能),因为这些功能已经计划好了(可能是社区参与的)并在测试后发布,等等。C++有一个关键字“ex

是否有对主要编程语言进行重大改进的例子,这些改进已经完全发布,但发现有足够的缺陷,因此不得不撤销

UPD@Jeff Foster举了一个未持续实施的功能的例子,我将这些作为答案

UPD在弃用和撤回之间有一个灰色区域。我怀疑有成千上万个不推荐使用的示例,它们仍然可以使用,但不建议使用。我可以想象,有些创造者认为他们可以完全或一致地实现某些功能,但实际上破坏了系统的完整性


我特别寻找增强功能(而不是原始功能),因为这些功能已经计划好了(可能是社区参与的)并在测试后发布,等等。

C++有一个关键字“export”,很少有编译器实现它。它并没有被撤销,但由于实现它的编译器太少,它实际上是无用的。有关详细信息,请参阅。

Python中的reduce()已从Python 3.0的全局命名空间中删除。但它仍然可以在functools模块中找到,所以我不知道它是否真的有用。GvR的博客文章给出了这背后的原因:。

尽管这完全是为了迎合编程语言,但在web上处理HTML是不可避免的,所以我很抱歉,但必须提到


HTML 4.01中不推荐使用applet、basefont、center、dir、font、isindex、menu、s、strike、u等元素,最常用的是CSS样式,因为表示和结构不应混合使用。

PHP5.3.x中不推荐使用的功能包括
magic\u quotes
register\u globals
,这些函数已弃用:

  • call_user_method()(改为使用call_user_func())
  • 调用\用户\方法\数组()(改用调用\用户\函数\数组())
  • 定义系统日志变量()
  • dl()
  • ereg()(使用preg_match()代替)
  • ereg_replace()(改用preg_replace())
  • eregi()(改为使用带“i”修饰符的preg_match())
  • eregi_replace()(改为使用带“i”修饰符的preg_replace())
  • set_magic_quotes_runtime()及其别名magic_quotes_runtime()
  • 会话\u寄存器()(改为使用$\u会话超全局)
  • 会话\u unregister()(改为使用$\u会话超全局)
  • 会话\u已注册()(请改用$\u会话超全局)
  • set_socket_blocking()(改用stream_set_blocking())
  • split()(改为使用preg_split())
  • spliti()(改为使用带有“i”修饰符的preg_split())
  • sql_regcase()
  • mysql\u db\u query()(改用mysql\u select\u db()和mysql\u query()
  • mysql\u escape\u string()(改用mysql\u real\u escape\u string())
  • 现在不推荐将区域设置类别名称作为字符串传递。改用LC_*常量族
  • 参数为mktime()。改用新的时区处理功能

多年来一直在破解FORTRAN,下面是从F77()中删除的一些令人愉快的结构:

在本标准修订版中 已删除或删除的功能数 以一种可能 预先失效 符合标准的程序。(删除 是唯一允许的替代方案 当时的X3J3,自概念 尚未提供“弃用”的名称 对于ANSI标准)而 冲突列表中的24项(请参见 X3.9-1978的附录A2)中 漏洞或病理病例 以前的标准允许,但 很少使用,少量 具体能力是: 故意删除,例如:

* Hollerith constants and Hollerith data, such as:

    `GREET = 12HHELLO THERE!`

* Reading into a H edit (Hollerith field) descriptor in a FORMAT
规格。 *下标对数组边界的过度索引

“扩展范围”)


哦,不再能跳进深嵌套的DO循环的中间。“< /P> < P>”似乎没有任何明显的例子。

也是最近的C++ 0x委员会的草根民意测验支持的:但是C++标准不是寻找“被移除”的“增强”的好地方。由于定义需要三个版本,而C++至今为止只有原来的标准加更正;所以,如果某个东西“出了问题”,那么在它被删除之前必须有三个(?主要)版本?了解moreNo很有意思,我的意思是,在这个问题中,要使某些内容成为“增强”功能,而不是原始功能,它必须不在第一个版本中,而是在修订版中添加。然后,要将其“删除”,必须有第三个版本。一些语言,如Perl,已经发布了几十种或数百种版本。但是C++在大的设计中几乎是一个演示练习,所以语言的功能并没有真正的机会来来去去。当然,C++的实现也会改变。它也是ISO的好实践,只是为了去除被禁止的特征。因此,除非某个东西出现了灾难性的错误,以至于它违反了标准的其余部分,否则实际上应该需要两个版本来删除它——一个版本是弃用,另一个版本是删除。对于ISO来说,这是一个缓慢的过程,因为他们真正关心向后兼容性。例如,每个人都知道
gets
是垃圾,但它在C99中甚至没有被弃用。C已将/had“entry”作为注册关键字。它应该被用来为C函数提供多个入口点,有点对称,允许它们有多个出口点。如果你愿意跳出编程语言,那么HTML‘font’元素可能是“不,现在我们来考虑一下,我们改变主意了”的标准…由于密切参与了XML过程,我将其与SGML(太复杂,无法完全实现)和HTML(不够社区解析)进行了对比。所以,是的,我可能会包括梅塔朗少校
    DIMENSION A(10,5)
>         Y= A(11,1)
* Transfer of control into the range of a DO loop (also known as