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

对于脚本型语言通常是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日

相关推荐

  • 什么时候用电脑学习编程

    电脑学习编程的最佳时间可以概括为三个阶段:1、基础学习期,2、项目实践期,3、持续进阶期。在基础学习期,重要的是建立编程的基本概念和语法理解。这个时候,电脑作为学习工具,可以让学生通过具体的练习和编写简单程序,建立起正确的编程思维和习惯。在这一阶段,电脑不仅仅是编程实践的平台,而且是获取在线资源,如…

    2024年4月27日
    1000
  • c盘d盘e盘和f盘的区别

    C盘、D盘、E盘和F盘的区别主要在于:1、存储用途不同;2、安全性不同;3、存储速度不同;4、容量大小不同。总的来说,C盘、D盘、E盘和F盘在计算机系统中各有其特殊的角色和功能。 1、存储用途不同 C盘主要用于存放操作系统和应用程序,是计算机启动和运行必不可少的分区。D盘、E盘、F盘则常常用于存储用…

    2023年5月19日
    7.9K00
  • 新手该用什么编程软件好

    对于初学者,在选择编程软件时主要考虑三点:1、易用性;2、社区支持;3、资源丰富性。易用性是首要考虑的因素,因为对于新手来说,一个直观、易操作的界面会大大降低学习曲线。此外,一个活跃的社区支持可以帮助解决学习过程中遇到的问题,而丰富的学习资源则能提供广泛的学习材料,帮助新手快速上手。 一、易用性 在…

    2024年4月27日
    1500
  • 少儿编程主要都有什么课程

    培养孩子逻辑思维能力的少儿编程课程主要包括:1、图形化编程;2、Python编程;3、Web开发;4、机器人编程;5、游戏设计;6、App开发。其中,图形化编程课程是对于小龄儿童非常适合的入门教育,它通过直观的操作界面和拖拉式的编程方式,降低学习难度,并激发孩子们的兴趣。例如,使用Scratch这样…

    2024年4月27日
    1500
  • ACC编程挑战赛是什么

    ACC编程挑战赛是一场旨在鼓励软件开发者和计算机编程爱好者展示其技术才能的比赛。参赛者需要在限定时间内解决一系列编程问题。其中,1、促进技术交流与创新是其核心目的之一。该赛事通过提供实际与理论并重的挑战案例,为参赛者搭建了一个技能自我挑战与提升的舞台,同时也促使他们与来自不同背景和经验的开发者交流观…

    2024年4月27日
    1200
  • 想学电脑编程学什么好

    学习编程应依次掌握:1、基础逻辑能力;2、一门主流编程语言;3、算法与数据结构;4、软件开发生命周期。专注于一门主流编程语言,如Python或Java,能够为编程学习和实践提供坚实的基础。这些语言因其广泛的应用和支持社区,成为入门与深入学习的首选。通过掌握一门语言,可以学习编程的核心概念,如变量、循…

    2024年4月27日
    900
  • 钉钉如何设置项目主管管理

    项目设置主管是关键组织流程,它能确保团队成员遵循正确的通道报告他们的进度、问题和成果。钉钉作为一个协作工具,提供了便利的功能来设定和管理项目主管。其中包括创建项目角色、指定主管、调整权限、设定通知以及追踪进度和表现,等等。 对于创建和指派项目主管的我们首先需要明确在钉钉中创建项目:通常在钉钉的项目或…

    2024年4月10日
    7800
  • 一个编程是什么

    编程是一种将算法转化为编码,以便能被计算机执行的过程。它涉及到编写、测试、调试和维护源代码的活动。1、编程使得我们能够创造软件、应用和网站,通过这些工具,我们可以执行各种复杂任务,解决问题,或者是进行娱乐。以创造软件为例,这是编程最直接的应用之一。通过编程,开发者可以使用特定的编程语言,按照逻辑思维…

    2024年4月27日
    1100
  • python网络编程是什么

    Python网络编程是通过Python语言来实现设备间通过网络交互的技术。主要包括1、使用Socket进行网络通信,2、实现客户端与服务器的数据交换,3、编写多线程或多进程网络应用,4、使用高级库如requests或BeautifulSoup进行Web爬虫开发。在这些方面中,使用Socket进行网络…

    2024年4月26日
    2000
  • 项目工程如何提升质量管理

    项目工程质量管理的提升可以通过合理规划、严格执行、持续改进、引入新技术等多种方式实现。其中,合理规划是质量管理的基础,要在工程项目启动之前详细制定质量管理计划,包括质量目标的确定、质量控制的标准和流程等。通过这个计划,项目团队可以明确各自的质量责任,确保在执行过程中每个环节都符合既定的质量标准。 一…

    2024年4月10日
    10500

发表回复

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

400-800-1024

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

分享本页
返回顶部