Re: Whats the best language to learn...



Pascal J. Bourguignon wrote:
The best programming language to learn as a beginner is probably scheme.

Is that a joke?

Functional languages like scheme and haskell may be wonderful for
programming gurus and mathematicians (and if you are both, better).
However, people who are infatuated with the functional paradigm fail to
understand the reality of the human mind.

The average person does not think functionally nor recursively. A
recursive definition might be compact and beautiful, but it's not the
way the average person thinks about things. It may be how a
mathematician and a specialized programmer thinks about (some) things,
but not how normal people do. Even a simple compact recursive definition
is very difficult for the average person to understand.

The average person thinks about tasks using two elements: Concepts and
sequential steps.

A food recipe is the perfect example of this: A food recipe consists
of concepts (such as ingredients and measurements) and sequential steps
(a list of things what to do, in which order and how).

In programming these two elements have a natural translation: Modules
and imperative programming. A module is a concept, and imperative
programming is the sequence of steps what to do with those concepts. As
much as programming gurus detest imperative programming, it's just the
reality that the average person thinks imperatively and understands
imperative algorithms easiest.

Many object-oriented programming languages use these two paradigms,
ie. modules and imperative programming. Thus it's a logical consequence
that a simple, high-level OOP language would be the best for a beginner.
(Well, in fact a modular programming language would be enough, but the
few modular languages which have ever existed never got very popular, so
the next best thing are their big brothers, the object-oriented languages.)

And yes, like "imperative programming", also "object-oriented
programming" is nowadays more a swearword than anything else among the
know-it-all programming gurus. However, it just works. There's no way
around it. It might not be the silver bullet, but it's the best
beginner-approachable paradigm we have.

Functional programming is nice, but it just isn't how people think
about things.

I would still learn C and Smalltalk, before C++.

Hell no! Smalltalk maybe, but C? No, no and a thousand times no!

Make a beginner learn C as his first language and he will struggle to
learn good programming for YEARS to come. Just no.

(For the record, personally I just love C++ and it's my language of
choice for most things. I also would be able to develop in C if I was
forced to (although it would really be a horrible nightmare). However, I
would never, ever, ever recommend C for anyone as their first language.
Ever.)
.



Relevant Pages

  • Re: object system...
    ... for that you need machine language. ... isn't even as fast as other systems programming languages. ... Stroustrup's stated design goal was to enable ... all manner of elegance or abstraction can be sacrificed for speed, ...
    (comp.object)
  • Re: DirectX in HLA
    ... I guess that you have a great knowledge of DirectX ... > understanding by looking at them in assembly language... ... > actually represents, really, is a means to "undo" the OOP so ... > is NOT an "OOPL" (object-orientated programming language), ...
    (comp.lang.asm.x86)
  • Re: DirectX in HLA
    ... I guess that you have a great knowledge of DirectX ... > understanding by looking at them in assembly language... ... > actually represents, really, is a means to "undo" the OOP so ... > is NOT an "OOPL" (object-orientated programming language), ...
    (alt.lang.asm)
  • Re: LSP and subtype
    ... What is the class of problems solvable using UML? ... the language of physics cannot describe. ... whatever paradigm equivalent to 2GL/3GL ... there is still a great need for reuse and generic programming. ...
    (comp.object)
  • Re: Why C Is Not My Favourite Programming Language
    ... If you decide afterall that C programming is just not your thing you ... > C has no string type. ... > compiler take care of the rest. ... Why does any normal language ...
    (comp.lang.c)