Begining Of Learning LISP (2)

        C++的强大,源自其支持的4种编程模式,以及,对C的兼容。

        很多时候,对C的兼容被认为是C++的软肋。它让C++失去了GC(垃圾收集),内存管理变得繁复枯燥极易出错。然而,C++也是因此而强大。
   
       目前的操作系统,局大部分使用C来实现,保持对C的兼容,让C++获得了对内存,线程/进程(某种程度上,可以认为就是处理器资源)的控制能力,还有就是操作系统提供的服务。然而,这也是把双刃剑,一边是自有强大的控制权,一边则是漫山遍野令人抓狂的BUGS。
   
       换个角度,C++是一种对资源敏感的命令式语言。

       在C++的项目中使用BOTTOM-UP设计方法,会在资源管理上产生许多无谓的消耗。例如:为每一个传入的指针类型参数左右类型检查(所谓的防御式编程风格,或者叫预防针风格——预防指针,呵呵),等等。如同苍蝇一样烦人,却又不得不做。

        如果采用TOP-DOWN方法,底层的密密麻麻的预防针会被延迟直到实现。但是,到那个时候,由于上层的保证(姑且认为上层考虑的足够“周全”了),预防针苍蝇也就不复存在。

       或许你会说,这是不安全的!是的,这不安全。如果上层千疮百孔,底层再多的预防针也只能起到一个错误反馈的作用,对于问题界定不仅不能提供参考,还容易引人误入歧途。因为,依据底层预防针来找问题是一种BOTTOM-UP模式。当然,这已经超出讨论范畴了。正如上次的提法一样,TOP-DOWN面向“经验丰富”的设计者,他们知道问题可能在什么地方,而不是从现象发掘问题本质。注:我并不反对预防针风格,在合适的地方使用,讨厌到处打针。

       LISP从一开始就具有GC机制,内存资源管理自动化,这让使用者可以放心大胆的专注于处理自己的数据,而不是把精力消耗在资源管理的地方。相对于C++,不妨称之为“数据/内容敏感”。事实证明,LISP在AI领域发挥得非常出色。当然,免不了提一句:GC是一把双刃剑。

       世界上没有完美的东西,扬长避短,才能发挥工具最大的潜力来服务我们。  


      
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值