Loopless Programming
&gt; Looping - performing a computation repeatedly - is what programs do. In most computer languages, all loops are expressed by one of two statements:<p>&gt; Do While - repeat a code block until a condition is met<p>&gt; For - repeat a code block, with a loop index indicating how many times the block has been repeated.<p>&gt; Programmers trained on scalar languages have spent many years internalizing the Do-While and For paradigms. Discarding these paradigms is the biggest re-think they need to make when they learn J.<p>A lot of languages have these kinds of semantics and arguably in a more streamlined &#x2F; better organised way - Haskell typeclasses for example. I don&#x27;t know if it&#x27;s true that &#x27;most languages&#x27; only support for&#x2F;while loops, but probably not. It also doesn&#x27;t take &#x27;many years&#x27;  to internalise for&#x2F;while loops, these are fairly basic constructs which are learned by most novices in the beginning of an introductory programming course.<p>&gt; (x + y) is an expression rather than a statement. The J programmer can embed (x + y) in a larger expression, perhaps a matrix multiplication (w +&#x2F; . * (x + y)) which adds the equivalent of three more nested loops, but is still a single expression. Expressions can be combined; statements cannot.<p>(x + y) is going to be an expression in almost any language...<p>&gt; Many modern languages have iterators, which slightly streamline the For loop, but without addressing its fundamental deficiencies.<p>What are the &#x27;fundamental deficiencies&#x27;?<p>This seems like a pretty low-effort write-up.