# Sage (software)

SageMath (precedentemente noto come Sage o SAGE) è un programma matematico multipiattaforma adatto a risolvere problemi in diverse aree della matematica come algebra, analisi matematica, analisi numerica, calcolo combinatorio, geometria e teoria dei numeri.
La prima versione è stata pubblicata il 24 febbraio del 2005 come software libero con la licenza GNU General Public License. È nato come alternativa open source a Magma, Maple, Mathematica e MATLAB. Il primo sviluppatore del progetto SageMath, William Stein, è un matematico presso l'Università di Washington.
SageMath utilizza il linguaggio di programmazione Python e ne supporta diversi paradigmi di programmazione procedurale, programmazione funzionale e programmazione orientata agli oggetti.
SageMath è disponibile per la piattaforma Linux e Mac OS X (10.4 o superiore); è disponibile anche per Microsoft Windows, in una versione implementata per Oracle VirtualBox.

## Funzionalità

Alcune delle caratteristiche maggiori di SageMath sono:.
* L'interfaccia notebook document, per revisionare e riusare precedenti dati in ingresso o in uscita, includendo grafici o caselle di testo usabili per molti web browser incluso Firefox, Opera, Konqueror, e Safari. Una connessione sicura con HTTPS verso l'interfaccia web notebook è supportata quando sicurezza e riservatezza sono importanti, e consente a Sage di essere utilizzato sia in locale che in remoto.
* Una interfaccia testuale a riga di comando usando IPython.
* Il linguaggio di programmazione Python supporta linguaggi procedurali, Funzioni e costrutti riferiti alla Programmazione orientata agli oggetti.
* Supporto per parallel processing usando sia computer con processori Multi core disponibili in molti computer moderni, in aggiunta a sistemi di computer distribuiti (distributed computing).
* Analisi con Maxima e SymPy.
* Algebra lineare con le librerie software GSL, SciPy e NumPy.
* Librerie di Funzioni elementari e funzioni matematiche speciali.
* Grafici 2D e 3D graphs sia per funzioni che per dati.
* Matrice e strumenti di manipolazione dei dati incluso supporto per Array.
* Librerie statistiche varie, utilizzando le funzionalità di R e SciPy.
* Un toolkit per aggiungere interfacce utente per calcoli e applicazioni.
* Strumenti per editor di immagini usando Pylab nonché il linguaggio di programmazione Python.
* Strumenti per visualizzazione ed analisi dei grafi.
* Librerie di funzioni di teoria dei numeri.
* Importazione ed esportazione filtri per dati, immagini, video, suoni, CAD, GIS, documenti e formats biomedicali.
* Supporto per numeri complessi, precisione aritmetica arbitraria e simbolica per funzioni quando ciò è indicato.
* Elaboratore di testo tecnico includente editor di formule la capacità di incorporare all'interno di SageMath documenti di LaTeX.
* Strumenti di rete per connessione a SQL, Java, .NET, C++, FORTRAN fornito da Twisted, questo supporta un gran numero di protocolli tra cu HTTP, NNTP, IMAP, SSH, IRC, FTP e altri.
* Interfacce di alcuni software di terze parti come Mathematica, Magma, e Maple, che permette agli utenti di assemblare software e confrontare risultati e prestazioni. È quindi anche un "front-end" verso altri strumenti matematici simili a GNU TeXmacs.
* MoinMoin è un sistema Wiki per la gestione della conoscenza.
* Documentazione usando Sphinx.
* Uno strumento automatico di testing, che consente la prova sul computer di un utente finale.
* Benché non direttamente supportato, SageMath può essere invocato all'interno di Mathematica. Un notebook di Mathematica è disponibile per questa funzionalità.

## Sviluppo

Durante lo sviluppo di SageMath William Stein si è reso conto che erano presenti una varietà di software matematici open-source scritti in diversi linguaggi di programmazione, come C, C++, Common Lisp, Fortran e Python.
Invece di "reinventare la ruota", SageMath (che è scritto principalmente in Python e Cython) contiene i diversi software matematici esistenti in un'unica interfaccia, per la quale la sintassi utilizzata è quella di Python. Inoltre sono state scritte centinaia di migliaia righe di codice allo scopo di aggiungere nuove funzionalità e collegare le diverse componenti.
SageMath è sviluppato da studenti e professionisti sia attraverso contributi volontari che sovvenzioni.

