>>782I due principali orridi tumori dell'informatica contemporanea sono:
1)
i concetti base di Unix, trattati come dogmi intoccabili
2)
i concetti base dell'architettura Wintel, trattati come dogmi intoccabili
Riguardo al punto 1, infatti abbiamo files, devices, sockets, signals… quando tutto potrebbe (e dovrebbe) essere trattato come uno stream (da differenziare solo per costo di accesso, costo in termini di tempo/risorse/…)
Dato che tali concetti non si prestano alle necessità moderne, e dato che ancor oggi Linux è scritto in C, c'è stato il caos in termini di passaggio da 32 a 64 bit (per fortuna i 128 sono ancora lontani), e hanno dovuto inventarsi un mucchio di robe astruse (memfd, mmap, signalfs, cgroups…) e quindi "Unix" è cresciuto da poche decine di syscalls a parecchie centinaia, la glibc è di una vastità oceanica (ed è lo standard de facto), e comunque tutti i processi debbono fare diverse acrobazie (cessione privilegi, attesa inizializzazioni altrui, verifica pidfiles, private tmp, chroot o almeno ingresso nella propria working directory…) e qualcuno fa anche porcate (come il doublefork per liberarsi dall'init).
Il bello è che quando è arrivato
systemd (che ti consente di scrivere nel file
.service le constraints per partire: dipendenze, user, privatetmp, addirittura workingdirectory, delay casuali prima dell'avvio, socket di attivazione…), tutti i vecchi barbogi hanno sbroccato alla grande, perché per loro è inconcepibile che un file di testo di 15 righe eviti di scrivere 300 righe di codice dell'inizializzazione di un servizio.
Riguardo al punto 2, chiedetevi ad esempio perché una scheda grafica non è semplicemente un enorme banco di memoria lineare e un comando per dire quale fetta di bitmap vuoi visualizzare (e su quale uscita video). E non parliamo di stampanti, di schede audio, di webcam… Il
wintel è stato il cancro dell'informatica da 50 anni a questa parte.