Buonismo da informatici: Java e la mancanza di distruttori

Ho una laurea in matematica e di mestiere faccio/facevo l’analista programmatore. Che a dirlo sembra sempre che metti un computer su un lettino, ti fai raccontare i suoi sogni e poi gli riprogrammi la vita. Se volete, sul biglietto da visita ho avuto anche software engineer e software analyst. Ma sempre la stessa zuppa è.

Ho sviluppato per 14 anni in C++. Il quale, se non lo sapete, e dato che chi passa di qui normalmente si interessa di schemi a maglia e ricette e può darsi che sia un ingegnere nucleare o un artista di avanguardia ma non è detto che sia un informatico, è più o meno questo: un linguaggio object oriented, il che vuol dire che tu invece di fare tutte le cose in sequenza costruisci dei robi che fanno e rifanno le cose per te ma hanno anche una loro personalità, che vivono, che si interfacciano, che fanno cose. Insomma, non fai solo cose, ma fai robi che fanno cose, o che contengono altri robi, o fanno da faccia con altri robi. E si relazionano fra loro. Vi assicuro che è molto divertente.

Questi robi li costruisci e li distruggi con i loro costruttori e i loro distruttori. Ho fatto cose turche con i distruttori. O meglio, ho copiato cose turche fatte con i distruttori. Non mi sarebbe personalmente mai venuto in mente che con un distruttore si potesse fare cose diverse dal distruggere l’oggetto in questione, invece si fanno. E io le ho copiate e mi è piaciuto.

Solo che ora, per motivi poco attinenti al mio caro lavoro cassa-integrato corrente, il C++ non lo uso e sto provando a mettere insieme qualcosa in Java. Che ha sì i costruttori. Ma nessun distruttore. E a volte mi mancano. Sta di fatto che programmare in java mi sta cambiando la testa. Niente distruttori, ci pensa il linguaggio. Tu pensa solo a costruire. Le cose muoiono da sole, poi ci pensa il garbage collector a far pulizia.  Il garbage collector, come dice la parola, raccoglie i residui inutili. Inutile preoccuparsi della fine di ogni lavoro, di collaborazioni ormai stantie, di opportunità aperte ma subito chiuse. Pensa a costruire. E tieni un garbage collector a portata di mano.

,

  1. #1 by Claudia (quella di Emma) on February 10, 2011 - 3:56 pm

    Ah, per questo il programma di data reduction che mi tocca usare ultimamente, nuovo di pacca e ovviamente scritto in Java, è lento come… come… come il netturbino romano di Asterix che ramazza mezza mattonella, poi fa pausa, poi un’altra mezza mattonella, pausa…

    • #2 by Lisa on February 10, 2011 - 3:58 pm

      Brava! Proprio così!! Però pensa che il programmatore ha avuto una vita più semplice e costruttiva, nel farlo.🙂

      • #3 by Claudia (quella di Emma) on February 10, 2011 - 4:11 pm

        ah ecco! mi fa piacere! >:)

  2. #4 by Sumire on February 10, 2011 - 5:45 pm

    Per un attimo mi è sembrato di rileggere il copione di una scena di Matrix…per essere precisa quella in cui l’Architetto spiega a Neo l’essenza stessa della matrice🙂
    NOn ci ho capito granchè…ma ho invidiato mortalmente la tua conoscenza🙂

    • #5 by Lisa on February 12, 2011 - 12:02 am

      Un po’ criptica per i non addetti ai lavori, vero?😐 Era solo un esempio di come si può imparare qualcosa anche da un linguaggio di programmazione.

  3. #6 by Paolo on February 23, 2011 - 12:06 am

    Non ho mai letto una descrizione più bella del concetto di linguaggio object-oriented!🙂

    • #7 by Lisa on February 24, 2011 - 6:33 pm

      Beh, non troppo tecnica, invero.😉

  4. #8 by paolo on February 25, 2011 - 4:12 pm

    Occhio alle dipendenze cicliche!
    Quando i robi cominciano ad andare in giro per la memoria accoppiati in tandem (ciclo o bi-ciclo), poi è difficile farli smettere. E anche il garbage collector non riesce a fare pulizia.
    Tradotto: occhio a non farsi prendere dall’entusiasmo, ogni tanto un bell’esame di memoria (coscienza) ci vuole per non lascare indietro robi.

    ^_^

    • #9 by Lisa on February 25, 2011 - 4:15 pm

      Grazie del consiglio di sviluppo e di vita. Ne farò tesoro.🙂

  5. #10 by Bob on January 12, 2012 - 11:31 pm

    stavo cercando altro (se in java c’erano i costruttori di default…) ad ogni modo:
    giusto ieri l’ho trovato XD: il DISTRUTTORE! (anch io pensavo non ci fossero)

    si chiama finalize() : bisogna implementarlo così:

    protected void finalize() throws Throwable {
    //qui_tutto_quello_che_deve_fare_prima_di_essere_distrutto
    super.finalize(); //ovvero distrugge i puntatori (per la memoria ci pensa il GCollector)
    }

    //throws Throwable penso che sia per gestire correttamente il passaggio del controllo al chiamante

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: