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 套件(包括:文档.表格.幻灯片--等等). 博客园:<从零开始, 开发一 ...
随机推荐
- hadoop集群环境配置成功与否查看方法
1.Hadoop启动jobhistoryserver来实现web查看作业的历史运行情况,由于在启动hdfs和Yarn进程之后,jobhistoryserver进程并没有启动,需要手动启动jobhist ...
- K短路 spfa + A*
#include <stdio.h> #include <string.h> #include <queue> #include <algorithm> ...
- ajax起步 (二)
Ajax的关键在于XMLHttpRequest对象,如下基本用法: <!DOCTYPE html> <html> <head> <meta charset=& ...
- C/C++(数据结构链表的实现)
链表 List 链表实现了内存零碎片的有效组织. 静态链表 链表中有两个成员,数据域和指针域 数据域:我们存储的数据. 指针域:指针指向下一个具体的节点,代表了下一个节点的类型是链表类型. 所谓的指针 ...
- 【Django】缓存
由于Django是动态网站,所以每次请求都会去数据库中进行响应的操作. 当程序访问量大时,耗时必然会更加明显,最简单的解决方案就是使用缓存. Django中的缓存: ==即将某一个view的返回值保存 ...
- colrm---删除文件制定列
- 今日题解------uvalive 2689
今天学到了代码以外的东西,就是你在vj上挂了content ,然后你想更新它,你就要刷新一下,不然你提交的那题可能提交到别的地方. 好了回到重点,本题的题意是: #include<bits/st ...
- Spring项目用junit 时出现org.junit.runners.BlockJUnit4ClassRunner cannot be resolved(转)
spring框架项目用junit做测试时,程序在自动编译时出现下述问题: 程序的问题是项目中找不到org.junit.runners.BlockJUnit4ClassRunner,有两种可能,一是没有 ...
- Oracle与MySQL的转化差异
1.nvl函数. Oracle 中 : nvl (join_count , 0) MySQL中:if(join_count is null,'0',join_count) ...
- JNI/NDK开发指南(九)——JNI调用性能測试及优化
转载请注明出处:http://blog.csdn.net/xyang81/article/details/44279725 在前面几章我们学习到了.在Java中声明一个native方法,然后生成本地接 ...