10th Rule of Programming (2003)
philip.greenspun.com
philip.greenspun.com
It's the same for other paradigms. When I was writing lots of logic programs, I tended to write lots of logical functions in procedural languages, even though it didn't make a lot of sense. Lots of recursion, which tends to be really inefficient without tail-recursion optimization.
Right now, my primary language is Java. And I really, really dislike lambdas in Java, because they are a poor imitation of actual lambdas expressions in pure functional languages.
Edit: I later converted his work into Lisp that wrote C++, which in retrospect was perhaps a bit unnecessary.
https://en.wikipedia.org/wiki/Occam_(programming_language)
https://en.wikipedia.org/wiki/Communicating_sequential_proce...
Edit: Occam is probably closer to Go than Lisp.
Java shops don’t move at the pace of JavaScript shops. These developers are looking for an actual work/life balance. Not looking for shake shit up.
So Java lambdas, being little more than syntax sugar over an already existing concept in Java, works well for them. They get new sugar and don’t have to rewrite a bunch of old code for it.
Anyway. Personally, I tend to get really annoyed with developers trying to use a language outside of its paradigm. Trying to write functional C is moronic just like trying to write procedural Haskell is moronic.
It is tautologicallly true; if no such C or Fortran programs exist, the law stands true with a level of complexity above anything written.
But otherwise... how does it hold true? Via some ad hoc string/config parsing logic?
Works for the famous Arthur C. Clarke quote too: "Any technology that is distinguishable from magic is insufficiently advanced."
This same phenomenon is the reason why John Ousterhout wrote Tcl and the GNU project started Guile.
So you needed more than just a configuration file. You needed a configuration file that could contain code. That's what brings you to Lisp - the ability for a data file to contain code that could be imported and executed by a running program.
Except that Guile is an implementation of Scheme, which is essentially a somewhat minimalist variant of Lisp. So in this case, a real programming language was included intentionally as configuration language.
And this is the same concept as why GNU Emacs is an editor written in Lisp on top of C routines - very similar how data science is often done in Python on top of Numpy and several other packages.
This blog post talks about what happens with configuration evolving into a DSL and then a rule engine.
https://mikehadlow.blogspot.com/2012/05/configuration-comple...
See configuration of Istio, service mesh, Traefik.
And Kubernetes.
Every system eventually becomes Kubernetes. (Ansible, CMake)
The system to tell the computer how to do the work is more complicated than the work itself.
1) It's fun.
2) Most programmers are naive. (This point bears expansion: most programmers have less than five years of experience and this has been true for decades because of the exponential growth of the field. I don't have the exact numbers, but the shape of IT is Eternal September.)
3) People make a lot of money from these microcosms. You can't make money selling old shell+SSH+make, so you wrap it in e.g. Python and create an "ecosystem" and then people are getting jobs and selling books and courses and even certifications if it goes that well.
(Point 3 is mostly due to point 2 (naivete) but there are certainly people who consciously and deliberately try to create new things just to get in on a hustle.)
- - - -
Just use Lisp.
(That's my new slogan.)
0) Completely misunderstand the tool you can't use and you're about to re-write, such that you hate it, it sucks, and you can do better...
https://guix.gnu.org/en/manual/en/html_node/Defining-Package...
It clearly worked! Admirable honesty and humbleness in the answer.
Were there uncommon languages? Was is a naming hack to make it more accepted, maybe like basic was used when naming visual basic?
or was it something like "common" as in common denominator?