| 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 | ``` |
| 26 | software.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 | |
| 57 | 1. **Файл `.cs`** → сначала `…dotnet.csharp` (если вопрос про синтаксис/idiom). |
| 58 | 2. **Диагностика / refactor / symbol / MCP roslyn** → `…dotnet.tooling.roslyn` (параллельно или вместо углубления в language kb). |
| 59 | 3. **`Avalonia` в csproj** → `…desktop-ui.avalonia` **после** csharp. |
| 60 | 4. **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 | |