现代编程语言用什么语言写成

对于脚本型语言通常是c写的,包括解析器(编译器和执行器)和大部分基础的标准库(比较高阶的库才会用本语言写)。对于编译型语言,通常编译器也是c写的(但编译器对性能要求不高,理论上可以用任何语言完成)。

脚本型语言

对于脚本型语言通常是c写的,包括解析器(编译器和执行器)和大部分基础的标准库(比较高阶的库才会用本语言写)。从这个意义上来说,脚本语言只是c的wrapper,正因为如此,所以才会有人喊python的sort居然比go快之类的说法,其实就算是python的sort快,那也只证明了c比go快。但也有一些语言的解析器用c++写(比如V8)。

编译型语言

对于编译型语言,通常编译器也是c写的(但编译器对性能要求不高,理论上可以用任何语言完成)。执行器则分为两种情况:一种编译为机器码的,执行器自然是cpu(比如c++、go这类)。另一种编译为bytecode的,这种执行器一般用c写,但是由于性能方面的考虑,通常会执行器(也就是vm)会把bytecode变成机器码让cpu直接执行。至于标准库,编译型语言通常倾向于用本语言完全重写,而不是去依赖c库。

Go语言是编译型语言里面比较奇葩的。由于Go语言的目标是成为下一个C语言,所以整个Go语言的实现过程中,尽量减少了对c语言的依赖,大部分的工具链都是用Go语言自身来完成。其基本思路是:用gcc或其他标准c的编译器,编译出一个Go特有的c编译器,然后用这个特有的c编译器,来编译Go语言工具链中那些不得不用c写的部分,包括go的编译器。

有人问c是用什么写的。实际上现在多数c编译器都是c写的,大家去看看gcc的代码就知道了。其实,现在汇编编译器一般也是c写的。

从鸡生蛋的角度,编译器的进化史应该是这样的:先用机器码直接写第一个汇编编译器,然后汇编编译器编出第一个c编译器。有c编译器后可以反过来用c重写汇编编译器和c编译器,做更多的功能增强。这个过程理论上每出现一种新cpu指令集、新操作系统就需要重新来一遍。但是人是聪明的。所以交叉编译这样的东西产生了,这就避免需要把整个编译器进化史重新演绎一遍。

延伸阅读:

什么是编程语言?

计算机编程语言是程序设计的最重要的工具,它是指计算机能够接受和处理的、具有一定语法规则的语言。从计算机诞生,计算机语言经历了机器语言、汇编语言和高级语言几个阶段。

在所有的程序设计语言中,只有机器语言编制的源程序能够被计算机直接理解和执行,用其它程序设计语言编写的程序都必须利用语言处理程序“翻译”成计算机所能识别的机器语言程序。

计算机语言是一种特殊的语言。因为它是用于人与计算机之间传递信息的,所以人和计算机都能“读懂”。具体地说,一方面,人们要使用计算机语言指挥计算机完成某种特作,就必须对这种工作进行特殊描述,所以它能够被人们读懂。另一方面,计算机必须按计算机语言描述来行动,从而完成其描述的特定工作,所以能够被计算机“读懂”。

文章标题:现代编程语言用什么语言写成,发布者:小编,转载请注明出处:https://worktile.com/kb/p/41088

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
小编小编认证作者
上一篇 2023年2月23日
下一篇 2023年2月23日

