语言的特性如何取舍

我最近在做的关于动态代理的研究时,常常会有这样的感觉。

比如JAVA本身就提供了Dynamic Proxy,而不像在DELPHI下,要用Thunk这样的技术去作复杂的处理。对于序列化,Java/.net也都有现成的实现。

这几天在实现Remoting的服务端时发现,需要一个HashMap,在DELPHI下就成了一件麻烦事。如果是C++,有现成的std::map可用,新的Java和.net也都有了对GP的支持,但是DELPHI(原生)没有。如果要仿照JAVA的擦拭法来模拟的话,又会碰到另一个问题:DELPHI没有GC,容易造成内存泄漏。而且DELPHI不支持在STACK中分配对象,所以也不能实现类似SmartPtr这样的东西。结果最后只好用多态实现,难看而且估计性能也不会好。郁闷啊~~

前几天在QQ群里讨论GC时,GrayMemory提到关于C++总是想把别人有的好的特性都加进来(当然主要还是通过库,而不是修改语言)。其实别的语言也一样,程序员总是不知足的。

语言磨砺了我们思维的方式,也决定了我们思考的范围。

现在对大师的这句话是更加有体会了。

曾经也以为不同的语言不过是语法的不同,现在看来,那只是在同一类型的语言范围内成立的观点,对于不同类型的语言,差别有时是本质的。

比如最近正在学习的Python,对于这类的动态语言,OO的思想已经与传统的C++/JAVA很不一样了。像OO中一些经典的DIP之类的原则,已经不重要了,AOP也是很自然的事,GP也是不必要的,更不用说那些设计模式了。

然而有得必有失,动态语言的性能还是一个很重要的问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值