# Ambiente di sviluppo integrato

Un ambiente di sviluppo integrato (in inglese integrated development environment ovvero IDE) è un'applicazione che fornisce vari strumenti per lo sviluppo software, in particolare un editor di codice sorgente, modalità di automazione dello sviluppo, e un debugger. Alcuni ambienti comprendono anche un compilatore.

## Storia

I primi IDE sono comparsi alla fine degli anni settanta. Tra i più famosi:
* Interpreti BASIC dei primi personal computer.
* L'ambiente di programmazione Smalltalk.
* La Lisp machine.
Tuttavia questi sistemi comprendevano l'intero sistema operativo, e non permettevano l'esecuzione sulla stessa macchina di software scritto in altri linguaggi, se non riavviando il sistema. Nel 1983 fu commercializzato il primo IDE per Personal Computer come semplice applicazione, il Turbo Pascal della Borland, basato sul linguaggio Pascal. Dopo di allora sono nati numerosi IDE, inizialmente con interfaccia utente a carattere, poi di tipo grafico.

## Descrizione
### Caratteristiche

Normalmente è uno strumento software che consiste di più componenti, da cui appunto il nome ambiente integrato:
* un editor di codice sorgente, che generalmente fornisce la syntax highlighting, rendendo più semplice la visualizzazione delle strutture ed il completamento automatico del codice (intelligent code completion o IntelliSense)
* un compilatore e/o un interprete;
* un tool di building automatico;
* (solitamente) un debugger.
A volte è integrato anche con un sistema di controllo di versione e uno o più tool per semplificare la costruzione di una GUI. Alcuni IDE, rivolti allo sviluppo di software orientato agli oggetti, comprendono anche un navigatore di classi, un analizzatore di oggetti e un diagramma della gerarchia delle classi.
Sebbene siano in uso alcuni IDE multi-linguaggio, come Eclipse, NetBeans e Visual Studio, generalmente gli IDE sono rivolti ad uno specifico linguaggio di programmazione, come Visual Basic o Delphi.
Alcuni IDE presentano anche una console ed un file di log per il tracciamento degli errori in fase di compilazione e malfunzionamenti. In generale, forniscono anche alcune facilitazioni dal punto di vista del refactoring, col cosiddetto automated refactoring e durante la scrittura del codice.

### Prodotti

Alcuni IDE sono:
* Anjuta, open source, che supporta i linguaggi C e C++.
* C++Builder, prodotto dalla Borland, che supporta il linguaggio C e C++.
* Clarion, prodotto dalla Softvelocity, che supporta l'omonimo linguaggio, la programmazione in ASP ed il PHP.
* Code::Blocks, open source, supporta C e C++. Multi-piattaforma, è disponibile su Windows, Linux e Mac OS X.
* CodeLite, open source, basato su wxWidgets supporta C e C++. Multi-piattaforma, è disponibile su Windows, Linux e Mac OS X.
* CodeLobster IDE, multi-piattaforma, è disponibile su Windows, Linux e Mac OS X, che supporta numerosi linguaggi.
* CoDeSys, programmazione di PLC.
* Delphi e Kylix, prodotti della Borland, che supportano il linguaggio Object Pascal.
* Dev-C++, open source, per C++ e C. È stata sviluppata anche una versione con un designer visuale delle forms per essere usato insieme alle librerie wxWidgets (wxDev C++).
* Eclipse, creato dalla IBM, ora open source, che supporta numerosi linguaggi.
* Geany, open source, disponibile per Windows, Linux, macOS, BSD e Solaris.
* IntelliJ della JetBrains che supporta il linguaggio Java e numerosi altri linguaggi.
* JBuilder, prodotto dalla Borland, che supporta il linguaggio Java.
* KDevelop, open source, per KDE, che supporta 15 linguaggi, tra cui C e C++.
* Lazarus, open source, che supporta il compilatore Object Pascal open source Free Pascal.
* Livecode, open source, visuale, disponibile per Windows, Linux, macOS, Raspberry Pi, è cross-platform e permette di creare programmi per Windows, Linux, Mac, Android, iOS e Raspberry Pi.
* NetBeans, open source, creato dalla SUN, che supporta il linguaggio Java e numerosi altri linguaggi.
* Qt Creator, open source, multipiattaforma, creato dalla Qt Development Frameworks, appartenente a Nokia, che supporta gcc e il framework Qt.
* SharpDevelop, open source, alternativa a Visual Studio .NET, che supporta C#, Visual Basic .NET, Boo, e F#.
* Sublime Text, proprietario, è disponibile per Windows, Linux, e macOS e supporta numerosi linguaggi.
* Visual Studio, prodotto della Microsoft, che supporta i linguaggi C#, Visual Basic .NET, C, C++, F#.
* Visual Studio Code, open source, prodotto della Microsoft, è disponibile per Windows, Linux, e macOS, è cross-platform e supporta numerosi linguaggi.
* Xcode, fornito con macOS, che supporta C, C++, Objective C, Java e Swift.

## Online IDE (o Web IDE o Cloud IDE)

Un ambiente di sviluppo integrato web (Web IDE), noto anche come "Online IDE" o "Cloud IDE" (con l'acronimo di CIDE), è un IDE basato su browser che consente lo sviluppo di software o lo sviluppo web. È possibile accedere a un IDE Web da un browser Web che consente un ambiente di lavoro portatile. Un IDE Web di solito non contiene tutte le stesse funzionalità di un IDE tradizionale o desktop, sebbene siano generalmente presenti tutte le funzionalità IDE di base,
Gli IDE online possono essere ulteriormente classificati in professionali ed educativi.

### Prodotti

Si tratta di prodotti con funzionaltà sia gratuite che a pagamento, più o meno vocate ad utenza amatoriale-didattica oppure ad ambienti di lavori professionali, spesso per la realizzazione di applicativi da fruire online, piuttosto che in ambienti desktop o mobile:
* Codeanywhere (75 linguaggi di programmazione, inclusi HTML, JavaScript, Node.js, io.js PHP, Ruby, Python, and Go)
* CodeSandbox (JavaScript, incluso TypeScript, con supporto front-end e full-stack)
* Codiva (C, C++, Java, Python)
* Eclipse Che IDE (C, C++, C#, F#, Go, Java, JavaScript, PHP, Python, Ruby, SQL, TypeScript)
* Gitpod (JavaScript, Python, Java, Golang, Rust, Php, Ruby, .NET, ed altri)
* Glitch.com (WebApp con supporto di React e WebXR
* Goorm IDE (C/C++, Java, Python, Ruby, ed altri)
* JSFiddle (JavaScript, CSS, HTML)
* PaizaCloud Cloud IDE (C, C++, PHP, Ruby, Perl, Python, JavaScript con Node.js e Go, ed altri)
* Replit.com (Python, HTML, CSS, JS, C++, Node.js, C, Java, C#, Bash, PHP Web Server, Blank Repl, Python 3.10, Ruby)
* MyCompiler.io/ (Deno, NodeJS, Python, Ruby, Go, C, C++, Java, C#, TypeScript, PHP, Bash, ed altri)
* SourceLair (Python, Node.js, PHP, HTML5 e altri)
* StackBlitz (JavaScript, con supporto front-end e full-stack)
Alcuni prodotti offrorno un servizio di virtualizzazione a livello di sistema operativo, con specifiche funzionalità dedicate alla sviluppo di software quali il controllo di versione distribuito (Git) (in alcuni casi senza definire un supporto per specifici linguaggi), e fra questi:
* l'estensione Remote Containers di Visual Studio Code
* DockSide (con supporto a Visual Studio Code)
* Coder.com
* GitHub Codespaces.