python属于低级语言_能否用高级语言(C++、JAVA、Python等)编出低级语言编译器(Pascal、basic等)?...

该问题本身叙述有误:Pascal 和 BASIC 属于(通常意义下的)高级语言。

[语境1] 通常意义下,低级语言,即机器级语言 (machine-level language),是指特定于机器的指令集 (ISA) 的编程语言(机器可以指代硬件处理器或者虚拟机)。这时低级语言就是指机器码 (machine codebyte) 和汇编语言 (assembly language)。

[语境2] 在特指时,有时会说某一语言 A 比另一语言 B 更低级,这通常是说:在 A 和 B 的源程序都可通过各自的语言翻译机制转换 (translation) 为目标机器 M 的机器码前提下,A 的语言特性和描述性更接近于 M 机器模型。例如,C 语言比 Java 更低级;再如,C++ 相较于 C 语言有着相同的机器模型层次,但是增加了更高层的语义抽象特性。

无论 [语境1] 还是 [语境2],对于你的问题的回答都是:可以,但不一定有意义。

需要注意的是,广义的“编译技术”或者说程序语言翻译是个很大的范畴,有时指语言翻译的某几个阶段 (phase),还有时其目的不是直接产生目标代码 (codegen)。

以下是用高级语言开发低级语言的翻译设施的实例:用 C/C++ 开发汇编器,或 C/C++ 编译器 [有意义]。现实中很多汇编器确实是这么做的。对一个特定编译器,如何编译编译器自己的源码,参考 Wikipedia: compilers bootstrapping。

用 Java 开发 C/C++ 编译器。用 ANTLR 这种 general parser gen 为 C/C++ 产生 parser 前端,然后基于此前端开发 C/C++ 源码静态分析工具 [有意义],或进一步完成 codegen 功能(如果继续用 Java 开发 optimizer 和 codegen 意义则不大)。

用 JavaScript 开发 C/C++ 编译器。在一些 Web IDE 上可用 JavaScript 开发分析 C/C++ 源码的 parser 前端,通常目的是建立静态分析工具(例如类似 IntelliSense、Lint 等功能)[有意义]。用 JavaScript 做 codegen 的意义很小。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值