News for hackers. Stuff that matters.
Re:10th Rule of Programming (2003) by rich_sasha on Tuesday September 12, 2023 @05:48AM (#37478761)
I have always wondered about this rule.

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?

Re:10th Rule of Programming (2003) by ludston on Tuesday September 12, 2023 @05:57AM (#37478823)
It's referring to metaprogramming. Lots of large programs end up full of DSLs and config files with bespoke parsers and code generators, which are largely inferior (in that they are bloated, bespoke and less expressive) to the metaprogramming tools available in Common Lisp.
Re:10th Rule of Programming (2003) by rich_sasha on Tuesday September 12, 2023 @08:47AM (#37480332)
Reminds me of Ansible. YAML is quite certainly the worst dialect of Lisp I ever encountered...
Re:10th Rule of Programming (2003) by bnpxft on Tuesday September 12, 2023 @11:15AM (#37482541)
YAML even has the worst form of macros I've even encountered in the form of go templates.
Re:10th Rule of Programming (2003) by countWSS on Tuesday September 12, 2023 @06:00AM (#37478844)
structs de/serialization(e.g. JSON) and complex initialization/modification routines at runtime that rely on these structs/objects, data-oriented architecture and internal script interpreters at some level. Lisp itself can embedded in C, but at that point the program likely has a more efficient scripting DSL at place.
Re:10th Rule of Programming (2003) by omnicognate on Tuesday September 12, 2023 @07:20AM (#37479407)
The contrapositive is enlightening: "Any C or Fortran program that does not contain an ad-hoc, informally-specified bug-ridden, slow implementation of half of Common Lisp is insufficiently complicated."

Works for the famous Arthur C. Clarke quote too: "Any technology that is distinguishable from magic is insufficiently advanced."

Re:10th Rule of Programming (2003) by tobbe2064 on Tuesday September 12, 2023 @09:04AM (#37480530)
Nice!
Re:10th Rule of Programming (2003) by d-us-vb on Tuesday September 12, 2023 @07:32AM (#37479479)
The rule is referring to application plugins and extensions. In the early 90s, there was an antipattern in lots of large applications to evolve an extension language that was originally just a dialect of a config language of some kind. Then the developers would try to add if/else without changing the syntax of the config language, and then add functions, and before long, you have an overcomplicated yet poorly specified and slow implementation of something almost but not quite entirely unlike Lisp.

This same phenomenon is the reason why John Ousterhout wrote Tcl and the GNU project started Guile.

Re:10th Rule of Programming (2003) by AnimalMuppet on Tuesday September 12, 2023 @08:38AM (#37480217)
Think in terms of enterprise apps. Jira, say. But with enterprise stuff, you can't totally insist that the company do it your way. Too many companies have custom steps at points in their workflow. So you need the ability to do some custom process at some points in your enterprise app.

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.

Re:10th Rule of Programming (2003) by jnxx on Tuesday September 12, 2023 @01:51PM (#37484892)
> This same phenomenon is the reason why John Ousterhout wrote Tcl and the GNU project started Guile.

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.