27 gen 2016

PHP


Il PHP (PHP Hipertext Processor) è nato nel 1994 ad opera del programmatore danese Rasmus Ledrof. Esso è un linguaggio di scripting integrato con linguaggio molto simile al C e viene distribuito con licenza open surce specifica. Originariamente concepito per la programmazione di pagine web dinamiche, è attualmente utilizzato principalmente per sviluppare applicazioni web lato server. L'esecuzione del codice PHP sul server produce codice HTML da inviare al browser client che ha richiesto la pagina. Molti siti famosi sono stati scritti in PHP : Wikipedia, Facebook, Flickr, Drupal... Inoltre è il linguaggio utilizzato per molti sistemi CMS come Joomla, Wordpress e Drupal.
PHP riprende per molti versi la sintassi del C e del Perl. È un linguaggio a tipizzazione debole e dalla versione 5 migliora il supporto al paradigma di programmazione ad oggetti. Certi costrutti derivati dal C permettono in alcuni casi di agire a basso livello; tuttavia è fondamentalmente un linguaggio di alto livello, caratteristica questa rafforzata dall'esistenza delle sue moltissime API, oltre 3.000 funzioni del nucleo base. PHP è in grado di interfacciarsi a innumerevoli database tra cui MySQL, PostgreSQL, MariaDB, Oracle, Firebird, IBM DB2, Microsoft SQL Server solo per citarne alcuni tra cui anche database NoSql come per esempio MongoDB, e supporta numerose tecnologie, come XML, SOAP, IMAP, FTP, CORBA. Si integra anche con altri linguaggi/piattaforme quali Java e .NET e si può dire che esista un wrapper per ogni libreria esistente, come CURL, GD, Gettext, GMP, Ming, OpenSSL ed altro. Fornisce un'API specifica per interagire con Apache, nonostante funzioni naturalmente con numerosi altri server web. È anche ottimamente integrato con il database MySQL, per il quale possiede più di una API. Per questo motivo esiste un'enorme quantità di script e librerie in PHP, disponibili liberamente su Internet. La versione 5, comunque, integra al suo interno un piccolo database embedded, SQLite. Dispone di un archivio chiamato PEAR che mette a disposizione un framework di librerie riusabili per lo sviluppo di applicazioni PHP e di PECL che raccoglie tutte le estensioni conosciute scritte in C. PHP non ha ancora un supporto nativo per le stringhe Unicode o multibyte.

30 set 2015

Tim Berners-Lee



Sir Timothy John Berners-Lee è un informatico britannico, co-inventore insieme a Robert Cailliau del World Wide Web.
Nel 1976 si laureò in fisica al The Queen's College dell'Università di Oxford, dove, in seguito, costruì il suo primo computer. Successivamente trascorse due anni alla Plessey Telecommunications Ltd, per passare nel 1978 alla D.G Nash Ltd.
Nel 1980 trascorse sei mesi al CERN come consulente nel campo dell'ingegneria del software. Lì realizzò, per uso interno nella diffusione di informazioni fra i diversi centri del CERN, il primo software per immagazzinare informazioni usando associazioni casuali: Enquire. Tale prototipo, mai pubblicato, formerà la base concettuale per il futuro sviluppo del World Wide Web.
Dal 1981 al 1984 lavorò al John Poole's Image Computer Systems Ltd. Nel 1984 ritornò al CERN con una borsa di studio per lavorare sui sistemi distribuiti real-time per l'acquisizione di dati scientifici e sistemi di controllo.
Nel 1989 propose un progetto globale sull'ipertesto, poi noto come World Wide Web.
Tim Berners-Lee ha coniato il nome di World Wide Web , ha scritto il primo server per il World Wide Web, httpd, e il primo client, WorldWideWeb, nell'ottobre del 1990. Ha scritto inoltre la prima versione del linguaggio di formattazione di documenti con capacità di collegamenti ipertestuali conosciuto come HTML.
Nel 1993 lasciò il CERN per il LCS del prestigioso Massachusetts Institute of Technology di Boston, presso cui nel 1994 fondò il World Wide Web Consortium.

IPERTESTO


