
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
C语言是许多软件编程开发程序员在学习编程语言的时候会去学习的一种,而本文我们就通过案例分析来简单了解一下,C语言的问题都有哪些。
如果说,程序=算法+数据,我觉得C语言会有这几个问题
一个通用的算法,需要对所处理的数据的数据类型进行适配。但在适配数据类型的过程中,C语言只能使用void*或宏替换的方式,这两种方式导致了类型过于宽松,并带来很多其它问题。
适配数据类型,需要C语言在泛型中加入一个类型的size,这是因为我们识别不了被泛型后的数据类型,而C语言没有运行时的类型识别,所以,只能将这个工作抛给调用泛型算法的程序员来做了。
算法其实是在操作数据结构,而数据则是放到数据结构中的,所以,真正的泛型除了适配数据类型外,还要适配数据结构,后这个事情导致泛型算法的复杂急剧上升。比如容器内存的分配和释放,不同的数据体可能有非常不一样的内存分配和释放模型;再比如对象之间的复制,要把它存进来我需要有一个复制,这其中又涉及到是深拷贝,还是浅拷贝。
后,在实现泛型算法的时候,你会发现自己在纠结哪些东西应该抛给调用者处理,哪些又是可以封装起来。如何平衡和选择,并没有定论,也不好解决。
C语言设计目标是提供一种能以简易的方式编译、处理底层内存、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言也很适合搭配汇编语言来使用。C语言把非常底层的控制权交给了程序员
C语言设计理念
相信程序员;
不会阻止程序员做任何底层的事;
保持语言的小和简的特性;
保证C语言的快的运行速度,那怕牺牲移值性。
使用C语言的程序员在高级语言的特性之上还能简单地做任何底层上的微观控制。
而对于更高阶、更为抽象的编程模型来说,C语言这种基于过程和底层的初衷设计方式就会成为它的短板。
因为,在编程这个世界中,更多的编程工作是解决业务上的问题,而不是计算机的问题,所以,我们需要更为贴近业务、更为抽象的语言。
那C语言会怎么去解决这些问题呢?简单点说,C语言并没有解决这些问题,所以才有了后面的C++等其他语言
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!更多内容请加danei456学习了解。欢迎关注“达内在线”参与分销,赚更多好礼。