HowProgrammingWorks - JavaScript and Node.js Programming
6.59K subscribers
390 photos
22 videos
1 file
979 links
Программная инжененрия для JavaScript, TypeScrip, Node.js
👉 Group: https://t.me/How_Programming_Works
👉 Node.js channel: https://t.me/metarhia
👉 Node.js group: https://t.me/nodeua
Download Telegram
Если взять одно, что я хочу в JavaScript, то это будет Block Expression. При чем в V8 все готово, чтобы это сделать, в каждом блоке последнее выражение отдельно сохраняется в структуре V8, я даже согласен на do-expression, но зачем этот do?

Сейчас приходится либо выносить функцию или использовать IIFE или let снаружи - это отвратительно:

let price;
if (user.isAdmin) {
price = 0;
} else if (user.hasDiscount) {
const discount = calculateDiscount(user);
price = basePrice * (1 - discount);
} else {
price = basePrice;
}


Промежуточные переменные не загрязняют scope, а можно было бы:

const id = {
const normalized = name.trim().toLowerCase();
const separator = normalized.includes("-") ? "-" : "_";
const parts = normalized.split(separator);
parts.join(":");
};


Вместо IIFE только представьте как можно было бы переписать:

const config = (() => {
const env = process.env.NODE_ENV ?? 'development';
const production = env === 'production';
// do something...
return { env, host, port, secure: production };
})();


Но лучше всего в try/catch, представьте это как перепишем:

let data;

try {
const text = await readFile(path, 'utf8');
data = JSON.parse(text);
} catch {
data = 'default value';
}


А теперь представьте литерал объекта:

