I read this post today.  I couldn't agree more.

I've been programming since I can remember (1974 was the first time I can remember... and that was on an HP Calculator).  I believe that I'm more expressive in code than I am in English.

I think we need a programming language for "everyone else"... for the folks that don't natively understand how to break problems down into discrete, micro steps.

The issues I see in programming language design are:

  • Languages are designed by wicked smart folks who find certain patterns easy and have a challenge understanding that other folks can't wrap their head around those patterns.
  • For the most part, "general purpose" programming languages are either for system control (C and its progeny) or for academic research (Lisp and its progeny) and a key early goal for these languages is to be "self hosting" so the ecosystem around them grows up around compiler tools rather than "mere mortal" development tools.
Some of the very successful "mere mortal" programming languages (not necessarily Turing complete, but things that allow someone to give direction to a computer that results in a predictable output for a given input) are:
  • VisiCalc/1-2-3/Excel -- The most popular tools for instructing computers.  Built for a specific cohort using the paradigm of that cohort and has not materially evolved in 30+ years.
  • HTML/CSS -- I have lots of problems doing HTML and CSS but it seems "easy" for a much larger cross-section of people than does C or Java or Ruby.
  • PHP -- Simple and very pervasively popular.
The biggest "failure" for cohort-designed programming languages is SQL.  SQL was designed by IBM for secretaries to write queries, as memorialize in The Desk Set.  SQL works really well for folks who understand set theory.

Anyway, I think that building tools for "other people" to write programs should be a very high priority among those that are building hardware and software systems.