title: Software development kit
text: # Software development kit
  
  Un software development kit (SDK, traducibile in italiano come "pacchetto di sviluppo per applicazioni"), in informatica, indica genericamente un insieme di strumenti per lo sviluppo e la documentazione di software.
  
  ## Caratteristiche
  
  Molti SDK sono disponibili gratuitamente e possono essere prelevati direttamente dal sito del produttore: in questo modo si cerca di invogliare i programmatori ad utilizzare un determinato linguaggio o sistema. Vi è anche un utilizzo orientato al mercato: alcuni programmi vengono venduti assieme al loro SDK permettendo ai compratori di sviluppare ulteriori parti del programma comprato.
  
  I fornitori di SDK per specifici sistemi inoltre possono offrire delle versioni più specifiche: ad esempio sia Microsoft che Apple prevedono Driver Development Kits (DDK), per lo sviluppo di driver per componenti hardware. PalmSource offre invece il PDK, PalmOS Development Kit.
  
  ## Componenti
  
  Gli SDK possono variare considerevolmente in quanto a dimensioni e tecnologie utilizzate, ma tutti possiedono alcuni strumenti fondamentali:
  
  * un compilatore, per tradurre il codice sorgente in un eseguibile;
  * librerie standard dotate di interfacce pubbliche dette API - Application programming interface;
  * documentazione sul linguaggio di programmazione per il quale l'SDK è stato sviluppato e sugli strumenti a disposizione nell'SDK stesso;
  * informazioni sulle licenze da utilizzare per distribuire programmi creati con l'SDK.
  
  Questo corredo di base può essere esteso con strumenti di vario tipo:
  
  * compilatori per diversi linguaggi di programmazione;
  * debugger;
  * programmi per la gestione delle versioni o per interfacciarsi a essi: (CVS, Visual Source Safe, ClearCase, Subversion);
  * editor di sorgenti: programmi che permettono di scrivere codice più velocemente o con più accuratezza, molto spesso hanno basilari funzioni di Syntax Highlighting (evidenziazione della sintassi) o di validazione;
  * IDE (Integrated development environment): editor di sorgenti con funzioni molto avanzate. Di seguito una breve lista delle funzionalità che è possibile trovare in un IDE:
     * completamento automatico del codice sorgente, creazione automatica di pezzi di codice e formattatori automatici;
     * possibilità di "disegnare" l'interfaccia grafica di un'applicazione in modo visuale;
     * strumenti per l'analisi del codice: risoluzione delle dipendenze, analisi statistica, ricerche;
     * strumenti per creare e manutenere la documentazione relativa al codice sorgente;
     * strumenti per il Refactoring.
  
  ### Esempi
  
  Di seguito una lista di SDK di grande successo:
  
  * iPhone SDK di Apple
  * DirectX SDK e .NET SDK di Microsoft
  * Widget toolkit
  * Android SDK di Google
  
  Alcuni development kit che hanno avuto molto successo negli anni passati:
  
  * Turbo Pascal
  * Clipper
  * Delphi
  