代码编织梦想

尽管C编程语言早在1972年就已发布,但它仍是当今使用最广泛的语言之一,并且按照当今的标准存在许多限制和缺陷。

这就是为什么应该替换C的关键原因。太多关键软件都是用C / C ++编写的,其含义广泛。一个示例是OpenSSL之类的库中的错误。众所周知,C在捕获诸如缓冲区溢出之类的问题方面表现不佳。C是一种允许您以多种方式让自己陷入麻烦的语言。

但是如果C太糟糕了,为什么还没有被替换呢?有很多原因。在某种程度上,它已经被替换了。Java,C#,C ++和许多其他语言已经接管了以前用C完成的任务。

 

因此,这实际上是关于剩下的那种软件,其中C仍然占主导地位:

操作系统内核。如Linux

微控制器

视频编解码器

共享的低级库,例如OpenSSL

Unix命令行工具,如ls,cat和git

为什么C仍然主导着这些领域?因为直到最近的替代方案还不是很好。

曾经有诸如D之类的语言,但是它具有C ++级别的复杂性,可能对C开发人员没有吸引力。它最初还要求进行垃圾收集,这很可能使其不适用于所提到的许多领域。您不想在尝试保持帧速率时启动垃圾收集器。

Go和Rust表现出可能性

我认为,对C和C ++的现代化表现出浓厚兴趣的第一个真实迹象是Go和Rust的日益普及。我们看到过去通常使用C或C ++编写的许多典型工具现在都用Go或Rust编写。弹出了许多命令行工具,例如,已经用这些语言之一编写过。您会看到人们试图用Rust编写游戏引擎。

LLVM:缺少的难题

由于LLVM的成熟,如今,存在提供CI替代方案的很大一部分可能性。LLVM意味着生成高性能代码并针对许多平台的真正复杂的工作已解决。它使更多人可以进行语言开发。

Go和Rust为如何LLVM带来了一些启发,一些可能替代C的家庭手工业正在兴起:

Odin ,看起来像Go的C替代品。

V语言 。另一种类似C的语言,具有大量的Go和Rust启发。

什么是C替换语言?

要替换C,通常需要一种语言来适应C仍占主导地位的壁垒。并非所有类型的语言都适合于此。因此,我列出的语言具有许多共同点,可以替代C:

现有的C库易于重用。Ada,Modula-2等在很大程度上失败了,因为您无法在大型C生态系统中有效使用它们。

以已建立的知识和惯例为基础。Go确实很快就可以使用,因为尽管语法有所更改,但API和编码方式与C程序员非常相似。

没有垃圾收集/手动内存管理。C在需要严格控制内存使用的区域中占主导地位。在这个空间中,垃圾收集机制不会动摇它。这就是阻止Go完全替代C的原因。

小二进制文件。像C一样,Zig例如允许您制作很小的二进制文件。如果要在嵌入式空间中使用其他语言,则不能使用会产生较大二进制代码的语言(例如Go)。

系统级友好。您需要能够操纵位和字节。您需要良好的二进制运算符和指针。在过去的几十年中,许多语言都没有正确的指针。Java使指针成为一个脏话,但Go却部分地将其带回来。

逐步替换C代码。与C具有很好的二进制兼容性。

让我们扩展最后一点。如果这意味着您需要一次性重写整个程序,那么甚至没有人会开始着手替换现有的C基础结构。以我的经验,可以轻松地从Objective-C过渡到Swift的一件事是,我实际上可以一次重写一个方法,重新编译并测试该程序。

使用诸如Zig之类的语言,您可以轻松地做到这一点。

 

最后,如果你也想成为程序员,想要快速掌握编程,赶紧加入学习企鹅圈子!

里面有资深专业软件开发工程师,在线解答你的所有疑惑~编程语言入门“so easy”

编程学习书籍:

 

编程学习视频:

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/Hsuesh/article/details/110893049

GitHub“惊现”标星65K+的力扣刷题宝典,又是一面里程碑-爱代码爱编程

前言 说起LeetCode,作为一个程序员来说,应该都不会感到陌生,就在近几年里参加面试都会提到它。国内外的程序员都用它刷题主要原因是为了面试。据历史记载,这个网站2011年就已经成立了,马上就要到自己10周年的生日了。每周举行周赛,双周赛,月赛,在有限时间内编码,确实非常能考验人的算法能力。一些大公司赞助冠名的比賽获得前几名除了有奖品,还能直接拿到内推

年前的腾讯四面,来自先行者的忠告:面试前做复盘的重要性-爱代码爱编程

前言: 很多人年底了都不太会选择去跳槽,毕竟年终奖在那里嘛。 虽然现在的公司不要再背绩效,但是前途渺茫,今早来的短信,凉了 工作经验:一年半Java开发 本文分享给需要面试刷题的朋友,也祝愿大家顺利拿到自己想要的offer,这份资料主要包含了Java基础,数据结构,jvm,多线程等等,由于篇幅有限,以下只展示小部分面试题,有需要完整版

