下面的结论是对比我和arath的两个项目组得出的一个初步结论
[color=red] 开发语言的逻辑边界越明显,新手在用这种语言做项目时,越不容易失去控制。[/color]
最近我和arath都有个类似的项目,就是需要写一个比较高性能的服务器程序。为此我们讨论了很多次。arath的项目用C,我的项目用C++.
其中有一次,arath提到了项目中的基础设计有些被改乱了。排除了各种人为因素之外,C代码明显比C++代码更加容易随意编写,而不易检查。C并不存在某种物理或者逻辑上的设计边界,C++多了个class的概念。且抛开是否因为OO,明显的C++可以用class来做出最简单设计边界。
新手,模仿性强且极易把代码写飞,能够很快的离开原本设计。C++ Class 划定了一个基本模块,可以让新手有模仿之处。但是C++ Class的边界存在让其多了一个参考坐标,使其不易跑飞。
C++ Class 一般都是一个h,一个cpp配对,当需要在A类中添加代码,只能在A.h和A.cpp中添加。如果某块代码归类归错,也是极易查找和调整的。C相对没有这样明显的逻辑和物理边界。如果没有对设计上有个清晰了解和没有抵抗随意编写代码的诱惑,时间长了,最终代码可想而知。
编写C++代码会比编写C代码更容易遇到各种问题,但是好在循序渐进。class,基本类库,框架,线程,DLL等等这些都是边界,这类边界的存在,新手可以一步一步的前进,每遇到一个边界,就需要停下来摸索和学习。class和class的交互,如何调用基本类库,如何使用框架,线程间怎么通讯,如何编写和调用DLL。
C#,JAVA则明显比C++对于新手更加友好。强类型,不能多继承,单文件代码,这些规则比C++更加让新手更加容易理解和模仿。Ruby的Class边界极易打破,而且还可以写在不同的文件中。还有Mixin功能。就这点而言,新手项目不应采用Ruby。
[color=red] 开发语言的逻辑边界越明显,新手在用这种语言做项目时,越不容易失去控制。[/color]
最近我和arath都有个类似的项目,就是需要写一个比较高性能的服务器程序。为此我们讨论了很多次。arath的项目用C,我的项目用C++.
其中有一次,arath提到了项目中的基础设计有些被改乱了。排除了各种人为因素之外,C代码明显比C++代码更加容易随意编写,而不易检查。C并不存在某种物理或者逻辑上的设计边界,C++多了个class的概念。且抛开是否因为OO,明显的C++可以用class来做出最简单设计边界。
新手,模仿性强且极易把代码写飞,能够很快的离开原本设计。C++ Class 划定了一个基本模块,可以让新手有模仿之处。但是C++ Class的边界存在让其多了一个参考坐标,使其不易跑飞。
C++ Class 一般都是一个h,一个cpp配对,当需要在A类中添加代码,只能在A.h和A.cpp中添加。如果某块代码归类归错,也是极易查找和调整的。C相对没有这样明显的逻辑和物理边界。如果没有对设计上有个清晰了解和没有抵抗随意编写代码的诱惑,时间长了,最终代码可想而知。
编写C++代码会比编写C代码更容易遇到各种问题,但是好在循序渐进。class,基本类库,框架,线程,DLL等等这些都是边界,这类边界的存在,新手可以一步一步的前进,每遇到一个边界,就需要停下来摸索和学习。class和class的交互,如何调用基本类库,如何使用框架,线程间怎么通讯,如何编写和调用DLL。
C#,JAVA则明显比C++对于新手更加友好。强类型,不能多继承,单文件代码,这些规则比C++更加让新手更加容易理解和模仿。Ruby的Class边界极易打破,而且还可以写在不同的文件中。还有Mixin功能。就这点而言,新手项目不应采用Ruby。