Salta al contenuto principale


Ohhh, mamma mia ragatti, miao... miaooo... 🙀Oggi pomeriggio sto vivendo in pochi attimi di sofferenza alla volta, che in qualche modo si stanno riuscendo a protrarre per ore, attualmente la più grande tragedia degli ultimi 2 mesi davanti al computer, e non scherzo affatto a riguardo...
Il #Pignio ha bisogno di svariati aggiornamenti perché possa adempiere a nuove necessità imminenti, ma è fottutamente impossibile applicarli, perché il codice di backend è allucinante!!! 😭😭😭(Almeno il frontend è accettabile, ringraziamo gli spiriti.)

Mamma mia, zio caro, che disastro che è 'sto affare, è indescrivibile, ogni volta che me ne ricordo ci sto male, mi viene il mal di testa, vorrei che semplicemente non fosse così smerdato... 💀Ci sarebbe da dare le mazzate, ad Octo dell'anno scorso, che lo ha fatto nel modo in cui lo ha fatto... cioè, ovviamente merita prima di tutto i bacini per aver creato il Pignio in primo luogo, altrimenti io ora qui ero attualmente senza alcun Pignio, e direi che è meglio avere un Pignio che pigna seppur inmantenibile, piuttosto che nessuna pineta e nessuna pigna... però merita anche le botte, perché non è possibile così!!! 💣
Purtroppo, non si può tornare indietro nel tempo, e quindi lo schifo che c'è questo è, ora... ma, per come stanno le cose, non si può veramente andare neanche avanti, quindi lo schifo che c'è questo rimane, per sempre... e io, come al solito, non ho neppure le lacrime per piangere, però vorrei, perché non ce la faccio più, e allora aaaaa... 😫Pensare che già l'altra sera stavo cercando di aggiungere quello che vorrei aggiungere... ma la situazione richiede un ammasso di energie mentali che in quel momento non avevo, o che almeno non riuscivo a direzionare su questo orrore ingestibile, e allora niente fu fatto... e ho provato allora a fare un po' di refactoring, ma subito ho dovuto annullare tutto, perché spostando una cosina salta ogni altra cosona... 🌪️#MANNAGGIA a tutto il codice non magico. 💔

in reply to 美少女戦士 Magica Octo dello Spacc ✨☕

Il grosso problema che mi ritrovo qui nel Pignio comunque, all'atto pratico, non è tanto il fatto che c'è un po' di casino nella logica del backend, a causa di come il programma è strano e fa tante cose strane... perché questo è anche normale: via via che un programma cresce, le rogne aumentano, le cose magari si intrecciano, ma finché tutto si ritrova allora si modifica anche, e si espande, e ok... 🙄Ma qui il fatto è che è tutto un troiaio ingestibile, perché per mezzo di #Python sono uscite di mezzo tante di quelle schifezze che è difficile quasi anche solo avere un'idea di che minchia succede!!! 😭
E, prima che mi arrivino i forconi addosso, tutto questo è dovuto non a Python come linguaggio in assoluto, che è OK, è bellino, ci sta, e se non mi piacesse non lo avrei proprio usato, né per questo né altri progetti... ma il sistema degli import in questo affare fa così fottutamente schifo, e su questo penso che possiamo essere tutti d'accordo, che non solo è difficile tenere tutto ordinato da subito, ma è poi giustamente ancora più difficile riordinare dopo... e quindi niente, lol, non c'è una mazza da fare per me!!! 🍳
Pensavo di averne già parlato in un'altra occasione di questo fatto, almeno più in generale, ma a quanto pare no... quindi, ecco una spiegazione che mi sembrerà semplice, ma probabilmente non lo è: 😤A causa del merdoso sistema di import di Python, nel cercare di dividere il codice in più file, se non si è completamente esenti da problemi di skill, spuntano fuori problemi di import circolari, errori non meglio comprensibili, generali stranezze che non saprei neanche come definire che vanno contro la logica sensata, che in altri linguaggi non succedono così, e beh... 🏗️Se in realtà fare un programma tutto in un unico gigantesco file di testo non comporta allora problemi tecnici, giustamente nella pratica ciò non va bene quando si hanno già centinaia di righe, quindi il codice va diviso in più file, altrimenti non si riesce a tenere più ordine mentale di niente, perché ci sono troppe righe insieme, e questo peggiora ulteriormente la manutenibilità... ma, se il fottuto pitone mette i bastoni tra le ruote, ecco che non solo non posso granché fare queste normali divisioni, che sono la base in ogni grande progetto, ma provarci troppo causa proprio la fottuta fine: ancora più confusione, e ciò sperando che non si rompa roba silenziosamente!!! 😿
Mannaggia, Octo di qualche mese fa fritta dal caldo dell'estate... va bene che non avevi ancora visto Go, che ultimamente a me invece mi sta parendo bellino, e con dalla sua velocità di esecuzione e portabilità quasi rosico che ora il Pignio non sia fatto in quello... ma potevi usare piuttosto TypeScript, magari, come invece poi hai usato per Aggregodo e Brutkey in mesi dalla testa non surriscaldata!!! Anche se da un altro punto di vista è peggio, perché NodeJS+Fastify mi pare usi anche più RAM di Python+Flask... ma almeno sarebbe stato mantenibile!!! 💥Mi serviranno a questo punto delle fottute macumbe per mettere in ordine 'sto codice, altro che i miei poteri magici... ormai, quelli, qui non funzionano più. 🧸
Questa voce è stata modificata (4 giorni fa)
in reply to 美少女戦士 Magica Octo dello Spacc ✨☕

Comunque, questa che ho detto fin'ora è forse più la teoria della disperazione nell'intersezione per progetti complessi tra Python e la mia esistenza, e non la spiegazione specifica per Pignio... 🤥Beh, questo è semplicemente perché è così complicata la situazione in Pignio che non è affatto maneggevole da spiegare così, coi raccontini, persino per me che la sto vivendo e ne sto soffrendo... però, OK, ci provo, per i posteri. 👌
Detto in breve, con giusto un piccolo esempio esemplificativo di assaggio per percepire la disperazione, pur senza comprenderla, ecco un piccolo estratto dell'inizio di alcuni bei file dal codice sorgente... che fa paura, certamente, e perciò anche io ogni volta quasi ci svengo, ma bisogna forse ringraziare che non faccia ancora più paura!!! 😻
# app.py
from _util import *
from _pignio import *
from _functions import *
from _features import *
# _functions.py
from _util import *
from _pignio import *
# _features.py
from _util import *
from _pignio import *
from _functions import *
E ora, per la spiegazione più dettagliata... in realtà la cosa peggiore non è nemmeno che qui ci sono tutti questi famigerati import a stella, che ovviamente non vanno bene, perché nascondono la catena degli import e quindi già di per sé permettono che si facciano cose brutte per sbaglio, per disattenzione... 😅Il fatto molto complicato, di cui non faccio esempi estesi perché sennò si dovrebbe prendere in esame mezzo sorgente (che tanto, per chi vuole magari aiutare, perfavoooreee..., sta qui) è che ci sono in mezzo troppe funzioni che... non dipendono da altre funzioni circolarmente, perché non è codice spaghetti in senso classico questo, bensì da qualche classe o tipo, la cui esistenza dipende magari da funzioni o altre cosine che però stanno in file mischiati così, e aaa... 😱
Il dilemma qui è che, provando appunto a spostare qualcosa in altri file, per fare ordine... magari, tra l'altro, divisi per criteri pratici, e non categorie astratta; perché ben due file di robaccia, uno chiamato functions e l'altro features, insieme, è una delle cose peggiori che io abbia mai non solo creato, ma visto, mannaggia a me... non si riesce a fare neanche qualcosina, manco piccoli progressi, se non riordinare piccole funzioni di utilità che comunque danno poco fastidio, che ecco: si rompe o l'intero programma, o qualche parte, e non si va fottutamente avanti; e via di altro tempo perso, oltre a quello già buttato per il carico cognitivo. 👹
...Per giunta, esatto: qui Python, con la noia di questi import, che funzionano in un modo tutto loro anche al di là di quello che si vede (per esempio il fatto che, anche usando import non a stella, i file vengono comunque eseguiti in pieno, e anche da lì spuntano una parte dei problemi di import hell) non è nemmeno ben consistente nel modo in cui il codice si rompe, andando ad interferire con il fragile equilibrio di questi file gestiti con lo sputo... 🥱A volte, perché allo scope di definizione di una funzione manca l'accesso al simbolo di un tipo, o perché si fa un import non valido, il programma dà errore appena parte, e quindi subito si capisce che si è fatta una stronzata, e ok... ma, altre volte, i problemi di import si manifestano solo quando una data funzione stronza viene eseguita nel corso del programma, che magari dipende da qualcos'altro, che però non è in scope, e quindi fallisce... e magari, in questa situazione, ci si fa caso solo dopo che si sono fatte ancora altre modifiche, o si è addirittura committato, ovviamente!!! 😭
Ad ogni modo, purtroppo Pignio questo è: un programma impitonato, e così tocca tenercelo, perché non è che ora lo si può riscrivere in altri linguaggi (principalmente perché usa tante librerie terze specifiche a Python, che quindi andrebbero sostituite per mantenere ogni funzionalità, ed è un casino)... 🚫Dovrò quindi trovare la pazienza di sciogliere tutti questi nodi di merda che il serpente ha fatto qui muovendosi e contorcendosi, al punto che zio caro, da quando si è annodato al mio collo mi sento di essere sempre più vicina all'asfissia... potere delle rune della luna, vieni a me??? 💔
in reply to 美少女戦士 Magica Octo dello Spacc ✨☕

Visto che, ormai, temo di star completamente impazzendo, e allora tanto vale chiudere almeno questa parte del discorso in modo ben incorniciato (e pensare che nemmeno dovevo dire tutto ciò, all'inizio...), per onorare almeno gli spiriti del notaggio, che quelli della mia stabilità mentale ora stanno un pochino sballati...
Una cosa che in tutto questo rende Python ulteriormente super-rognoso è certamente il fatto che ha i tipi laschi, e quindi, il supporto di certe cose, a livello di IDE o di compilatore, non esiste. (E beh, ovvio per la seconda, visto che non esiste proprio il compilatore, però non è così semplice...) 😐
Chiaramente, non dovrei lamentarmi del fatto che il pitone è un linguaggio semplice e flessibile, anziché complesso e rigido come quelli compilati, o come i prodotti ibridi del demonio come TypeScript (bellissimi, ma pur sempre del demonio)... e, infatti, non lo sto facendo; bene così, anche per questo è figo 'o piton!!! 🐍Il problema è che, anche se, bizzarramente, il linguaggio include anche funzioni di type hinting, e roba di quella categoria, il supporto pratico è tutto delegato a strumenti esterni... e questi strumenti fanno semplicemente schifo. 🔪
La schermata che includo qui è giusto per vibe, per raccontare più che per mostrare, che cosa succede aprendo la codebase del Pignio in VSCode... che fa schifo e si piange, questo succede, ops. (E pensare che, qualche ora fa, era anche peggio... ma non spoilero progressi ora.) 🤯Con tutte le estensioni necessarie installate (almeno, credo, ma penso di sì...), tra cui Mypy, l'affarino per simulare il tipaggio statico in Python... che ho scoperto solo ora essere tipo ufficiale, e quindi sono ancora più stupita di quanto funzioni male... rimane un gran disastro, perché questi tool aiutano ad avere certe cose al pari di altri linguaggi che con il pitone altrimenti non sarebbero scontate, ma è per l'appunto tutto meh, funzionante a modo suo e a metà. 🍤
Oltre al fatto che il sistema di tipi statici simulati di Python ha proprio un feel bizzarro di per sé, e nella pratica va in conflitto con molto codice reale che sarebbe assolutamente pitonico (...mamma mia, sembro appartenere ad una setta ad usare questa parola, che vergogna) e consigliato, Mypy in VSCode è molto lento a controllare la correttezza delle cose quando si cambia del codice... ma lento del tipo che passano anche fino a 20 secondi per ricalcolare tutti gli errori presenti nel file corrente, eh. 😭Il risultato di questi dettagli è che, alla fine, tra fare e provare, si accumula pure una bella quantità di errori nei file — forse complice anche il fattore psicologico tanto piccolo quanto stronzo del fatto che il codice, tanto, gira anche con infiniti errori di tipi, perché l'interprete Python non li guarda proprio i tipi statici, e allora non c'è lo stesso tipo di urgenza nell'aggiustare — che non sono immediati da correggere (ma neanche da silenziare, lol, che lagga tutto lo stesso)... e diventa, ironicamente, ancora più difficile concentrarsi nel semplicemente scrivere, ed è pure più probabile che salgano appunto sentimenti solo negativi, ad osservare cotanto codice non magico... 🚮
Comunque, per carità: nonostante tutto lo schifo che fanno, menomale che questi strumentini ci sono, altrimenti sarebbe tutto ancora peggio, questo è poco ma sicuro... si andrebbero a creare una marea di errori accidentali in più, scoprendoli troppo tardi, che invece attualmente almeno il 95% delle volte si evitano... quindi ringrazio il cielo, suppongo. 🙏Altrimenti, oh, anche qui, non li starei proprio usando, e certamente mi risparmierei volentieri il mettere le indicazioni dei tipi su ogni cosa... o forse no, perché comunque aiutano meglio a capire di più su una variabile anche alla sola vista... vabbè, lasciamo stare, non voglio rivelare troppo casualmente pure questi miei segreti ora. 💥