Добавляем пункты 0 и 11-14 в список
0. Управляй структурой и архитектурой приложения через спецификацию, а не через промпты. Архитектурные решения должны быть явными и проверяемыми артефактами в репозитории, а AI должен подтягивать их в нужные контексты, а не хранить в истории диалога.
11. Изоляция становится еще важнее, потому, что контекст — это тоже архитектурный ресурс. Чем больше модели нужно прочитать, чтобы сделать локальное изменение, тем хуже устроены архитектурные границы. Хорошая архитектура уменьшает необходимый контекст через изоляцию модулей и слоев.
12. Проверяемость! Нужно иметь возможность дешево проверять результат: линтерами, типами, тестами, схемами, контрактами. AI резко снижает стоимость добавления кода, но подымает стоимость владения кодом.
13. Обратимость! Чем дороже ошибка, тем больше нужно уделять внимания возможности отката. Миграция, изменение публичного API, характеристик кода, парадигмы, или архитектурного контракта должны быть под пристальным контролем.
14. AI должен быть ограничен с своих фантазиях: пространство допустимых решений, NFR, constraints, invariants, forbidden dependencies, acceptance criteria, вообще система запретов и красных линий.
0. Управляй структурой и архитектурой приложения через спецификацию, а не через промпты. Архитектурные решения должны быть явными и проверяемыми артефактами в репозитории, а AI должен подтягивать их в нужные контексты, а не хранить в истории диалога.
11. Изоляция становится еще важнее, потому, что контекст — это тоже архитектурный ресурс. Чем больше модели нужно прочитать, чтобы сделать локальное изменение, тем хуже устроены архитектурные границы. Хорошая архитектура уменьшает необходимый контекст через изоляцию модулей и слоев.
12. Проверяемость! Нужно иметь возможность дешево проверять результат: линтерами, типами, тестами, схемами, контрактами. AI резко снижает стоимость добавления кода, но подымает стоимость владения кодом.
13. Обратимость! Чем дороже ошибка, тем больше нужно уделять внимания возможности отката. Миграция, изменение публичного API, характеристик кода, парадигмы, или архитектурного контракта должны быть под пристальным контролем.
14. AI должен быть ограничен с своих фантазиях: пространство допустимых решений, NFR, constraints, invariants, forbidden dependencies, acceptance criteria, вообще система запретов и красных линий.
🔥17👍7💯2❤1
А что если никакого вайбкодинга не существует, весь нейрослоп, как и раньше, генерирует население Индии, а истерия - это просто ребрендинг?
😁46🤣13🤩6🤯3🔥2💯2
В JavaScript уже есть половина того, что нужно для реализации ownership-like, как в Rust, просто она разбросана по разным API:
- using / Symbol.dispose
- DisposableStack.move()
- ArrayBuffer.transfer()
- Proxy.revocable()
- AbortSignal, WeakRef
Поверх этого можно собрать runtime-прототип. Делаю. Без borrow checker и compile-time гарантий, но с вполне полезными affine semantics в рантайме. Ownership в JS появляется не как одна фича языка, а как композиция нескольких независимых механизмов.
- using / Symbol.dispose
- DisposableStack.move()
- ArrayBuffer.transfer()
- Proxy.revocable()
- AbortSignal, WeakRef
Поверх этого можно собрать runtime-прототип. Делаю. Без borrow checker и compile-time гарантий, но с вполне полезными affine semantics в рантайме. Ownership в JS появляется не как одна фича языка, а как композиция нескольких независимых механизмов.
🔥10👍5❤3😁1
Ownership and Resource Lifetime
Pure JavaScript examples of deterministic resource lifetime, ownership, move, borrow, lease, shared ownership, weak references, and RAII-inspired abstractions built on modern JavaScript.
Sources: https://github.com/HowProgrammingWorks/Ownership
Pure JavaScript examples of deterministic resource lifetime, ownership, move, borrow, lease, shared ownership, weak references, and RAII-inspired abstractions built on modern JavaScript.
const timers = require('node:timers/promises');
class AbortScope {
#controller = new AbortController();
signal = this.#controller.signal;
[Symbol.dispose]() {
this.#controller.abort(new Error('Scope disposed'));
}
}
const main = async () => {
let operation;
{
using scope = new AbortScope();
operation = timers.setTimeout(1000, 'done', {
signal: scope.signal,
});
}
try {
await operation;
} catch (error) {
console.log(error.name);
}
};
main();Sources: https://github.com/HowProgrammingWorks/Ownership
🔥7❤6👀2👍1
С самых простых вещей, язык не особо важно какой, но лучше сразу 2 параллельно учить, они сейчас все развитые, а вот важное:
- как делать промежуточные переменные вместо сложных выражений
- разделять сложное на части и объединять части в целое
- давать всему семантически полезные имена, строить читаемые управляющие конструкции, избегать комментариев
- избегать accidental complexity, из нескольких решений выбирать попроще
- сначала думать о данных, как они представлены в памяти и связаны, а уже потом писать алгоритмы обработки
- привыкать думать об ограничениях и контрактах, какие входные данные можно изменять, какие нет
- больше думать не о вычислительной сложности, а о семантической сложности и как ее можно изолировать
- как делать промежуточные переменные вместо сложных выражений
- разделять сложное на части и объединять части в целое
- давать всему семантически полезные имена, строить читаемые управляющие конструкции, избегать комментариев
- избегать accidental complexity, из нескольких решений выбирать попроще
- сначала думать о данных, как они представлены в памяти и связаны, а уже потом писать алгоритмы обработки
- привыкать думать об ограничениях и контрактах, какие входные данные можно изменять, какие нет
- больше думать не о вычислительной сложности, а о семантической сложности и как ее можно изолировать
👍26❤8🔥5
What IDEs / code editors do you actively use in 2026?
Anonymous Poll
56%
VS Code
18%
Cursor
12%
IntelliJ
11%
Vim / Neovim
24%
WebStorm
15%
Zed
0%
mcedit
0%
emacs
3%
Other (Write it in the comments)
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2🔥1
- Следующий шаг - сделать человека частью харнеса: ему пишут задачу, и он выполняет
- Это тебе кто-то сгенерировал или ты до сих пор сам посты пишешь?
- Это тебе кто-то сгенерировал или ты до сих пор сам посты пишешь?
😁13👎2🤣2💯1
Программисты почти перестали спорить про языки и фреймворки.
Теперь у каждого свои суеверия про AI, как правильно настроить окружение и формат работы вокруг агентов, каким инструментам можно доверять и каким нет, как чистить контекст...
Часть - полезная, а часть - просто суеверия. Но спорить о них можно вечно.
Свято место холивара пусто не бывает.
Теперь у каждого свои суеверия про AI, как правильно настроить окружение и формат работы вокруг агентов, каким инструментам можно доверять и каким нет, как чистить контекст...
Часть - полезная, а часть - просто суеверия. Но спорить о них можно вечно.
Свято место холивара пусто не бывает.
👍3❤2👎1🔥1