Forge
markdowne8ad0934
1# Software authoring: карта языковых миров v1
2
3**Назначение:** разделить **языконезависимый** контур (OOA&D), **языки**, **tooling** (компилятор/семантика ≠ язык) и **UI/framework**-стеки.
4
5**Версия:** v1.2 · 2026-05-17
6
7---
8
9## Слои (не смешивать)
10
11| Слой | World tag | Что это | Когда |
12|------|-----------|---------|--------|
13| **1. Структура** | `software.authoring` | OOA&D, nouns/verbs, transfer matrix | god-class, switch, новая подсистема |
14| **2. Язык** | `software.authoring.dotnet.csharp` | **Спецификация и idioms C#:** типы, async, nullable, record, стиль | «как написать на C#» |
15| **2b. Tooling .NET** | `software.authoring.dotnet.tooling.roslyn` | **Платформа компилятора:** semantic model, analyzers, refactorings, `roslyn_*` MCP | CSxxxx, rename, code actions, symbols |
16| **3. UI на C#** | `…csharp.desktop-ui.avalonia` | Avalonia, axaml, Dock | UI-фреймворк |
17| **4. Web на PHP** | `…php.web.laravel` *(план)* | Laravel | ORM/routing |
18
19**Ключевое:** Roslyn **не является** языком C#. Это API и сервисы поверх **скомпилируемого** C# (и VB в платформе Microsoft). Язык можно знать без Roslyn; Roslyn без понимания C# бесполезен.
20
21---
22
23## Дерево .NET (v1.2)
24
25```
26software.authoring
27└── dotnet
28 ├── csharp # язык
29 │ └── desktop-ui
30 │ ├── avalonia
31 │ ├── wpf
32 │ ├── winforms
33 │ ├── maui
34 │ └── silverlight # historical
35 ├── fsharp # язык (TBD kb)
36 └── tooling
37 ├── roslyn # компиляторная платформа, MCP
38 └── build # dotnet build/test MCP (эвристика)
39```
40
41---
42
43## Таблица: язык vs tooling vs UI
44
45| World tag | Не путать с | KB (папка) |
46|-----------|-------------|------------|
47| `…dotnet.csharp` | Roslyn, Avalonia | `../software-dotnet-csharp/` (`kb-dotnet-fundamentals-v1.md`, `code-writing-principles-v1.md` в `software-authoring/`) |
48| `…dotnet.tooling.roslyn` | язык, UI | `../software-dotnet-tooling-roslyn/` |
49| `…csharp.desktop-ui.avalonia` | Roslyn, язык целиком | `../software-dotnet-avalonia/` |
50
51**Легаси:** `software.desktop-ui` → `…desktop-ui.avalonia`.
52
53---
54
55## Резолв (агент)
56
571. **Файл `.cs`** → сначала `…dotnet.csharp` (если вопрос про синтаксис/idiom).
582. **Диагностика / refactor / symbol / MCP roslyn** → `…dotnet.tooling.roslyn` (параллельно или вместо углубления в language kb).
593. **`Avalonia` в csproj** → `…desktop-ui.avalonia` **после** csharp.
604. **OOA&D / god-class** → `software.authoring` + matrix **до** всех dotnet-слоёв.
61
62Типичная цепочка Cascade IDE: **authoring → csharp → (roslyn при правках .cs) → avalonia (если UI) → HCI (если UX)**.
63
64---
65
66## Другие языки (корень)
67
68| World tag | Папка |
69|-----------|--------|
70| `software.authoring.php` | `software-php-laravel/` |
71| `software.authoring.javascript` | `software-javascript/` |
72
73Аналог tooling для PHP/JS — **отдельные** миры (phpstan, eslint), не под `dotnet.tooling.roslyn`.
74
75---
76
77## Related
78
79- `matrix-software-cross-domain-transfer-v1.md`
80- Hub .NET (редирект): `worlds/software-dotnet-desktop/README.md` → `software-dotnet-csharp/`, `software-dotnet-tooling-roslyn/`, `software-dotnet-avalonia/`
81
82<!-- section:objectpascal-and-legacy-stacks-v1 -->
83## Object Pascal и прочие «вспомнилось» (зарезервировано)
84
85**Язык (не .NET):** `software.authoring.objectpascal`
86Наследники Turbo Pascal → Delphi / Free Pascal (Lazarus).
87
88| World tag (план) | Стек | Сигнал | KB |
89|------------------|------|--------|-----|
90| `…objectpascal.desktop-ui.vcl` | Delphi VCL | `.dfm`, `TForm`, Win32 | TBD |
91| `…objectpascal.desktop-ui.fmx` | Delphi FMX | cross-platform FireMonkey | TBD |
92| `…objectpascal.desktop-ui.lcl` | Lazarus LCL | `.lfm`, Free Pascal | TBD |
93
94**Не переносить слепо из C#:** properties vs `property` с другой семантикой; `with` в Pascal ≠ C# `with`; RTTI/DFM — не Avalonia axaml.
95
96**Связь с .NET:** только через interop/OOA&D на уровне `software.authoring` (nouns/verbs, слои) — не через `dotnet.csharp`.
97
98**Silverlight** остаётся под `…csharp.desktop-ui.silverlight` (C#-экосистема Microsoft); Object Pascal — **отдельный корень** дерева.
99<!-- /section:objectpascal-and-legacy-stacks-v1 -->
100
101
View only · write via MCP/CIDE