const response = {
user,
permissions: {
const roles = await getRoles(user);
if (roles.includes('admin')) ['read', 'write", 'delete'];
else if (roles.includes('editor')) ['read', 'write'];
else ['read'];
},
displayName: { ... some calculations },
};


Или вызов функции:

render({
const width = container.clientWidth;
const columns = Math.max(1, Math.floor(width / 300));
const gap = columns > 3 ? 24 : 16;
{ width, columns, gap };
});
🔥13❤3🤷‍♂2👍2🤯2🤩1
Reslop 0.3.0

- Экспериментальная поддержка запуска агентов из reslop с планами: cloude code, cursor, codex, antigravity, opencode
- Запуск npm, git, агентов и всего остального в фоновом режиме, UI не блокируется
- Импорт issue из GitHub, GitLab в задачи
- Много оптимизаций и теперь все летает
- Проработан UX: tasks, agents, run

https://reslop.it/
❤8🔥6🤝1
Неудобно, но вынужден
🤣76😁7🤷‍♂3💯3❤2⚡1🤩1
Тут говорят, что у программистов забрали, самое интересное, а оставили рутину, а я думаю, что как раз наоборот - заблали рутину и оставили самое интересное. Программирование это же не про то, как написать цикл, функцию и класс, а про то, как придумать принцип по которому они будут написаны, например, выделить характеристики кода, как: иммутабельность, идемпотентность, гранулярность, зацепленность, ленивость... и придумать, что эта характеристика дает нам полезного, пока AI не придумал ни одной новой парадигмы программирования, ни одного нового паттерна или приема, ни одного обобщения.

Программирование в его наиболее интеллектуальной части - это не код, а создание принципов, по которым код должен быть устроен.

Циклы, функции, классы, промисы - это механизмы. А иммутабельность, идемпотентность, композируемость, гранулярность, связность, зацепленность -характеристики, через которые мы управляем свойствами кода.

- Иммутабельность дает упрощение конкурентного исполнения
- Мутабельность - скорость и экономию памяти, но много опасностей
- Идемпотентность - устойчивость к повторам
- Слабое зацепление - гибкость через заменяемость
- Композируемость - повторное использование и порождение новых абстракций

Такие и подобные вещи формируют модель мышления, которое позволяет создавать целые классы программ иначе.

ИИ уже участвовал в открытии новых алгоритмов, обнаружил более эффективные алгоритмы сортировки, новые алгоритмы умножения матриц и оптимизации вычислений. Но это не то же самое, что создание новой парадигмы программирования.

Можно выделить четыре уровня интеллектуальной деятельности:
1. Реализация -написать код по заданным правилам
2. Проектирование - выбрать известные принципы, паттерны и ограничения
3. Обобщение - обнаружить общий принцип в разных решениях и сформулировать новую абстракцию
4. Изобретение - предложить новый принцип организации вычислений, который открывает ранее недоступные возможности или существенно меняет подход к разработке

ИИ уверенно работает на первых двух уровнях, способен неплохо помогать на третьем и демонстрирует скромные результаты на четвертом, прежде всего в алгоритмических задачах. Но общепризнанной новой фундаментальной парадигмы программирования, да что там... даже нового паттерна или приема созданного ИИ мы не видим.

Настоящий прорыв в AI-assisted programming - это переход от генерации реализаций к генерации и проверке принципов.

Наивно писать "сделай мне архитектуру с SOLID", нужно стремиться к "найди характеристику системы, которую мы еще не формализовали, выведи из нее полезные следствия, предложи новый способ организауии кода и докажи, что он работает и дает полезные характеристики кодовой базы".
❤24👍12👎3🔥3🤷‍♂1
📦 reslop@0.3.4 (отличия от 0.3.0)

- Поддержка 12 агентов через ACP:
- Добавлены Junie by JetBrains, Copilot, Pi, Kiro by AWS, Cline, Windsurf, Kilo Code, Antigravity
- Переведены с CLI на ACP: Claude Code, Codex, Cursor, OpenCode
- Помогает установить эти 12 агентов на выбор, SDK и ACP для них, если нужно, из npm и пакетных менеджеров
- Авторазрешение конфликтов git rebase
- Поддержка git worktrees
- Улучшена фоновая работа команд, тестов, агентов
- Улучшения UI/UX (горячи клавиши, пап-ап меню, редакторы) и многое другое


https://github.com/tshemsedinov/reslop
❤10👍2🔥2
🏛 Открыт новый набор в NextTick

- Сейчас это 700+ инженеров
- Ведущие Илья Климов и Тимур Шемсединов
- Ваши затраты: 2 часа в неделю + $50/месяц
- Каждый месяц 2 стрима: по архитектуре и по коммуникациям
- Калибровка поможет за 15 минут понять, что вам нужно
- Три видео в неделю помогут с AI, архитектурой и коммуникациями
- Чат, где вам помогут по рабочим вопросам ведущие и коллеги

✔️ https://gm.nexttick.it/go/timur-tg-metarhia
Please open Telegram to view this post
VIEW IN TELEGRAM
😁12❤5👍3🤣2🔥1😎1
Самое сложное сейчас в программировании с AI: не формировать долгосрочных привычек.

Нельзя надолго привязываться к IDE, моделям, агентам, подпискам, инструментам, собственным workflow. Все меняется быстрее, чем мы успеваем наладить это как нужно.

Главная привычка сегодня - не создавать привычек.

Нужно постоянно экспериментировать, пересматривать решения, пробовать новые подходы и без сожалений выбрасывать вчерашний тулинг.

Иначе можно обложиться своими и чужими инструментами, все идеально настроить, автоматизировать, интегрировать и застрять в этом уютном мире на 3-6 месяцев.

Пока внешние обстоятельства не выбьют тебя оттуда. И окажется, что индустрия уже ушла далеко вперед, а ты все это время занимался оптимизацией собственного комфорта. Такие зависимости гораздо опаснее, чем зависимости на npm или любые другие библиотеки.

Это не касается навыков мышления: декомпозиция, проверка гипотез, архитектурные принципы, критическое мышление нужно сохранять и развивать, они не плывут как инструментальные привычки.

Сегодня опаснее всего слишком хорошо обустроиться в текущих технологиях.

Тут подробнее https://gm.nexttick.it/go/timur-tg-metarhia
💯10👍4❤2😢2🤷‍♂1