Neal Ford on Modern Programming Languages: Expressivness matters a lot
Neal Ford from ThoughtWorks talks about ancient philosphers and what old lessons still work for modern problems today.
In your keynote you will refer to ancient philosophers.
In fact, Plato, Aristotle &Co. are the founders of logical
formalization. Are their concepts already comparable to
Complementary but not comparable. In my keynote, I trace the line
from they way Plato solved problems through Aristotle’s essential
and accidental Properties via Occam to arrive at one of the core
problems in software today: accidental complexity. I’m trying to
highlight 2 things: first, that technologists ignore the past (both
ancient and recent) at our peril. We seem to think that only new
things have value. And second, that many of the things we tend to
think of as unique to software really exist in almost identical
ways in the”real” world.
In ancient Athens logical thinking was considered as one of
the highest capacities of human beings. Today this is done by
computers. What’s the then left to us humans?
Thinking is not done by computers! Computers following literal
instructions, they cannot make logical leaps. Logic done with
circuits is not the same as logic the way humans apply it. In fact,
the least interesting part of programming is the
mechanicalapplication of syntax to the problem. The right brain
insight driven development is much more interesting (finding design
patterns, emergent design, etc.), and that’s a wholly human
activity. Scientists have been working on artificial intelligence
for a long time, and have made little progress. I don’t fear that
computers will be smart enough to do anything useful for a long
Which ofthe “old lessons” are still working for modern problems –
and which do definitely not work today any more?
If you read books like Fred Brook’s Mythical ManMonth, written in
1975, it is striking what is applicable to today’s software
development and what isn’t. He talks at some depth about how to
manage projects that use lots of mainframe assembly language, and
the virtues of encapsulation. We’ve pretty much figured that out,
and have languages and tools that allow us to mostly ignore that
level of abstraction (just like we don’t think about hard drives as
spinning platters of bits, but rather metaphorical files and
folders). The problems that we haven’t solved are the process and
management problems. Even after 30+ years, people look for silver
bullets, and Fred Brook realized they don’t exist in his book.
Those who do not remember the past are doomed to repeat it (George
Santayana). Lore is important in software, and understanding the
past allows usto leverage the mistakes and insights that are
If we talk about modern programming languages, are there
some which you consider more rich from a philosophical standpoint
than others? Or is it only about pragmatism and
If you look at modern programming languages, expressiveness matters
a lot. One of the common themes in modern languages on the JVM are
higher expressiveness and less restricted behavior. The Java.next
languages try to shorten the distance from intent to result. The
Saphir-Whorf hypothesis says that the language you use effects the
kinds of thoughts possible. If you use a more expressive language
(computer or otherwise), you have a richer vocabulary. There are
reasons that languages borrow phrases from other languages, because
they are richer in connotation. Expressiveness matters.