java I/O流(字节流、字符流)-爱代码爱编程

基于白嫖:2020最新版 Java基础-IO框架 目录 1 概述2 继承关系3 字节流3.1 抽象父类InputStream3.2 抽象父类OutputStream3.3 文件字节流3.3.1 FileInputStream3.3.2 FileOutputStream3.3.3 文件复制3.4 字节缓冲(buffer)流3.4.1 BufferedI

普本非计算机,三面字节,只因精通这七大技术栈拿到28*16薪offer-爱代码爱编程

前言 **作为一个 Java 程序员,平时总是陷在业务开发里,每天噼里啪啦忙敲着代码,上到系统开发,下到 Bug 修改,感觉自己无所不能。然而偶尔的一次聚会,听说和自己一起出道的同学早已经年薪 60 万,**而自己却囊中羞涩。于是也想看看新机会,找个新平台,好好发展。 于是恶补了下Redis、MySQL、K8S、Nginx、Kafka、Docker

Matlab 十进制负数转换十六进制,简单实用-爱代码爱编程

原因 需要对一个数字矩阵进行一个数据的归一化,把十进制数最终转化成3个比特的十六进制,也就是24位的数。 直接用 函数 dec2hex() 因为有负数和小数的存在,需要额外的处理,小数还比较好解决,根据设计,直接四舍五入取整就好,不需要保留小数。对于负数转十六进制,matlab没有相关的函数可以直接转换。 原理 一个是在计算机中表达,一个是科

四年开发剑指阿里,复习耗时108天,四面阿里巴巴,定级P7-爱代码爱编程

前言 相信程序员们对互联网一线大厂并不陌生,每一个程序员都有一个大厂梦,都想努力提升自己,跻身大厂之中,不仅仅是追求薪资,更重要的是增加自己的项目经验,让自己的履历更加丰富,让自己变得更有价值。 互联网大厂最吃香的首当其冲自然是阿里巴巴了 ,今天小编就来分享一个小伙进阿里巴巴的面经! 就像“不想当将军的士兵不是好士兵”一样,“不想进大厂的程序员也不是

51单片机实验 LED半秒闪烁 定时器0方式2 中断实现-爱代码爱编程

51单片机实验 LED半秒闪烁 定时器0方式2 中断实现 实验目的: P1.0接一个发光管,实现亮半秒灭半秒, 要求使用定时器0工作方式2,中断实现。 C语言代码: #include "at89x52.h" sbit LED = P1^0; int cnt = 0; void InterruptTimer0_init() { EA = 1;

05-判断素数-爱代码爱编程

1.输入一个数,判断这个数是不是素数,最最基础的方法,没加任何算法思想 #include <stdio.h> int main() { int x; //input number scanf("%d",&x); int i; int isPrime = 1; // it is a prime number wh

求从1到n的阶乘之和,非函数法(循环)和函数法-爱代码爱编程

求从1到n的各阶乘之和,非函数法(循环)和函数法 题源:信奥一本通-函数-例6.1 【题目描述】 求从1到n的各阶乘之和,即求:1!+2!+…+n!=? 【输入】 输入仅一行,一个大于零的正整数n。 【输出】 输出仅一行,即从1到n的各阶乘之和 样例: 输入:10 输出:4037913 【代码】非函数法(循环) #includ

C面向对象与设计模式(一)-爱代码爱编程

目录 一、概述 二、C++在类上的实现 2.1 什么是this 指针? 2.2 面向对象的三大特性 三、用C实现面向对象的三大特性 3.1 封装 3.2 继承 3.3 多态 四、总结 一、概述        在做嵌入式软件开发过程中,当模块越来越多,代码越来越复杂,采用常规的的面向过程方法,容易使得代码混乱。通过合理的运用抽象、封装、

7-1 求整数序列中出现次数最多的数 (15分)-爱代码爱编程

7-1 求整数序列中出现次数最多的数 (15分) 本题要求统计一个整型序列中出现次数最多的整数及其出现次数。 输入格式: 输入在一行中给出序列中整数个数N(0<N≤1000),以及N个整数。数字间以空格分隔。 输出格式: 在一行中输出出现次数最多的整数及其出现次数,数字间以空格分隔。题目保证这样的数字是唯一的。 输入样

PTA-7-1 将数组中的数逆序存放 (20分)(C语言)-爱代码爱编程

本题要求编写程序,将给定的n个整数存入数组中,将数组中的这n个数逆序存放,再按顺序输出数组中的元素。输入格式: 输入在第一行中给出一个正整数n(1≤n≤10)。第二行输入n个整数,用空格分开。输出格式: 在一行中输出这n个整数的处理结果,相邻数字中间用一个空格分开,行末不得有多余空格。输入样例: 4 10 8 1 2输出样例: 2 1 8 10