4 ms·
This is a fallacy* that is often repeated. It's like saying that nobody can work together on a Python project because everybody will create their own incompatib
by reikonomusha 4y ago
This is a fallacy* that is often repeated. It's like saying that nobody can work together on a Python project because everybody will create their own incompatible pet decorators.
Any reasonably run project will have standards and code review.
I have not, once, in my decade+ career writing Common Lisp professionally, run into a single instance where my peer programmers on a project have painted one another into silly corners due to unfettered use of macros of any ilk. It doesn't happen, because (1) code comes from some manner of requirements and (2) PRs are reviewed. Macros that don't make solutions easier to read and write for the team, not just a programmer are patently rejected.
* I feel this fallacy and others frequently come from people who hear about a relatively obscure feature or superpower of a language and—having never used it—then try to imagine pessimistic or pathological uses of said feature. Unfortunately, the speculation is usually flat-out wrong, and not even adjacent to some truth.
- agumonkey 4y agoI had a tiny habit of making cryptic names and structures that only I would perceive as good. But even then, with time I balanced things out.. I understand the value of other's perspective. And most books talk about it right away. People seeking advanced PLT features are not in it for foolish tricks.
- pixelrevision 4y agoA lot of us get burnt by inheriting older codebases where we have to work with code by a dev(s) who’s no longer there who got over enthusiastic with a powerful feature. What’s funny is you can usually trace that code back to a language adding some new improvement and it taking some time before people figured it out. Lisp seems to kind of avoid all that by just making everything available and not having a lot of language changes.
- pronlover723 4y agoIt's good to hear your experience is positive My guess would be that people that come from C++, where meta programming is insanely complex and hard to follow, would guess that a language that encourages meta programming would often lead to complex and hard to follow solutions. A DSL that looks simple on usage but then looking into how it works is 10 nested complex compile time macros.