Un ipertesto è un insieme di documenti messi in relazione tra loro per mezzo di parole chiave. Può essere visto come una rete; i documenti ne costituiscono i nodi. La caratteristica principale di un ipertesto è che la lettura può svolgersi in maniera non lineare: qualsiasi documento della rete può essere "il successivo", in base alla scelta del lettore di quale parola chiave usare come collegamento. All'interno dell'ipertesto sono possibili praticamente infiniti percorsi di lettura.
L'ipertesto informatico è la versione di ipertesto più usata e più diffusa oggi. Il computer ha automatizzato il passaggio da un documento all'altro. I documenti sono leggibili a video grazie a un'interfaccia elettronica, le parole chiave in esso contenute appaiono marcate in maniera da renderle riconoscibili.
Dopo la nascita del World Wide Web l'ipertesto ha avuto un notevolissimo sviluppo. Tutto il web, infatti, è stato concepito dal suo inventore, l'inglese Tim Berners-Lee, come un ipertesto globale in cui tutti i siti mondiali possono essere consultati da tutti. La pagina web è il singolo documento e la "navigazione" è il passaggio da un sito all'altro tramite i "link". Il World wide web utilizza il linguaggio HTML per definire all'interno del testo istruzioni codificate per il suo funzionamento. Se una pagina del web contiene informazioni su una parola utilizzata su un nuovo documento HTML è possibile creare un legame, chiamato collegamento ipertestuale, tra questo nuovo documento e la pagina già esistente.
STORIA: Nel 1945 l'ingegnere americano Vannevar Bush scrisse un articolo intitolato Come potremmo pensare nel quale descriveva un sistema di informazione interconnesso chiamato Memex. Molti esperti non considerano tuttavia il Memex un vero e proprio sistema ipertestuale. Nonostante ciò, il Memex è considerato la base degli ipertesti perché il saggio di Vannevar Bush influenzò direttamente Ted Nelson e Douglas Engelbart, universalmente riconosciuti come gli inventori dell'ipertesto.
Nel 1980 il programmatore Bill Atkinson realizzò per la Apple HyperCard, un'applicazione software che gestiva in maniera semplice grandi quantità di informazioni sotto forma di testo o di immagini, dotato di un avanzato linguaggio di programmazione ipertestuale, HyperTalk. Malgrado fosse disponibile solo per la piattaforma MacOS, HyperCard divenne uno dei più diffusi sistemi di realizzazione di ipertesti prima dell'avvento del World Wide Web.
Nel 1989 Tim Berners-Lee, ricercatore inglese del CERN, inventò il World Wide Web con l'intento di dare una risposta alla necessità espressa dalla comunità scientifica di un sistema di condivisione delle informazioni tra diverse università e istituti di tutto il mondo. All'inizio del 1993 il NCAS all'Università dell'Illinois rese pubblica la prima versione del loro browser Mosaic. Mosaic girava in ambiente X Window, popolare nella comunità scientifica, e offriva un'interfaccia di facile utilizzo. Il traffico web esplose, passando da soli 500 web server noti nel 1993 a oltre 10mila nel 1994 dopo la pubblicazione della versione che girava sia in ambiente Windows che MacOS.

SAPEVATE CHE...

  • Alcuni pesci abissali sono dotati di organi bioluminescenti con cui attraggono le prede.
  • La scimmia antropomorfa di più grandi dimensioni è il gorilla di pianura con un'altezza massima di 1,75m e un peso di 200Kg.
  • Il nome americano della lampuga, un grosso pesce pelagico, è dolphinfish, spesso abbreviato in dolphin (delfino), cosa che ha tratto in inganno molti traduttori.
  • In rapporto al peso, il colibrì è l'uccello che ha la più grande apertura alare.
  • Al mondo sono pesenti un centinaio di specie di lemuri, diffuse unicamente in Madagascar, l'unico posto al mondo dove non hanno subito la concorrenza degli altri primati.
  • La funzione della testa degli squali martello rimane tuttora un mistero, ma l'ipotesi più accreditata è che serva per orientarsi mediante il campo magnetico terrestre e per captare gli impulsi elettrici emessi dalle prede in movimento.
  • Il rospo marino, o delle canne, è il più grande della sua famiglia. Il più grande di cui si ha notizia misurava 38cm per un peso di 2,65Kg.
  • Grazie alla sua grande capacità di adattamento il piccione è considerato l'uccello più resistente al mondo.
  • Il periodo di gestazione di un elefante può durare più di 600 giorni.
  • La megalania è un varano gigante vissuto in Australia fino a 40.000 anni fa (all'incirca il periodo dell'arrivo dei primi uomini sul continente) e, secondo alcune stime, poteva raggiungere la lunghezza di 8m.
  •  Il pinguino imperatore è il più grande tra tutti i pinguini e raggiunge un'altezza di 1,15m per un peso massimo di 47kg.
  • In virtù dei curiosi versi che emette, il beluga è conosciuto anche come canarino di mare.
  • Il tuatara è l'unico rappresentante vivente degli sfenodonti, un gruppo di rettili apparsi 225 milioni di anni fa (durante il triassico), ed è attualmente considerato il rettile vivente più antico.
  • Delle 18 specie di pinguini 12 vivono in antartide e nelle acque circostanti. Le restanti vivono in Sud America (2 specie), Galapagos (1 specie), Australia e Nuova Zelanda (2 specie) e Sudafrica(1 specie).
  • Il capodoglio è il più grande animale vivente munito di denti e raggiunge una lunghezza di 18m per un peso di 50 tonnellate. I suoi denti possono raggiungere la lunghezza di 20cm.
  • Il merlo ha la capacità di imparare a memoria qualsiasi melodia per poi ripeterla fino alla noia.
  • Il "test dell'alce" viene eseguito per verificare la stabilità di una vettura nel caso di attraversamento della strada da parte di animali selvatici.
  • Nel 2004, un orso nero selvatico venne trovato ubriaco dopo aver bevuto 36 lattine di birra, rubate dalla ghiacciaia di un camper, nello stato di Washington.
  • Le anguille elettriche, dei pesci diffusi nei bacini fluviali del Sud America, sono considerati alcuni degli animali più pericolosi delle foreste sudamericane, data la loro capacità di generare scariche elettriche fino a 500 volt, in grado di uccidere un uomo adulto sano.
  • Contrariamente a quanto si pensa il morso della vipera difficilmente è letale per un uomo adulto (a cui causa cefalea, nausea, vomito, dolori addominali, agitazione e alterazione della coagulazione). Sono a rischio invece i bambini, le persone con cardiopatie e malattie debilitanti.
  • È detto grooming il comportamento osservato in diversi primati per cui un animale ripulisce un suo simile dai parassiti. Quest'azione serve anche a rafforzare i legami sociali, a creare alleanze e a risolvere dispute.

