说下c语言的概念

中山野鬼 发布于 2013/08/05 16:31
阅读 437
收藏 1

正好看有网友问,c语言的一些名词。有些名词和问题,出入很大,做c的和不做c的看法。这里说说我的观点。

1、框架,或架构。c工程里面,有自己的框架和架构这个比较正常,但区别其他高级语言,c语言本身没有框架,唯一要说算框架的就是编译器只对一个c文件负责。不同c文件独立成为对象文件,在非连接前他们是独立的,在连接时又是平铺的。不同c程序,在连接前相互看到的函数,只是个调用接口说明,而连接时由于是平铺的,没有static的函数会发生重名问题,由此导致每个c文件要注意设计规范。这个算编译连接特性造成的一个设计要约。

框架,架构本身就不存在。不过很多其他高级语言在做大型系统,(其实桌面系统也很大,你看到的一个小窗口里面藏了不少东西,就不多扯了),曾经用winapi做窗口的朋友都知道,那是个很悲催的事情,重复写了n多代码最后出来个小框框。为了少重复开发,同时为了更好的保证整个系统架构的稳定性,这些高级语言对局部代码设计时就存在框架的要求。简单说,前端后端,界面层 ,数据层,系统接口层都有了固定的互联方式,且不需要你处理,那么对应的一个设计,分在不同的层级模块中完成,这就成了框架了。包括.net框架,他们都是某一种设计思想的问题。

再找喷的说一句,碰到框架的开发,表示在框架下开发中的全部工作,只是设计成型系统后的部分工作。也只是写写叶子,主干基本和你已经没有关系了。

2、容器。c语言没有容器的概念。但有空间的概念。这些空间包括静态分配的,也包括动态分配的。c语言的设计,对空间的组织维护是必须要加强考虑的,因为这个工作就是该你做的。由此也会导致c语言设计业务逻辑会很麻烦,因为你需要即关注业务逻辑本身,还要关注系统配给的资源维护。所以c语言现在蜕化到,逐步用于设计特定功能模块而非业务系统的设计工作中。例如驱动,引擎,中间件等等。再通过诸如python等组装形成系统。这样做的好处也是被逼出来的。业务逻辑太复杂,那么我就不考虑你的业务逻辑,我只做零件,甚至是标准化零件,余下通过动态组装实现差异的业务需求。容器,这种东西,对于c语言,是设计目标,不是基础依托。

3、算法复用问题。这块c语言的设计主要是逻辑抽象,而不是面向对象。c语言更多利用行为定义的方式,复用实现不同类型相同逻辑的实现。一个典型的例子就是linux内核中对list的实现。这类的实现方法很多,这也拜托了c语言的#define这个好东西。同时也不会给你的设计造成任何额外的重复开发工作。

简答说,随着业务逻辑的复杂度越来越高,毕竟最终用户希望计算机系统能做更多的事情,c语言已经不适合去响应差异化的业务需求。而是集中在实现特定功能上。如同发动机,无论最终你希望机械臂怎么运动,核心无非是活塞或转子。安心做好发动机,也是个好事情。价值就是一套设计,多个地方卖,而且比较自主。因为整个c语言的团队,一般是根据自己的专业性去主导设计,而不是根据外部的不同需求去响应。说是优点,不如说是特点,因为差异性的应用需求并不适合c语言去实现。

加载中
0
joepayne
joepayne

大牛啊,膜拜一下!分析得相当到位,不过总感觉楼主还有些话没说(自我感觉啊 嘿嘿 哈哈)。。。望楼主补充,小弟时刻关注着

返回顶部
顶部