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 套件(包括:文档.表格.幻灯片--等等). 博客园:<从零开始, 开发一 ...
随机推荐
- 阿里云 CentOS7.4 环境安装mysql5.7
1. 删除默认安装的数据库,无所谓的请略过 据说CentOS7.x版本会默认安装mariadb数据库,我有点强迫症,故卸载之: rpm -qa|grep mariadb yum remove mari ...
- 4个开源的Gmail替代品
资料来源 https://opensource.com/alternatives/gmail 本文是对原文翻译,在调试 privmx 时么有成功,这些代码大多用于 php5 ,对PHP7 不兼容. 相 ...
- TextView -无法调节字体、边框的距离
今天调节一个字体边框距离,结果一直都实现不了,布局如下 <RelativeLayout xmlns:android="http://schemas.android.com/apk/re ...
- C++ 为什么要virtual析构函数
class A { public: A() { printf("A()\n"); } virtual ~A() { printf("~A()\n"); } }; ...
- Error: org.apache.mahout.math.CardinalityException: Required cardinality 10 but got 30问题解决办法
问题详情 在运行mahout中kmeans算法时,采取的是其默认输入路径/user/hadoop/testdata 和 默认输出路径/user/hadoop/output. [hadoop@djt00 ...
- 从“窃听门”事件解读手机Rootkit攻击
从"窃听门"事件解读手机Rootkit攻击 在今年五月讲述了手机流氓软件危害与防治(http://chenguang.blog.51cto.com/350944/557191)文章 ...
- C# 异步延时执行
https://blog.csdn.net/xiawu1990/article/details/78350253?utm_source=blogxgwz7 var t = Task.Run(async ...
- (转)Tomcat目录结构
首先来了解一下Tomcat5.5的目录结构: /bin:存放windows或Linux平台上启动和关闭Tomcat的脚本文件 /conf:存放Tomcat服务器的各种全局配置文件,其中包括server ...
- 第6章4节《MonkeyRunner源代码剖析》Monkey原理分析-事件源-事件源概览-翻译命令字串
在第2节中我们看到了MonkeySourceNetwork是怎样从Socket中获取MonkeyRunner发送过来的命令字串的,可是最后怎样将它翻译成事件的代码我们还没有进行分析,由于在那之前我们还 ...
- 关于数据库中的JOIN的用法学习
下面是例子分析 表A记录如下: aID aNum 1 a20050111 2 a20050112 3 a20050113 4 a20050114 5 a20050115 表B记录如下: ...