Sometime in the last decade or two we crossed over something that would have been viewed, in 1970 say, as a huge transition.
In fact, we hardly noticed as we crossed over it.
When I started developing software professionally, I wrote assembly language—actual machine instructions, with syntactic sugar to make them easier to read and remember, like mnemonics for op-codes, and the ability to assign names to memory locations.
From there, things progressed to compiled languages, which turned something like Fortran or Cobol or C commands into actual machine instructions.
There were also interpreted languages around—BASIC being the most famous one (well, or LISP, I guess). They didn’t make your program into machine instructions at all; instead they just parsed and executed it directly. This was slower, but easier to implement, and much easier to port to another environment.
Interpreted languages were widely viewed as toys (largely because most people had no idea how big some of the systems built in LISP were).
Well, sometime over the last couple of decades, I’m pretty sure we crossed the boundary, and most new lines of code written today are in interpreted languages—mostly Java and C#, though there’s plenty of Perl and Python and Ruby being written.
And it’s passed almost completely without remark.
(Closely based on a comment I made in rec.arts.sf.written)