圣域天子:其实不同的类库(不是语言)解决和设计的方式差异很大。
就如C++在早期一直认为虚方法不应该设计成public方式,但是java却把它变成了interface,在实现形式上实现都是纯虚函数,但采用和解决问题的方式却截然不同,甚至抵触。
所以你看VCL也好,看Qt也好,甚至近日开源的.NET也 ..
(2014-12-09 21:11)
>>其实不同的类库(不是语言)解决和设计的方式差异很大。
>>就如C++在早期一直认为虚方法不应该设计成public方式,但是java却把它变成了interface,在实现形式上实现都是纯虚函数,但采用和解决问题的方式却截然不同,甚至抵触。
C++诞生过早,那时候还没有interface,并且包袱过重(兼容C),不能有interface,头文件也相当独特,具有部分Interface的功能,如此就更没必要了。至于你说的虚方法不应该设计成public方式,我没听说,好像也没道理。而Java没有任何历史包袱,所以做成了所有函数自动全OO(C++要声明才行),加上interface自然也没问题。另外C++加上了多继承,有利有弊,不绝对,但是我自己深刻体会,感觉多继承理论上是有道理的,实际上用到的很少,所以实际上是一个造成冗余的一个鸡肋功能,但是却造成了不少困扰。另外C++有个重大缺陷,就是继承类的虚函数包袱过重,所以QT采用信号槽,VCL采用动态方法,MFC采用消息映射,无一例外。所以这些不同类库,其实不是设计方式的问题,而是时间造成的历史因素。而且对虚函数的问题,解决方式都比较相似,而且后期的语言都有interface。话说golang对interface的支持,都成了最顶级,变成自动暗含了。
>>所以你看VCL也好,看Qt也好,甚至近日开源的.NET也行,
>>这些都是它们对于同样问题的不同解决方式和思路,你可以去学习、模仿它们。
我觉得能看懂就不错了,而且我不知道自己什么时候才能百分百看懂?光学一个win32就让我感觉吐血,各种效果太多太强大,10年了,还是学了一点皮毛而已,刚够做项目的。还有许多强大功能虽然也了解一些,但是项目用不到就没有深入学习的动力,时间也不够。
>>但如果说想要成为高手,那我认为你必须要凌驾类库之上,找到自己的方式才行。
>>国外有些高手,研读成熟的类库是手段之一,在熟悉了之后,往往通过开发自己的类库来达到提升自己的能力。
找不到,也凌驾不了。你有什么具体的建议吗?或者有非著名的第三方类库看看也行。我认为,语言级RTL的类库没必要看,浪费时间,会用就行。封装OS API的类库不可能超过MFC VCL QT,好像也没必要重新封装~~~
>>就象判断软件能力级别一样,三级水平是自己能开发一个一定规模的独立软件为判断标准,因为当开发一个完整的软件时,可能会对界面、数据库、网络、线程,甚至不同OS底层、服务、进程、串口等等各方面都有技术要求,也能碰到各式各样的问题,这样才是提高自身能力的关键路径。
我独立做了好几个项目了,固然可以独当一面,但是现在却限制了进一步的提高,我倒是希望有一个高手团队一起工作。前一阵有个多线程的问题解决不了,结果还是网上有个高手一句话就醍醐灌顶(我们买了他家的控件),这就是差别。