近期,在“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技术学习”微信群的问题及答复的更多相关文章

  1. 我是怎么开发一个小型java在线学习网站的

    2016/1/27 11:55:14 我是怎么开发一个小型java在线学习网站的 一直想做一个自己的网站(非博客),但是又不知道做什么内容的好,又一次看到了w3schools,就萌发了开发一个在线ja ...

  2. 用C#语言在Visual Studio 2010里开发一个自定义的PowerShell Cmdlet

    1. 打开Visual Studio 2010 2. 新建一个基于Class Library的项目 3. 给项目起个名字然后OK 4. 为项目添加下列Reference System.Manageme ...

  3. 使用百度地图开发一个导航定位demo-android学习之旅(77)

    首先介绍如何导入百度地图 步骤(其实官方文档写的很清楚了)http://developer.baidu.com/map/index.php?title=androidsdk/guide/introdu ...

  4. 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

    今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑 ...

  5. 17个C语言可以做的小案例项目

    C语言是我们大多数人的编程入门语言,对其也再熟悉不过了,不过很多初学者在学习的过程中难免会出现迷茫,比如:不知道C语言可以开发哪些项目,可以应用在哪些实际的开发中……,这些迷茫也导致了我们在学习的过程 ...

  6. 基于Java语言开发jt808、jt809技术文章精华索引

    很多技术开发人员喜欢追逐最新的技术,如Node.js, go等语言,这些语言只是解决了某一个方面,如只是擅长异步高并发等等,却在企业管理后台开发方面提供的支持非常不够,造成项目团队技术选项失败,开发后 ...

  7. 转: 为什么做java的web开发我们会使用struts2,springMVC和spring这样的框架?

    from: https://github.com/RubyLouvre/agate/issues/8 今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以 ...

  8. 在做java 的web开发,为什么要使用框架

    现在做项目都会使用框架,现在很常见的框架就是SSH(Struts+SpringMVC+spring+hibernate),SSM(Struts/springMVC+Spring+Hibernate), ...

  9. 从零开始,开发一个 Web Office 套件(11):支持中文输入法(or 其它使用输入法的语言)

    这是一个系列博客,最终目的是要做一个基于 HTML Canvas 的.类似于微软 Office 的 Web Office 套件(包括:文档.表格.幻灯片--等等). 博客园:<从零开始, 开发一 ...

随机推荐

  1. 43.安装npm及cnpm(Windows)

    转自:https://www.cnblogs.com/yominhi/p/7039795.html [工具官网] Node.js : http://nodejs.cn/ 淘宝NPM: https:// ...

  2. Android SecurityException

    public boolean checkNetwork() { boolean result = false; try { Context context = this.getApplicationC ...

  3. 适合ASP.NET Web API使用的场景

    富客户端web应用程序:ASP.NET Web API适合大量使用AJAX调用的富客户端应用程序,如Silverlight应用程序,基于Adobe Flash的应用程序或单页应用程序(SPA)等. 本 ...

  4. OpenCV —— ROI

    通过 cvResetImageRoI 函数释放ROI是非常重要的,否则其他操作将默认在ROI区域中进行 通过巧妙的使用widthStep,可以达到同ROI一样的效果 —— 如果想设置和保持一副图像的多 ...

  5. 【Swing】一点基础操作

    之前实训的老师不推荐swing就没有学...然而学校老师又是另一种态度...加上学长作比赛用swing...学一下吧 1.将窗体放在中间 jdk1.4之后setLocationRelativeTo(o ...

  6. C# 返回分页查询的总页数

    /// <summary> /// 返回分页查询操作的的总页数 /// </summary> /// <param name="count">总 ...

  7. python之-字符编码

    1.内存和硬盘都是用来存储的. CPU:速度快 硬盘:永久保存 2.文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就可以启动一个进程,是在内存中的,所以在编辑器编 ...

  8. pycharm不显示工具栏,自动导入模块,格式化代码快捷键

    我们需修改View里面的Toolbar,在前面打上沟,然后就可以显示了 自动导入模块设置:import numpy as np 我们需用鼠标选中numpy,然后在键盘上同时按住Alt+Enter键,通 ...

  9. 用openssl生成含有中文信息的证书

    openssl 支持 ASCII 和 UTF-8 两种编码,应该可以制作中文证书. 在生成证书签发申请时,当输入中文则 openssl 报错,这是因为当前输入的字符是 ANSI 本地编码格式,超出了 ...

  10. 41.C++多线程生产消费者模型

    #include <iostream> #include <thread> #include <mutex> #include <condition_vari ...