天涯论坛

 找回密码
 立即注册
搜索
查看: 52|回复: 3

Python是用C实现的,Java是用C++实现的,那为么不直接用C/C++?

[复制链接]

3061

主题

3万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99139052
发表于 2024-8-17 14:08:17 | 显示全部楼层 |阅读模式

咱们继续向下做个类比。既然C总要经过汇编一层,那为何有人用C而不是直接用汇编呢?

先用汇编函数调用为例子。一个C函数的调用,在C语言里便是一行搞定,指定函数名,传入实参列表,获取返回值就可。但在汇编的层级,则要做如下工作:

(1)找到栈位置,将其载入到寄存器

(2)将第1个参数入栈

(3)将第二个参数入栈,如下若干参数入栈不表

(4)返回位置入栈

(5)到函数位置起始执行

(6)将返回位置存入寄存器

(7)函数运行结束,将此次调用栈恢复栈顶指针位置,即所有参数被忽略

(8)返回值入栈

(9)到返回位置

再举个嵌入式编程里,中断处理的例子。中断处理是由于CPU硬件触发的事件处理。在C语言里只必须根据嵌入式库的规范,编写名叫作符合需求的函数放那里就行了。当事件出现时,自而后由CPU调用这个函数来处理对应的硬件事件。

倘若用汇编来写,则要这么做:

(1)用符号定义来制定中断处理的入口位置

(2)将中断处理符号位置存入中断向量表

(3)中断出现时,CPU的PC指针到中断处理入口位置

(4)保留所有寄存器到内存

(5)屏蔽其他中断使能开关,避免中断嵌套出现,当然高级玩法能够用嵌套中断

(6)处理结束,将内存里备份的之前执行序的寄存器内容恢复到寄存器

(7)PC指针到之前执行序的位置

各样体系结构上,如上过程会有有些区别,但大体含义如此。

那样回到题主的问题,反正底层都是要用汇编的,为么还要用C?另一想要作为一个优秀的、有能力程序员,做软件研发的话,就来学习C语言C++吧!你倘若感觉自学C/C++语言有困难的话,我本身是一个C/C++出身的程序员,大众有兴趣能够一块来筘羣学习,C/C++编程学习,七八四一四3133。不管你是转行还是找工作,大众一块成长进步。无非便是C减少了有些不必要的操作过程

由于有些简单的编程范式,例如函数调用,C语言已然帮程序员屏蔽了实现细节,只必须简短的语句就能实现。只必须很短的代码就能实现需求,而非陷入有些不必要的细节里反复纠结。

高级语言如Python/Java是如此。换句话来讲便是提高咱们研发效率,即使她们C/C++“强大”。

文案转载自丨知乎作者:gashero

链接:

https://www.zhihu.com/question/336291614/answer/811272489




上一篇:Python编程语言中的基本形成部分:Python语句详解
下一篇:什么是Python语言?
回复

使用道具 举报

3070

主题

3万

回帖

9915万

积分

论坛元老

Rank: 8Rank: 8

积分
99158931
发表于 2024-10-21 17:42:55 | 显示全部楼层
楼主的文章深得我心,表示由衷的感谢!
回复

使用道具 举报

3069

主题

2万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99138951
发表于 2024-10-29 06:29:54 | 显示全部楼层
系统提示我验证码错误1500次 \~゛,
回复

使用道具 举报

3069

主题

2万

回帖

9913万

积分

论坛元老

Rank: 8Rank: 8

积分
99138951
发表于 2024-10-29 07:35:55 | 显示全部楼层
你说得对,我们一起加油,未来可期。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|天涯论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-22 23:13 , Processed in 0.114268 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.