lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On Thu, Apr 27, 2017 at 1:39 AM, Coda Highland <chighland@gmail.com> wrote:
> ... But in terms of actually building engineering
> skill, I think starting off with a statically-typed object-oriented
> language is a better choice.

A few points. The first is that many of us did not start off that way,
and 'graduated' to such languages later. (Basic seems to have damaged
very few minds, if any).  Now, I personally started off with Fortran
(very vaguely typed in those days), but the following year had a most
excellent course in Pascal with Judy Bishop for which I'm always
grateful. Structured programming was just what I needed.

The second point hinges on the word 'engineer'. There are many people
who need to script things, but won't become professional programmers.
For instance, engineers using VBA, scientists using Python, and so
forth. I suspect this group is larger.

The third point revolves around the meaning of 'object-oriented'.
Modern C++ tends to emphasize generic programming more, and has become
better at expressing functional concepts. Old-style OOP has been
regarded as problematic for a while - James Gosling was asked what he
would leave out from Java and he said "classes".  He went on to
explain that interface inheritance was fine, but implementation
inheritance leads to problems (the GoF wrote about this twenty-odd
years ago).  People learn Java (badly) and follow all the Python
examples, and get fixated on a particular kind of OOP.  There's a new
breed of statically-typed languages which sidestep this, like Go and
Rust. Very differ  ent (apart from some syntactical similarity) but
both very different from the cartoon picture of OOP that comes
illustrated with animals.

In fact, I may agree just a little with Prof Dijkstra, if he had said
instead that over-learning and over-applying a paradigm damages the
ability of students to learn new things.