METABYTE
Inapoi la articole

Jos compilatoarele bazate pe interogări? Un manifest inginoresc împotriva arhitecturii la modă

Un dezvoltator Rust propune renunțarea la compilatoarele query-based – și are argumente solide.

9 mai 20262 min de citit
Jos compilatoarele bazate pe interogări? Un manifest inginoresc împotriva arhitecturii la modă

Vă amintiți cum spunea profesorul la școală: „Nu scrie o condiție dacă poți să o eviți”? Exact asta face Alexei Kladov, cunoscut pentru munca la compilatorul Rust, care amintește comunității că compilatoarele bazate pe interogări nu sunt un glonț de argint, ci mai degrabă un briceag elvețian cu prea multe lame pe care nu le folosești niciodată.

În articolul său „Against Query Based Compilers”, el analizează tendința modernă de a construi compilatoare pe un sistem de interogări (ca în rust-analyzer sau Salsa). Ideea e frumoasă: fiecare informație e o interogare care se cache-uiește și se recalculează doar când dependințele se schimbă. Dar în practică, după autor, asta devine un iad al mașinilor de stare, unde depanarea e ca și cum ai încerca să înțelegi cod scris la 4 dimineața după un Red Bull.

Kladov susține că abordarea query-based adaugă complexitate acolo unde poate fi evitată. El compară cu încercarea de a folosi un ORM pentru a interoga două tabele – pare convenabil, dar când baza de date crește, blestemi totul. În schimb, propune întoarcerea la abordări mai directe: parcurgeri explicite ale AST-ului, gestionare manuală a incrementalității și mai puțină magie.

Desigur, asta va stârni controverse. Mulți developeri de tooling au investit suflet în arhitectura query-based. Dar, cum se spune, dacă nu poți explica compilatorul tău bunicii, poate e prea complicat. Iar dacă bunica e programatoare Haskell, cu atât mai mult.

Comentariul studioului METABYTE: Și nouă ne plac experimentele arhitecturale, dar când proiectul începe să semene cu o mobilă IKEA fără instrucțiuni, e timpul să ne amintim de KISS. Dacă aveți nevoie de un compilator sau un tooling care să nu vă frângă mintea – știm cum să îl facem simplu și eficient.

URMATORUL PAS

Ti-a placut abordarea?

Aplicam aceleasi principii in proiectele clientilor: AI, automatizari, produse care nu se sting dupa lansare.

Împotriva compilatoarelor query-based: argumente de la un dezvoltator Rust | METABYTE — METABYTE