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

时间:2009-11-28 12:16:42

标签: language-agnostic release

是否存在对主要编程语言进行重大改进的示例,这些编译语言已完全发布,然后发现存在足够的缺陷而不得不撤回?

UPD @Jeff Foster有一个功能示例未能始终如一地实施,我会将其作为答案

UPD 弃用和撤消之间存在灰色区域。我怀疑有成千上万的弃用示例 - 仍然可以使用但不建议使用。我可以设想,有些创作者认为他们可以完全或一致地实现但实际上破坏了系统的完整性。

我特别期待增强功能(不是原创功能),因为这些功能已经计划好(可能是社区参与),经过测试后发布等等。

6 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

Python中的

reduce()已从python 3.0的全局命名空间中删除。它仍然可以在functools模块中找到,所以我不知道它是否真的很重要。这背后的原因在GvR的博客文章中提供: http://www.artima.com/weblogs/viewpost.jsp?thread=98196

答案 2 :(得分:0)

尽管这完全适合编程语言,但在网络上处理HTML是不可避免的,所以我道歉但必须提到......

HTML 4.01中不推荐使用

applet, basefont, center, dir, font, isindex, menu, s, strike, u元素,大多数情况下都支持使用CSS进行样式处理,因为不应混合使用表示和结构。

答案 3 :(得分:0)

PHP 5.3.x中不推荐使用的功能包括magic_quotesregister_globals,并且不推荐使用这些功能:

  • call_user_method()(改为使用call_user_func())
  • call_user_method_array()(改为使用call_user_func_array())
  • define_syslog_variables()
  • DL()
  • ereg()(改为使用preg_match())
  • ereg_replace()(改为使用preg_replace())
  • eregi()(使用带有'i'修饰符的preg_match())
  • eregi_replace()(改为使用带有'i'修饰符的preg_replace())
  • set_magic_quotes_runtime()及其别名,magic_quotes_runtime()
  • session_register()(改为使用$ _SESSION superglobal)
  • session_unregister()(改为使用$ _SESSION superglobal)
  • session_is_registered()(改为使用$ _SESSION superglobal)
  • set_socket_blocking()(改为使用stream_set_blocking())
  • split()(改为使用preg_split())
  • spliti()(使用带有'i'修饰符的preg_split())
  • sql_regcase()
  • mysql_db_query()(改为使用mysql_select_db()和mysql_query())
  • mysql_escape_string()(改为使用mysql_real_escape_string())
  • 现在不推荐将区域设置类别名称作为字符串传递。请改用LC_ *系列常量。
  • mktime()的is_dst参数。请改用新的时区处理功能。

答案 4 :(得分:0)

在这里花了很多年的时间来攻击FORTRAN是从F77中删除的一些令人愉快的结构(http://en.wikipedia.org/wiki/Fortran#Obsolescence_.26_deletions):

  

在本标准的修订版中,a   删除的功能数量或   以可能的方式改变   之前无效   符合标准的计划。 (移   是唯一允许的替代品   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
     

规范。       *通过下标过度索引数组边界。

    DIMENSION A(10,5)
>         Y= A(11,1)
* Transfer of control into the range of a DO loop (also known as
     

“扩展范围”)。

哦,心碎不再能够跳入深层嵌套DO循环的中间。

答案 5 :(得分:0)

似乎没有任何明确的例子。