创build我自己的编程语言
可能重复:
在C / C ++中实现解释器所需的参考文献
关于创build口译语言的书籍
如何创build一个语言这些天?
学习编写一个编译器
可能重复:
学习编写一个编译器
好吧,我只有13岁。 我知道一些C ++,非常好的PHP,亲在CSS的HTML,好的在JavaScript。 所以我在想c ++是怎么产生的我的意思是计算机怎么能理解代码的意思? 它怎么读……所以我可以创build自己的语言,怎么样?
如果您对编译器devise感兴趣(“计算机如何理解代码的含义”),我强烈推荐Dragon Book 。 我在大学时使用它,甚至自己创build编程语言。
“偶尔我会觉得devise一门编程语言是一种诱惑,但是我只能躺下来,直到它消失。” – L. Peter Deutsch
编辑(渴望上下文的人):
“[L.Peter Deutsch]也编写了PDP-1 Lisp 1.5实现,基本的PDP-1 LISP,”在12-15岁之间仍然是短裤“。
如果你想了解计算机如何理解代码,你可能想学习一些汇编语言。 这是一个更低级的语言,会让你更好地感受真正被执行的简单指令。 你也应该能够感受到如何实现更高层次的结构,比如只有条件跳转的循环。
为了更低层次的理解,你需要研究电子学。 数字逻辑向您展示了如何使用电子“门”,并实现一个通用CPU,该CPU可以理解汇编语言代码生成的机器码。
对于真正的低层次的东西,你可以学习材料科学,它可以教你如何真正使门在primefaces水平上工作。
你听起来像一个足智多谋的人。 您需要根据您的理解水平来寻找关于这些主题的书籍和/或网站,并专注于您最感兴趣的内容。 对计算机科学或计算机工程学士学位有一个相当完整的理解,但是对于一个有动力的人来说,很多事情都是可以理解的。
是的,可以创build自己的语言。 看看编译器编译器。 或者如果你敢的话,可以使用一些脚本语言的源代码。 一些有用的工具是yacc和野牛和lexx。
其他人提到龙书。 我在大学时代用过一本我认为被称为“编译器理论与实践”的书。
学习汇编语言是没有必要的。 例如,Javascript运行在一个被称为解释器的东西,这是一个执行JavaScript文件的应用程序。 在这种情况下,解释器通常内置在浏览器中。
最简单的启动程序语言可能是编写一个简单的基于文本的计算器。 即采取一个文本文件,运行并执行计算。 你可以很容易地用C ++编写。
我大学项目的第一语言是BNF给我们定义的语言。 然后,我们必须编写一个parsing器,将其parsing成内存中的一个树结构,然后写入一个叫做3位地址代码的东西(就像汇编程序一样)。 你可以很容易地把3个地址代码转换成真正的汇编程序或者为此编写一个解释器。
对! 这绝对有可能。 其他人提到龙书,但也有大量的在线信息。 例如,llvm有一个实现编程语言的教程: http : //llvm.org/docs/tutorial/
我真的推荐编程语言的语用学 。 这本书是一本很好的书,可以从一门语言到编译器如何工作和创build自己的语言。 这本书比“龙书”更容易阅读,并解释了如何在事先做好准备之前进行工作。
有可能的。 你应该了解编译器和/或口译员:他们是什么,他们是如何制造的。
开始学习ASM和阅读字节码的工作原理,你可能有机会:)
如果你知道C – 听起来像你一样 – 抓这本古老的书的旧版本: http : //www.amazon.com/Craft-Take-Charge-Programming-Book-Disk/dp/0078818826
在这里有一个章节,作者创build了一个“C”解释器,用C语言编写。它不像龙书那样严重,但是我记得它非常简单,非常实用和容易遵循,而且因为你只是入门,这将是一个令人敬畏的介绍语言的“语法”的想法,并“标记”一个程序。
这将是一个完美的地方给你开始。 此外,二手版本为0.01美元,比龙书便宜。 ;)
从创build一个parsing器开始。 阅读EBNF语法。 这将回答你关于计算机如何读取代码的问题。 这是一个非常高级的话题,所以不要期望太多自己,而是玩得开心。 我用过的一些资源是bison,flex和PLY 。
是! 对编译器感兴趣的是我对专业CS的兴趣(之前我曾经到过EE的路线,而且只是在大学里正式转换),这是学习TON关于计算机科学的广泛领域的好方法。 你比我年轻一点(当我开始和parsing器和口译员混在一起的时候,我正在读高中),但是现在有很多信息在你的指尖。
从小处着手:devise你可能想到的最细微的语言 – 只需要一个简单的math计算器,就可以开始variables赋值和replace。 当你冒险,尝试添加“如果”或循环。 忘了像lex和yacc这样的神秘工具,可以手工编写一个简单的recursion下降parsing器,也许可以转换成简单的字节码,并为其编写一个解释器(避免了解特定机器的组装,寄存器分配等所有困难部分)。 这个项目你会学到很多。
像其他人一样,我推荐龙书(1986年版,我不太喜欢新书,坦白地说)。
我会为你的其他项目添加这个项目,我build议使用C或C ++,不要因为我是一个语言偏执者,而只是因为我认为在C / C ++中解决困难会教会你更多底层的机器结构和编译器问题。
(注意:如果你是一个专业人士,build议不会创build一种新的语言,这几乎不是一个正确的解决scheme,但作为一个学习和探索的项目,这真是太棒了。
如果你想要一个真正的一般(但是写得很好)的介绍这个主题 – 计算基础 – 我强烈推荐一本书,由Charles Petzold编写。 他解释了许多你感兴趣的话题,从那里你可以决定你想要创造什么。
看看这本书, 计算机系统的元素:从最初的原则build立一个现代计算机,它会一步一步地通过devise计算机语言,编译器,虚拟机,汇编程序和计算机的几个方面。 我认为这可以帮助你回答你的一些问题。