### Rilasci

Nella seguente tabella sono indicati solo gli sviluppi maggiori. SageMath segue una politica dei rilasci che prevede nuovi aggiornamenti ogni poche settimane o mesi. In totale sono state effettuati più di 300 rilasci, anche se ultimamente la frequenza sta diminuendo.
SageMath versions :
| Version | Release Date | Description |
| 0.1 | Gennaio 2005 | Viene incluso PARI |
| 0.2–0.4 | Marzo-Luglio 2005 | Polinomi in più variabili, estensione della documentazione |
| 0.5–0.7 | Agosto-Settembre 2005 | Spazi Vettoriali, anelli |
| 0.8 | Ottobre 2005 | GAP, Singular |
| 0.9 | Novembre 2005 | Sono stati aggiunti Maxima e clisp |
| 1.0 | Febbraio 2006 | |
| 2.0 | Gennaio 2007 | |
| 3.0 | Aprile 2008 | Interacts, R interfaccia |
| 4.0 | Maggio 2009 | Supporto per Solaris 10 e OSX a 64bit |
| 5.0 | Maggio 2012 | Supporto per OSX Lion |
| 6.0 | Dicembre 2013 | Lo sviluppo di SageMath si è spostato su Git |
| 7.0 | Gennaio 2016 | Miglioramenti nell'interfaccia grafica |
| 8.0 | Luglio 2017 | Prima versione con supporto completo a Microsoft Windows |

## Software contenuti in SageMath

La filosofia di Sage è quella di utilizzare quando disponibili le esistenti librerie open source. Quindi prende in prestito da molti progetti nella realizzazione del lavoro finale.
Software matematici contenuti in SageMath :
| Algebra | GAP, Maxima, SINGULAR |
| Geometria Algebrica | SINGULAR |
| Precisione Aritmetica Arbitraria | GMP, MPFR, MPFI, NTL |
| Geometria Aritmetica | PARI/GP, NTL, mwrank, ecm |
| Calcolo | Maxima, SymPy, GiNaC |
| Combinatorio | Symmetrica, Sage-Combinat |
| Algebra Lineare | ATLAS, BLAS, LAPACK, NumPy, LinBox, IML, GSL |
| Teoria dei Grafi | NetworkX |
| Teoria dei Gruppi | GAP |
| Calcolo numerico | GSL, SciPy, NumPy, ATLAS |
| Teoria dei Numeri | PARI/GP, FLINT, NTL |
| Calcolo statistico | R, SciPy |
Altri pacchetti software contenuti in SageMath :
| Riga di Comando | IPython |
| Database | ZODB, Python Pickles, SQLite |
| Interfaccia grafica | Sage Notebook, jsmath |
| Grafiche | Matplotlib, Tachyon3d, GD Graphics Library, Jmol |
| Linguaggio di programmazione interattivo | Python |
| Networking | Twisted |
Altri software matematici opzionali in SageMath :
| Geometria Differenziale e Calcolo Tensoriale | Sage Manifolds |

## Licenza e disponibilità

SageMath è un software libero, pubblicato con licenza GNU General Public License. Può essere ottenuto in diverse maniere:
* Il codice sorgente può essere scaricato dalla pagina dei downloads., nella quale sono disponibili anche le versioni di sviluppo.
* Sono presenti file binari precompilati per Linux, OS X e Solaris (sia nella versione x86 che SPARC).
* È disponibile un Live CD per un utilizzo di SageMath anche su macchine che non hanno Linux, OS X o Solaris installati.
* Fino al 17 aprile 2015 era possibile utilizzare una versione online di SageMath su sagenb.org (archiviato dall'url originale il 30 aprile 2007)..
* È possibile utilizzare online una versione "single cell" di SageMath su sagecell.sagemath.org. o incorporare una "singe cell" in un qualunque sito web. È inoltre possibile creare dei link permanenti a SageMath utilizzando il single cell server.
* È disponibile una nuova versione online di SageMath su cloud.sagemath.com.. Su questa versione è inoltre possibile compilare documenti in LaTeX, utilizzare un terminale Linux e un notebook Jupyter.
* È disponibile nelle repo delle distro Debian-derivate