On Sunday, January 24, 2021 at 9:17:14 PM UTC rjf wrote:
> Just a note to point out that infix like a+b*c in a conventional > programming language > is not helpful if a,b,c are symbolic expressions.. Writing it as add(a, > mul(b,c)) is not > a big deal, nor is writing it in lisp (add a (mul b c)). Of course you > need to write programs > add and mul, but you have to do that regardless. Languages that are > primarily oriented > to provide arithmetic on fixed-length integers or double-float numbers, > mostly have to be > covered over by macros etc to do computer algebra. Languages like > FORTRAN, Algol, C. > > You could look at RLISP used for Reduce, if you want to see a version of > lisp with "syntactic sugar" > to look "infix" ish. And that is used for a computer algebra system, > Reduce. > > There is something of a tradition, to hand to someone, perhaps someone > who prefers infix, a project to "Write a scanner/parser/code generator > for an infix language > of your design [ or pick one, say Pascal]" in Lisp. > I've done this with programming language/compiler > undergraduate classes at Berkeley for decades, with probably thousands of > students. > It takes 10 weeks, assuming you know no lisp, nothing about lexical > analysis, > nothing about parsing, nothing about intermediate code generation. and > maybe > nothing about Pascal. > > At the completion of the project, most students prefer Lisp's > parenthesized prefix. > They also understand Pascal better, having written an interpreter and > compiler for it. > Mind you, the initial versions of an alive and kicking computational group theory system GAP was mostly written by maths students in RWTH Aachen 25-30 years ago. One could ask why human-years of relatively good quality LISP coders coding time were wasted doing the same lab projects, and not something more creative, like impoving Maxima code. :P LISP enthousiasts, including many US academics, have mostly themselves to blame for the present sorry state of computer algebra in LISP... > > Often they choose to use Lisp for other projects, given a choice. > > Most criticisms of Lisp come from people who have never used it, and it > shows. > Complaints about too many parentheses. No, there are just exactly enough, > and > your editor helps. Or indentation (hi Pythonistas). Editors indent for > you, exactly right. > Not webby enough (see cl-http or other packages). > Too slow (uh, faster than Python, some excellent optimizing compilers for > Lisp). > Too hard to learn. Think about how much time you spent in learning your > current > favorite language on the precedence of operators. Or what the operators > meant. > Or what happens when integers "overflow". > > Consider learning Lisp. > > > > Parts of Macsyma/Maxima are more like 60 years old. Almost as old as Lisp > (circa 1959). > James Slagle's 1961 PhD on symbolic integration (SAI'NT) includes a > substantial section explaining Lisp, > which was quite new at the time . > > > On Friday, January 22, 2021 at 11:36:06 AM UTC-8 parisse wrote: > >> I (almost) do not code C++ myself, probably 99% of my code is C-style, >> but I'm using a C++ compiler, that way I can link to the C++ standard >> template library and benefit of features like operator overload. Doing so, >> I do not have screens of error messages. >> >> Le vendredi 22 janvier 2021 à 15:07:51 UTC+1, dim...@gmail.com a écrit : >> >>> On Thu, Jan 21, 2021 at 8:04 PM parisse <bernard...@ujf-grenoble.fr> >>> wrote: >>> > >>> > Well, searching for "lisp infix notation" is not very convincing >>> (unless I missed something?), compared to built-in infix support. You might >>> prefer Lisp to C/C++, it's your choice, but I don't see any objective >>> reason that one should stay away from C/C++. And Giac is a proof that one >>> can actually write a CAS in C/C++, that compares very well with the >>> Lisp-based CAS Maxima. >>> >>> Maxima is ~40 years old with a bit of work done since then, but the >>> core is that old, as far as I know: >>> https://en.wikipedia.org/wiki/Macsyma >>> >>> As for staying away from C++, most people who might be trying to do >>> something with supposedly state of the art library like boost, >>> would run away screaming, closely followed by 100 screens of error >>> messages :-) >>> Or, now mostly gone (?), iterator_traits (my closest encounter with >>> C++, contributing to CGAL, 20 years ago, where these had to be >>> generated by a script for some classes, otherwise compilers kept >>> crashing...) >>> >>> >>> >>> >>> >>> > Le jeudi 21 janvier 2021 à 18:07:14 UTC+1, dim...@gmail.com a écrit : >>> >> >>> >> On Wed, Jan 20, 2021 at 7:13 PM parisse <bernard...@ujf-grenoble.fr> >>> wrote: >>> >> > >>> >> > As the author of a CAS, I can state that you need much more than 2 >>> weeks to learn a programming language to make a CAS, and much much more if >>> you want to be fast. Life is short, therefore choose your programming >>> language carefully! I don't regret my choice for C (+ C++ STL and operator >>> redefinition) made 20 years ago, because C can interact with a lot of >>> languages (including compilation to Javascript). If I had to choose today, >>> I would perhaps choose Julia. Not Python, it's much too slow. I don't know >>> for Lisp speed, but it's not a language I would choose anyway, I like to >>> write e.g. a+b*c when I do algebraic computations in my source code. >>> >> >>> >> There are macro packages for infix maths in Common Lisp, so this by >>> no >>> >> means should be a deal-breaker for anyone. >>> >> >>> >> Needless to say, C++ has its own can of worms, which anyone who tried >>> >> to used it might easily produce, as a reason to stay >>> >> away from it. >>> >> >>> >> > >>> >> > Le mercredi 20 janvier 2021 à 19:47:01 UTC+1, rjf a écrit : >>> >> >> >>> >> >> I think you have to figure that there is a difference in >>> productivity of people who just learned Python in high school and would >>> really like to write a computer algebra system >>> >> >> versus people who know more mathematics, are comfortable spending >>> 2 weeks learning lisp, spending ?? (weeks? months?) studying the state of >>> the art in >>> >> >> computer algebra systems as evolved over 60 years, and want to >>> contribute to advancing the art (rather than re-programming the easy >>> stuff). >>> >> >> I am under the impression that learning python is a reasonable >>> stepping stone to learning lisp. >>> >> >> >>> >> >> As far as checking results for various systems, there is a >>> category of CAS bugs that are syistem independent. >>> >> >> That is, they occur in many systems! Sometimes they depend on >>> secretly dividing by zero, or doing something >>> >> >> that is invalid at a singularity. So "Maple and Mathematica and >>> ... all agree" does not mean they are right! >>> >> >> >>> >> >> I think my essential point previously is that rewriting easy stuff >>> (in a different language) typically fails to push the frontier. >>> >> >> >>> >> >> >>> >> >> >>> >> >> On Wednesday, January 20, 2021 at 5:54:51 AM UTC-8 kcrisman wrote: >>> >> >>>> >>> >> >>>> >>> >> >>>> As to the question of replacing backends, there is already a >>> ticket (which I cannot find right now, my apologies) which started the >>> process of seeing what doctests would fail if we went to Sympy as default. >>> Presumably something similar could be done with this engine (I don't know >>> if it is more for low-level symbolics or also things like integration). >>> >> >>> >>> >> >>> >>> >> >>> In particular, the (very minimal) documentation (really an API is >>> all) makes it seems more a replacement for things like Ginac (already in >>> C++), not Maxima et al. I don't know if that would provide a noticeable >>> speedup per se, though the SageManifolds ticket mentioned parallelization >>> so perhaps it is better suited for that? >>> >> > >>> >> > -- >>> >> > You received this message because you are subscribed to the Google >>> Groups "sage-devel" group. >>> >> > To unsubscribe from this group and stop receiving emails from it, >>> send an email to sage-devel+...@googlegroups.com. >>> >> > To view this discussion on the web visit >>> https://groups.google.com/d/msgid/sage-devel/879dd941-95a0-4f2f-b5ac-96f60439f80dn%40googlegroups.com. >>> >>> >>> > >>> > -- >>> > You received this message because you are subscribed to the Google >>> Groups "sage-devel" group. >>> > To unsubscribe from this group and stop receiving emails from it, send >>> an email to sage-devel+...@googlegroups.com. >>> > To view this discussion on the web visit >>> https://groups.google.com/d/msgid/sage-devel/53e6e905-27ec-4545-a2ef-bca1eb01029cn%40googlegroups.com. >>> >>> >>> >> -- You received this message because you are subscribed to the Google Groups "sage-devel" group. To unsubscribe from this group and stop receiving emails from it, send an email to sage-devel+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/sage-devel/851ed249-0d77-4fb9-bf28-e785683b2787n%40googlegroups.com.