Maybe we both agree that the basics of procedural programming -- loops,
if statements, functions should be mastered before tackling
object-oriented programming.
I don't think OOP is not the panacea it's made out to be. CPUs are not
object oriented devices. They are runaway trains that are going to keep
going in a straight line unless we grab control and steer them otherwise.
They do instruction N then N+1 then N+2... that's linear execution, not at
all unlike the original BASIC or Assembler concepts that started with punch
cards and paper tape to eventually grew into the PC as it is today.
In order to gain the best understanding of programming and what it does to
the hardware you want as little obfuscation and abstraction as possible. To
best understand the relationship between outcome, hardware and code, you
want a language that reflects the behaviour of the CPU and the assorted
devices it governs. You want to learn how to talk to the computer on it's
own level; as a friend, not as a distant "voice from above" with no real
knowledge of your audience. Ideally this should point you at Assembler but
I honestly wouldn't wish that on my worst enemy as a first language; talk
about yer vertical learning curves!
So a middle ground is taken between impossible learning curves and solid
understanding of what code does to hardware and data... and that generally
means a procedural language like C or one of the non-oop Pascals.
Once one has a good grounding in the relationship between software, hardware
and results, there's no harm in branching out into newer and more complex
paradigms; in fact, it should be encouraged. But not before one has at
least a reasonable understanding of the underlying behaviour. We do tend to
forget that getting from OOP's lofty concepts to the CPU still has to, of
necessity, invoke a procedural layer between.
[grin] There is a reason why so many Object Oriented Languages have been
prototyped in C...
I think we can agree that the best first step is to get the basics...
variables, pointers, structures, loops, functions and calculations. I don't
think we agree the best source of that education lies in a complex, abstract
environment like C++, C# or Delphi.