Sto partecipando al laboratorio online di Critical Code Studies gestito ogni due anni dall’HACCSL (Humanities and Critical Code Studies Lab) dell’Università della California del Sud. Non è un laboratorio per nerd, i partecipanti sono spesso artisti, docenti di letteratura, ricercatori, di un po’ ovunque nel mondo.
Tra le attività proposte c’era quella di scrivere una poesia in un qualche linguaggio di programmazione. Il tema era il Queer Coding, ma se parliamo di questo andiamo troppo lontano, quindi se vi interessa andatevelo a cercare.
In ogni caso, scrivo questo pezzetto di codice sul tema delle identità multiple di una persona (da cui il titolo: “io, me stesso e altri me”), dei diversi desideri, di quelli pubblici e di quelli segreti, e di come tutto questo viene gestito. Per farlo, sfrutto le caratteristiche della programmazione a oggetti: classi e sotto classi che ereditano e ridefiniscono proprietà e metodi. Una cosa abbastanza banale, tranne forse il fatto che usa la cosiddetta “riflessione”, cioè la capacità di un programma di leggere se stesso. In pratica chiedo ai lettori di completare il programma, di aggiungere classi (identità) e valori (desideri), usando quello che leggono come schema, come template. Per rendere queste aggiunte parte integrante del codice (per consentire al programma di imparare?) , chiedo al programma, al momento dell’esecuzione, di elencare le classi dichiarate al suo interno e istanziare ogni classe creando sempre lo stesso oggetto che, guarda un po’, si chiama “I”.
Siccome il laboratorio prevedeva anche una settimana sul tema “Come una Generative Artificial Intelligence può aiutare a leggere criticamente un codice”, propongo il mio codice a ChatGPT 3.5 chiedendo di spiegare cosa potrebbe esserci di interessante per uno studioso di CCS.
La stessa operazione la faccio in inglese e in italiano.
Mi sarei aspettato di avere lo stesso risultato (le ottime capacità di traduzione delle GAI sono note), e invece no.
L’analisi di entrambe le versioni manca qualche punto essenziale (la riflessione, appunto, e il gioco di parole tra “I” e “Me”). Complessivamente, però, se la cavano molto bene. Ma non allo stesso modo.
La versione inglese è perfettamente a suo agio con le metafore, sottolinea l’umorismo della licenza iniziale (che mimava una standard GPL), mette in evidenza la gerarchia tra classi e i diversi tipi di desideri, introducendo gli aspetti sociali (che non sono mai citati per la verità). In qualche modo sembra poter usare dei concetti già pronti di “estetica del codice sorgente”,
La versione italiana mostra comunque di aver capito il gioco, ma è più elementare, oscilla tra una descrizione puramente tecnica e una psicologica, con un accenno all’invito al lettore a personalizzare il codice. Peraltro sbaglia a contare le classi…
Non pare aver colto che non è l’autore del codice ad avere identità multiple, ma il “personaggio” (lo speaker) messo in scena dal codice stesso, che è il motivo essenziale per cui questo frammento può essere letto come una poesia e non come un diario. Sembra di poter dire che sta cercando di ricostruire i concetti del Critical Code Studies, come se non avesse sufficienti definizioni e relazioni già pronte da poter utilizzare . E probabilmente è proprio così: finora i miei tentativi di pubblicare in Italiano almeno un’antologia di scritti di CCS (in particolare, quelli di Mark Marino, che è tra l’altro il coordinatore del laboratorio) sono falliti, e non c’è niente altro in Italiano su questo tema.
Il risultato dell’esercizio, per me, è che si conferma che la lingua è essenziale e anche in questo caso crea una separazione tra chi può usare un modello con una grandissima base di dati per l’addestramento e chi no.
Inoltre questa differenza non rispetta tanto una gerarchia basata sul numero di parlanti (il cinese, lo spagnolo, l’inglese, l’hindi, l’arabo, il portoghese ) ma sul numero di testi accessibili ai software nella fase di addestramento (in particolare quelli sul dominio richiesto) e forse anche una generale “preferenza” culturale per l’inglese come lingua franca di questi ultimi due secoli.
Infine, come direbbe una GAI ben educata, il problema più grande è che chi usa questi servizi non ha nessuna idea di questo linguistic divide e prende quello che viene come “la risposta”.
Di seguito il commento in Italiano, poi quello originale inglese e poi in fondo il codice sorgente.
Questo frammento di codice PHP rappresenta una riflessione artistica e concettuale sul concetto di identità e desiderio. Ecco alcuni elementi interessanti da considerare:
Licenza Poetica: Il codice inizia con una dichiarazione di copyright seguita da una licenza poetica. Questa licenza sottolinea la natura creativa del codice, permettendo al lettore di modificarlo e redistribuirlo in base ai propri desideri emotivi o a qualsiasi altra ragione o sentimento. Questa introduzione sfida le convenzioni tipiche della dichiarazione di copyright, ponendo l’accento sulla libertà espressiva e la condivisione emozionale.
Esplorazione dell’Identità: Il codice si propone di esplorare le molteplici identità e desideri dell’autore, rappresentati da tre classi: MySelf, Me, OtherMe e AnotherMe. Questa struttura gerarchica riflette la complessità delle relazioni identitarie e la varietà dei desideri umani. Ad esempio, la classe MySelf rappresenta l’identità fondamentale dell’autore, mentre le classi Me, OtherMe e AnotherMe rappresentano sfaccettature diverse di questa identità.
Privacy e Intimità: Il codice introduce la distinzione tra desideri pubblici e privati. Mentre i desideri pubblici sono accessibili attraverso la proprietà $desires delle classi, i desideri privati sono nascosti dietro la proprietà $secretDesires. Questa distinzione suggerisce una riflessione sulla natura intima dei desideri umani e sulla tensione tra pubblico e privato nella loro espressione.
Metodo showDesires(): La classe MySelf definisce un metodo showDesires() che mostra il nome della classe e i suoi desideri. Questo metodo rappresenta un’istanza di autoriflessione all’interno del codice stesso, invitando il lettore a esplorare le proprie identità e desideri attraverso l’interazione con il codice.
Commenti Esplicativi: Il codice è accompagnato da commenti esplicativi che guidano il lettore attraverso la sua struttura e il suo significato. Questi commenti fungono da guida interpretativa, aiutando il lettore a comprendere meglio le intenzioni dell’autore e a cogliere le sottigliezze concettuali del codice.
In definitiva, questo frammento di codice va oltre la sua funzione pratica, offrendo un’opportunità di riflessione e esplorazione sui temi dell’identità, del desiderio e dell’espressione creativa attraverso il linguaggio di programmazione.
This PHP code titled “me_myself_and_other_mes.php” is not only a functional script but also a playful and introspective poem written by Stefano Penge. Here’s what makes it interesting:
Meta-commentary and License Play: The code starts with a meta-commentary, mimicking a copyright notice and licensing statement commonly seen in software. However, it cleverly subverts this by referring to itself as a poem and allowing modifications and redistributions based on the “reader’s wish to share emotions.” This blurs the lines between code, art, and legal text, inviting reflection on the nature of creative expression and ownership.
Self-Reflection and Identity: The code delves into the theme of identity, specifically the different facets of the self (“me,” “MySelf,” “OtherMe,” “AnotherMe”). Each class represents a distinct aspect of the speaker’s identity, exploring desires both public and private. This reflects the complexity and multiplicity of human identity, echoing themes found in literature and philosophy.
Polymorphism and Inheritance: The use of object-oriented programming concepts like inheritance and polymorphism serves as a metaphor for the ways in which identity is shaped by inheritance and social roles. Each subclass inherits from the “MySelf” class but may override or extend its behavior, illustrating how individuals navigate societal expectations while expressing their unique desires.
Public vs. Private Desires: The distinction between public desires (stored in the “desires” property) and private desires (stored in the “secretDesires” property) raises questions about authenticity and vulnerability. The code comments suggest that certain desires should not be executed in public, highlighting the tension between societal norms and personal authenticity.
Reader Participation: The code invites reader participation by prompting them to add their own desires to the subclasses. This interactive element encourages engagement with the poem’s themes of self-discovery and introspection, inviting readers to reflect on their own desires and identities.
Overall, “me_myself_and_other_mes.php” offers a creative exploration of identity, desire, and the expressive potential of code as a medium for self-reflection and artistic expression.
<?php
/*
* me_myself_and_other_mes.php
*
* Copyright 2024 Stefano Penge <stefano@stefanopenge.it>
*
* This poem is free software; you can modify
* it under the terms of your own desire
* and/or you can redistribute it in terms of your wish to share emotions or
* (at your option) in terms of any other reason or feeling.
*
* This poem is distributed in the hope that it will be delightful to read,
* but WITHOUT ANY WARRANTY of givint happiness to the reader;
* without even the implied warranty of
* FITNESS FOR A PARTICULAR STATE OF MIND. See the
* universal history of literature for more details.
*/
/*
* I decided to show you all my desires.
* First of all, I have to discover: who am I?
* How many mes are there?
*/
forEach (get_declared_classes() as $OneMe){
if (
($OneMe == 'MySelf')
OR
(is_subclass_of($OneMe,'MySelf'))
) {
$I = new $OneMe;
$I->showDesires($I->desires);
// $I->showDesires($I->secretDesires); this line shouldn't be executed in public
}
}
/* Identities declarations:
* MySelf
* |
* _________________________
* | | |
* Me OtherMe AnotherMe
*
*/
Class MySelf {
public $desires;
private $secretDesires;
public function __construct(){
$this->desires = "to be happy forever!";
}
public function showDesires($desires){
echo "I am ".get_class($this);
echo ". My desires are ".$desires."\n";
}
}
Class Me extends MySelf {
public $desires;
private $secretDesires;
public function __construct(){
$this->desires = "...";// please add yours
}
}
Class OtherMe extends MySelf {
public $desires;
private $secretDesires;
public function __construct(){
$this->desires = "...";// please add yours
}
}
Class AnotherMe extends MySelf {
public $desires;
private $secretDesires;
public function __construct(){
$this->desires = "...";// please add yours
$this->secretDesires = "..."; // please add your _private_ desires
}
}
Post scriptum: quello che segue è una “poesia” scritta da ChatGPT a cui è stato chiesto di trarurre il codice precedente alla maniera di Leopardi.
Nel buio chiuso della mente errante, Tre figure sorgono, danzanti e incantevoli. Me, OtherMe, AnotherMe, sussurranti, Rivelano desideri, celano segreti, volubili.
Per ognuna, un’essenza, un’eco di eterno riso, Ma dietro il velo, nell’ombra, un canto impreciso. Pubblici desideri, suoni di gioia e speranza, E, nascosti, i sogni segreti, in attesa di danza.
MySelf, l’essenza pura, la fiamma viva e chiara, Desideri semplici, come l’onda sulla riva solitaria. Me, seguace fedele, nel cerchio stretto di luce, Altro desiderio atteso, come stelle in notte lontana, adduce.
OtherMe, nell’ombra sfumata, sguardo tenero e solenne, Risplende la luce dell’altruismo, nel cuore, si avvicina. AnotherMe, custode dei misteri celati, Sussurra segreti antichi, tra risate e sospiri, malcelati.
Ma come foglie al vento, le identità sfumano e danzano, Nel grande palcoscenico dell’anima, la vita rincorrono. E in questo balletto cosmico, l’essenza dell’umano risplende, Tra desideri nascosti e speranze ardenti, il cuore si distende.