再过两年,C语言将迎来它的 50 岁生日,同样进行周年庆的还有 PL/M和Prolog。不过,C语言至今仍然非常受欢迎,它在几乎所有编程语言中的受欢迎程度,始终排在前十名。

 

大多数操作系统的内核(包括 Windows,MAC,Linux,IOS 和 Android 等)都主要由使用C语言实现。此外,python 的 C Python 解释器,perl,ruby,差不多一半的 R 语言,以及 mysql 的 MysAm 代码,甚至 java 的第一个编译器都是使用C语言编写的。

 

C语言和C++打了个平手

C++ 在 C语言的领域中取得一些进展,特别是自从 C++11 中增加了移动语义,如果能够正确使用该语法,在处理指向大对象的指针时,C++能以更小的开销,带来更好的性能,并且C++也能够在传统的嵌入式C语言领域使用。

 

但是,C++程序代码编译后通常还是会比C语言的大一点,因为C++增加了异常处理,以及内联模板等C语言没有的机制。例如在 Visual C++的 release 模式编译下面这段C++代码:

最终得到的 exe 可执行文件的大小达到 10752 字节。再来编译相同功能的 C语言代码:

得到的 exe 可执行文件大小为 9216 字节,只有 C++ 程序的 85%。这里的差别还不是特别大,但是可以肯定的是,使用C++编程时,一旦加入了其他类,它与C语言程序大小的差异会越来越大。

 

代码大小非常重要,因为物联网(IOT)设备的数量越来越多,微控制器的使用也越来越多,要知道这些微控制器的 RAM 和 ROM 通常都是千字节级别的。所以在嵌入式领域,C语言在2005年至2018年期间获得的市场份额实际上是有所提升的。

C语言是编程界的通用语言

就像现实生活中,英语是世界是的通用语言一样,C语言是编程语言界的通用语言。许多其他编程语言编译器输出的其实是 C 语言代码,由C语言编译器进一步生成可执行程序。这不难理解,因为C语言是最低级别的可移植语言。(唯一更低级别的汇编语言与 CPU 紧密相关,不方便移植。)

Github 项目页面上列出了大约 60 个开源编译器,一小部分是 C++ 的,但是C语言占绝对的主导地位。

 

使用C语言提升效率

python 是如今最流行的编程语言之一,但是因为它是解释型编程语言,同时也受它的动态变量的影响,所以 python 程序的运行效率一直是一个痛点。使用过 python 进行大数据处理的朋友应该知道 numpy、scipy 等库可以提升效率,而 numpy 库就是由 C语言实现的。python 的标准实现是 C Python,它的主要库也是由 C语言(少许C++)实现的。

C语言是“九阳神功”

C语言可能不是每个编程初学者想学的第一编程语言,但是作为第二、第三编程语言,C语言一直很流行。我把它看做编程界的“九阳神功”,学会C语言后,再学其他编程语言都如有神助。

 

小结

至少在底层硬件设备驱动层,C语言还未逢对手。另外在操作系统内核开发中,C语言也几乎是唯一选择,特别是在 Linux 上,C语言还将存在很长一段时间。超过一半活跃的 Web、 服务器运行的是 Apache 和 nginx,它们都是C语言编写的,如今已经存在近 50 年了。

自学C/C++不易,此路应携手前行。

如果你想跟着小编一起学编程的话!

可以来我的C语言/C++编程学习基地,【点击进入】

还有(源码,零基础教程,项目实战教学视频)【进入领取】!

 

 

再过两年C语言就50岁了,这么老的编程语言怎么还没有过时?的更多相关文章

  1. 有感于三个50岁的美国程序员的生活状态与IT职业杂想

    前言 这篇杂记其实是去年也就是 2013年9月30日写的,还上过博客园十日推荐的首页,后来在整理博客分类时七弄八弄误删掉了好多文章,就包括这一篇.今天,2014年9月29日,恰好恰好一年的时候居然在好 ...

  2. 转载——有感于三个50岁的美国程序员的生活状态与IT职业杂想

    明天就是国庆节了,今天也不想干活干的太累了!写一篇以前去美国出差的杂想,对比于美国50多岁的程序员和大多数50多岁国内父母的生活状态有感而发. 前几年正好有一个项目的机会出差去了一次美国,地点是美国中 ...

  3. 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情7. 安装 PHP PHP 是用于 web 基础服务的服务器端脚本语言。它也经常被用作通用编程语言。在最小化安装的 CentOS 中安

    CentOS 是一个工业标准的 Linux 发行版,是红帽企业版 Linux 的衍生版本.你安装完后马上就可以使用,但是为了更好地使用你的系统,你需要进行一些升级.安装新的软件包.配置特定服务和应用程 ...

  4. 35岁的程序员正在消失?No,我认识了一个50岁的程序员!

    35岁的话题真是无穷无尽.一开始的时候,以为只有社交媒体上会有这种问题的讨论,没想到,公司内部的论坛上也有不少这类的文章.大家各有各的说法,但终究也没有找到银弹似的解决方案. 这段时间,倒是接触了一个 ...

  5. C语言程序设计50例(经典收藏)

    本篇文章是对C语言程序设计的50个小案例进行了详细的分析介绍,需要的朋友参考下 [程序1]题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位.十 ...

  6. 学习C++语言的50条忠告

    50条忠告:(其中有几条觉得写的不够贴切,所以删了,发了余下的部分) 1.把C++当成一门新的语言学习: 2.看<Thinking In C++>,不要看<C++变成死相>: ...

  7. C语言程序设计50例(三)(经典收藏)

    [程序31]题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母.1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母. ...

  8. C语言程序设计50例(二)(经典收藏)

    [程序11]题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析: 兔子的规律为数列1,1 ...

  9. 哥德巴赫猜想证明(C语言实现50以内的正偶数证明)

    <一>哥德巴赫猜想内容: 一个充分大的偶数(大于或等于6)可以分解为两个素数之和. <二>实现要点: 要点: 判断素数(质数):除了1和本身没有其他约数. 最小的质数:2 判断 ...

随机推荐

  1. TP6.0 一对多模型关联 hasMany

    本文测试关联方法都采用预载入查询 $data = Article::with('comments')->select(); halt($data->toArray()); 1. 创建数据表 ...

  2. 嵌入式Linux软链接使用技巧

    软链接概述 软链接是Linux下常用的一种共享文件方式.目录的方式,这种方式类似于Windows下的快捷方式.一般一个文件或者目录在不同的路径都需要的时候,可以通过创建软链接的方式来共享,这样只系统下 ...

  3. 用ajax获取后端数据,显示在前端,实现了基本计算器功能

    下午在看视频的时候,遇到一个问题:如何把后端 print_r或echo的数据显示在前端.百度了一下,说是用ajax,想着前一阵子学习了ajax,并且最近也想做一个计算器,于是就自己钻起来了. 计算器的 ...

  4. JVM七大垃圾回收器下篇G1(Garbage First)

    G1回收器:区域化分代式 既然我们已经有了前面几个强大的GC,为什么还要发布Garbage First (G1)GC?  原因就在于应用程序所应对的业务越来越庞大.复杂,用户越来越多,没有GC就不能保 ...

  5. redis哨兵机制--配置文件sentinel.conf详解

    转载自 https://blog.csdn.net/u012441222/article/details/80751390 Redis的哨兵机制是官方推荐的一种高可用(HA)方案,我们在使用Redis ...

  6. 2.BlockingQueue-阻塞式队列

  7. switch-case 选择语句

    0. 语句模型 Go 里的选择语句模型是这样的 switch 表达式 { case 表达式1: 代码块 case 表达式2: 代码块 case 表达式3: 代码块 case 表达式4: 代码块 cas ...

  8. Aop的学习与使用

    什么是aop AOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术.AOP是OOP的延续,是软件开发中的一 ...

  9. Oracle学习(七)游标

    一.简介 定义 实质上是数据集,类似数组一样,把查询的数据集存储在内存当中. 使用时可以通过游标指向其中一条记录,也可以通过循环游标达到循环数据集的目的. 游标的种类 显式游标: 使用之前必须得先声明 ...

  10. CSS3 新特性总结

    1.边框 border-radius: 1-4 length|% / 1-4 length|%; 每个半径的四个值的顺序是:左上角,右上角,右下角,左下角.若省略左下角,和右上角相同,省略右下角,左上 ...