Nell'ultima filosofia continentale, all'interno della corrente del nuovo realismo, è nato un nuovo modo di fare ontologia.
Quest'ultimo è definito come "ontologia orientata all'oggetto".
Tra i vari esponenti dell'ontologia orientata all'oggetto spiccano i seguenti nomi:
Graham Harman, Levi Bryant, Timothy Morton e Tristan Garcia.
L'ontologia orientata all'oggetto assume la prospettiva del realismo speculativo.
Il realismo speculativo come movimento nasce in reazione ad una secolare tradizione idealista.
Principalmente il realismo speculativo afferma la necessità di pensare e conoscere l'ente indipendentemente dal soggetto che lo osserva. I realisti speculativi difendono questa tesi a partire da due fatti:
il tempo ancestrale e il disastro ecologico.
Se supponiamo che l'uomo sia nato nell'universo e sia l'esito di una lunga evoluzione, così come ci dice la scienza, allora non possiamo adottare una prospettiva idealista kantiana dove l'unica realtà conoscibile è quella data al soggetto.
Dobbiamo poter conoscere come l'universo e i pianeti si sono formati, ma allora
dovremmo poter conoscere oggetti senza soggetti.
Inoltre l'ecologia ci mette di fronte ad un fatto sconcertante: la possibilità della scomparsa dell'uomo sulla terra. Come possiamo pensare un mondo senza l'uomo, per poter pensare quello che ci dice la scienza, se non possiamo pensare nulla se non in rifermento ad un soggetto che lo pensa, come ha sostenuto Kant?
L'ontologia orientata all'oggetto, in particolare, pretende di poter studiare qualsiasi oggetto, usando la prospettiva del realismo speculativo.
Gli oggetti spaziano dalle particelle a Harry Potter.
L'ontologia orientata all'oggetto si oppone a qualunque forma di riduzionismo degli oggetti.
Esistono principalmente tre forme di riduzionismo:
ridurre l'oggetto alle sue parti, per esempio dicendo che un oggetto è semplicemente una combinazione di atomi;
ridurre l'oggetto alle sue qualità sensibili o impressioni, per esempio dicendo che un oggetto è semplicemente la somma di colore, forma, ecc.;
ridurre l'oggetto al processo con cui è nato, per esempio dicendo che una merce consiste nel processo lavorativo che ha portato alla sua fabbricazione.
Visto che l'ontologia orientata all'oggetto non si pone limiti sugli oggetti da studiare, essa potrebbe anche trattare gli oggetti digitali.
Secondo
Aden Evens un oggetto digitale è un ente composto da parti, le quali sono caratterizzate da qualità che corrispondono a dei codici numerici.
All'interno della programmazione esiste la programmazione orientata all'oggetto, la quale rappresenta un metodo diverso di programmare.
È possibile costruire oggetti in diversi linguaggi: C++, Java, .NET, Perl, Python, Php.
Programmazione orientata all'oggetto e ontologia orientata all'oggetto, si tratta solo di una somiglianza di nomi?
Io penso ci sia di più.
[caption id="attachment_17032" align="alignright" width="253"]
Aden Evens, ontologia orientata all'oggetto[/caption]
Aden Evens incomincia a parlare della programmazione orientata all'oggetto nel secondo capitolo di
Logic of the digital.
La programmazione orientata all'oggetto rappresenta un modo differente di fare programmazione rispetto al metodo procedurale di cui ho parlato nell'articolo precedente.
Aden Evens spiega che la differenza tra i due modi di programmare consiste principalmente in questo:
la programmazione per procedure organizza il programma dividendolo in compiti da eseguire;
la programmazione orientata all'oggetto, invece, organizza il programma dividendolo in entità che operano in esso.
Gli oggetti possono avere una classe assegnata.
Questo non accade in tutti i linguaggi di programmazione, esistono linguaggi senza le classi (es. Javascript), ma quando sono presenti le classi, ecco che nella programmazione si introduce qualcosa come l'ontologia.
L'ontologia, infatti, in filosofia è principalmente una classificazione di tutto ciò che esiste.
L'oggetto digitale è definito da Evens come una scatola nera. Esso dall'esterno è strutturato in parti, ma dall'interno è un'insieme di valori e relazioni tra questi valori.
Alan Kay, grande scienziato dell'informatica, parlando di
Smalltalks, il primo linguaggio per la programmazione orientata agli oggetti, paragona questi oggetti alle monadi di Leibniz:
«Smalltalk's objects have much in common with the monads of Leibniz and the notions of 20th century physics and biology.» (Key, Alan, ,1993, The early history of Smalltalk, ACM SIGPLAN Notices, p. 70)
Il codice nella programmazione orientata all'oggetto è una struttura ramificata in categorie e organizzata in oggetti.
Ogni elemento è disposto secondo una gerarchia di parentela.
Se un elemento B è all'interno di A, allora B è "child" di A.
Prendiamo sul serio l'affermazione di Alan Kay: gli oggetti digitali sono come le monadi di Lebniz.
Nella Monadologia Leibniz spiega quali sono le caratteristiche principali delle monadi.
Una monade è una sostanza semplice, non ha parti, è uno specchio vivente dell'universo da un certo punto di vista, è un'unità, non ha porte o finestre, ossia non comunica con un mondo esterno. Esistono differenti tipi di monadi, ogni corpo è composto di sostanze semplici, dunque di monadi.
Anche la nostra anima è un esempio di monade.
Cosa dovrebbe esserci in comune tra gli oggetti digitali e le monadi? Ovviamente l'oggetto digitale non riflette un universo ed è composto da parti, ma potrebbe essere un ente senza porte e finestre, una realtà chiusa tra le sue parentesi? Incominciamo a vedere da più vicino in cosa consiste concretamente un oggetto nella programmazione.
Vorrei parlare almeno di due linguaggi sugli oggetti: Javascript e Php.
Incominciamo pure da un linguaggio semplice come Javascript.
Javascript ha il difetto di non avere delle classi. Questo è un difetto solo dal mio punto di vista che mi interesso di filosofia e vedo nelle classi l'ontologia filosofica, ma ovviamente un elemento in meno può alle volte semplificare un linguaggio.
Gli oggetti in Javascript sono definiti come variabili che contengono altre variabili.
L'oggetto ha delle proprietà, per esempio, se è una persona avrà un nome, un cognome, una data di nascita, ecc. A ogni proprietà viene assegnato un valore.
Costruiamo un pianeta con Javascript scrivendo questo codice:
var planet = {
id: 23,
name: "Surtur",
continents : {
estContinent: {locationId: 1, name: "Eydir",
cities: {
capital: {locationId: 14, name: "Ends"},
provincialCity1: {locationId: 15, name: "Ottuwa"},
provincialCity2: {locationId: 15, name: "Yelden"},
}
},
nordContinent: {locationId: 1, name: "Nors",
cities: {
capital: {locationId: 17, name: "Uruk"},
provincialCity1: {locationId: 18, name: "Narnot"},
provincialCity2: {locationId: 19, name: "Eliador"},
}
},
westContinent: {locationId: 1, name: "Wetterfly",
cities: {
capital: {locationId: 20, name: "Ghendis"},
provincialCity1: {locationId: 21, name: "Comb"},
provincialCity2: {locationId: 22, name: "Narowa"}
}
}
}
};
Come si vede l'oggetto principale è un pianeta definito come variabile (planet).
Il pianeta ha due proprietà:
un identificativo (23) e un nome (Surtur).
Nel pianeta abbiamo altri oggetti: i continenti, i singoli continenti e tre città per continente.
L'oggetto dunque ha una struttura che vediamo qui articolarsi con queste parentesi graffe. Un oggetto può essere composto da altri oggetti. Ogni oggetto ha le sue proprietà, le quali possiedono dei valori specifici.
Come con le monadi, le sostanze semplici, una dentro l'altra, compongono sostanze più complesse o corpi.
Questi oggetti sono come le monadi di Deleuze, forse, più che di Lebniz, ossia la piega della piega. Piega rappresentata dalla loro stessa struttura.
Le pieghe della struttura della monade possono essere dispiegate per arrivare alla proprietà dell'oggetto che ci interessa. Supponiamo che voglio sapere il nome della capitale del continente dell'est, ossia Eydir, allora devo scrivere questo codice:
document.write(planet.continents.estContinent.cities.capital.name);
I puntini sono delle concatenazioni e ci permettono di addentrarci attraverso tutte le parti dell'oggetto, sino ad arrivare alla proprietà che stiamo cercando (name).
La programmazione orientata all'oggetto cambia completamente il modo di programmare.
Essa, nota Evens, si avvicina molto di più al nostro mondo quotidiano.
Infatti esso è precisamente fatto di oggetti, ossia di biciclette, aeroplani, sedie, tavoli, ecc. I dati e le procedure sono raccolti in oggetti e gli oggetti in una gerarchia di categorie.
Nell'esempio precedente ho parlato di un linguaggio in cui non è affatto apprezzabile questa gerarchia di categorie, ora paliamo di qualcosa di diverso:
la programmazione orientata all'oggetto in Php.
Prendiamo la classe "persone" (Persons) e con questa classe determiniamo una serie di proprietà con le variabili (first, last, nationality, language). In questa classe vengono scritte delle "method", che assomigliano alle funzioni della programmazione per procedure.
Tutto questo va scritto in un file separato che chiamiamo "user.php".
In questo file scriviamo questo codice:
<?php
class Persons {
public $first;
public $last;
public $nationality;
public $language;
public function __construct($first, $last, $nationality, $language){
$this->first = $first;
$this->last = $last;
$this->nationality = $nationality;
$this->language = $language;
}
public function fullName() {
return $this->first." ".$this->last;
}
}
?>
In questa pagina vediamo chiaramente la classe (class Persons), le variabili (es. $first) e i method (es. public function fullName() {}).
Gli oggetti non sono creati sullo stesso file, ma sono creati su un file diverso che chiamiamo:
Index.php. Prima di tutto bisogna collegare il primo file al secondo usando la funzione "include":
<?php
include 'includes/user.php';
?>
In seguito si scrive nel "body" il codice php per gli oggetti:
<?php
$person = new Persons('Silvio', 'Domenico', 'Italy', 'italian');
$person = new Persons('David', 'Bowie', 'England', 'english');
echo $person->fullName();
?>
Le variabili "$person" sono degli oggetti in Php.
Questi oggetti si collegano alla classe scrivendo "new Persons" e tra parentesi si inseriscono tutti i valori delle variabili che compaiono nell'altro file. Grazie a "echo" possiamo far comparire sul Browser il nome completo del secondo oggetto: "David Bowie".
Una parte interessante del codice che ho scritto sopra è il termine "this".
[caption id="attachment_17033" align="alignright" width="349"]
Levi Bryant ontologia orientata all'oggetto[/caption]
Ne parla molto spesso
Aden Evens nel secondo capitolo, in quanto "
this" vuol dire "questo", ma non possiamo sapere a cosa si riferisce a meno che non sappiamo bene leggere il codice.
"This" è un significante fluttuante che non ha un significato se non riportato ad un certo elemento preciso. Per non ripetere l'elemento si scrive "$this".
È il problema dell'oca e del topo in Lewis Carroll:
«Il topo racconta che quando i signori progettarono di offrire la corona a Guglielmo il Conquistatore, "l'arcivescovo trovò questo ragionevole."
L'anatra chiede: "Cosa trovò?"
"Trovò questo" replicò il topo molto irritato, "saprai cosa questo vuol dire, no?"
"Io so cosa questo vuol dire quando trovo una cosa", disse l'anatra; "in generale è una rana o un verme. La domanda è: che cosa trovò l'arcivescovo?".
È chiaro che l'anatra usa e comprende questo come un termine di designazione per tutte le cose, stati di cose e qualità possibili (indicatore).»
(Deleuze, Gilles, Logica del senso, Milano, Feltrinelli, 2009, p.31.)
Il topo insiste: "Tutti sanno cosa vuol dire 'questo'". L'oca, invece, non capisce, infatti "questo", se non è riferito ad una persona o ad un oggetto, non ha significato.
Prendiamo un codice semplice in Jquery:
$(':text').focusin(function () {
$(this).css('background-color', 'yellow');
})
Questo codice serve per fare in modo che, se qualcuno clicca con il mouse in una casella di testo, la casella avrà come colore di sfondo il giallo.
Qui compare il termine "
this". Esso si riferisce proprio a ':text', ossia alla casella di input di testo a cui si intende assegnare il colore in seguito all'operazione dinamica 'focusin'.
L'oggetto, nota Evens, ha degli aspetti in comune con
il codice binario di cui parlavo nell'articolo precedente.
Un oggetto è fatto di parti, ma anche di qualità.
Il codice binario ha due valori (qualità?) 1 o 0, ma è strutturato secondo una sequenza o ordine (100101).
Nel codice binario conta il valore, se è 1 o 0, ma conta anche la posizione nella sequenza del valore assunto. Nell'oggetto contano le qualità e i loro valori, ma anche la struttura dell'oggetto stesso.
L'oggetto, riprendendo un'espressione di Deleuze, viene definito da Evens come il "
dividuale". Mentre l'individuo non può essere diviso, in quanto perderebbe la sua individualità, il "dividuale" si divide sempre in parti. Gli oggetti sono "dividuali" in quanto scomponibili in parti.
Per comprendere meglio questo mondo di oggetti digitali Evens prosegue il capitolo parlando di videogame.
Il videogame è orientato all'oggetto, composto di oggetti nei quali l'apparenza è distinta dal comportamento.
Per capire meglio tutto questo Evens fa questo esempio: supponiamo che giochiamo ad un videogame, siamo in un tunnel e ad un certo punto incontriamo un verme gigante; ci accorgiamo di avere una torcia a fianco e pensiamo che sarebbe utile per poter allontanare o attaccare il mostro, dunque decidiamo di prenderla; tuttavia ci accorgiamo subito che la torcia è solo un'immagine, immagine che dà un effetto gotico al gioco, ma non si può afferrare.
L'apparenza degli oggetti digitali, l'aspetto esterno o immagine, è completamente distinto dal comportamento dell'oggetto.
Il comportamento dell'oggetto è definito da un codice che non vediamo.
Nel caso della torcia non è stato assegnato nessun comportamento, essa è solo un'icona e basta. Il video game, spiega Evens, consiste in questo: capire il comportamento degli oggetti, cercare di sfruttare le proprie possibilità al meglio, vincere il gioco.
Siccome è tutto programmato nei videogame non esiste futuro. Tutto accade secondo dei codici precisi e noi possiamo muoverci nei limiti che sono stati descritti dal programmatore del gioco.
L'immagine come tale, per quanto possa essere bella e sublime, è solo la produzione di qualche software di grafica, ma il comportamento dipende da codici, in particolare dalle "method" assegnate alle variabili.
Vediamo meglio questo caso particolare. Nei videogame l'apparenza è divisa dal comportamento dell'oggetto, ma non è forse quello che dicono gli ontologi orientati all'oggetto?
Gli ontologi orientati all'oggetto pensano l'oggetto nella frattura tra le qualità (apparenza) e la sostanza (insieme dei comportamenti).
Tra questi ontologi spicca il nome di
Levi Bryant.
Bryant crede che la sostanza sia un'entità virtuale che assume differenti manifestazioni locali.
Un oggetto, ad esempio, può assumere differenti colori a seconda dell'illuminazione. Tutti questi colori sono virtuali, ma si manifestano attualmente a seconda delle condizioni esterne.
La sostanza è l'insieme dei poteri dell'oggetto, secondo Bryant. Non potremmo dire che quella torcia ridotta a sola immagine non ha potere alcuno, mentre tutti gli oggetti digitali a cui sono assegnati dei comportamenti specifici hanno una serie di poteri come le sostanze di Bryant?
Si capisce subito, quanto lo si legge, che il libro di Evens si pone come primo obbiettivo lo studio degli oggetti digitali.
Evens, anche lui, segue la svolta ontologica. Questo significa che, almeno il tema degli oggetti digitali e della programmazione orientata all'oggetto ha buone possibilità di prendere piede nella filosofia attuale.
Il problema è che al momento solamente Evens, che io sappia, ha affrontato questo tema.
Immagini da
Youtube,