一年365天,总有那么几百天听到有人说“C语言过时了”“C语言要被时代淘汰了”,那么真的会被淘汰吗?

C 语言发布于 1972 年,到2021年已经有49年的历史,C 是一种广泛非常使用的语言,从操作系统内核到加密算法的编写,到处都在使用 C,如:

1)操作系统内核,例如 Linux 等;  2)微控制器;  视频编解码器;  3)底层共享库,例如 OpenSSL 等;  4)Unix 命令行工具,例如 ls、cat 和 git 等

以上领域仍然是C语言主导,截止到目前还没有找到替代 C 语言的方案。

虽然C语言是最广泛的语言之一,但是按照如今的标准来看,C 语言也存在许多限制和缺陷。例如C 语言非常不善于处理类似于缓冲溢出的问题,例如C 语言没有类型安全,喜欢动态语言的人很难接受这一点。

既然C 语言这么坑,那么为什么还没有被替换掉呢?其中的原因很多。不过在某些地方,C 语言已经被替换了。以前很多用 C语言 处理的任务如今都改用 Java、C#、C++ 以及其他语言了。另外在 LLVM 的支持下,在 Go 的启发下,完全可以替换掉 C语言。

那么,2021年,甚至未来C 语言会被淘汰呢?

不会,起码在未来几十年会继续发光发热。

因为C语言的简洁性,如同毛细血管,平时没感觉,一旦受伤就出血,但马上又能快速愈合,你查觉不出C这块出了问题。

因为C 语言直接或间接地影响了无数语言,比如 C++、Java、Go、D、Rust、Perl,甚至是 PHP 和 Python。

因为C 语言非常成熟,重视对内存的管理,拥有内联汇编、少量抽象,且语言没有过度膨胀,能让程序员能够很好地控制程序。

所以,C 语言成为了 OS 内核(Linux、Windows NT 或 macOS 的 XNU 等)以及其他语言(例如 Python)的理想选择。

按照这个逻辑,就好比人类吃米饭有7千年的历史了,虽然老祖宗吃米饭的花样和品类没有现在多,但是食物丰富的今天现代出生的人就不吃米饭了?

关于C 语言,你觉得未来会被淘汰吗?

评论:适合IT行业的空闲兼职,可以搜小程序【云来米】,了解详情,登录输入邀请码:8KY4FQ4

2021年了,C 语言会被淘汰吗?的更多相关文章

  1. 2021 编程语言排行榜出炉!C#年度语言奖

    IEEE Spectrum 发布了 2021 年度编程语言排行榜,其中 Python 在总榜单以及其他几个分榜单中依然牢牢占据第一名的位置.另外值得关注的是微软 C# 语言,它的排行从 2020 年的 ...

  2. JAVA语言学校的危险性

    Java语言学校的危险性(译文) 作者: 阮一峰 日期: 2008年12月 7日 下面的文章是More Joel on Software一书的第8篇. 我觉得翻译难度很大,整整两个工作日,每天8小时以 ...

  3. [No0000184]JAVA语言学校的危险性

    下面的文章是More Joel on Software一书的第8篇. 原文: http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools ...

  4. 为什么90%的大学都要求计算机专业学习C语言?

    编程语言是编程的工具,计算机相关专业的学生必须具备足够的编程能力.当然,关于"最好语言"的争论从来没有休止过,这里要强调一下:语言的选择真的没那么重要,学习语言的过程最重要是语言的 ...

  5. 简析.NET Core 以及与 .NET Framework的关系

    简析.NET Core 以及与 .NET Framework的关系 一 .NET 的 Framework 们 二 .NET Core的到来 1. Runtime 2. Unified BCL 3. W ...

  6. javascript实例——时间日期篇(包含5个实例)

    本来想在网上找一些js实例来练练手,结果发现一本书<突破JavaScript编程实例五十讲>,看了下内容还不错,就下了下来: 后面又下了该书籍的源码,一看才发现这本书编的日期是2002年的 ...

  7. 转 Oracle全文检索http://docs.oracle.com/cd/E11882_01/text.112/e24436/toc.htm

    SQL > exec ctx_ddl.create_preference ('my_test_lexer','chinese_lexer') : PL/SQL 过程成功完成 SQL > E ...

  8. NET Core 以及与 .NET Framework

    简析.NET Core 以及与 .NET Framework的关系 简析.NET Core 以及与 .NET Framework的关系 一 .NET 的 Framework 们 二 .NET Core ...

  9. Xilinx HLS

    Xilinx 的高层次综合(High Level Synthesis, HLS)技术是将C/C++/SystemC软件语言转换成Verilog或VHDL硬件描述语言的技术.现已应用在SDAccel,S ...

随机推荐

  1. PyQt学习随笔:PyQt中捕获键盘事件后获取具体按键值的方法

    在PyQt中,如果要捕获键盘事件的具体按键,可以通过重写组件对象的keyPressEvent方法或event方法来捕获具体的按键,推荐使用keyPressEvent方法,因为event方法是一个通用事 ...

  2. Win10激活失败并提示错误代码0xC004C003的解决方法

    亲测,可用. 步骤如下: 进入cmd,管理员权限登录 slmgr.vbs /upk slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX slmgr /skms zh.us ...

  3. 二分查找——没有想象中的容易(详解各种变式,超深度理解,c++)

    int binarySearch(int[] nums, int target) { int left = 0; int right = nums.length - 1; // 注意 while(le ...

  4. Mac开发必设置的Finder设置项,你设置了吗?

    1.显示标签页.显示路径栏.显示状态栏的设置位置,在访达->显示-> 显示状态栏 个人三个都设置了,但是觉得显示状态栏用的并不多,反而多一行,下面是显示状态栏的效果,主要可以一眼看出有多少 ...

  5. kubernetes 中的证书工作机制

    一文带你彻底厘清 Kubernetes 中的证书工作机制 搬砖者: 张首富 时 间: 2020-05-26 w x: y18163201 原文地址:https://zhaohuabing.com/po ...

  6. js原生方法reduce实现

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  7. C#获取引用组件的版本信息

    /// <summary>        /// 当前目录下文件版本        /// </summary>        public void FilesVersion ...

  8. 题解-洛谷P6788 「EZEC-3」四月樱花

    题面 洛谷P6788 「EZEC-3」四月樱花 给定 \(n,p\),求: \[ans=\left(\prod_{x=1}^n\prod_{y|x}\frac{y^{d(y)}}{\prod_{z|y ...

  9. 用 shell 脚本做日志清洗

    问题的提出 公司有一个用户行为分析系统,可以记录用户在使用公司产品过程中的一系列操作轨迹,便于分析产品使用情况以便优化产品 UI 界面布局.这套系统有点类似于 Google Analyse(GA),所 ...

  10. 面试 11-02.ES6

    11-02.ES6 #Class和普通构造函数有何区别 我们经常会用ES6中的Class来代替JS中的构造函数做开发. Class 在语法上更加贴合面向对象的写法 Class 实现继承更加易读.易理解 ...