语言的特性如何取舍

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

比如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也是不必要的,更不用说那些设计模式了。

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

你可能感兴趣的:(java,设计模式,C++,HashMap,语言,Delphi)