Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >使用C实现其他语言是否以任何方式限制了他们的设计?

使用C实现其他语言是否以任何方式限制了他们的设计?
EN

Stack Overflow用户
提问于 2010-08-18 15:30:31
回答 9查看 764关注 0票数 22

似乎在过去20年中出现的大多数新的编程语言都是用C编写的。这是完全有意义的,因为C可以被看作是一种可移植的汇编语言。但我好奇的是,这是否以任何方式限制了语言的设计。促使我提出问题的是,如何在Python中直接使用C堆栈调用函数。显然,编程语言设计者可以用他们想要的任何语言做任何他们想做的事情,但在我看来,你选择用来编写新语言的语言会让你处于某种心态中,并给你提供了一些很难忽视的捷径。这些语言的其他特征是否来自于用该语言编写的语言(好的或坏的)?

EN

回答 9

Stack Overflow用户

回答已采纳

发布于 2010-08-18 15:39:28

即使使用C实现,您在实现方面也是出人意料的自由。例如,chicken scheme使用C作为中间语言,但仍然设法在其垃圾收集器中使用堆栈作为托儿所生成。

也就是说,在某些情况下会有一些限制。举个例子: GHC haskell编译器有一个名为Evil Mangler的perl脚本,用来修改GCC输出的汇编代码,从而实现一些重要的优化。他们已经转向内部生成的程序集和LLVM,部分原因就是这个原因。也就是说,这并没有限制语言设计--只是编译器对可用优化的选择。

票数 5
EN

Stack Overflow用户

发布于 2010-08-18 15:40:21

我倾向于不同意。

我不认为一种语言的编译器或解释器是用C实现的--毕竟,你可以用C实现一个完全不同于它的宿主环境的虚拟机,这意味着你可以摆脱C/准汇编语言的思维模式。

