analogical? digitalized? it’s nicely writtened, but i don’t trustify this article.
Some of the terms might be wrong, but as an electrical engineer, I find it extremely accurate.
$work: Same old, same old. Trying to barnraise this docker/gitlab-ci/openstack system, it’s a real bear just trying to keep track of it all. Add to that the confusing networking setup at $work and – it’s just a recipe for headache.
!$work: I’ve somehow managed to pick up two new languages in the last week or so, both relatively unintentionally. I’ve been fiddling with Sage (the CAS) as a replacement for Mathematica, and I’ve been porting some Mathematica code to Python, and with great success. Mathematica (IMO) severely lacks a pleasant model for doing much of anything. The pattern matching features are pretty neat, but it’s not particularly convenient to build rich datastructures. Python, of course, much better. A rich class system and a wide array of third party libraries makes it way easier to structure things. It’s also pretty nice being able to do a lot of the grunt work in pure python, then just ‘sub in’ abstract values and have it magically spit out equations in those abstract terms.
I also fell into working on some Lua stuff. Suffice that my experience with Lua so far has been far less positive. It’s anemic-by-design standard library is pretty annoying, and the lack of a strong direction in terms of paradigm is equally frustrating. I’ve found that I simply think the notion of multi-paradigmatic languages is simply bad. I’m not saying that any one paradigm is better than another, but I think that these sorts of ‘jack of all trades’ languages tend to be more frustrating than the supposed ‘benefit’ of being able to write in multiple different paradigms. The tradeoff for this ‘feature’ is that nothing in the language can make assumptions about how your code will work, it can’t provide tools that support one paradigm more than any other, and ultimately you’re left with having to roll your own everything. I much prefer languages with a strong notion of paradigm. Ruby, Python, Haskell, even Java all know what they are, and so I (as a programmer) can simply join in the party with them. With Lua, I’m stuck trying to figure out how I’m going to implement my object model today, and how I’m going to do simple things like split a string on spaces, etc. It’s really very frustrating.
I will say that the ‘everything is a table'ism is pretty nice, and were it not for the fact that this Lua code is running in a pretty locked down environment, there are a lot of 3rd party libraries I could use to give me back some of these features. But the selling point of lua is that it’s embeddable anywhere, and these libraries won’t work in this particular embedding. I’m just frustrated by the doldrum-like nature of it all, no wind to help push the sails of thought along.
Have a look at SymPy. (Www.sympy.org) ( www.github.com/sympy/sympy).
Yah, this looks a lot like what sage offers – is there anything shocking that differentiates it? (I’m poking through the feature list atm and not seeing it, I suppose it is nice that it’s just a library (by the looks of it) rather than a sort of pseudointerpreter thing).
See also Mathics, which implements Mathematica-compatible syntax on top of SymPy. It might make migration from Mathematica easier. You can try out Mathics online.