总是困惑我的东西是人们如何创造新的编程语言?
子/相关问题:
他们写什么语言?
>语言是否必须是高级语言和机器代码之间的语言?
>创建编程语言的阶段/元素是什么例如 – C或C(从我的基础研究我已经意识到所有的编程语言都需要一个编译器或一个解释器,但是我并没有真正了解两者之间的区别)
正如我所说,我是一个完整的新手,但我真的很感兴趣的编程,真的想了解更多.我就像一个真正的网球运动员,想知道关于网球的一切!我在Google上搜索,但无法得到令人满意的答案.
解决方法
如果你想进入电脑的历史,我会看看提花织机和巴贝奇的差异引擎.这两个发明可能对早期的现代计算具有最大的早期影响.打卡(提花)和机械“计算”(Babbage)的使用提供了很大的基础.
所以让我们开始计算机的工作原理.每台电脑的核心是晶体管(之前是真空管).晶体管背后的最大的一件事是它可以以两种不同的方式发送电力,这取决于它的状态*.这允许创建逻辑的电力流.有了这个,我们可以创造各种美妙的东西**:门,门,半加法器,多路复用等
现在我们已经有了这些电子积木,基本上有两种类型的信号.告诉电子设备的信号和电子计算的实际数据.所以添加的命令可能会将数据从寄存器1中加入,并将其添加到寄存器2中的数据,并将该信息存储在寄存器3中.该命令的作用是将计算机置于一个状态,使寄存器1 2表示作为加法器的输入,寄存器3存储结果.对于减法乘法等也是如此.还有命令说,跳转到某行,从内存读取信息等.
现在我没有真正解决你的问题,但我已经提出了一些框架来了解发生了什么. (你说你想学习一切= P)
所以现在我们有一台运行机器代码的计算机.没什么更多的东西这是一个很难使用的机器.所以汇编几乎总是创建的第一种语言之一.要使用程序集,我们需要创建一个汇编程序.汇编器本质上是一个编译器,它将汇编语言转换成机器代码.结果汇编语言与机器码命令为1到1.这个想法是因为我们用二进制编码,所以保持简单是个好主意.所以现在我们有一些可以将汇编语言转换成机器代码的东西.
所以现在我们有两个层次的“语言”
0 – 机器代码:这是cpu了解的代码,它是二进制的,不是很友好
1 – 汇编语言:这使用了一些“英语喜欢”的术语,但是仍然相对笨重,并且使用机器代码明了1比1.
所以我们来补充一下,
2-高级语言
一个高级语言是比较类似英语的,比如C.我们有循环和数据结构以及其他有用的东西.要使用C,我们必须编写一个编译器.编译器使用C语言编写的代码,并创建对象代码(类似于汇编语言).然后另一个程序将该对象代码转换为机器语言.这两个步骤通常合并成一个为了效率.现在我们有你的第一个定义.编译器将高级语言转换为对象(或机器)代码***.
既然我们有第一个高级语言(C),那么再次使用汇编语言可能似乎是愚蠢和痛苦的,除非我们必须.所以现在我们可以用C编写新的语言和编译器,或者我们现在所做的任何其他语言.
所以现在让我们撕一口译.一个解释器是一个程序,它读取并执行自己的程序.而不是将将高级代码转换为机器代码的程序,而是读取高级代码(通常是一次一行)并执行它.
我们以java为例. Java是一种解释语言,基本上这意味着有人做了一个程序(就是说C)这个C程序读取java并执行它.所以计算机和代码之间还有一层.
有很多东西,这种反应类型的釉面,如何构建一个cpu,考虑到制作一种语言,同样的语言如何运行在不同的cpus上.口译员优于编译器的优势等等,但希望它能够提供大量的背景和信息,您可以自己阅读和研究更多.