0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

C语言编写的程序执行效率到底高在哪里

strongerHuang 来源:typedef 作者:typedef 2022-11-10 09:03 次阅读

都说C语言编写的程序执行效率比较高,那么到底高在哪里,我们一块来学习学习。

C语言由来

C语言源自于BCPL、B两种语言。

BCPL语言以及代码

1967年,剑桥大学的马丁·理察德(Martin Richards)以CPL编程语言为基础,发明了BCPL(Basic Combined Pogramming Language)编程语言。

我们在看一个用BCPL语言编写的计算阶乘的功能,代码如下:

GET"libhdr"
LETstart()=VALOF
{FORi=1TO5DOwritef("fact(%n)=%i4*n",i,fact(i))
RESULTIS0
}
ANDfact(n)=n=0->1,n*fact(n-1)

GET "libhdr"是包含标准库,LET start() = VALOF是程序运行时要调用的第一个函数。空括号()表示函数不需要任何参数,VALOF表示函数有返回值。

FOR i = 1 TO 5 DO是一个从1到5的循环。writef是字符格式化字符串函数,用来输出将i替换%n、fact(i)替换%i4格式化之后的字符串。*n表示换行,RESULTIS 0是返回值,用来告诉系统函数执行成功。

AND fact(n) =介绍了函数fact的定义,通过接受一个参数来实现n的阶乘。

n=0 -> 1, n*fact(n-1)则是阶乘的实现,当n等于0时候,返回1(0的阶乘是1),当n不等于0的时候则返回n*fact(n-1),

AND原文是下面这样说的,如下:

The word AND causes fact to available to the previously definedfunction

我的个人理解是支持嵌套,那么你认为呢?

当上述功能执行后将会在终端有如下输出:

fact(1)=1
fact(2)=2
fact(3)=6
fact(4)=24
fact(5)=120

BCPL用户指南:https://www.cl.cam.ac.uk/~mr10/bcplman.pdf

B语言以及代码

肯·汤普逊(Ken Thompson)简称“ken”,在贝尔实验室工作期间设计和实现了Unix操作系统。他基于BCPL创造了B语言。

同样的,我们来看一个用B语言实现进制转换功能。输入一个n转换为b进制,其中b在2和10之间。

/*Thefollowingfunctionwillprintanon-negativenumber,n,to
thebaseb,where2<=b<=10,  This routine uses the fact that
  in the ANSCII character set, the digits O to 9 have sequential
  code values.  */

printn(n,b) {
 extrn putchar;
 auto a;

 if(a=n/b) /* assignment, not test for equality */
  printn(a, b); /* recursive */
 putchar(n%b + '0');
}

代码出处:https://www.bell-labs.com/usr/dmr/www/kbman.html

C语言

在1972年,美国贝尔实验室的丹尼斯·里奇(D.M.Ritchie)在B语言的基础上设计出了新的言,他取BCPL的第二个字母作为这种语言的名字,这就是C语言的由来。

以下是用C语言实现的进制转换功能。

#include

voidprintn(intn,charb){
chara;
if(a=n/b){
printn(a,b);
}
putchar(n%b+'0');
}

intmain(intargc,char**argv){
printn(8,2);
return0;
}

Terminal:1000

跟B语言非常接近了吧。

编程语言

机器语言是二进制文件,汇编语言是符号语言,再往汇编之上是高级语言。下图是C编写的源文件,经过汇编和链接生成的汇编文件以及二进制文件。

6a8f925c-6090-11ed-8abf-dac502259ad0.png

机器语言

机器语言是一种指令集的体系,它是用二进制代码表示的语言,是计算机唯一可以直接识别和执行的语言,它具有计算机可以直接执行、简洁、运算速度快等优点,这是一件十分繁琐的工作。编写程序花费的时间往往是实际运行时间的几十倍或几百倍,而且直观性比较差,容易出错,程序的检查和调试都比较困难。

汇编语言

为了解决机器语言难以理解和记忆的缺点,于是就出现了汇编语言。用易于理解和记忆的名称和符号表示机器指令中的操作码。这样用符号代替机器语言的二进制码,就把机器语言变成了汇编语言;于是汇编语言亦称为符号语言。

高级语言

高级语言又主要是相对于汇编语言(机器语言)而言的,它是高度封装了的编程语言;是较接近自然语言和数学公式的编程,基本脱离了机器的硬件系统,用人们更易理解的方式编写程序。

例如java,c,c++C#python都是高级语言。

C为何快速

