Archivio per 25 Ottobre 2008

Una delle strutture fondamentali di tutta la programmazione è l’albero. Esiste un particolare tipo di albero, detto binario, che per le sue particolari proprietà si presta molto bene ad alcuni tipi di operazioni, quali l’analisi di espressioni matematiche o la ricerca dicotomica.
Particolari tipi di alberi binari sono utilizzati come nuovi tipi di strutture dati, particolarmente ottimizzati per operazioni di ricerca o ordinamento: è il caso degli heap, degli alberi di ricerca e così via.
In questo fascicolo analizzeremo tutti gli algoritmi basilari per la gestione di un albero binario, partendo dalle definizioni e ragionando su ogni algoritmo.
Il linguaggio scelto per la stesura dei programmi è il C++, anche se in realtà saranno utilizzati concetti del tutto compatibili con il C. E’ da sottolineare, tuttavia, che il codice è compilabile in ANSI C++, per la compilazione in C saranno necessarie alcune modifiche. Quindi quando vedete scritto [C/C++] non significa che il codice è compilabile in C, ma solo che la sintassi utilizzata non prevede elementi proprietari del C++, quali classi, template, reference e così via.
Naturalmente questo fascicolo è dedicato esclusivamente alla parte relativa all’albero binario come struttura dati, quindi tutti i discorsi relativi alla sintassi del linguaggio adottato sono dati per scontati. In particolare, è bene avere buona padronanza delle strutture, dei puntatori e delle funzioni ricorsive, anche se quest’ultimo punto è presente una piccola digressione.
Non c’è altro da dire: buona lettura e buona programmazione.

Leggi il resto di questo articolo »

Comments Nessun Commento »

Dopo tanto tempo lontano dall’informatica e dalle scienze, ho pensato fosse il caso di dare una spolveratina ai miei vecchi lavori e mettere su il nuovo portfolio. Dopo diverse meditazioni, ho deciso di buttarmi su WordPress, lo stesso sistema che già uso per Volley World. Le motivazioni sono molteplici, ma partono tutte dal presupposto che ormai, con tutti gli standard esistenti e tutte le buone regole di programmazione ed accessibilità, ritengo non sia più conveniente creare un sito standard da zero.

Mi spiego: se non ho esigenze particolari (come può essere, per l’appunto, il caso di un portfolio), creare un sito da zero richiede oggi molto più tempo di quanto ne richiedeva una decina di anni fa. Allora bastava aprire il proprio editor preferito, inserire due o tre tabelle, qualche gif animata e tutto era pronto. Adesso bisogna rispettare gli standard, è consigliabile utilizzare fogli di stile, bisogna validare il codice, provarlo con diversi browser e diverse versioni. In più, per dare un senso a ciò che si sta facendo, è bene non trascurare le regole per la reperibilità dei motori di ricerca, sfruttare sistemi XML (quali possono essere i feed RSS e le SiteMap) e, insomma, avere la voglia e il tempo di creare un progetto solido e robusto. Non dimentichiamo, infine, l’importanza basilare dell’utilizzo “sensato” di linguaggi lato server e database, che fanno crescere esponenzialmente la complessità dei propri problemi (si pensi, banalmente, ad un sito web gestito da 2-3 persone, che richiede quindi la creazione di un pannello amministrativo con, magari, tre livelli di accesso). Orbene, ce n’è davvero l’esigenza? L’utente moderno cerca il contenuto o il sito fatto in casa? Sinceramente, credo che ormai non sia più così divertente e fruttifero creare un sito web standard da zero. I CMS esistono e hanno successo proprio per questo motivo.

Si pongono poi problemi etici e egocentristi, del tipo: “I CMS li usa chi non sa fare i siti, io che sono capace me lo faccio da solo“. Ma il punto di riflessione è sempre lo stesso: ce n’è veramente il bisogno? All’utente interessa veramente? E’ lo stesso spirito con cui, ad oggi, non conviene più riscriversi le proprie funzioni, all’interno di un programma, da soli. Se esistono e sono disponibili, utilizziamole! Non è forse questa la filosofia dei recenti linguaggi di progrmamazione, quali Java o C#?

Siamo quindi al punto cruciale: esistono ancora siti che vale la pena programmare? La risposta è sì. Ma con cautela. Nel senso, io mi metto a scrivere codice da zero solo quando sono sicuro che ciò che sto facendo è veramente innovativo. E’ questo il succo di tutto. Io studio, raccolgo materiale, riutilizzo codice degli altri al puro scopo di innovare. L’innovazione è, a mio avviso, il vero step che serve all’informatica. Lavorare su progetti nuovi ed interessanti. Ad esempio, lavoro da più di un anno ad un sito web (che andrebbe definito come Web-Application) per allenatori di pallavolo, il Volley Coaching System. Valeva la pena programmarlo da zero? Certamente! Perché, banalmente, tutto ciò che è quel progetto non esiste altrove.

Fatte queste premesse, ripartiamo: nei prossimi giorni, settimane, mesi, tenterò di ripristinare il vecchio materiale e di inserirne di nuovo. Nel frattempo, buona navigazione.

Comments 1 Commento »

FireStats iconPowered by FireStats