Sviluppo

La API è conclusa o quasi… (Una API a 50 anni parte 3)

La API è conclusa o quasi… (Una API a 50 anni parte 3)

Più velocemente di quanto pensassi la API è pronta.

Sostanzialmente pronta.

Insomma fa quello che deve, per tre tabelle differenti:

  • legge i record
  • crea nuovi record
  • aggiorna i record
  • cancella i record

Insomma sostituisce egregiamente il fatto di dover scaricare il database e ricaricarlo in produzione.

Ovvio che mancano ancora alcuni affinamenti: per esempio voglio verificare che solo passando una chiave appropriata il sistema ti consenta di operare. Qua non ci dovrebbero essere problemi, dopotutto lo useremo in 1 o 2 persone.

Poi devo gestire i messaggi che vengono stampati a schermo, al momento ci sono una serie infinita di messaggi di debug.

E infine metterlo in produzione e verificare, previa copia del database, che non succedano disastri.

L’aiuto di Copilot

Per chi non lo sapesse, Github Copilot è un sistema di machine learning, che “affianca” il programmatore nello sviluppo di vari linguaggio.

In pratica ti suggerisce pezzi di codice da inserire, nel mio caso, php.

Come fa?

Lo spiega abbastanza bene Wired: il sistema analizza miliardi di linee di codice che è stato condiviso liberamente da varie persone e si crea un “dizionario”.

Poi analizzando degli “spunti” dell’utente, cerca di “continuare” nella scrittura.

Se iniziassi a scrivere “la gallina ha fatto " la macchina probabilmente mi offrire vari spunti e uno che magari potrebbe essere appropriato sarebbe " l’uovo e va per il pollaio”.

Questo sistema generalmente viene utilizzato per produrre testi in lingue che la AI di suo non conosce e non capisce, alla fine si tratta sempre di un “calcolo” matematico.

Ma un linguaggio di programmazione è pur sempre… una lingua.

Ha le sue regole, ha la sua sintassi.

E quindi Copilot fa esattamente questo: si arma di un dizionario titanico e partendo dallo spunto che gli diamo cerca di capire quale potrebbe essere il “seguito”.

Ok fin qua, poi mi è caduta la mascella.

switch ($tabella) {
        case 'pagine':
            $item = new Pagine($db,$tabella);;
            break;
        case 'testi_regioni':
            $item = new TestiRegioni($db,$tabella);
            break;
        case 'testi_citta':
            $item = new TestiCitta($db,$tabella);
            break;
        default:
            echo "tabella non trovata";
            die();
            break;
    }

Per chi non è pratico di PHP, questo è un elemento per controllare il flusso dell’esecuzione.

in pratica :

  • se la variabile chiamata $tabella contiene il valore “pagine”, lui fa X.
  • Se invece contiene “testi_regioni”, fa Y.
  • Se contiene “testi_citta”, fa Z.

Ecco, io avevo iniziato a scrivere le prime due parti, fino a testi regioni, poi lui ha suggerito questo intero blocco:

        case 'testi_citta':
            $item = new TestiCitta($db,$tabella);
            break;
  • ha capito che c’era un terzo blocco chiamato testi_citta
  • ha capito che c’era una chiamata all’oggetto TestiCitta, passandogli i valori $db e $tabella.

Lo Ripeto: da nessuna parte nel codice del progetto c’era un riferimento all’oggetto TestiCitta.

e questa è la prova del search

Spaventoso no?

Ricordatevi di essere gentili con i vostri strumenti informatici, perchè la loro memoria è molto duratura :D

citazione casuale

> Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
> — <cite>Samuel Beckett</cite>