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.

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.