Mathematica: differenze tra le versioni

Contenuto cancellato Contenuto aggiunto
Nessun oggetto della modifica
Funzionalità collegamenti suggeriti: 3 collegamenti inseriti.
 
(24 versioni intermedie di 15 utenti non mostrate)
Riga 13:
 
'''Mathematica''' è un ambiente di calcolo simbolico e numerico multipiattaforma, ideato da [[Stephen Wolfram]] e successivamente sviluppato da un team di matematici e programmatori. Mathematica usa un potente [[linguaggio di programmazione]] interpretato, chiamato [[linguaggio Wolfram]].
Wolfram e il suo gruppo iniziarono a lavorare al programma nel [[1986]] e pubblicarono la prima versione nel [[1988]]. La versione corrente è la 1213.3, uscita il 1628 aprilegiugno 20192023. Il sistema Mathematica è disponibile per le piattaforme [[Microsoft Windows|Windows]], [[MacOS]] e [[Linux]]<ref name="system_req" />.
 
== Introduzione ==
Il linguaggio di programmazione di Mathematica - ribattezzato "Wolfram Language" - è basato sulla [[riscrittura|riscrittura di espressioni (''term-rewriting'')]] e supporta svariati paradigmi di programmazione, tra cui la [[programmazione funzionale]], la [[programmazione logica]], la programmazione basata sul riconoscimento di schemi (''pattern-matching'') e sulle regole di sostituzione (''rule-based''), nonché la più tradizionale [[programmazione procedurale]]. L'approccio procedurale è in generale sconsigliato in Mathematica in quanto molto meno efficiente delle alternative funzionali e basate su regole di sostituzione (''rule-based'').
Mathematica è realizzato principalmente in [[linguaggio C|C]] e [[Linguaggio C#C.2B.2B|C++]], ma gran parte delle numerose librerie fornite con il programma sono scritte nel linguaggio proprietario di Mathematica, che può essere utilizzato per espandere ulteriormente le funzionalità del sistema. Di norma il nuovo codice viene aggiunto sotto forma di pacchetto (''package''), un [[file di testo]] in formato ASCII che contiene codice scritto nel linguaggio proprio di Mathematica. I pacchetti hanno estensione '''.m'''.
 
In Mathematica, il linguaggio di base viene interpretato da un ''[[kernel]]'' che esegue l'elaborazione vera e propria; i risultati vengono quindi comunicati ad una specifica interfaccia tra quelle disponibili. La comunicazione tra il kernel e questi ultimi (o qualsiasi altro [[client]], ad esempio programmi scritti dall'utente) utilizza il protocollo ''MathLink'', spesso attraverso una rete. È possibile che vari processi front-end si connettano allo stesso kernel, e che uno stesso front-end sia connesso a kernel differenti.
Riga 26:
== Interfacce ==
L'interfaccia di default presenta un layout estensivo che si contraddistingue per le capacità grafiche integrate e una rappresentazione più aderente alla notazione matematica tradizionale (permette ad esempio di scrivere <math>x^4+1</math> invece di <kbd>x^4+1</kbd>).
[[File:WITM-iPAQ.jpg|right|thumb|Accesso al kernel di Mathematica tramite WITM su un [[Personal digital assistant|palmare]] [[iPAQ]] [[Hewlett -Packard|HP]] ]]
Nella metafora del notebook il testo e i comandi immessi dall'utente, così come i risultati elaborati dal kernel (che comprendono, oltre alle espressioni, anche immagini e suoni) sono rappresentati in una struttura gerarchica di celle.
Con la versione 3.0 il formato dei notebook ha subìto dei cambiamenti per adeguarsi alla filosofia che in Mathematica tutto è espressione (l'estensione dei file ''notebook'' è passata da .ma a .nb). Un ''notebook'' è di fatto un file di testo che riporta l'espressione '''Notebook[]''' i cui argomenti sono una gerarchia di celle che rappresentano testo, formule, grafici, suoni, animazioni, e a cui si aggiungono una serie di opzioni che stabiliscono le modalità di visualizzazione e di fruizione dei contenuti. A partire dalla versione 6 anche grafici, animazioni e suoni sono diventati oggetti ''direttamente'' manipolabili dal linguaggio.
Riga 56:
Questa scrittura, che è contenuta nel file di testo ASCII con suffisso .nb che costituisce il ''notebook'', viene interpretata dall'interfaccia di Mathematica o di Mathreader per produrre una visualizzazione di tipo WYSIWYG il cui contenuto può essere ulteriormente modificato dall'utente ed eventualmente inviato al kernel per la valutazione.
 
Tutte le versioni per UNIX/Linux sono dotate anche di un'[[interfaccia a riga di comando]]; all'utente viene presentata un'interfaccia in formato puramente testuale, di cui viene dato un esempio qui di seguito:
<pre>
% math
Riga 67:
Out[1]= {{x -> -1 - Sqrt[10]}, {x -> -1 + Sqrt[10]}}
</pre>
Le prime versioni di Mathematica per [[MS-DOS]] erano dotate della sola interfaccia a riga di comando.
 
Sebbene l'interfaccia standard di Mathematica sia il più diffuso, sono disponibili svariate altre interfacce, come:
* [http://witm.sourceforge.net/ WITM], che sta per Web Interface to Mathematica, è un'interfaccia compatibile con ogni computer dotato di browser Web che permette di utilizzare Mathematica su dispositivi palmari come i [[Personal digital assistant|PDA]] per i quali non è disponibile una versione di Mathematica.
* [http://robotics.caltech.edu/~radford/jmath/ JMath] è un'interfaccia basata sulla libreria [[GNU readline]] disponibile per [[Sistema operativo|sistemi operativi]] di tipo UNIX.
* [http://ai.eecs.umich.edu/people/dreeves/mash/ MASH] permette di eseguire programmi Mathematica autocontenuti dalla riga di comando di un sistema UNIX.
 
== Il paradigma unico di Mathematica ==
=== Rappresentazione interna delle espressioni ===
La [[struttura dati]] fondamentale di Mathematica è l'''espressione''. Ogni singolo elemento del linguaggio, dai tipi di dato alla struttura stessa dei ''notebook'', è un'espressione costituita da un'intestazione (''Head'') e da una sequenza di argomenti racchiusi tra parentesi quadre e separati da virgole. Ad esempio, la scrittura 1+1 viene vista dal kernel come l'espressione
 
<pre>Plus[1,1]</pre>
Riga 188:
 
=== La riduzione a forma normale ===
Affinché le regole di sostituzione possano essere applicate con consistenza ed evitando il rischio di una ricorsione infinita, è fondamentale che le differenti forme sintattiche con cui un'espressione può essere rappresentata siano riconducibili in maniera univoca ad una un'unica forma che non sia passibile di ulteriori trasformazioni. Questa forma, che altro non è che il punto fisso delle trasformazioni applicabili (siano esse predefinite o definite dall'utente) è la cosiddetta ''forma normale''.
La riduzione in forma normale è importante ai fini della programmazione in Mathematica sia quando essa sia dovuta a regole integrate nel sistema, sia quando debba essere implementata nel codice utente.
 
Riga 204:
 
=== Meccanismi di controllo della valutazione ===
Mathematica offre diversi meccanismi che permettono al programmatore di condizionare il modo in cui un'espressione viene valutata. I principali sono gli attributi associati alle funzioni e i costrutti del tipo '''Hold''' ed '''Evaluate'''.
 
=== Manipolazione delle espressioni ===
Riga 240:
 
==== Esempi ====
Il seguente esempio di codice Mathematica trova il [[Determinante (algebra)|determinante]] di una [[matrice]] 6&times;6 i cui elementi ''i'', ''j''-esimi contengono ''ij'' e gli elementi nulli sono sostituiti con 1.
 
<pre>
Riga 310:
 
== Interfacciamento con altre applicazioni ==
La comunicazione con altre applicazioni avviene attraverso il protocollo ''MathLink''. Esso permette non solo la comunicazione tra il kernel ede le interfacce, ma fornisce anche un'interfaccia generale tra il kernel ed una applicazione arbitraria. Wolfram Research distribuisce gratuitamente un kit di sviluppo per collegare applicazioni scritte in C al kernel di Mathematica attraverso ''MathLink''. Altri due componenti di Mathematica, attraverso ''MathLink'', permettono agli sviluppatori di collegare il kernel ad un programma in [[Java (linguaggio di programmazione)|Java]] o un programma .NET: ''J/Link'' e ''.NET/Link''.
 
''J/Link'' permette di interfacciare codice Java e programmi in linguaggio Mathematica. Da un lato i programmi Java di utilizzare i comandi di Mathematica per eseguire calcoli; dall'altro viene concesso a Mathematica di caricare [[Classe (informatica)|classi]] Java, manipolare oggetti Java ed eseguire chiamate a metodi rendendo possibile, ad esempio, la costruzione di un'[[interfaccia grafica]] per un'esecuzione interattiva del codice Mathematica.
Riga 352:
[[Wolfram Demonstration Project]] raccoglie un'ampia gamma di dimostrazioni realizzate con Mathematica 6 e fruibili per mezzo del programma gratuito Mathematica Player.
 
[https://web.archive.org/web/20130325084513/http://integrals.wolfram.com/index.jsp The Wolfram Integrator] (precedentemente noto come 'The Mathematica Integrator') è un sito web in cui la tecnologia di Mathematica viene messa a disposizione dei navigatori che vogliano calcolare integrali in forma simbolica. Si immette la funzione da integrare con la notazione di Mathematica e la si sottopone a un kernel remoto per la valutazione.
 
Sulla [https://oeis.org/ Online Encyclopedia of Integer Sequences], Mathematica e Maple sono i due Computer Algebra System più usati per i quali sono forniti comandi per calcolare sequenze.
Riga 359:
 
== Versioni ==
Sono state pubblicate le seguenti versioni<ref>[{{Cita web|url=https://www.wolfram.com/mathematica/quick-revision-history.html|titolo=Mathematica Latest Version and Quick Revision History of Mathematica]|lingua=en|accesso=2021-07-08}}</ref>:
 
{{divDiv col|cols=strette}}
* Mathematica 1.0 (1988)<ref>[https://query.nytimes.com/gst/fullpage.html?res=940DE6DB133EF933A05753C1A96E948260 Supercomputer Pictures Solve the Once Insoluble], John Markoff, October 30, ottobre 1988.</ref>
* Mathematica 1.2 (1989)<ref>[http://www.accessmylibrary.com/coms2/summary_0286-9205258_ITM Mathematica 1.2 adds new graphics options: upgrade also promises concurrent operations] by Elinor Craig, ''MacWee''k, July 25, 1989.</ref>
* Mathematica 21.02 (19911989)<ref>[http://www.accessmylibrary.com/coms2/summary_0286-9227849_ITM9205258_ITM Mathematica +1.2 283adds functionsnew =graphics Mathematicaoptions: 2.0upgrade also promises concurrent operations] by RainesElinor CohenCraig, ''MacWeekMacWee''k, January25 15,luglio 19911989.</ref>
* Mathematica 2.0 (1991)<ref>[http://www.accessmylibrary.com/coms2/summary_0286-9227849_ITM Mathematica + 283 functions = Mathematica 2.0] by Raines Cohen, ''MacWeek'', 15 gennaio 1991.</ref>
* Mathematica 2.1 (1992)<ref>[http://www.accessmylibrary.com/coms2/summary_0286-9256461_ITM New Mathematica: faster, leaner, linkable and QuickTime-compatible: MathLink kit allows ties to other apps. (Wolfram Research Inc. ships Mathematica 2.1, new QuickTime-compatible version of Mathematica software)] by Daniel Todd, MacWeek, June15 15,giugno 1992.</ref>
* Mathematica 2.2 (1993)<ref>[http://www.highbeam.com/doc/1G1-13185601.html New version of Mathematica] {{Webarchive|url=https://web.archive.org/web/20121023115106/http://www.highbeam.com/doc/1G1-13185601.html |datedata=23 ottobre 2012 }}, ''Mechanical Engineering'', June1 1,giugno 1993.</ref>
* Mathematica 3.0 (1996)<ref>[http://www.businessweek.com/1997/02/b3509205.htm New Mathematica] by Stephen H. Wildstrom, ''BusinessWeek'', June 15, giugno 1997.</ref>
* Mathematica 4.0 (1999)<ref>{{RivistaVG|mc|199|172-175|10|1999|titolo=Mathematica 4.0}}</ref>
* Mathematica 4.0 (1999)<ref>[http://www.highbeam.com/doc/1G1-61370961.html Mathematica 4.0] {{Webarchive|url=https://archive.today/20120604203311/http://www.highbeam.com/doc/1G1-61370961.html |date=4 giugno 2012 }} by Charles Seiters, ''Macworld'', October 1, 1999.</ref>
* Mathematica 4.1 (2000)
* Mathematica 4.2 (2002)<ref>[https://www.macworld.com/2002/11/reviews/mathematica/ Mathematica 4.2: Feature-Rich Math Program Integrates with the Web, Adds Full Java Support] {{webarchive|url=https://web.archive.org/web/20071121151440/http://www.macworld.com/2002/11/reviews/mathematica/ |data=21 novembre 2007 }} bydi Charles Seiter, ''Macworld'', November1 1,novembre 2002.</ref>
* Mathematica 5.0 (2003)<ref>[http://www.mywire.com/pubs/PCMagazine/2003/09/02/420220?extID=10051 Mathematica 5.0 Adds Up: Exactly 15 years after Mathematica's initial release, Wolfram Research has released Mathematica ] {{Webarchive|url=https://web.archive.org/web/20190805054228/http://www.mywire.com/pubs/PCMagazine/2003/09/02/420220?extID=10051 |date=5 agosto 2019 }}, ''PC Magazine'', September 3, settembre 2003.</ref>
* Mathematica 5.1 (2004)<ref>[http://moreresults.factiva.com/results/index/index.aspx?ref=PCW0000020050115e0c60001i Mathematica 5.1's Web Services Add Up; Mathematica 5.1 delivers improvements over Version 5.0 that are vastly out of proportion for a .1 upgrade.] {{Webarchive|url=https://web.archive.org/web/20121209111950/http://moreresults.factiva.com/results/index/index.aspx?ref=PCW0000020050115e0c60001i |date=9 dicembre 2012 }} by Peter Coffee, ''eWeek'', December 6, dicembre 2004.</ref>
* Mathematica 5.2 (2005)<ref>[http://www.macworld.co.uk/news/index.cfm?NewsID=12069&Page=1&pagePos=6 Mathematica hits 64-bit] {{Webarchive|url=https://web.archive.org/web/20110610164355/http://www.macworld.co.uk/news/index.cfm?NewsID=12069&Page=1&pagePos=6 |date=10 giugno 2011 }}, ''MacWorld'' UK, July 13, luglio 2005.</ref>
* Mathematica 6.0 (2007)<ref>[http://www.scientific-computing.com/products/review_details.php?review_id=17 Mathematica 6: Felix Grant finds that version 6 of Wolfram Research's symbolic mathematical software really does live up to its expectations.] {{Webarchive|url=https://web.archive.org/web/20110113024403/http://www.scientific-computing.com/products/review_details.php?review_id=17 |date=13 gennaio 2011 }} Scientific Computing, 2007.</ref>
* Mathematica 6.0.1 (2007)
* Mathematica 6.0.2 (2008)
Line 379 ⟶ 380:
* Mathematica 7.0 (2008)<ref>[https://blog.wolfram.com/2008/11/18/surprise-mathematica-70-released-today/ Mathematica 7: Released] Wolfram Blog, 2008.</ref>
* Mathematica 7.0.1 (2009)
* Mathematica 8.0 (2010)<ref>[{{Cita web|url=https://blog.wolfram.com/2010/11/15/mathematica-8/|titolo=Mathematica Wolfram8!—Wolfram Blog, 2010|sito=blog.]wolfram.com|lingua=en|accesso=2021-07-08}}</ref>
* Mathematica 8.0.1 (2011)
* Mathematica 9.0 (2012)<ref>[{{Cita web|url=https://blog.wolfram.com/2012/11/28/mathematica-9-is-released-today/|titolo=Mathematica Wolfram9 Blog,Is 2012Released Today!—Wolfram Blog|sito=blog.]wolfram.com|lingua=en|accesso=2021-07-08}}</ref>
* Mathematica 10.0 (2014)
* Mathematica 10.0.1 (2014)
Line 398 ⟶ 399:
* Mathematica 11.3 (2018)
* Mathematica 12 (2019)
* Mathematica 12.1 (2020)<ref>{{Cita web|url=https://blog.wolfram.com/2020/03/18/in-less-than-a-year-so-much-new-launching-version-12-1-of-wolfram-language-mathematica/|titolo=In Less Than a Year, So Much New: Launching Version 12.1 of Wolfram Language & Mathematica—Wolfram Blog|sito=blog.wolfram.com|lingua=en|accesso=2021-07-08}}</ref>
* Mathematica 12.2 (2020)
* Mathematica 12.3 (2021)
{{div col end}}
 
Line 405 ⟶ 409:
== Bibliografia ==
* {{RivistaVG|mc|90|142-147|11|1989}}
* {{RivistaVG|mc|125|252-255|1|1993|titolo=Mathematica - Un sistema per la matematica al calcolatore}} La rubrica su Mathematica continua in quasi tutti i numeri successivi fino al n° 208.
 
== Voci correlate ==
Line 411 ⟶ 416:
* [[IMTEK Mathematica Supplement]], un add-on open source di Mathematica per la [[Metodo degli elementi finiti|Simulazione ad elementi finiti]]
* '''[[FOSS|Free Software/Open Source]] e Freeware simili:'''
** [[Axiom (software)|Axiom computer algebra system]]
** [[Maxima (software)|Maxima]]
** [[GNU Octave|Octave]]
Line 429 ⟶ 434:
== Collegamenti esterni ==
* {{Collegamenti esterni}}
* [https://www.wolfram.com/company/history/ The History of Mathematica] {{Webarchive|url=https://web.archive.org/web/20080704082226/http://www.wolfram.com/company/history/ |date=4 luglio 2008 }}, un'introduzione sulla storia del sistema e del suo sviluppo
* {{cita web | 1 = http://integrals.wolfram.com/index.jsp | 2 = The Integrator - Calcolo formale di primitive (Wolfram Research) | accesso = 22 settembre 2006 | urlarchivio = https://web.archive.org/web/20130325084513/http://integrals.wolfram.com/index.jsp | dataarchivio = 25 marzo 2013 | urlmorto = sì }}
* {{collegamento interrotto|1=[http://www.mathematica-users.org/ Wiki-Mathematica] |datedata=gennaio 2018 |bot=InternetArchiveBot }}, un wiki-Mathematica
* [http://ai.eecs.umich.edu/people/dreeves/mash MASH], UNIX-scripting interface to Mathematica
* [https://www.sagemath.org/ SAGE], [[SAGE Math|Open Source Mathematica-like software]]