再过两年C语言就50岁了,这么老的编程语言怎么还没有过时?
再过两年,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岁了,这么老的编程语言怎么还没有过时?的更多相关文章
- 有感于三个50岁的美国程序员的生活状态与IT职业杂想
前言 这篇杂记其实是去年也就是 2013年9月30日写的,还上过博客园十日推荐的首页,后来在整理博客分类时七弄八弄误删掉了好多文章,就包括这一篇.今天,2014年9月29日,恰好恰好一年的时候居然在好 ...
- 转载——有感于三个50岁的美国程序员的生活状态与IT职业杂想
明天就是国庆节了,今天也不想干活干的太累了!写一篇以前去美国出差的杂想,对比于美国50多岁的程序员和大多数50多岁国内父母的生活状态有感而发. 前几年正好有一个项目的机会出差去了一次美国,地点是美国中 ...
- 安装完最小化 RHEL/CentOS 7 后需要做的 30 件事情7. 安装 PHP PHP 是用于 web 基础服务的服务器端脚本语言。它也经常被用作通用编程语言。在最小化安装的 CentOS 中安
CentOS 是一个工业标准的 Linux 发行版,是红帽企业版 Linux 的衍生版本.你安装完后马上就可以使用,但是为了更好地使用你的系统,你需要进行一些升级.安装新的软件包.配置特定服务和应用程 ...
- 35岁的程序员正在消失?No,我认识了一个50岁的程序员!
35岁的话题真是无穷无尽.一开始的时候,以为只有社交媒体上会有这种问题的讨论,没想到,公司内部的论坛上也有不少这类的文章.大家各有各的说法,但终究也没有找到银弹似的解决方案. 这段时间,倒是接触了一个 ...
- C语言程序设计50例(经典收藏)
本篇文章是对C语言程序设计的50个小案例进行了详细的分析介绍,需要的朋友参考下 [程序1]题目:有1.2.3.4个数字,能组成多少个互不相同且无重复数字的三位数?都是多少?1.程序分析:可填在百位.十 ...
- 学习C++语言的50条忠告
50条忠告:(其中有几条觉得写的不够贴切,所以删了,发了余下的部分) 1.把C++当成一门新的语言学习: 2.看<Thinking In C++>,不要看<C++变成死相>: ...
- C语言程序设计50例(三)(经典收藏)
[程序31]题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续 判断第二个字母.1.程序分析:用情况语句比较好,如果第一个字母一样,则判断用情况语句或if语句判断第二个字母. ...
- C语言程序设计50例(二)(经典收藏)
[程序11]题目:古典问题:有一对兔子,从出生后第3个月起每个月都生一对兔子,小兔子长到第三个月 后每个月又生一对兔子,假如兔子都不死,问每个月的兔子总数为多少?1.程序分析: 兔子的规律为数列1,1 ...
- 哥德巴赫猜想证明(C语言实现50以内的正偶数证明)
<一>哥德巴赫猜想内容: 一个充分大的偶数(大于或等于6)可以分解为两个素数之和. <二>实现要点: 要点: 判断素数(质数):除了1和本身没有其他约数. 最小的质数:2 判断 ...
随机推荐
- pytest测试框架 -- skip跳过执行测试用例
跳过执行测试用例 1.@pytest.mark.skip(reason=" ") -- 跳过执行测试函数 可传入一个非必须参数reason表示原因 import pytest@ ...
- python获取倒数第k个结点
思路:定义快慢两个指针,快指针走k步后慢指针开始走,当快指针走到链表尾时快慢指针距离相隔k,倒数第K个结点就是慢指针所指的结点 # -*- coding:utf-8 -*- # class ListN ...
- Windows提示80被占用
情景:使用cmd启动某一服务的时候报错[emerg] 7220#6900: bind() to 0.0.0.0:80 failed (10013: An attempt was made to acc ...
- SpringBoot-01-快速入门
SpringBoot 1. 快速入门 什么是Spring 轻量级的Java开源开发框架 为了解决企业级应用开发的复杂性而创建的,简化开发 Spring是如何简化Java开发的 为了降低Java开发 ...
- zookeeper源码之服务端
zookeeper服务端主要包括一下几个模块: 1.启动模块. 2.核心执行模块 3.数据管理模块. 启动模块 读取配置文件,启动程序.详见:zookeeper源码之服务端启动模块. 核心执行 ...
- 2018尚硅谷最新SpringCloud免费视频教程
[课程内容] 01.前提概述 02.大纲概览 03.从面试题开始 04.微服务是什么 05.微服务是什么2 06.微服务与微服务架构 07.微服务优缺点 08.微服务技术栈有哪些 09.为什么选择Sp ...
- linux学习(四)Linux 文件基本属性
一.引言 Linux系统是一种典型的多用户系统,不同的用户处于不同的地位,拥有不同的权限. 为了保护系统的安全性,Linux系统对不同的用户访问同一文件(包括目录文件)的权限做了不同的规定. 在Lin ...
- Oracle学习(九)存过、游标、RECORD整合
一.代码 /*1.定义存过*/ CREATE OR REPLACE PROCEDURE PRO_RE_USER_ORD_GOODS( --NOW_DATE格式:YYYYMMDD 如:20190801( ...
- noSql 的应用场景简述
选型一定要结合实际情况而不是照本宣科,比如: 企业发展之初,明明一个关系型数据库就能搞定且支撑一年的架构,搞一套大而全的技术方案出来 有一些数据条件查询多,更适合使用ElasticSearch做存储降 ...
- uni-app支付功能
扫码查看原文 前言 近期一直在使用APP开发多端应用,IOS的APP.安卓的APP和H5网页,其中开发的APP使用到了微信和支付宝的支付,在此给大家分享出来,一起使用 前置条件: 开发环境:windo ...