ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

C需要能干什么?

2022-01-04 14:03:30  阅读:211  来源: 互联网

标签:需要 语言 干什么 内存 面向对象 面向 过程 命令式


  对于“C 语言能干什么”这个问题,我的回答是:C 语言能干一切其他语言能干的事。

  C 语言自身的特性使得它能完全操作计算机所有的资源,因此它生来就是开发操作系统等底层核心软件的。不仅仅是开发操作系统,还有一些数据库和一些其他高级编程语言的编译器、解析器等。C 语言简单的语法,被 C++、Java、Go、JS 等语言效仿。其实从 C 语言的语言特性就可以看出来,它属于高级语言中的低级语言,又是低级语言中的高级语言,能适应一切底层开发。

  然而,C 语言既然能做一切底层开发,就一定能做一切上层开发,只是对开发者的能力要求远高于 Java、Go 这些高级语言。其实,所有的高级语言都有共同的目标,就是降低开发者的学习使用成本和心智负担,从而降低软件的开发和维护成本。比如,Java 用虚拟机实现了一次编译处处运行,用垃圾内存回收机制解决了程序员使用内存的困难,不用时刻担心内存没有释放。这些归根结底是为了降低软件开发成本。

  对于“C 语言能干一切其他语言能干的事”这句话,你可能还有这样的疑问:C 语言是一门面向过程的编程语言,而在工程应用中,我们多使用面向对象的编程方式。用 C 语言来做现代大型软件项目,是不是不太现实?

  确实,由于 C 语言函数之间的强耦合和内存的低级控制特性,在用它开发大型工程项目时,如果不设计好架构和相关的编码规则,将会给项目的开发、协同和后期维护带来很多困难。但是,C 语言是一门面向过程的编程语言,并不意味着我们不能用它来实现面向对象的编程方式。接下来,我就具体讲讲,怎么用面向对象的思想开发 C 语言程序。

  面向过程和面向对象的两种思想

  我先带你回顾下面向过程和面向对象这两种思想,以及一些容易混淆的相关概念。

  对于计算过程的不同认识,产生了不同的计算模型。基于计算模型进行分类,我们可以将语言分为命令式、函数式、面向过程、面向对象四大类。如果从程序的本质上来看,可以进一步归纳为两种:命令式语言和说明式语言。

  面向过程是命令式语言的主要实现手段,而面向对象是当前应用编程领域中最常用的语言类型。但是,无论从语言定义还是数据抽象发展来看,面向对象都是面向过程的衍生。

  命令式这个词太过于学术化了,其实我们常见的编程语言,从汇编到 C 再到 C++、 Java,都是命令式语言。命令式语言在很大程度上受到了“冯·诺依曼”计算体系的影响。这个体系又以“存储”和“处理”为核心,其中存储被抽象为内存,处理被抽象为运算指令和语句。于是,命令式的核心就是通过运算去改变内存(数据)。郑州哪家精神病医院好http://www.juenpt.com/

  听到这里,你应该能把这些概念的关系理清楚了:面向过程 / 面向对象这些概念,和命令式并不在同一个维度上。前者是运算类型,表现为语言;后者着重表达的则是程序设计和开发的方法。

  C 语言和 C++ 都是命令式语言,不过 C 语言是面向过程的语言,C++ 是面向对象的语言,那么面向过程和面向对象有什么区别呢?其实它们大同小异,只不过是“思考问题的方式”不同。为了方便你理解,这里我用“吃饭”来类比。

  过程是对每个功能或者动作的精确实现。用“吃饭”来举例子:吃饭这个“功能”,包含怎么吃,吃多少。小猫能吃饭,人也能吃饭,但二者吃饭的“过程”肯定有区别。

标签:需要,语言,干什么,内存,面向对象,面向,过程,命令式
来源: https://www.cnblogs.com/gyshht/p/15762181.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有