相关推荐

  • 电子表格如何管理项目

    电子表格管理项目通过提供一个灵活、易于自定义的平台来组织和跟踪项目数据。核心优点包括:易于使用、数据整合、实时更新、协作易于实施,这些都是它在项目管理方面得以广泛运用的原因。其中,协作易于实施是电子表格的一大亮点,多用户可以同时访问和编辑同一文件,从而提高了工作效率和团队协作能力。通过共享表格,团队…

    2024年4月10日
    1500
  • 国外oa办公系统

    标题:国外OA办公系统的功能与发展趋势 开门见山,国外OA(Office Automation)办公系统是指专门设计来改善办公室工作流程、提升工作效率的软件系统。1、重要功能包括电子邮件、文档管理、工作流程自动化、协同工作平台等。2、这些系统支持远程工作、提供移动办公解决方案,以适应现代工作方式的变…

    2024年1月15日
    24800
  • devops模型什么时候出的

    DevOps模型自2008年提出,至今已历经近15年发展。这一理念突显软件开发与运维协作的重要性。1、 来源于2008年的一次技术讨论会议,核心在于缩短开发与部署间的差距;2、 强调自动化流程以提升效率;3、 推崇文化变革,促进团队协作和沟通。4、 价值在于快速、可靠地交付产品。 1、 DevOps…

    2024年3月26日
    4200
  • 数据仓库和数据库区别是什么

    数据库是一种逻辑概念,用来存放数据的仓库,通过数据库软件来实现。数据仓库是数据库概念的升级。从逻辑上理解,数据库和数据仓库没有区别,从数据量来说,数据仓库要比数据库更庞大的多。数据仓库主要用于数据挖掘和数据分析,辅助领导做决策。 一、用途 数据库:主要用于事务处理,即OLTP(Transaction…

    2023年2月13日
    61900
  • devops意味什么

    DevOps为开发(Development)与运维(Operations)的结合字,意味着软件开发与IT运维之间合作与沟通的加强,旨在提升软件交付的速度与质量。重点包括1、文化转变、2、自动化流程、3、快速交付、4、技术工具堆栈、5、持续集成和持续交付(CI/CD)、6、监控与反馈。 其中,文化转变…

    2024年3月26日
    4900
  • excel仪表盘怎么制作

    excel仪表盘的制作过程:1、将必要的数据导入 Excel;2、设置工作簿;3、向表中添加原始数据;4、数据分析;5、确定视觉对象;6、创建 Excel 仪表盘;7、自定义仪表盘。将必要的数据导入 Excel是过程的名列前茅步,没有数据就无法制作。 1、将必要的数据导入 Excel 没有数据,做不…

    2023年2月24日
    34400
  • 软件项目如何管理版本设计

    软件项目的版本管理是指利用版本控制系统来记录软件项目中文件的变更历史,并能够在必要时恢复或比较不同版本的过程。要有效管理版本设计,至关重要的几个策略包括:使用版本控制工具、规定清晰的提交规范、使用分支策略、建立版本发布流程、定期进行代码审查等。其中,使用版本控制工具是基础且核心的部分,因为它为其他所…

    2024年4月10日
    2300
  • mov指令有哪些

    mov指令有:1、立即数传送;2、寄存器传送;3、存储器传送;4、段寄存器传送。立即数传送通常是指在立即寻址方式指令中给出的数。可以是8位、16位或32位,该数值紧跟在操作码之后。如果立即数为16位或32位,那么,它将按“高高低低”的原则进行存储。 1、立即数传送 立即数通常是指在立即寻址方式指令中…

    2023年1月10日
    1.6K00
  • 华为的devops平台叫什么

    华为的DevOps平台叫做华为云DevCloud。 在这个平台上,1、团队协同以及2、软件开发及自动化部署提供了一个全面的解决方案。软件开发及自动化部署是它的关键亮点之一,因为它大幅度提高了软件交付的效率和质量,这在当前的软件开发实践中显得尤为关键。 华为云DevCloud不单是一个简单的开发工具或…

    2024年3月26日
    5700
  • 编译程序和解释程序的区别是什么

    编译程序和解释程序的区别在于以下方面:编译型语言的源代码有错误编译不通过,无法生成可执行代码,更无法执行程序;解释型语言只有执行时才会判断是否出错,即使一句出错,也可以继续执行下一句等。 一、区别 编译型是使用编译器编译后生成计算机硬件可直接执行的指令,解释型是在运行时才由解释器逐语句去执行。 编译…

    2023年2月21日
    1.6K00

发表回复

登录后才能评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部