2 ms·
> What is complex is it being Lisp language which means you need to adjust your brain structure to a different level of functioning and focus when reading code.
by foobarian 5y ago
> What is complex is it being Lisp language which means you need to adjust your brain structure to a different level of functioning and focus when reading code.
Even if you do get proficient at this, there is still the problem that reading CL is not enough - it's CL + custom macro/DSL systems per project. Given a bunch of different projects and teams in an org, moving people around is easier with other languages because that second part tends to be less complicated. We have one team that decided to go all in on customizing the common frameworks, inventing their own with bespoke annotations and patterns so now they are basically isolated from the rest of the org and others dread working on projects that involve changes in that codebase.
- fouric 5y ago> it's CL + custom macro/DSL systems per project How is this any different from building an overly convoluted architecture in any other language where you have layers upon layers of objects, getters, setters, proxys, callbacks, VisitorFactoryFactory's, configuration files, multi-level build systems, virtual methods, type system hacks, generic functions? I've been programming in CL for years now, and I have more of a problem keeping my non-macro code from spiraling out of control than my macros. What makes macros any more than just a thing you have to exercise discipline with, like "normal" code?
- lmilcin 5y ago> Even if you do get proficient at this, there is still the problem that reading CL is not enough - it's CL + custom macro/DSL systems per project. That is true and expected. Because if you "got" CL it means you start any larger application by writing a perfect language in which to write that application. But with power comes responsibility. And this is where a lot of Lisp projects fall short. It is much more difficult to make a mess in a poor language like Java where you can basically ctrl-c/ctrl-v your solution than it is in super powerful language like Lisp that gives you no guidance on how to structure your application. Especially if you also have intelligent people on the project. Because intelligent people can make even more complicated constructs with which to shoot their feet. I wish every CL project had one guy with a long beard that can bring wisdom on how to deal with an infinite power of Lisp.