Non pensavo assolutamente di scatenare un flame (o quasi) sul gruppo di Facebook Principia Mathematica. Di seguito uno screnshot di una parte della discussione:
Come è stato notato da qualcuno del gruppo, il linguaggio di scripting client-side denominato JavaScript non è adatto per l'implementazione del motore di calcolo di un Computer Algebra System che, solitamente è realizzato in C++. Infatti, JavaScript è utilizzato per rendere interattive le pagine web.
Qualcun altro, invece, ha fatto notare che Javascript è stato utilizzato solo per l'interfaccia web. A questo punto, vale la pena di testare entrambi i software. E quale test migliore se non il riconoscimento di numeri primi? Come è noto, Mathematica utilizza il comando Timing per il calcolo del tempo di computazione e la funzione built-in PrimeQ[] per il riconoscimento dei primi. Il certificato di primalità utilizzato da Mathematica, prevede un controllo incrociato con due test differenti (test forte di 2 pseudoprimi e il test basato sugli pseudoprimi di Lucas). Stan Wagon, nel suo libro Guida a Mathematica presenta un package che velocizza il certificato di primalità, attraverso il nuovo comando primeQ[]. Tale package è per la vecchia versione 2.0, e noi l'abbiamo modificato per adattarlo alla versione 6.0 e superiori. Il nuovo comando è decisamente più veloce di quello built-in, come vediamo dallo screenshot:
Passiamo, ora, a Mathics. Dopo aver puntato il nostro browser alla url http://www.mathics.net/, eseguiamo un copia&incolla del codice Mathematica (cella per cella), dopodichè carichiamo il package. Come vediamo dallo screenshot seguente, il comando Needs[] fallisce. Nonostante ciò, riconosce il nuovo comando, dando la risposta corretta in 4.816301 secondi, tempo decisamente lungo.
Proviamo, adesso, con il comando predefinito PrimeQ. Ecco il risultato:
da cui vediamo che Mathics impiega 0.004 secondi. Conclusione: Mathics è più veloce di Mathematica nel riconoscimento di grandi primi!