Files
structrail-design/.trae/rules/project_rules.md
2025-10-21 17:04:51 +08:00

16 lines
1.6 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
我正在设计一个数据结构与算法可视化平台,在我的设想中,平台会提供一个代码编辑器,用户可以在其中编写算法的实现代码,当用户点击运行按钮时,平台会调用后端的编译器来执行用户编写的代码,获取到算法执行过程中所涉及的数据结构的变化,并将整个过程可视化地展示在平台中。
从技术的角度,我希望它能够适配不同的编程语言,所以我不会考虑从编译技术的层面去适配不同的编程语言(例如自定义一个编译器),而是考虑设计一套多语言的 SDK 来实现这一目标。从整体上来看SDK 提供的 API 用于“标记”数据结构的操作,用户可以在算法的实现中调用这些 API 来标记数据结构的变化,这样在代码被编译运行后,就能够获取数据结构的变化过程(序列化为 JSON)。
这样如果从用户的角度来看,用户可以几乎不修改算法的实现,而是只需要在合适的位置调用平台提供的 API 即可。
这个项目是关于这个平台的多语言 SDK 设计与实现方案。
项目中有这样一些概念:
- Tracer: 用于记录数据结构的变化过程,每一种数据结构都有一个对应的 Tracer 类(ArrayTracer, StackTracer, QueueTracer, MatrixTracer, SortTracer, LinkTracer, TreeTracer, GraphTracer)。
- Action: 用于描述数据结构的操作类型,每一种操作都有一个对应的 Action。
- Command: 用于描述每一次数据结构操作的指令,一条指令包含了 tracer、action、params并最终会序列化为 JSON。