C语言本身没有自带多少特性,却可以使用这些自带特性,实现如 类 继承 多态 泛型 等高级抽象特性(部分特性),在C语言大型项目上好像经常这么做

个人比较好奇C语言到底可以抽象到什么境界(具有实用价值的抽象)


Gnome桌面环境有一个底层库,glib,就有一套题主提到的对象系统。这套系统顺便给vala提供了运行时。

Linux的VFS,也是类似的操作,给你定义了一套介面(函数指针组成的对象),只要你对应实现上面这些操作,就能做一套自己的文件系统。

另外的黑魔法,无非就是利用tagged union(ADT)和函数指针(高阶函数/闭包)来模拟函数式编程的一些操作啦。

只要你写著不嫌麻烦不嫌累,除了涉及泛型的抽象(这个其实也可以用宏来处理)不太容易搞定之外,其他的基本都不在话下。(反正到了搞不定的地方都能void*暴力解决)


C语言的struct里面放函数指针,然后就可以实现类似于 foo-&>bar(); 这样的多态了。不过this指针需要自己传入。


因为C语言对于内存和机器指令的操作方式是直接的,所以它的抽象形式上限是编程人员的想像力,而不是语言本身。


用C写个python编译器,然后用python写程序,把编译器和主程序打包在一起,你就实现了python级别的抽象


能够抽象出操作系统,你说有多抽象!


你要是觉得没事做你就去看看这本书

OOC?

www.cs.rit.edu


结构体包含结构体模拟继承

结构体指针+只有前置声明模拟私有成员或实现句柄

结构体包含函数指针模拟虚函数

很多C式介面的lib都有类似的设计


c语言作为一个高级机器语言

真的没什么好的

弱类型系统

库支持差劲

另外提一嘴

Python就是一个运行在虚拟机上的c with classes

只不过 人家库太多 封装也不错 就是弱类型忍不了


推荐阅读:
相关文章