前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >所有的编程语言先会编译成C,再编译成汇编,才能在机器上运行?

所有的编程语言先会编译成C,再编译成汇编,才能在机器上运行?

作者头像
程序员互动联盟
发布2020-04-03 17:57:43
2.1K0
发布2020-04-03 17:57:43
举报

首先这种认识是不正确的,所有的编程语言要转化成机器语言然后才去运行,肯定不会转化成C语言去运行,因为C语言还是要汇总成机器语言去运行。从类别上讲编程语言主要分成两种,一种在运行之前提前生成二进制文件,机器上电直接运行就可以了;另外一种是一边运行一边编译最终的结果也是转化成二进制文件,这样机器才能准确的识别出来。只要是遵循冯诺依曼的架构都要转化成二进制的文件让机器去运转执行,可能在未来量子计算机发展起来架构会有所改变,起码在很长的一段时间内还会继续这种架构存在。

编程语言如何实现跨平台运行

就拿典型的编程语言Java作为例子来阐述,java属于典型的跨平台语言,跨平台的语言编程的好处是在任何一个操作系统上完成代码编写之后就可以在任何平台来运行,一般开发java都在windows平台上开发,但真正在部署的时候既可以在linux服务器上运行,也可以在windows服务器上运行。但在实际运行过程中还是要遵循各自的指令体系,做这个时期的关键点就在于java的虚拟机,所以在安装运行环境的时候,不同的操作系统的版本是不一致的,java在编译的时候都会转化成字节码,字节码在不同操作系统的虚拟机都可以运行,虚拟机里面会把主流的操作系统指令都分别集成进去,也就是java版本在更迭的时候除了增加基本语法之外,还要在修改不同的操作系统底层实现,这样子才能真正做到跨平台运行。

跨平台在嵌入式领域使用的比较多,如果用C++开发的代码可以在宿主机上直接运行,调试完毕了然后再烧录到嵌入式板卡里面去运行,毕竟直接在PC的linux上调试代码,要比直接在板子里调试要方便的多,这就是跨平台的好处,除了方便开发代码还极大方便调试。

C语言在编程语言中的地位

虽然不是每种编程语言都要转化成C语言再去运行,但很多编程语言的底层都是C语言来实现的,这是真实存在的事实,但还是有很多人觉得C语言已经过时了,起码从招聘的简章C语言的比例在下降,这个主要原因是国内程序员大部分都做着互联网的工作,互联网主要从事应用级开发比较多,所以一些集成化编程语言在国内比较能够吃得开,像python,php,Java在国内都有着良好的生态基础,这是国内软件环境决定的。

C语言在很多基础领域还是首选的编程语言,语法简洁但灵活多样,在实际功能的的时候效率高性能强,在很多领域还是第一编程语言,主要在通讯行业以及嵌入式领域还是C语言的主战场。非常流行的人工智能在底层很多功能实现也是基于C语言完成,只不过C语言的角色从前台走向了幕后,但重要性并没有因此而降低,即使选择C语言作为入门的编程语言,在基础过硬的情况下照样能找到合适的工作,不要迷信C语言已经不行了之类的话语。

对于编程语言的编译原理以及运行过程还是要多去涉猎,如果纯正的高级编程语言可能很少去关系这些个原理,都是去操心如何架构等方面的问题,底层如何实现功能对于上层调用方式都有决定性因素,尽管很多人不推荐第一门编程语言选择C语言,但从个人的角度出发,还是建议C语言作为入门编程语言,即使不是从事这方面的工作,起码在从知识体系上还是有很大的好处,希望能帮到你。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-10-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 程序员互动联盟 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 编程语言如何实现跨平台运行
  • C语言在编程语言中的地位
相关产品与服务
专用宿主机
专用宿主机(CVM Dedicated Host,CDH)提供用户独享的物理服务器资源,满足您资源独享、资源物理隔离、安全、合规需求。专用宿主机搭载了腾讯云虚拟化系统,购买之后,您可在其上灵活创建、管理多个自定义规格的云服务器实例,自主规划物理资源的使用。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档