8 mag 2015

RICORSIONE

In informatica viene detto algoritmo ricorsivo un algoritmo espresso in termini di se stesso, ovvero in cui l'esecuzione dell'algoritmo su un insieme di dati comporta la semplificazione o suddivisione dell'insieme di dati e l'applicazione dello stesso algoritmo agli insiemi di dati semplificati.
Tale tecnica risulta particolarmente utile per eseguire dei compiti ripetitivi su di un set di variabili in input. L'algoritmo richiama se stesso generando una sequenza di chiamate che ha termine al verificarsi di una condizione particolare che viene chiamata condizione di terminazione, che in genere si ha con particolari valori di input.
La tecnica ricorsiva permette di scrivere algoritmi eleganti e sintetici per molti tipi di problemi comuni, anche se non sempre le soluzioni ricorsive sono le più efficienti. Questo è dovuto al fatto che comunemente la ricorsione viene implementata utilizzando le funzioni, e che l'invocazione di una funzione ha un costo rilevante, e questo rende più efficienti gli algoritmi iterativi.
In alcuni casi la ricorsione è altrettanto efficiente di un ciclo iterativo: linguaggi dei paradigmi funzionali o logici tipicamente non hanno il concetto di ciclo ed usano la ricorsione ottimizzando automaticamente.


0! = 1; 
n! = 1 * 2 * 3 * ...... * n-1 * n;       per n > 0.
 
 
 
Rielaborando:
n! = (1 * 2 * 3 * ...... * n-1) * n;
n! = (n-1)! * n;


 
ESEMPIO DI CODICE:
int FATTiterativo (int n)
      {
         int fatt = 1;
         while (1 <= n)
         {
            fatt = fatt * n;  
            n --;   
         }
         return fatt;
      }



ECCO LE VARIE TIPOLOGIE DI RICORSIONE:

Esistono vari tipi di ricorsione. Si parla di mutua ricorsione quando nell'algoritmo una funzione ne richiama un'altra che a sua volta richiama la prima, altrimenti si parla di ricorsione diretta.
Altra distinzione è quella fra ricorsione lineare, che si ha quando vi è solo una chiamata ricorsiva all'interno della funzione, e non lineare nel caso in cui le chiamate ricorsive siano più di una.
La distinzione più importante ai fini pratici si ha fra ricorsione di coda (tail recursion) e ricorsione non di coda. Si parla di ricorsione di coda quando la chiamata ricorsiva è l'ultima istruzione eseguita nella funzione. Questo tipo di algoritmo ricorsivo è possibile trasformarlo semplicemente in una versione iterativa, che di solito è più efficiente, in quanto non occorre mantenere lo stato della funzione una volta calcolata come è stato fatto nell'esempio precedente. Se l'algoritmo non è ricorsivo di coda, per trasformarlo in una versione iterativa occorre utilizzare un meccanismo di mantenimento dello stato analogo a quello che è utilizzato implicitamente nelle chiamate di funzione.

Ecco qui un video che ci aiuterà a capire: link

Qui si può trovare un PDF sulla ricorsione: link

16 gen 2015

numero aureo

public static void main(String[] args) {
        int n = 11;
        int f[] = new int[n];
        fibonacci(f);
        double a[] = new double[n];
        aureo(f,a);
    }

    public static void fibonacci(int f[]) {
        f[0] = 1;
        f[1] = 1;
        for (int i = 2; i < f.length; i++) {
            f[i] = f[i - 2] + f[i - 1];
        }
        for (int i = 0; i < f.length; i++) {
            System.out.println("nf " + f[i]);
        }
    }
   
    public static void aureo(int f[], double a[]) {
    for (int i = 1; i < a.length; i++) {
            a[i] = (double)f[i] / f[i - 1];
        }
        for (int i = 0; i < a.length; i++) {
            System.out.println("na " + a[i]);
        }
   
  }
}

12 gen 2015

Fibonacci

public static void main(String[] args) {
        int f[]=new int [11];
        f[0]=1;
        f[1]=1;
        for (int i=2; i<f.length;i++){
            f[i]=f[i-2]+f[i-1];
        }
        for (int i=0; i<f.length;i++){
            System.out.println(f[i]);
        }
    }
   
}