00:00:08 Linguaggi specifici per il dominio (DSL) e la loro diversità.
00:01:36 Esempi di DSL: AMPL per la programmazione matematica e HTML per le pagine web.
00:03:00 I vantaggi dell’utilizzo dei DSL rispetto ai linguaggi di programmazione generali per compiti specifici.
00:05:22 L’uso da parte di Lokad di un DSL per l’ottimizzazione della supply chain in situazioni diverse.
00:07:23 I benefici dell’utilizzo di un DSL per una configurazione più rapida e affidabile.
00:09:35 Le limitazioni di un DSL e i loro vantaggi nell’ottimizzazione della supply chain.
00:12:55 Le implicazioni di sicurezza dell’utilizzo di un DSL rispetto ai linguaggi di programmazione generali.
00:13:01 Il processo che richiede tempo per lo sviluppo di un DSL.
00:14:49 Consigli per le startup che stanno valutando lo sviluppo di un proprio DSL.
00:16:01 Sotto-sfruttamento dei DSL e soluzioni tradizionali che portano a prodotti insoddisfacenti.
00:17:26 Il dilemma dell’utilizzo dei DSL rispetto ai linguaggi di programmazione mainstream e i loro risultati.
00:18:32 SQL e HTML come esempi di successo di linguaggi specifici per il dominio.
00:19:46 Il potenziale dei DSL in diverse industrie e il loro potere trasformativo.
00:21:19 Conclusioni e potenziali sviluppi futuri nell’utilizzo dei DSL.
Riassunto
In questa intervista, Kieran Chandler discute dei linguaggi specifici per il dominio (DSL) con Joannes Vermorel, il fondatore di supply chain optimization dell’azienda Lokad. I DSL sono linguaggi di programmazione progettati per compiti specifici, a differenza dei linguaggi di programmazione generali come Java o Python. Vermorel spiega che i DSL sono utilizzati in industrie come quella automobilistica, dove garantiscono un funzionamento privo di errori per componenti critici come i sistemi antibloccaggio. Inoltre, discute dello sviluppo da parte di Lokad del proprio DSL, Envision, per rendere più snella l’ottimizzazione della supply chain. Vermorel mette in evidenza i vantaggi dei DSL, come calcoli efficienti e la personalizzazione per domini specifici, pur riconoscendo le sfide e la natura dispendiosa in termini di tempo del loro sviluppo.
Riassunto Esteso
In questa intervista, Kieran Chandler, il conduttore, discute dei linguaggi specifici per il dominio (DSL) con Joannes Vermorel, il fondatore di Lokad, un’azienda software specializzata nell’ottimizzazione della supply chain.
I DSL sono una classe specifica di linguaggi di programmazione progettati per risolvere tipi molto particolari di problemi, a differenza dei linguaggi di programmazione generali come Java o Python, che sono destinati ad affrontare un ventaglio più ampio di compiti. I linguaggi di programmazione generali sono concepiti per offrire un modo comodo, produttivo ed efficiente di fare tutto ciò che è possibile fare con i computer, mentre i DSL si concentrano sulla risoluzione di problemi specifici. Alcuni dei primi linguaggi specifici per il dominio, come AMPL, sono stati creati per la programmazione matematica e altre attività molto specifiche.
I DSL sono utilizzati in applicazioni reali per implementare componenti critici in diverse industrie. Ad esempio, nel settore automobilistico, un DSL potrebbe essere impiegato per sviluppare il software che controlla il sistema antibloccaggio (ABS) in un’auto. L’obiettivo è creare un sistema quasi privo di errori, poiché un guasto in questo componente potrebbe comportare la perdita della capacità di frenare. Al contrario, i linguaggi di programmazione mainstream potrebbero non garantire lo stesso livello di certezza in un funzionamento privo di bug.
Un altro esempio di DSL è HTML, progettato per creare pagine web. HTML è più accessibile e semplice rispetto ai linguaggi di programmazione generali, rendendolo adatto a utenti non tecnici o anche a studenti della scuola primaria. Tuttavia, questa semplicità comporta delle limitazioni, poiché HTML è vincolato nelle sue capacità, consentendo agli utenti solo di controllare il layout di una pagina web anziché permettere compiti più complessi come il controllo dei robot o lo sviluppo di intelligenza artificiale.
Quando gli viene chiesto perché si usino i DSL anziché linguaggi di programmazione mainstream più espressivi, Vermorel spiega che utilizzare un linguaggio di programmazione generale per compiti che si adattano meglio a un DSL complicherebbe eccessivamente il processo. Ad esempio, impiegare un linguaggio di programmazione generale per la progettazione di pagine web significherebbe controllare ogni singolo pixel sullo schermo, invece di usare semplici elementi di linguaggio di markup, come specificare il titolo, la dimensione del carattere o la giustificazione del testo, come avviene con HTML.
Vermorel spiega che i problemi della supply chain sono diversificati, poiché nessuna azienda è esattamente uguale all’altra. Le aziende hanno paesaggi IT differenti, paesaggi applicativi, e varie combinazioni di ERP, WMS e altri sistemi. Questa diversità crea sfide per le soluzioni software che cercano di affrontare l’ottimizzazione della supply chain con un approccio unico per tutti. I framework tradizionali che si basano sulla configurazione spesso richiedono ampie personalizzazioni e configurazioni per ogni cliente, il che risulta dispendioso in termini di tempo e costoso.
Riconoscendo che ogni situazione cliente richiede un software diverso, Lokad ha cercato di sviluppare un processo più efficiente e affidabile. Hanno deciso di creare il proprio DSL, Envision, per semplificare il processo di configurazione rendendolo più rapido e produttivo. Vermorel confronta l’utilizzo di Envision con i linguaggi di programmazione mainstream come C#, F# e TypeScript. Sebbene usino già ampiamente questi linguaggi generici, affrontare le richieste dei clienti con essi si è rivelato lento e costoso. Envision è stato progettato per essere più agile e meglio adattato alle esigenze uniche dell’ottimizzazione della supply chain.
Vermorel sottolinea che uno dei motivi per cui molte soluzioni di supply chain software diventano gonfie è che cercano di includere ogni possibile funzionalità e caso d’uso. Lokad ha scelto un approccio diverso, sviluppando un core DSL fortemente focalizzato, con il prodotto software stesso rappresentato da Envision e le sue capacità. Questo permette loro di creare implementazioni su misura per ogni cliente utilizzando Envision, mentre il compilatore e l’ambiente per Envision sono implementati in C#, F# e TypeScript.
Vermorel spiega che l’utilizzo di un DSL può introdurre delle limitazioni, ma questo può risultare vantaggioso in certe situazioni. Ad esempio, nell’ottimizzazione di una grande supply chain con un dataset rilevante, può essere difficile garantire che i calcoli vengano completati entro un intervallo di tempo specifico usando linguaggi di programmazione generali. Un DSL con adeguate limitazioni può garantire che i calcoli vengano completati in tempo, prevenendo interruzioni nella supply chain.
Tuttavia, sviluppare un DSL può essere un processo dispendioso in termini di tempo. Vermorel racconta che alla sua azienda ci è voluto quasi un decennio per sviluppare il proprio DSL. Questo lungo tempo di sviluppo può entrare in contrasto con la natura frenetica delle startup. La sfida principale nello sviluppo di un DSL consiste nel ripensare i problemi fondamentali da risolvere e definire i primitivi logici necessari per affrontarli. Ciò comporta la progettazione della sintassi e degli operatori del linguaggio di programmazione in modo che siano allineati con il problema da risolvere.
Nonostante le sfide, Vermorel crede che il percorso dei DSL sia stato sotto-sfruttato e potrebbe essere vantaggioso per le startup. Sviluppare un DSL non sostituisce la necessità di ingegneri del software o dei linguaggi di programmazione mainstream; anzi, potrebbe richiederne addirittura di più. Tuttavia, concentrandosi su un dominio di problema specifico, un DSL può offrire vantaggi in termini di efficienza, sicurezza e ottimizzazione.
Vermorel inizia discutendo delle limitazioni del software aziendale tradizionale, che spesso diventa gonfio e difficile da gestire. Successivamente introduce il concetto di DSL come potenziale soluzione a questo problema. I DSL sono linguaggi di programmazione su misura per specifici domini o industrie, offrendo capacità specializzate e ottimizzazioni.
Vermorel sottolinea che molti prodotti software sul mercato oggi sono insoddisfacenti e tendono a diventare simili a grandi software aziendali, il che non è l’obiettivo ideale. Fornisce l’esempio dei sistemi di gestione degli ordini multicanale (MOMS), che sono cresciuti fino a somigliare a sistemi ERP con centinaia di schermate e migliaia di opzioni. L’obiettivo iniziale di differenziarsi dagli ERP è stato perso, e il prodotto risultante non è molto migliore dell’ERP originale.
Sostiene che l’utilizzo dei DSL avrebbe potuto portare a un prodotto più snello e potente nel caso dei MOMS. Tuttavia, adottare un DSL comporta le sue sfide, come anni di mal di testa e vincoli. D’altra parte, utilizzare un linguaggio di programmazione mainstream potrebbe consentire una crescita più rapida, ma potrebbe portare a un prodotto ingestibile.
Un esempio di successo di un DSL è SQL (Structured Query Language), un linguaggio di programmazione utilizzato per gestire database relazionali. Vermorel osserva che quando un DSL diventa molto successo, la gente spesso dimentica che, in primo luogo, si tratta di un DSL. Crede che ci sia un potenziale significativo per i DSL in varie industrie, compresa l’ottimizzazione della supply chain con Lokad.
Chandler chiede in quali altri settori i DSL potrebbero essere vantaggiosi. Vermorel suggerisce il marketing come una possibilità, dove le aziende spesso incontrano difficoltà con soluzioni software complesse che non sono abbastanza potenti per soddisfare le loro esigenze. Le risorse umane rappresentano un altro ambito in cui i DSL potrebbero offrire una soluzione su misura, in quanto riflettono la cultura unica di ogni azienda, rendendo difficile l’efficacia di approcci universali.
Trascrizione Completa
Kieran Chandler: Oggi scopriremo un po’ di più su come vengono sviluppati e anche capiremo perché possono essere vantaggiosi rispetto ad alcuni dei linguaggi di programmazione mainstream. Quindi Joannes, forse potresti iniziare raccontandoci un po’ di più su cosa siano effettivamente i DSL e come funzionino.
Joannes Vermorel: I DSL sono una classe specifica di linguaggi di programmazione che, a differenza dei linguaggi di programmazione generali come Java, Python e C++, non sono progettati per essere una soluzione per tutto ciò che si può programmare su un computer. I linguaggi di programmazione mainstream mirano a offrire il modo più comodo, produttivo ed efficiente di fare tutto ciò che si può fare con i computer o con molti computer, se lo si desidera. Ma i linguaggi di programmazione specifici per il dominio sono completamente diversi. È programmazione, quindi comporta codice, ed è formale e astratto, ma è progettato per risolvere tipi di problemi molto specifici. Ad esempio, storicamente, i primi linguaggi di programmazione specifici per il dominio riguardavano principalmente cose come AMPL, un linguaggio di programmazione matematica, progettato per eseguire compiti molto specifici.
Kieran Chandler: Quindi, per che tipo di problemi utilizzeresti un linguaggio specifico per il dominio e per cosa vengono usati nel mondo reale?
Joannes Vermorel: Nel mondo reale, un’applicazione storica sarebbe quella di implementare componenti critici. Ad esempio, vuoi avere un pezzo di software che controlli l’ABS della tua auto, il sistema antibloccaggio, e vuoi avere la prova che questo sistema non si bloccherà mai, perché se dovesse bloccarsi, la tua auto improvvisamente perderebbe la capacità di frenare. Quindi, è una situazione piuttosto critica, e penseresti: cerchiamo di non avere qualcosa di troppo soggetto a errori qui. Questo vale per il lato embedded. Poi ci sono problemi come HTML per le pagine web, dove si tratta di un linguaggio di programmazione, ma desideri renderlo più accessibile. C’è una buona ragione per cui si può imparare HTML alla scuola primaria: è perché è molto semplice. Le basi sono letteralmente molto accessibili anche per persone abbastanza non tecniche. Ma il compromesso è che HTML ti permette di controllare il layout di una pagina web; non ti permette di controllare un robot o fare intelligenza artificiale.
Kieran Chandler: Quindi, sono molto semplici e più limitati. Voglio dire, perché non si utilizzano linguaggi di programmazione mainstream, che offrono maggiore espressività per questi compiti perché sono capaci di farlo?
Joannes Vermorel: Se pensi a cosa significherebbe per le pagine web HTML, ad esempio, invece di avere solo un linguaggio di markup in cui puoi dire “title”, “big font size” e “body of text”, “voglio che il testo sia giustificato”, e così via – controlli semplici – dovresti pensare: ‘Oh, sto per controllare ogni singolo pixel sul mio schermo’, e questo non è pratico.
Kieran Chandler: …sarebbe ciò che otterresti da un approccio a basso livello, e se vuoi essere ancora più a basso livello, dici, beh, andrò a controllare direttamente le mie schede grafiche per avere prestazioni super elevate, e forse è quello che, se stai effettivamente costruendo un motore 3D per videogiochi, finirai per fare. Ma se vuoi semplicemente fare qualcosa di semplice, come una pagina web, ci vorrebbe un tempo infinito per farlo in quel modo. Nei videogiochi 3D, è molto più semplice e diretto passare per ID e simili come HTML. Va bene, ed è un argomento a noi molto familiare in Lokad, dato che abbiamo in qualche modo generato il nostro DSL. Quindi, perché era qualcosa di così interessante per noi in quanto azienda di supply chain?
Joannes Vermorel: Ciò che è un po’ esasperante nella supply chain è che i problemi sono così diversi. Letteralmente, non esistono due aziende uguali, voglio dire, non esattamente uguali. Non hanno lo stesso panorama applicativo. Alcune aziende hanno un ERP; molte ne hanno due per cattivi motivi. Hanno un WMS; ne hanno diversi WMS. Hanno 10 ERP differenti perché operano in dieci paesi diversi con paesaggi IT differenti. Hanno la piattaforma di e-commerce che è arrivata in seguito, che è una cosa a sé. Hanno acceleratori extra. Quindi il problema era: volevamo fare ottimizzazione della supply chain, e mi sono reso conto nei primi anni che, letteralmente, l’approccio classico di avere un framework configurabile non avrebbe funzionato. Voglio dire, le situazioni erano così diverse che finivamo per dover personalizzare e configurare in maniera massiccia per ogni singolo cliente. E, letteralmente, quando inizi a pensare di avere un software completamente pronto all’uso ma che impiega sei mesi per una qualche configurazione, è davvero configurazione? Non è come reinventare letteralmente un nuovo pezzo di software? La realtà è: sì, lo fai. E così, abbiamo deciso di portare questo approccio al prossimo passo logico, ovvero: se ogni volta che affrontiamo una situazione serve un pezzo di software diverso, perché non avere qualcosa che supporti questo processo rendendolo molto produttivo, molto veloce, molto affidabile? Ed è proprio da qui che è nata l’idea di avere un DSL, domain-specific language.
Kieran Chandler: Quindi, se hai usato un linguaggio di programmazione più mainstream, quella configurazione richiederebbe molto più tempo, mentre avere quel tipo di ambiente vincolato significa che puoi fare le cose molto più rapidamente.
Joannes Vermorel: È interessante. Voglio dire, in Lokad utilizziamo linguaggi di programmazione generici. Fin dall’inizio abbiamo usato C-sharp, C-sharp.NET, che costituisce fondamentalmente lo stack di programmazione di Microsoft, e in seguito abbiamo aggiunto F-sharp e TypeScript per vari scopi. Quindi, stiamo già utilizzando in modo esteso linguaggi di programmazione generici, e conosco bene cosa si può fare con questi linguaggi. Ma ci siamo resi conto nei primi anni di Lokad che affrontare le richieste dei clienti con questo tipo di linguaggi era incredibilmente lento e costoso. Avevamo bisogno di qualcosa di migliore, e non era certo un problema di non conoscere quei linguaggi. Ci siamo accorti che passare attraverso di essi per ogni situazione cliente risultava un po’ da incubo. E, a proposito, questo è anche uno dei motivi per cui tutte quelle soluzioni software per la supply chain finiscono per trasformarsi in giganteschi mostri software. È perché cercano di mettere nel loro prodotto tutto, e poi finisci con un mostro di software. Quindi abbiamo deciso: e se il prodotto software fosse
Kieran Chandler: E se il prodotto software fosse solo un DSL e le sue capacità, qualcosa come un nucleo estremamente snello, e poi, quando andiamo da un cliente, creiamo un’implementazione personalizzata realizzata non in C-sharp ma in Envision, il nostro DSL? Ma il compilatore e l’ambiente per Envision, in realtà, non sono implementati in Envision, bensì in C-sharp, F-sharp e TypeScript.
Joannes Vermorel: Va bene.
Kieran Chandler: Hai detto che, ovviamente, le supply chain sono incredibilmente diverse e ogni cliente è estremamente differente. L’uso di un DSL introduce qualche tipo di limitazione? Ti impedisce di implementare effettivamente certe funzionalità?
Joannes Vermorel: Assolutamente, ed è proprio questo il punto, per quanto sorprendente possa sembrare. Vedi, per esempio, un problema molto basilare che si presenta quando hai una grande supply chain che vuoi ottimizzare e finisci per avere un dataset abbastanza consistente. Supponiamo di avere un terabyte di dati. Non è assolutamente enorme; puoi andare in un supermercato e comprare un hard disk da 1 terabyte per circa 100 euro, che è abbastanza economico. Quindi, è una grande quantità di dati, ma non gigantesca. Il problema ora è che il tuo dataset verrà aggiornato ogni giorno, e vuoi, per esempio, fare una passata su questo dataset per prendere decisioni di supply chain, come decisioni di riassortimento e decisioni sui prezzi.
Ora, il problema è che, se utilizzi un linguaggio di programmazione generico, come puoi assicurarti che il calcolo impieghi solo, diciamo, meno di 60 minuti? È molto difficile. Appena ci sono cicli o costrutti arbitrari, diventa estremamente complesso dimostrare che l’esecuzione rientrerà in un arco di tempo specifico, cosa che può diventare problema se il calcolo che stai eseguendo per prendere certe decisioni (come quelle di riassortimento) deve rientrare in una sequenza di esecuzione ristretta all’interno dei tuoi sistemi ERP. Hai davvero bisogno che questa esecuzione venga completata in 60 minuti; altrimenti, rischi di compromettere l’intera supply chain perché il calcolo richiede troppo tempo.
Quindi, questo è tipicamente il genere di situazione in cui i linguaggi di programmazione generici non riescono a darti queste garanzie, perché con essi puoi fare praticamente qualsiasi cosa, rendendo molto difficile ottenere qualunque tipo di certezza. Ma con un DSL che prevede limitazioni adeguate, sorge un’altra considerazione: il design. In realtà, è molto difficile offrire un ambiente di programmazione completamente sicuro con un linguaggio generico. Con linguaggi come Java, Python o C-sharp, ti esponi a intere classi di vulnerabilità della sicurezza. Se puoi fare qualsiasi cosa con un computer, puoi fare cose relativamente pericolose da un punto di vista della sicurezza IT.
Ancora, avere un DSL significa che esistono intere classi di cose che non sono addirittura accessibili, come manipolare il sistema operativo, e questo elimina intere categorie di problemi che non sono nemmeno di tua competenza. Tutto ciò a cui tieni è l’ottimizzazione della supply chain.
Kieran Chandler: Sì, ed è di questo che abbiamo parlato nel nostro episodio sulla sicurezza. Diamo un’occhiata allo sviluppo di un DSL. Voglio dire, quanto tempo ci vuole realmente per sviluppare uno di questi linguaggi? Nel tuo caso, quanto ci è voluto per sviluppare Envision?
Joannes Vermorel: È una buona domanda. Letteralmente ci vogliono dieci anni, il che è piuttosto folle. Quindi, quando sei una start-up, sai, dici “muoviti in fretta e rompi tutto”, realizzi un prodotto minimo funzionante che puoi vendere in sei mesi, e poi inizi a creare il tuo DSL; ed è letteralmente un processo di
Kieran Chandler: Sicuramente, uno sforzo pluriennale, e la sfida principale è che devi davvero ripensare al nocciolo dei problemi che stai risolvendo. Quali sono gli aspetti fondamentali dei problemi, e quali dovrebbero essere i primitivi logici accessibili per poter risolvere tali problemi con i computer? È persino peggio che inventare nuove parole; è inventare primitivi logici per collegare concetti, in modo da poter, alla fine, inquadrare intere classi di soluzioni in questo linguaggio e ottenere soluzioni generate in maniera completamente automatizzata dai computer. Ma stai letteralmente pensando al linguaggio di programmazione in sé, alla sua sintassi, al tipo di operatori che hai, il che è… e vuoi davvero che queste cose siano completamente allineate con il problema che stai cercando di risolvere. Quindi, se tu fossi una start-up che inizia ora, consiglieresti di intraprendere questa strada e sviluppare questo linguaggio, che può essere incredibilmente dispendioso in termini di tempo e abbastanza difficile da realizzare, oppure consiglieresti di restare fermi e lavorare con linguaggi di programmazione più mainstream?
Joannes Vermorel: Innanzitutto, creare il tuo DSL non è qualcosa che userai come sostituto dei linguaggi di programmazione mainstream. Se sei una software company e vuoi creare questo nuovo linguaggio come mezzo per risolvere una classe di problemi – come facciamo noi per la supply chain – avrai bisogno di un compilatore e di un runtime per eseguire i programmi scritti in questo linguaggio. E questo compilatore sarà scritto con un linguaggio di programmazione tradizionale. Quindi, non è perché intraprendi la strada del DSL che non avrai bisogno di ingegneri del software; anzi, ne serviranno ancora di più.
Considerando la domanda per le start-up, penso che sia interessante perché la strada del DSL è così ambiziosa da essere stata significativamente sottoutilizzata. Vedo molte software company e start-up cercare di affrontare i problemi in modo classico perché hanno fretta, e finiscono per realizzare prodotti leggermente insoddisfacenti. Quando guardo al tipo di prodotti che stanno portando sul mercato, dico che è interessante, ma stanno andando dritti verso il diventare un grosso pezzo di software aziendale, che non è proprio dove vorresti arrivare.
Un esempio sarebbe quello che chiamo “sistemi di gestione ordini multicanale”. C’è un’ondata di prodotti software che ha preso quella strada, e i più grandi ora iniziano ad assomigliare praticamente a ERP a sé stanti, con letteralmente centinaia di schermate, migliaia di opzioni, e ci vogliono mesi per configurarli correttamente. In realtà non finiscono per trovarsi in una posizione molto migliore rispetto agli ERP che erano il punto di partenza per differenziarsi e avere prodotti più snelli, più veloci da implementare, e così via. Dieci anni dopo, ti ritrovi con qualcosa che è incredibilmente simile a un ERP, e forse questo è proprio il tipo di problema in cui l’uso di un DSL avrebbe fatto la differenza.
Kieran Chandler: Stiamo discutendo le differenze tra l’utilizzo di un linguaggio domain-specific (DSL) e un linguaggio di programmazione mainstream per lo sviluppo software. Con un DSL potresti affrontare anni di mal di testa ma, alla fine, ottenere una soluzione potente e snella. D’altra parte, usare un linguaggio di programmazione mainstream potrebbe portare a una crescita più rapida, ma potrebbe risultare in un sistema ingestibile.
Joannes Vermorel: È interessante notare che uno dei primi DSL di successo è stato SQL, il linguaggio di query per i database. Oggigiorno, ogni fornitore di database sta sostanzialmente vendendo un DSL, in quanto l’unico modo per interagire con un database è attraverso query scritte in un linguaggio domain-specific. Quando un DSL diventa incredibilmente di successo, la gente dimentica persino che si tratta di un DSL. Per esempio, HTML è diventato così diffuso che non lo si considera più come un DSL. Credo che i DSL abbiano un grande potenziale in vari settori, come l’ottimizzazione della supply chain con Lokad.
Kieran Chandler: A parte l’industria della supply chain, quali altri settori pensi possano beneficiare dell’uso di un DSL?
Joannes Vermorel: Il marketing è un settore che mi viene in mente. Vedo molte aziende che lottano con soluzioni software complesse che non sono abbastanza potenti. Finiscono per lavorare molto con Excel, che è difficile da mantenere e portare in produzione. Le risorse umane sono un’altra area in cui i DSL potrebbero essere vantaggiosi. La gestione delle risorse umane spesso riflette la cultura di un’azienda, rendendo difficile avere una soluzione valida per tutti. Credo che i DSL abbiano il potenziale per avere un impatto significativo in praticamente ogni settore, anche se il modo in cui vengono implementati può variare notevolmente da un problema all’altro.
Kieran Chandler: Ci fermiamo qui. Grazie per il tuo tempo oggi, Joannes.
Joannes Vermorel: Prego.
Kieran Chandler: Questo è tutto per oggi. Grazie per averci seguito, e ci vediamo alla prossima. Ciao per ora.