Нужно ли учить компьютерсаенс во времена AI?
Алгоритмы обхода дерева уже давно руками ни кто не пишет, библиотеки и платформы дают готовые структуры данных, фреймворки закрывают часть инфраструктурных задач, вторую половину дописывает AI. Кажется, что достаточно просто уметь попросить: "сделай мне сервис", и все получится само.
Но компьютерсаенс нужен теперь не только для экспертов и системного программирования, но и чтобы грамотно ставить задачу для AI. Возможно, даже нужнее, чем раньше.
Только его ценность сегодня не в том, чтобы вручную на собеседовании писать сортировку или реализацию хештаблицы. Это все давно стало рутиной, которую машина действительно может воспроизвести. Ценность компьютерсаенса в другом, в понятийном аппарате, в умении мыслить системно, в декомпозиции, в различении абстракций, в понимании ограничений и компромиссов, в способности проверить, что именно тебе сейчас сгенерировал AI. Это рабочий язык постановки задачи.
Без терминологии человек говорит: "перепиши это получше", "не открывается и съезало", "тут что то не очень", "сделай красиво", "ускорь", "поправь архитектуру". А куда поправить то?
С терминологией человек говорит: сделай слой изоляции между доменом и инфраструктурой, пробрось зависимости через IoC и DI, реализуй адаптер для интеграции со старым API, замени ветвление на стратегию, понизь зацепление, раздели ответственность компонентов, убери утечку абстракции, разорви циклические зависимости, вынеси создание объектов в фабрику и добавь пул для переиспользования инстансов, используй двусвязный список или циклический буффер, оптимизируй коллизии хештаблицы, уменьши лишние аллокации, обеспечь мономорфизм для V8, защити модуль от состояний гонки, используй backpressure, добавь retry policy и circuit breaker, не смешивай application service и domain service, сохрани инварианты агрегата, сделай операцию идемпотентной, используй eventual consistency.
Вот зачем нужен компьютер саенс во времена AI. Не для того, чтобы помнить наизусть псевдокод DFS, а для того, чтобы уметь точно формулировать задачу, быстро делать ревью, видеть ошибки проектирования и не путать рабочую архитектуру с убедительно выглядящей галлюцинацией.
Чтобы так ставить задачи, нужен язык. А значит, нужна и терминология.
Это IoC, DI, SOLID, GRASP, GoF patterns, DDD, Clean Architecture, CQRS, Event Sourcing, Actor Model, Reactor, Pub/Sub, SAGA, Repository, Unit of Work, Data Mapper, Adapter, Facade, Proxy, Decorator, Composite, Bridge, Strategy, Observer, Mediator, Iterator, Visitor, Builder, type systems, ADT, Big O, amortized complexiti, hashing, CAP, ACID, BASE, consistency models, consensus, Paxos, CRDT, CAS, atomics, memory model, cache locality, GC, thread safety, idempotency, rate limiting, fault tolerance....
- 🔥 41
- 💯 16
- ❤ 8
- 👍 5
- ⚡ 1
- 👀 1