第十七章
递归调用的问题并非仅仅只是一个编程技巧的问题,罗汉堂内堂的这些精英们,谁也📅😝不会觉得自己写出来的程序会产生死循环这种低级错误。
但是当一个很平常的技巧,一旦上升到数据结构和☫软件架构的问题时,突然间就露出了它狰狞的面孔。
而这些罗汉堂内堂的精🕇英们,🝴🏘🚖研究的也早就不是一段具体的程序要怎么编写,而是更加看重指导程序编写的思想。
在递归调用中隐藏着一个会威🝴🏘🚖胁到整个数学体系的危险,这个危险就是罗素悖论。
所谓罗素悖论其实很多人都耳熟能详,就是那个:我给岛上所有人不给自己刮脸的人刮脸,我也只给这些人刮脸。那么,理发师是否给自己刮脸呢?如果他不给自己刮脸,他🜖🂅就属于“不给自己刮脸的人”,他就要给自🕪🌝己刮脸。而如果他给自己刮脸呢?他又属于“给自己刮脸的人”,他就不该给自己刮脸。
也就是说,作为一个函数,理发师可🀶🁑🅇以处理其他人,但是当他“自己调用自己”的时候,就陷入了两难的困境。
这和越小丙提出的“后面这句话是假的,前面这句话是真的”一样,全都会陷入一个📅😝无法判断的悖论之中。
可这种问题只是纯数学问题,在现♤🐅实中理🃮🛎发师大可不管这个问题,痛快的给自己刮个脸。而越小丙提出的这个问题,既然无法判断,那我们大可置之脑后。因为只要有人类的智力就能知道,这个问题毫无意义。👥🖑
在人工智能大发展之前,侯世达曾经的历史上,人们就已经♞🉥解决了这个问题。之所以递归调用会出现无法判断的悖论困境,最根本原因是计算机太过死板、极不灵活,而且绝对的照章办事。
对于计算机来说,它使用规则、遵守规则,但却无法操纵规则。人类能够比计算机智力🎷更高,一个原因就是,我们能够灵活的👈🔟处理“规则💄”。
侯世达脑海里只是将这些内容恍🙗惚间过了一遍,实际上递归调用的解决办法早就已经深植他的脑海。
大师兄:很简单,递归出现悖论的根本,是因为没有规则之上的规则。想避免这种情况发🜒🁥🇷生,只要给规则设置🟀🚇👍规则就行了🁐🄽。
越小丙:规则的规则?
小寒:似乎有🏜🚸😎些⚴🕥道理,大师兄能否详细🗭🞵说说?
乌木🐫:我好像有点一语惊醒梦🝴🏘🚖中人!好久没有这种朝闻道的感觉了!
侯世达嘴角上翘露出一丝笑容,他上辈子打死自己也不敢想象,罗汉堂内堂的精英们竟然会有💙一天像小学生一样向自己请教。
要知道今天他们讨论的东西可不是什么🗭🞵编程技巧,而是像越♞🉥小丙之前所说的那样,是程序编写标准化的一部分。可以想象,能够讨论这种东西的人背后,不是有着极高的地位,就是占据了关键的位置。
今天他随口一句,说不定明天就会成为行业规范。这就是罗汉堂内堂的魅力,🔰🄑在这里互相交流和智力激荡的对象,没有一个会是平凡人🈩。
大师兄:比如说越小丙的这句,“后面这句话是假的,前面这句话是真的”。如果它的上面有一个“元规则”,也就是定义规则的规则,那👧么🜫这个悖论就是不成立的。我们完全可以规定,递归调用只能调用自身低层次规则,而不能对自身规则做调用。
这句话的前半句定义了后半句,这在规则上来说🚶🗵,它应该是高级规则。既然如此,后半句作为规则本身就不能再调用前半句。当出现这种互相🜫调用的情况,元规则就可以对递归调用进行判断,如果出现不符合元规则的悖论,那干脆就放🍡弃这次调用。
……
侯世达说的这些不过是曾经的历史上相当浅显的内容,罗素悖论实际上早在20世纪初就已经在数学上提出了解决的办法。🇿🞖🔌可是对于这个💄重生之后的软件行业来说,却是有些让人振聋发聩。
他关于递归调用的处理方式发送完了半天🃮🛎,聊天室里竟然都没有人说一🄙句话。
递归调用的问题并非仅仅只是一个编程技巧的问题,罗汉堂内堂的这些精英们,谁也📅😝不会觉得自己写出来的程序会产生死循环这种低级错误。
但是当一个很平常的技巧,一旦上升到数据结构和☫软件架构的问题时,突然间就露出了它狰狞的面孔。
而这些罗汉堂内堂的精🕇英们,🝴🏘🚖研究的也早就不是一段具体的程序要怎么编写,而是更加看重指导程序编写的思想。
在递归调用中隐藏着一个会威🝴🏘🚖胁到整个数学体系的危险,这个危险就是罗素悖论。
所谓罗素悖论其实很多人都耳熟能详,就是那个:我给岛上所有人不给自己刮脸的人刮脸,我也只给这些人刮脸。那么,理发师是否给自己刮脸呢?如果他不给自己刮脸,他🜖🂅就属于“不给自己刮脸的人”,他就要给自🕪🌝己刮脸。而如果他给自己刮脸呢?他又属于“给自己刮脸的人”,他就不该给自己刮脸。
也就是说,作为一个函数,理发师可🀶🁑🅇以处理其他人,但是当他“自己调用自己”的时候,就陷入了两难的困境。
这和越小丙提出的“后面这句话是假的,前面这句话是真的”一样,全都会陷入一个📅😝无法判断的悖论之中。
可这种问题只是纯数学问题,在现♤🐅实中理🃮🛎发师大可不管这个问题,痛快的给自己刮个脸。而越小丙提出的这个问题,既然无法判断,那我们大可置之脑后。因为只要有人类的智力就能知道,这个问题毫无意义。👥🖑
在人工智能大发展之前,侯世达曾经的历史上,人们就已经♞🉥解决了这个问题。之所以递归调用会出现无法判断的悖论困境,最根本原因是计算机太过死板、极不灵活,而且绝对的照章办事。
对于计算机来说,它使用规则、遵守规则,但却无法操纵规则。人类能够比计算机智力🎷更高,一个原因就是,我们能够灵活的👈🔟处理“规则💄”。
侯世达脑海里只是将这些内容恍🙗惚间过了一遍,实际上递归调用的解决办法早就已经深植他的脑海。
大师兄:很简单,递归出现悖论的根本,是因为没有规则之上的规则。想避免这种情况发🜒🁥🇷生,只要给规则设置🟀🚇👍规则就行了🁐🄽。
越小丙:规则的规则?
小寒:似乎有🏜🚸😎些⚴🕥道理,大师兄能否详细🗭🞵说说?
乌木🐫:我好像有点一语惊醒梦🝴🏘🚖中人!好久没有这种朝闻道的感觉了!
侯世达嘴角上翘露出一丝笑容,他上辈子打死自己也不敢想象,罗汉堂内堂的精英们竟然会有💙一天像小学生一样向自己请教。
要知道今天他们讨论的东西可不是什么🗭🞵编程技巧,而是像越♞🉥小丙之前所说的那样,是程序编写标准化的一部分。可以想象,能够讨论这种东西的人背后,不是有着极高的地位,就是占据了关键的位置。
今天他随口一句,说不定明天就会成为行业规范。这就是罗汉堂内堂的魅力,🔰🄑在这里互相交流和智力激荡的对象,没有一个会是平凡人🈩。
大师兄:比如说越小丙的这句,“后面这句话是假的,前面这句话是真的”。如果它的上面有一个“元规则”,也就是定义规则的规则,那👧么🜫这个悖论就是不成立的。我们完全可以规定,递归调用只能调用自身低层次规则,而不能对自身规则做调用。
这句话的前半句定义了后半句,这在规则上来说🚶🗵,它应该是高级规则。既然如此,后半句作为规则本身就不能再调用前半句。当出现这种互相🜫调用的情况,元规则就可以对递归调用进行判断,如果出现不符合元规则的悖论,那干脆就放🍡弃这次调用。
……
侯世达说的这些不过是曾经的历史上相当浅显的内容,罗素悖论实际上早在20世纪初就已经在数学上提出了解决的办法。🇿🞖🔌可是对于这个💄重生之后的软件行业来说,却是有些让人振聋发聩。
他关于递归调用的处理方式发送完了半天🃮🛎,聊天室里竟然都没有人说一🄙句话。