越高级的语言,越人性化,机器负担就重。因为机器帮你处理了常见的问题,需要一些额外开销。而C语言是一门非常干净的语言,相当于裸奔,被设计之初就将速度大于安全之上,它不会检查数组索引是否会越界,不会检查内存是否泄漏,也不会检查指针是否是野指针。

在制定C标准时指出C代码是能够可移植的,但是如果要为了更快的执行效率,可以牺牲可移植性。C完全相信程序员,不会阻止程序员要做的事情。

C语言经过编译优化生成的机器码和和直接写汇编生成的机器码是相当的,所以C非常高效。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • UNIX操作系统

    关注

    0

    文章

    13

    浏览量

    15300
  • C语言
    +关注

    关注

    180

    文章

    7598

    浏览量

    136193
  • CPL
    CPL
    +关注

    关注

    0

    文章

    13

    浏览量

    10691

原文标题:C语言效率高,是有原因的

文章出处:【微信号:strongerHuang,微信公众号:strongerHuang】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    如何提高单片机C语言程序执行效率

    首先什么是执行效率。我们平常所说的执行效率就是使用相同的算法在相同输入条件下完成相同计算所产生的系统开销,目前来说一般会更多关注执行时间方面
    发表于 03-06 18:52 1863次阅读

    为什么C语言执行效率高,运行快?

    都说C语言编写程序执行效率比较高,那么到底
    发表于 11-04 09:04 1080次阅读

    嵌入式工程师怎么写出效率高C语言程序

    作为嵌入式工程师,怎么写出效率高、思路清晰的C语言程序呢?
    发表于 07-03 09:34 327次阅读

    Go开发语言的优势在哪里

    进程。对于Go语言,一直存在着争议,很多人善于用Go语言进行开发,但不是所有人都喜欢Go语言,那么Go语言的存在有什么价值?Go语言的优势
    发表于 03-22 15:04

    请问不同编程语言的区别到底在哪里

    不同编程语言的区别到底在哪里?​C语言、python、ruby、java...撇开前端开发语言不谈,但论这些后端
    发表于 06-02 06:44

    如何提高C语言程序执行效率

    的事那么效率。下面说说如何提高C语言程序执行效率
    发表于 07-20 06:39

    使用c语言给单片机编写程序在运行的时候if语句运行的快还是switch语句执行的速度快?

    请问使用c语言给单片机编写程序在运行的时候if语句运行的快,还是switch语句执行的速度快?在优化之前的人写的
    发表于 11-08 06:55

    编写一个以C语言为基础的DSP程序

    实验2 : 编写一个以C 语言为基础的DSP程序一.实验目的1.学习用标准C语言编制
    发表于 03-17 00:13 3480次阅读
    <b class='flag-5'>编写</b>一个以<b class='flag-5'>C</b><b class='flag-5'>语言</b>为基础的DSP<b class='flag-5'>程序</b>

    关于c语言编写的算法程序

    关于c语言编写的算法程序
    发表于 04-09 17:47 12次下载

    如何提高单片机程序执行效率

    更短的时间内完成相同的事那么效率。 关于如何提高C语言程序执行
    发表于 02-11 15:42 6次下载
    如何提高单片机<b class='flag-5'>程序</b><b class='flag-5'>执行</b><b class='flag-5'>效率</b>

    为什么说C语言程序运行时要比其他语言编写程序快得多

    C语言程序运行时要比其他语言编写程序快得多,因为它“离底层机器很近”,这个说法正确吗?
    的头像 发表于 03-16 08:45 2200次阅读

    labview和vb的优势在哪里

    以可视化编程方式的编写程序,不需要像传统的编程语言一样使用代码编写,而是使用图形化的模块和线条来组合程序。这使得编写程序变得更加简单、易于
    的头像 发表于 08-31 17:37 1375次阅读

    C语言编写程序执行效率高的原因是什么?

    机器语言是一种指令集的体系,它是用二进制代码表示的语言,是计算机唯一可以直接识别和执行语言,它具有计算机可以直接执行、简洁、运算速度快等优
    发表于 10-23 10:18 579次阅读
    <b class='flag-5'>C</b><b class='flag-5'>语言</b><b class='flag-5'>编写程序</b><b class='flag-5'>执行</b><b class='flag-5'>效率高</b>的原因是什么?

    c语言编写的源程序可以直接运行吗

    C语言编写的源程序不能直接运行,必须经过一系列的编译链接过程才能生成可执行文件,然后才能运行。 C
    的头像 发表于 11-26 09:03 6744次阅读

    c语言hello world程序编写

    语言"Hello world"程序编写过程,并提供一些实用技巧和注意事项。 首先,我们需要一个C语言开发环境来
    的头像 发表于 11-26 09:23 2270次阅读