На первой части стрима по структурам данных я обещал материалы, часть из них добавлены прямо под видео, но я успел сделать даже первую версию скилов. И тут расскажу, как ими пользоваться.
Скилы тут: https://github.com/metarhia/metaskills
Три связанных скила, которые помогают AI оптимально использовать встроенные структуры, писать кастомные, и использовать структуры из metautil
1. js-data-structures - выбирает между встроенными структурами JavaScript: Object, Array, Map, Set, WeakMap, WeakSet и TypedArray. Учитывает семантику, сложность операций, стабильность V8-структур, утечки памяти и границы сериализации.
2. data-structures - нужен, когда встроенных коллекций недостаточно. Он помогает выбрать или реализовать очередь, дек, стек, связный или развернутый список, кольцевой буфер, кучу, trie, граф, LRU, pool, CRDT или персистентную структуру.
3. metautil-data-structures - знает точный API готовых реализаций из metautil и может сразу использовать их в проекте вместо генерации очередного велосипеда.
Реализации структур со стрима:
- Все структуры из metautil: https://github.com/metarhia/metautil
- Struct для типизированных mutable и immutable записей: https://github.com/metarhia/metautil/blob/main/lib/struct.js
- Иммутабельный ConsList со структурным разделением, ветвлением состояния и откатом за O(1): https://github.com/metarhia/metautil/blob/main/lib/cons-list.js
- Префиксное дерево Trie: https://github.com/metarhia/metautil/blob/main/lib/trie.js
- Двусвязный List с операциями вставки, удаления, перемещения, группировки и сортировки: https://github.com/metarhia/metautil/blob/main/lib/list.js
- Развернутый список UnrolledList для высоконагруженного FIFO: https://github.com/metarhia/metautil/blob/main/lib/unrolled.js
- Кольцевой буфер, на котором построены Queue, Deque и Stack: https://github.com/metarhia/metautil/blob/main/lib/circular.js
- Очередь Queue: https://github.com/metarhia/metautil/blob/main/lib/queue.js
- Двусторонняя очередь Deque: https://github.com/metarhia/metautil/blob/main/lib/deque.js
- Стек Stack: https://github.com/metarhia/metautil/blob/main/lib/stack.js
- Пул ресурсов: https://github.com/metarhia/metautil/blob/main/lib/pool.js
- Семафор для ограничения конкурентного доступа: https://github.com/metarhia/metautil/blob/main/lib/semaphore.js
Установка скилов из корня проекта: npx metaskills
После этого IDE и агенты подхватывают их автоматически. Можно просто описать задачу, а можно явно направить AI:
«Выбери подходящую встроенную структуру данных»
«Подбери структуру для этой нагрузки и объясни выбор»
«Реализуй очередь без Array.shift»
«Перепиши управление состоянием с использованием ConsList из metautil»
«Используй готовые структуры metautil и не создавай собственные аналоги»
Скилы нужны не для того, чтобы AI написал больше кода. Они нужны, чтобы он раньше выбрал правильную модель данных, сократил код и не заложил проблему в саму структуру решения.
Как пользоваться скилами я покажу на 2 части мастер-класса.
Там же будут и разборы примеров использования в реальном коде: https://gm.nexttick.it/go/data-structures-code-review
Post #84
1.67K
- 👍 10
- ❤ 5
- 🔥 2