问题描述
当涉及到IDE(例如SharpDevelop)或编译器/语言解析器时,我需要知道什么计算机科学的主题?我不希望有一个完整的深入的教程列表,但只是一个列表的主题,这将有利于我的改进。
When it comes to making an IDE (e.g. SharpDevelop) or a compiler/language parser, what topics of computer science do I need to know? I don't expect a full list of in depth tutorials but just a list of topics which would benefit me in improving.
我是正确的认为解析器有一些规则关于语言的语法/语义,并验证基于这些规则的代码?这看起来像一个简单的方法?
Am I right in thinking a parser has some rules about the syntax/semantics of a language, and validates the code based on these rules? That seems like a simple approach?
感谢
推荐答案
,编译器和调试器是三个不同的野兽。
An IDE, a compiler and a debugger are three different beasts.
这里是一个快速和稍微随机选择一些链接,我发现有趣或鼓舞人心的时候,对于模拟语言,这是尽可能接近IDE:
Here's a quick and slightly random selection of some links that I've found interesting or inspiring when thinking about building modeling tools for simulation languages, which is as close as I get to IDE:
- - 可编程信息而不是互动
- (Bracha还设计了Java的调试镜像接口,另一个IDE需要的东西)
- - GUI的一般示例
- (虽然当代码的每一页看起来都相同时,图标并没有太多用处;也许生成的图标就像这里的工作)
- - 如果表达你的代码的最好方法是挥动你的手,或给一个错误一个严厉的对话。
- - 类似的是Bracha的帖子,关于修补正在运行的框架
- The High Performance GUI
- Magic Ink - programmable information rather than interaction
- Edward Tufte - imagine if your working life was spent looking at information made this beautiful.
- Dynamic IDEs for Dynamic Languages (Bracha also designed Java's debugging mirror interface, another thing an IDE needs)
- Information Design Patterns - general examples of GUIs
- Problems with tabbed interfaces (though icons aren't much use either when each page of code looks the same; maybe generated icons like the ones here would work)
- Common Sense Suggestions for Developing Multimodal User Interfaces - what if the best way to express your code is to wave your hands around, or give a bug a stern talking to.
- The Pinocchio Problem - similar are to Bracha's post, about patching a running framework
这些链接有一些偏向于模式,以帮助阅读和浏览,以及用户在使用它们而不是作为单独的循环时扩展的系统;如果你想要一个面向任务的界面或静态插件,现有的IDE,如Eclipse的项目是可以看的。
There's somewhat of a bias in those links towards patterns to help reading and browsing rather than writing code, and towards systems the user extends while using them rather than as a separate cycle; if you want a task-oriented interface or static plugins, projects for existing IDEs such as Eclipse are the place to look.
这篇关于构建IDE /编译器所需的概念的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!