然而,更难断言C语言本身对后来语言的设计没有任何影响。例如,使用大括号{ }将语句分组到块中,空格和缩进几乎不重要的概念,本机类型的名称(intchar等)。和其他关键字,或如何定义变量的方式(即,先声明类型,然后是变量的名称,可选的初始化)。当今许多流行且广泛使用的语言(C++、Java、C#,我相信还有更多)都与C语言共享这些概念。(这些概念在C语言中可能并不是全新的,但AFAIK C提出了这种特定的语言语法组合。)

票数 8
EN

Stack Overflow用户

发布于 2010-08-18 15:36:31

不,简而言之。现实情况是,看看周围用C编写的语言,例如,Lua与C语言的距离是最远的,而不是成为Perl。它具有一流的功能,完全自动化的内存管理等。

新的语言受到其实现语言的影响是不寻常的,除非该语言包含严重的限制。虽然我绝对不赞成C,但它并不是一种有限的语言,只是与更现代的语言相比,它非常容易出错,编程速度也很慢。哦,除了在CRT里。例如,Lua不包含目录功能,因为它不是CRT的一部分,所以他们不能在标准C中实现它,这是C限制的一种方式。但就语言功能而言,它并不受限制。

如果你想提出一个论点,说用C实现的语言有XYZ限制或特征,你就必须证明用另一种方法做事情在C中是不可能的。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3513780

复制
相关文章
从一个简单的汇编程序学习汇编程序的结构以及编译链接的过程
由于大部分的pwn都是在Linux平台下的,故下面所涉及到的汇编都是在Linux平台下的汇编。
Elapse
2020/08/17
1.7K0
MIPS架构深入理解2-MIPS架构体系
架构这个词,英文是architecture,牛津词典对其解释为the design and structure of a computer system。所以,这个词体现的是设计和结构,也就是说,是一个抽象机器或通用模型概念上的描述,而不是一个真实机器的实现。这就好比一辆手动挡车,无论是前轮驱动还是后轮驱动,它的油门总是在右,离合器在左。这里,油门和离合器的位置就相当于架构,前轮还是后轮驱动是具体实现。所以,相同的架构,实现未必相同。
Tupelo
2022/08/15
5.9K0
MIPS架构深入理解2-MIPS架构体系
MIPS架构深入理解7-汇编语言理解
本文主要的目标读者是习惯于C语言编程,但是,有时候不得不读懂一些汇编代码甚至做一些小范围的改动的开发者,比如操作系统移植时启动代码start.S文件的阅读与修改。如果想要深入研究汇编程序如何编写,请参考所使用的MIPS工具链的说明文档。
Tupelo
2022/08/15
3.4K0
MIPS架构深入理解7-汇编语言理解
从一个简单的汇编程序学习linux下的系统调用机制
上节 从一个简单的汇编程序学习汇编程序的结构以及编译链接的过程中,打印hello world的汇编程序的详细解释为:
Elapse
2020/08/17
8730
MIPS漏洞调试环境安装-栈溢出
主要是IDA,IDA的安装就不用多说了。这里说明的是辅助插件MIPSROP这些插件的安装,书里面给的插件的链接已经无法支持IDA 6.7以后的版本,主要是由于版本以后的API有更新,具体原因IDA的官方博客也给出了说明,查看了issue以后,发现有大佬已经写了能够支持IDA7.0的插件,安装的命令照着readme做即可顺利的装上。
随心助手
2019/10/15
1.8K0
汇编程序
ISA指令集是由0和1组成的机器语言,难以记忆和阅读,因此人们发明汇编程序帮助记忆。 汇编基本算是和机器指令一一对应的关系,可以认为是给机器指令的每个部分分别起了别名。 一、汇编程序的组成 操作码和操作数: 操作码如ADD表示bit[15:12]=0001,AND表示bit[15:12]=0101,操作数R0表示编号为0的寄存器。 标号: 指向内存单元的一个符号名,有两种用途,一种用于跳转命令跳转的地址,另一种用于读取或存储指令时访问的内存位置 注释: 以";"开头的字符串,只给人阅读的,汇编翻译程序会忽略
linxinzhe
2018/04/10
7180
程序为教你写python第一个程序,非常简单!【零基础Python教程004】
在检查完毕以后,我们开始正式使用Python来写点小东西吧!看看Python到底难不难?
刘金玉编程
2022/04/19
3640
程序为教你写python第一个程序,非常简单!【零基础Python教程004】
网络编程-一个简单的echo程序(1)
在《网络编程-一个简单的echo程序(0)》中已经对程序整体有了宏观的认识,本文将抽丝剥茧,逐步深入了解echo程序。
编程珠玑
2019/07/12
1K0
网络编程-一个简单的echo程序(1)
Java新手非常容易犯的一个错误
最近一直在做底层方面的研究,所以这段时间就没写java相关的东西,但恰巧今天同事问我一个问题,在帮他解决完这个问题之后,我发现,这个问题对java新手来说还是非常容易犯的,所以在这里记录下。
KINGYT
2019/08/06
8360
MIPS架构深入理解1-MIPS和RISC架构体系介绍
众多RISC精简指令集架构中,MIPS架构是最优雅的”舞者”。就连它的竞争者也为其强大的影响力所折服。DEC公司的Alpha指令集(现在已被放弃)和HP的Precision都受其影响。虽说,优雅不足以让其在残酷的市场中固若金汤,但是,MIPS架构还是以最简单的设计成为每一代CPU架构中,执行效率最快的那一个。
Tupelo
2022/08/15
8.2K0
MIPS架构深入理解1-MIPS和RISC架构体系介绍
MIPS架构深入理解6-异常和中断
MIPS架构中,中断、异常、系统调用以及其它可以中断程序正常执行流的事件统称为异常(exception),统一由异常处理机制进行处理。
Tupelo
2022/08/15
3K0
MIPS架构深入理解6-异常和中断
非常简单的一个smtp邮箱发信案例
非常简单的一个smtp邮箱发信案例,可能有些人用得到 下载源码上传到网站即可,该注释的都注释了 上传后修改config.php配置文件为自己邮箱发信配置即可 <?php $config =
Youngxj
2018/06/04
7660
我的WCF之旅(1):创建一个简单的WCF程序
为了使读者对基于WCF的编程模型有一个直观的映像,我将带领读者一步一步地创建一个完整的WCF应用。本应用功能虽然简单,但它涵盖了一个完整WCF应用的基本结构。对那些对WCF不是很了解的读者来说,这个例子将带领你正式进入WCF的世界。
跟着阿笨一起玩NET
2018/09/18
6670
我的WCF之旅(1):创建一个简单的WCF程序
【汇编】(五)第一个汇编程序
源程序由“ 汇编指令+伪指令+宏指令 ”组成: 伪指令:编译器处理; 汇编指令:编译为机器码;
sidiot
2023/08/31
2740
【汇编】(五)第一个汇编程序
我的WCF之旅(1):创建一个简单的WCF程序
为了使读者对基于WCF的编程模型有一个直观的映像,我将带领读者一步一步地创建一个完整的WCF应用。本应用功能虽然简单,但它涵盖了一个完整WCF应用的基本结构。对那些对WCF不是很了解的读者来说,这个例子将带领你正式进入WCF的世界。 在这个例子中,我们将实现一个简单的计算服务(CalculatorService),提供基本的加、减、乘、除的运算。和传统的分布式通信框架一样,WCF本质上提供一个跨进程、跨机器以致跨网络的服务调用。在本例中,客户端和服务通过运行在相同的同一台机器上不同进程模拟,图1体现了客户端
蒋金楠
2018/02/07
9360
我的WCF之旅(1):创建一个简单的WCF程序
【Web】一个非常简单的移动web消息框
最近在写个简单的公众号页面,前端验证时有些信息要提示,很简单的需求实在不想找啥现成的轮子,又不至于用alert这么粗暴,遂写了个非常简单的消息框,效果如图:
AhDung
2018/09/13
6630
【Web】一个非常简单的移动web消息框
用python生成一个非常简单的词云
前提是需要有一定的数据,数据从哪来呢,当然是用python爬呀 简单的一个词云生成,不多说了,都在代码里
wo.
2021/06/15
3780
用python生成一个非常简单的词云
如何使用Python为Hadoop编写一个简单的MapReduce程序
How to Install Hadoop in Stand-Alone Mode on Ubuntu 16.04 如何使用Python 为 Hadoop编写一个简单的MapReduce程序。 尽管Hadoop框架是使用Java编写的但是我们仍然需要使用像C++、Python等语言来实现Hadoop程序。尽管Hadoop官方网站给的示例程序是使用Jython编写并打包成Jar文件,这样显然造成了不便,其实,不一定非要这样来实现,我们可以使用Python与Hadoop 关联进行编程,看看位于/src/exa
MachineLP
2018/01/09
2.2K0
MIPS架构深入理解4-Cache机制
现代CPU中,为了提高CPU的执行效率,高速缓存必不可少。关于Cache工作原理可以参考我之前的文章
Tupelo
2022/08/15
2.7K1
MIPS架构深入理解4-Cache机制
编写一个非常简单的 JavaScript 编辑器
当然,我们已经有可以使用的很好的Web编辑器:你只需下载,并插入页面即可。我以前习惯于使用CodeMirror和ACE。例如,我为CodeMirror写了一个插件来支持PlantUML。然而,这些编辑器有一个问题:它们难以扩展和难以理解。
哲洛不闹
2018/09/14
9460
编写一个非常简单的 JavaScript 编辑器

相似问题

MIPS/QtSpim寄存器1保留用于汇编程序错误

10

QtSpim汇编程序:双重堆栈操作的错误

10

QtSPIM MIPS模拟器:寄存器、a1和a2自动更改

17

MIPS汇编程序中的寄存器传输符号

10

MIPS QTSPIM 64位

11
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文