23 ms·
I read a lot of these articles early on and then bought a few lisp books and read them cover to cover. My observations were as follows: 1.) If I needed to do s
by 7thaccount 5y ago
I read a lot of these articles early on and then bought a few lisp books and read them cover to cover. My observations were as follows:
1.) If I needed to do some really crazy stuff (like I imagine what grammerly does) then lisp might be the right tool. I know it is far more performant than the scripting languages (really closer to the C end of the spectrum), but I seldom need raw performance (your mileage may vary widely).
2.) 99.99% of my own work or hobby projects were better served by more mainstream tools like Python, Bash, PowerShell, C++...etc as all those tools either had built-in data structures that were easier to use, or better integrated with the OS, or they had massive ecosystems of scientific, plotting, GUI...etc, far in advance of anything that the lisp ecosystem has. You can talk about blub languages all you want, but when I can write a short little script with Python to remotely control an application using the only API they provide (Python) and then start doing something else, there is a clear winner from a software tool choice even if the lisp language itself is a better design in a multitude of ways.
The tool I have where I feel like I have an insane amount of power that isn't widely known is Wolfram Mathematica. It shares a bit with lisp in that all computing has a REPL, you can see the AST & intermediate calculations, all the command names use a pretty consistent notation like GraphPlot[]. Documentation is really good and there are primitives for pretty much everything from graph networks to matrices to neural networks to GUIs and 3D plotting ...audio, Blockchain....the list goes on and on. It's a commercial tool which sucks, but doing R&D with it is like using secret alien tech. I could literally copy paste an image of certain things I wanted to use in my network (node diagram) as vertices, build that graph, start doing computations on it like max flow or traveling salesman. I could then just grab the graphs output picture and feed it as an input into some other command and get the AdjacencyMatrix and then do other computations on that. I still love Python for code I need to share with coworkers who don't have a Mathematica license, but it is truly some amazing technology.
- bradrn 5y ago> The tool I have where I feel like I have an insane amount of power that isn't widely known is Wolfram Mathematica I’m pretty sure I’ve heard that the Wolfram Language is in fact considered a Lisp, albeit one using M-expressions rather than S-expressions [0]. But I can’t seem to find a source for this though. [0] https://en.wikipedia.org/wiki/M-expression https://en.wikipedia.org/wiki/M-expression
- 7thaccount 5y agoYeah, I get sketchy on the details. I've heard it's called a TRS (term rewriting system) whatever that means :)
- 7thaccount 5y agoSince I can't edit my comments, here is the link to the video explaining how it evaluates. It really picks up at 21 minutes in, but the first 20 minutes is also kinda important. https://youtu.be/H-rnezxOCA8 https://youtu.be/H-rnezxOCA8
- lispm 5y agoThanks for posting that video link. Lisp was actually developed for research and development of symbolic computation systems. Early on Lisp was applied to mathematics problems like integration and other manipulation of mathematical expressions. Thus term rewriting systems and similar (-> rule-based systems) have been early on implemented in Lisp, but Lisp itself is based on a functional&imperative expression evaluation.
- 7thaccount 5y agoNot a problem and thanks u/lispm! I appreciate the history. It doesn't make much of a difference from an ignorant end user such as myself, but this information is at least pretty interesting to me. I've normally categorized languages into imperative (, Fortran, C, Basic), functional (Haskell, Scheme, F#...etc), object oriented (Java, Python, Ruby, C#, JS...etc), concatenative (Forth, Factor, 8th), logic (Prolong, MiniKanren), array (APL, J, K). I guess TRS in entirely its own thing?
- lispm 5y agoThere are many paradigms. Rule-based languages like OPS5. Multiparadigm-languages like Common Lisp (imperative, functional, object-oriented, meta-programming, ...). Relational languages. Visual languages (Labview). Data-flow languages. ... more... TRS looks like it is a different paradigm. The system takes a term and rewrites it based on a rule set. In some ways this is similar to rule-based systems, but those tend to manipulate not terms but facts in a database of facts.
- rscho 5y agoIt's the old 'I wanna make something, gimme libs! vs 'I wanna make something completely new, gimme lisp' dichotomy. BTW the Wolfram language isn't 'a bit like lisp'. It _is_ a lisp with an alternate syntax. This becomes extremely apparent in any kind of symbolic manipulation.
- bitwize 5y agoFunny, because the impetus for Mathematica was Stephen Wolfram's expert opinion that Lisp was too slow by a factor of 100 to implement a performant symbolic algebra system. Only a galaxybrain like Wolfram could devise such an elaborate implementation of Greenspun's Tenth.
- 7thaccount 5y agoLol. It might have been true in the 1980s when Mathematica 1.0 came out (on version 12.3 now). Now I think Mathematica is a combination of C, C++, Java, and of course Mathematica code. C and C/C++ libraries are used for the symbolic stuff and some libraries, Java is used for database connections and so forth, and I think they do eat their own dog food by implementing new functionality using existing Mathematica code. That's a little bit yucky, but no different than many ecosystems today. At least everything seems pretty seamless to me.
- bitwize 5y agoIt wasn't true. Maclisp was competitive with Fortran in the 1970s. Wolfram didn't know enough about Lisp -- or computing in general -- to make such a claim. Source: https://web.archive.org/web/20081121205217/http://ymeme.com/why-wolfram-%28mathematica%29-did-not-use-lisp.html https://web.archive.org/web/20081121205217/http://ymeme.com/...
- 7thaccount 5y agoThanks for linking (I remember reading this on here a few years ago, but couldn't remember enough to Google for it). It seems the author's claims of 2.5 to 5 seem to match a lot of the current benchmarks out there for GCC vs SBCL, so that seems to have remained consistent over time. I'm not sure if they'd be in better shape if they had stuck to an approach such as Macsyma or not. Perhaps a lot of effort could have been avoided, perhaps not.