4 ms·
Sure lisp is a wonderful language, but let's not pretend there's no difference between incidental and accidental complexity.
by jdc 7y ago
Sure lisp is a wonderful language, but let's not pretend there's no difference between incidental and accidental complexity.
- euske 7y agoCare to elaborate what corresponds to the incidental/accidental complexity in CL? I tried to understand these concepts, but it feels very subjective. Whether or not something is accidental looks in the eye's the beholder.
- jdc 7y agoI'm referring to this part when I talk about the incidental-accidental complexity dichotomy: [...] in the real world simple is _always_ a lie [...]
- jrochkind1 7y agoDo you mean inherent vs accidental? I think "incidental" (non-essential, secondary, happenstance), and "accidental" (non-intentional, happenstance) are more or less synonyms here, not contrasts. I think there, uh, is basically no significant difference between "incidental complexity" and "accidental complexity".
- 0xdeadbeefbabe 7y agoFred Brooks could have identified a third problem: accidental complexity is fun; inherent complexity is boring.
- thesuperbigfrog 7y agoFred Brooks called it "essential complexity" and "accidental complexity"[1]. Essential complexity is inherent to problem being solved and nothing can remove it. Accidental complexity is introduced by programmers as they build solutions to the problem. Lisp is nice because eliminates a lot of the accidental complexity through minimal syntax and lists as a near-universal data structure. 1: http://worrydream.com/refs/Brooks-NoSilverBullet.pdf http://worrydream.com/refs/Brooks-NoSilverBullet.pdf
- jerf 7y agoOne of the traditional criticisms of Lisp, though, is that it lets programmers re-introduce a whole lot of accidental complexity in their Lisp code, and, worse, everyone introduces a completely different set of accidental complexities into their code.
- lincpa 7y agoClojure is simpler than Common Lisp, but I still feel that the features are too many and too complicated, and continue to simplify, do not use some complex features, and insist on writing systems with pure pipeline structure. As a result, the simplest system is obtained, but the design process is a systematic project.It is difficult to design a complex system into a simple and smooth pipeline system.
- thesuperbigfrog 7y agoThat problem is not limited to Lisp. As a programming language, Common Lisp is large enough and multi-paradigm enough to allow for elegant solutions to problems. It does require some experience with the language and some wisdom and discipline to know what pieces to select and how to best use them. However, like all large, multi-paradigm programming languages that have been around for a while (I'm looking at you C++), programmers tend to carve out their own subsets of the language which are not always as well understood by those who come after them, particularly as the language continues to evolve and grow. There is also the problem where programmers try to be too clever and push the language to its limits or use too many language features when a simpler solution would do. All too often we are the creators of our own problems by over-thinking, over-designing, or misusing the tools at hand.
- jcelerier 7y ago> programmers tend to carve out their own subsets of the language which are not always as well understood by those who come after them if the language is not powerful enough to allow for that people will inevitably add preprocessors, code generators, etc... to do the things they want.