C语言主要做哪些方面的开发---一个来自“IT技术学习”微信群的问题及答复
近期,在“IT技术学习”微信群中,有同学问了这样一个问题:C语言主要做哪些方面的开发?在这篇文章中,我想结合自身的经验,对这个问题进行下解答。
C语言是计算机及其相关专业(如通信、电子、数学等)学生大一时的必修课程,也是非常多人所学的第一门编程语言。要想了解C语言主要做的开发工作有哪些,我们先来简单回想下C语言的产生历程。
美国的贝尔实验室在IT领域占有非常重要的地位,从这里面走出来的发明创造不计其数。C语言就是当中之中的一个。
话说在1970年。贝尔实验室的一个名叫 Ken Thompson的研究员设计出了一种非常接近硬件的编程语言。取名B语言。并用该语言写出了世界上第一个UNIX操作系统。
注意,B语言的特点是接近硬件。一年之后,还有一位叫做Dennis M.Ritchie的研究员看到UNIX这玩意儿非常有前途,便增加了Thompson的开发项目。
然而,Ritchie并非一位仅仅会用B语言编程的“码农”,他对B语言进行了改进,并于1972年设计出了C语言,他也因此被誉为“C语言之父”。
C语言被发明出来之后。Ritchie和Thompson用之对UNIX进行了重写。
直到如今,尽管C语言经过了多次标准的制定和改动,但基础都是Ritchie所设计的最初的那版C语言。
而C语言是对B语言的改进。那么自然而然地继承了B语言的“基因”:接近硬件。
那么,这样的“接近硬件”的编程语言能够做哪些方面的开发呢?因为不论什么软件都要执行在特定的硬件之上,我倾向于将当前的系统表示为例如以下图所看到的的四个层次。
对于软件开发project师来说。关注很多其它的是上面的三个层次:操作系统层、中间层和用户层。
(1)操作系统层:包含Windows、Linux、iOS、Android等。它们的主要实现语言都是C语言,这和C语言“接近硬件”的特性是有关的。
(2)中间层:该层在操作系统层和用户层之间充当了一个桥梁的作用。它将非常多对于操作系统的操作封装成了API,供上层(用户层)调用。既然操作系统差点儿都是用C语言实现的。那么假设要使用当中的某些功能。C语言就是最佳的实现语言。
因此。在中间层的开发中,C语言也是主流的语言。
(3)用户层:该层是直接与用户进行消息交互的层次。也是用户能够直接感受到的层次,如WEB界面、client软件操作界面等。眼下看来。该层的主流编程语言是Java,这也与Java自身的特点有关。
如今来总结一下,C语言能够用于操作系统的开发或与操作系统非常靠近的中间层的开发。详细到的软件种类就相当的多了,如本人之前开发过的支付业务接口和如今正在开发的通信接口机。
不论什么一门语言的产生,都有其特定的背景,也有其详细适用的场合,因此,并没有孰优孰劣之分,最主要看学习这门语言的人掌握到了什么程度。在大家学习的过程中。我的建议是能够学习不同的几门编程语言,但一定要有一到两门比較熟练或精通。
最后,欢迎很多其它的对IT技术比較感兴趣的朋友增加我们这个“IT技术学习”微信群,也请大家关注本人即将要出版的新书《C程序猿:从校园到职场》。
本人微信公众号:zhouzxi,请扫描下面二维码:
C语言主要做哪些方面的开发---一个来自“IT技术学习”微信群的问题及答复的更多相关文章
- 我是怎么开发一个小型java在线学习网站的
2016/1/27 11:55:14 我是怎么开发一个小型java在线学习网站的 一直想做一个自己的网站(非博客),但是又不知道做什么内容的好,又一次看到了w3schools,就萌发了开发一个在线ja ...
- 用C#语言在Visual Studio 2010里开发一个自定义的PowerShell Cmdlet
1. 打开Visual Studio 2010 2. 新建一个基于Class Library的项目 3. 给项目起个名字然后OK 4. 为项目添加下列Reference System.Manageme ...
- 使用百度地图开发一个导航定位demo-android学习之旅(77)
首先介绍如何导入百度地图 步骤(其实官方文档写的很清楚了)http://developer.baidu.com/map/index.php?title=androidsdk/guide/introdu ...
- 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...
- 17个C语言可以做的小案例项目
C语言是我们大多数人的编程入门语言,对其也再熟悉不过了,不过很多初学者在学习的过程中难免会出现迷茫,比如:不知道C语言可以开发哪些项目,可以应用在哪些实际的开发中……,这些迷茫也导致了我们在学习的过程 ...
- 基于Java语言开发jt808、jt809技术文章精华索引
很多技术开发人员喜欢追逐最新的技术,如Node.js, go等语言,这些语言只是解决了某一个方面,如只是擅长异步高并发等等,却在企业管理后台开发方面提供的支持非常不够,造成项目团队技术选项失败,开发后 ...
- 转: 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?
from: https://github.com/RubyLouvre/agate/issues/8 今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以 ...
- 在做java 的web开发,为什么要使用框架
现在做项目都会使用框架,现在很常见的框架就是SSH(Struts+SpringMVC+spring+hibernate),SSM(Struts/springMVC+Spring+Hibernate), ...
- 从零开始,开发一个 Web Office 套件(11):支持中文输入法(or 其它使用输入法的语言)
这是一个系列博客,最终目的是要做一个基于 HTML Canvas 的.类似于微软 Office 的 Web Office 套件(包括:文档.表格.幻灯片--等等). 博客园:<从零开始, 开发一 ...
随机推荐
- 38.C语言字符串总结
1.自己实现三个常用函数 strlen,strcpy,strstr 自己实现strstr函数,如果找到返回首地址,找不到则返回NULL //查找元素,返回首地址 char *mystrstr(cons ...
- C/C++(基础编码-补码详解)
两个数的交换 1.引入第三者. 2.求和运算,求差.(这样会产生内存溢出) 3.异或运算 a = a^b; b = a^b; a = a^b; 8b(bit位) = 1B(Byte=字节)//最小单位 ...
- vue prpos
匹配某些值中的一个 type: { validator: function(value) { return ["success", "warning", &qu ...
- JS错误记录 - dom操作 - 排序
本次练习错误总结: 1. for循环要套到按钮的onclick里面,否则onclick点击事件无法依次执行. 2. var n1, var n2 这两个变量是arr.sort排序使用的,所以应该放在s ...
- enable&&builtin---shell内部命令
用enable命令显示所有激活的内部命令: [root@localhost ~]# enable -a builtin命令用于执行指定的shell内部命令,并返回内部命令的返回值 [root@xiao ...
- 小米开源文件管理器MiCodeFileExplorer-源码研究(2)-2个单实例工具类
从本篇开始,讲解net.micode.fileexplorer.util工具包中的类.这个包下的类,功能也比较单一和独立.很多代码的思想和实现,可以用于JavaWeb和Android等多种环境中. 一 ...
- lighttpd启动不了,libssl.so.4&libcrypto.so.4 缺失
lighttd的出错日志在 log/out_lighttpd 里,当lighttd启动不了时候,这里文件中会说明原因. 今天的报错是 error while loading shared librar ...
- android抓取各种log的方法
1.logcat (四类log buffer是main,radio.system.events) adb wait-for-device logcat adb logcat -v time > ...
- BZOJ3192: [JLOI2013]删除物品(splay)
Description 箱子再分配问题需要解决如下问题: (1)一共有N个物品,堆成M堆. (2)所有物品都是一样的,但是它们有不同的优先级. (3)你只能够移动某堆中位于顶端的物品. ( ...
- hiho 1182 : 欧拉路·三
1182 : 欧拉路·三 这时题目中给的提示: 小Ho:是这种.每次转动一个区域不是相当于原来数字去掉最左边一位,并在最后加上1或者0么. 于是我考虑对于"XYYY",它转动之后能 ...