笔记之一
Ruby之所以设计模块的概念,在于弥补传统的C之类语言的模块概念的缺失。在软件设计中,模块化体现很多很有用,它直接关系到软件设计的效率和灵活性。C中没有明显的模块的概念,就要由程序员自己通过软件的手段来强化模块概念,通过另外添加代码实现,这是比较麻烦的。在Ruby和Perl及Python中,将模块概念单独提出来,由编译器来支持,强迫你来接受,强迫你来使用,这样就大大方便了软件设计。
也可以这样理解,Ruby语言级别就已经考虑到软件设计问题,为软件设计添加了众多特性,比如yield+CodeBlock,undef FunName,文件的Begin和End代码块等,这些在C中都要由程序员来自己实现。比如,在C中,函数的定义是无法取消的,只有宏可以取消定义。
那么,反之,由新型的动态语言如Ruby,Perl,Python等来反向推理在C中设计应该具备的机制,这理论上也是可以的,并且可以帮助提高利用C进行系统设计的能力。比如,在Ruby中类可以嵌入模块,这个如果从C的角度来看,简直是活脱脱的C实现C++的继承机制啊,可以推断,Ruby他爹估计也是从C实现C++继承的角度才想到类中包含模块,这也是变相实现继承机制。那么机会来了,将来哪天你也实现自己的语言,可以参考这个思路实现多继承。
学习新语言不是直接目的,目的在于由新语言来改造C语言,通过新语言提高使用C语言进行系统设计的能力。