3 ms·
The thing about Mathematica / the Wolfram language is that it's quite a bit harder to create an open source interpreter than it was for eg R (which is actually
by c7b 4y ago
The thing about Mathematica / the Wolfram language is that it's quite a bit harder to create an open source interpreter than it was for eg R (which is actually a FOSS interpteter for the commercial package S) or for Matlab (not sure what the status of Octave, the FOSS interpeter for Matlab code, is, I read an entry on a mailing list a long time ago that its sole dev was giving up). A lot of the symbolic solvers that are used under the hood are Wolfram's IP, and it would be a monumental effort to recreate something similarly powerful from scratch.
- psychphysic 4y agoYou've heard of SageMath right? The biggest thing missing from SageMath is a step by step solver. (Edit to add a caveat, I'm sure many professionals depend on minutiae of one or the other) Feature-wise I'd say Sage has more Mathematica functionality than Octave does for MATLAB. Sage is not trying to be compatible however presumably it wouldn't be that hard if the functionality is there? Sage is a bit of a Frankenstein though
- westurner 4y agoSageMath (and the cocalc-docker image, and JupyterLite, and mambaforge, ) include SymPy; which can be called with `evaluate=False` Advanced Expression Manipulation > Prevent expression evaluation: https://docs.sympy.org/latest/tutorials/intro-tutorial/manipulation.html#prevent-expression-evaluation https://docs.sympy.org/latest/tutorials/intro-tutorial/manip... > There are generally two ways to prevent the evaluation, either pass an evaluate=False parameter while constructing the expression, or create an evaluation stopper by wrapping the expression with UnevaluatedExpr. From "disabling automatic simplification in sympy" https://stackoverflow.com/a/48847102 https://stackoverflow.com/a/48847102 : > A simpler way to disable automatic evaluation is to use context manager evaluate. For example, from sympy.core.evaluate import evaluate from sympy.abc import x,y,z with evaluate(False): print(x/x) sage.symbolic.expression.Expression.unhold() and `hold=True`: https://doc.sagemath.org/html/en/reference/calculus/sage/symbolic/expression.html#sage.symbolic.expression.Expression.unhold https://doc.sagemath.org/html/en/reference/calculus/sage/sym... IIRC there is a Wolfram Jupyter kernel? WolframResearch/WolframLanguageForJupyter: https://github.com/WolframResearch/WolframLanguageForJupyter https://github.com/WolframResearch/WolframLanguageForJupyter mathics/IMathics is the Jupyter kernel for mathics: https://github.com/mathics/IMathics@main#egg=imathics https://github.com/mathics/IMathics@main#egg=imathics #pip install jupyter_console imathics #conda install -c conda-forge -y jupyter_console jupyterlab mamba install -y jupyter_console jupyterlab jupyter console jupyter kernelspec list pip install -e git+https://github.com/mathics/imathics@main#egg=mathics jupyter console --kernel= %? %logstart? %logstart -o demo.log.py There are Jupyter kernels for Python, Mathics, Wolfram, R, Octave, Matlab, xeus-cling, allthekernels (the polyglot kernel). https://github.com/jupyter/jupyter/wiki/Jupyter-kernels https://github.com/jupyter/jupyter/wiki/Jupyter-kernels https://github.com/ml-tooling/best-of-jupyter#jupyter-kernels https://github.com/ml-tooling/best-of-jupyter#jupyter-kernel... The Python Jupyter kernel checks IPython.display.display()'d objects for methods in order to represent an object in a command line shell, graphical shell (qtconsole), notebook (.ipynb), or a latex document: _repr_mimebundle_(), _repr_html_(), _repr_json_(), _repr_latex_(), ..., __repr__(), __str__() The last expression in an input cell of a notebook is implictly displayed: from IPython.display import display %display? # argspec, docstring %display?? # ' & source code display(last_expresssion) Symbolic CAS mobile apps with tabling and charting and varying levels of support for complex numbers and quaternions, for example: Wolfram Mathematica, Desmos, Geogebra, JupyterLite, Jupyter on mobile
- jshaqaw 4y agoAgree on the value of Sage and the Frankenstein. Sage is amazing and valuable but the value of Mathematica is the cognitive ease of having one unified platform for everything. Sage is a nice integration of multiple specialized tools under a rudimentary common framework but requires a lot more mental overhead to tie it all together.
- onos 4y agoA virtue of it being private is that they have many paid people responsible for maintaining the software. I once wrote to them about a special function returning incorrect values and they had it fixed the next day. I consider Mathematica a true gift to humanity.
- david38 4y agoI used to work for them. This was a common occurrence. Not the errors, but the taking of errors very seriously.
- hugh-avherald 4y agoI've had similar experiences using free software. Mathematica sounds like they do indeed take bugs seriously, but it's a bit of a non sequitur to say it's because it's private.
- musicale 4y ago> The thing about Mathematica / the Wolfram language is that it's quite a bit harder to create an open source interpreter than it was for eg R On the other hand there are lots of Common Lisp systems which are capable of running the venerable Maxima/Macsyma. > not sure what the status of Octave I'm glad that Octave and Scilab exist, but I switched to NumPy and never looked back.
- T-A 4y ago> not sure what the status of Octave https://octave.org/news/release/2022/11/02/octave-7.3.0-released.html https://octave.org/news/release/2022/11/02/octave-7.3.0-rele...