Best programming language for beginners?

BASIC, of course.

Basic - Never

The only language designed for teaching programming was PASCAL. But it was designed for noob's to learn the art of programming and there for (sadly) never became a really strong main stream language.

Of the ones in main stream use today the C/C++ is all but the only choice! C(sharp), python or very narrow languages focused on Internet applications,

Java (and NOT Javascript) is the only real alternative.

Mark

For absolute beginners to just get started, I'd say interpreter BASIC is a good choice.

It is simple and immediate. You can do things with it without writing actual lines of code. Trying simple things out is very easy.

Plus, as the students get experience they will also get an increasing revulsion to BASIC that will help them move on.
hey, it worked for me!

Python.

IMHO interpreted languages are easier for beginners.

Some time ago I would have said Ruby, but its support infrastructure is not as good as Python.

...R

I don't feel that BASIC is the best choice for a motivated beginner in the year 2017. Maybe it was in 1990 but no longer. Once you learn how to use BASIC you'll never use it again. Of course you'll learn the general concepts of programming from it but any language specific knowledge will just be thrown away. Decide on something you want to do with your programming skills and pick the best language for that application. Then you will have a goal to work towards instead of just flipping bits. In my life C++ and Python are the most useful. I'm forced to work with some others (Scheme, Windows Batch, Bash, PHP, HTML) but when possible I prefer to spend my time getting good at one or two rather than spreading it over a dozen languages.

Agree that it also depends on your target platform - Java for Android (with ability for a C/C++ wrapper), Swift and Objective C (and C/C++) for Apple, C# (and C/C++) for Microsoft

So while all major platforms have their preference, you can see they support C and C++ as well so that's not a bad choice to expose yourself to the world.

That being said - There was a study last year: 15 best paying programming languages in 2016 that put Java, Python, R, Objective C, Swift, C#, JavaScript, Perl, C++, SQL, Ruby on Rail, C, in this order of demand in the market - but starting with C and C++ to understand OO programing will get you on the right path

Taking the question literally, I would say Pascal is the best language for a beginner to learn first. Pascal bridges the gap between low and high level, reaches as far as object orientation and goes a long way towards deterring bad habits. Learning Pascal first, makes everything else much easier.

BASIC still has a place, despite the snobbery. The advantage is the immediate rewards which inspired so many of us to stay the course. Modern structured BASICs often come with OOP and a compiler of sorts. Apart from the near English constructs which make it so easy to learn, I honestly struggle to see much which distinguishes these modern BASICs from most other high level languages. BASIC remains popular for macro languages, rapid prototyping and there are still millions of applications in production use written in 'BASIC like' languages.

The shortcoming of BASIC is it is strictly high level and won't help much when you get to lower level languages like C/C++ The drawback to learning BASIC first is the bad habits it lets you fall into can be difficult to drop...And of course that snobbery.

Once you have a low level and a high level language under your belt, learning becomes more about design patterns, libraries and fashions. Whatever language you choose, the constructs are generally similar as there is a microprocessor with input and output underneath them all.

Python though...Is Devil spawn. Making indentation and white space syntactically significant sucks the very joy from life. I am pretty sure if I had been made to learn Python at school, I would have ended up with a completely different career.

MattS-UK:
Python though...Is Devil spawn. Making indentation and white space syntactically significant sucks the very joy from life. I am pretty sure if I had been made to learn Python at school, I would have ended up with a completely different career.

Tosh. :slight_smile:

If someone learns to use indentation with Python and then applies the same style in their Arduino programs it makes them easy to read. How many times do you see requests here for people to use the AutoFormat tool? People brought up on Python would do the indentation automatically. The only thing that Python does not require is the equivalent of the closing }

...R

Yes, definitely saddle completely raw beginners with structure and a compiler. What was I thinking?

GoForSmoke:
Yes, definitely saddle completely raw beginners with structure and a compiler. What was I thinking?

That must be why Arduino has been such a huge failure with people new to programming. Oh wait...

Taking the question literally, I would say Pascal is the best language for a beginner to learn first.

I studied Latin in school. It's great, Today I can speak it with absolutely no one. It wasn't until I was an adult before I learned another language that is actually used (Spanish) somewhere other than the classrooms where it's taught (is it even anymore?).

Chinese... tough language to learn, well, except for the billion plus who started there!

Jump in and learn a useful language based on what you may feel you want to do!

There are places like this where people will help self-starters wanting to learn. I'm sure I could even find a Latin forum if I really wanted!

Computer programmers like to stand behind the scary, fiery wall like the Great Wizard of Oz. Warding off folks, lest they discover what's behind all that fire and smoke.... just some dude pulling levers.

Excellent beginner course. Stanford Engineering Everywhere | CS106A - Programming Methodology

pert:
That must be why Arduino has been such a huge failure with people new to programming. Oh wait...

I think you are mixing your apples and oranges.

IMHO the Arduino has been successful in spite of its programming language, not because of it.

Nobody in his right mind would use C or C++ if he did not have to. :slight_smile:

...R

tjones9163:
Is that the name of the language?

Yes.
Beginners
All purpose
Symbolic
Instruction
Code

it claims it's for Beginners but does not claim it's the Best which is part of the OP ask :slight_smile:

J-M-L:
it claims it's for Beginners but does not claim it's the Best which is part of the OP ask :slight_smile:

I never said it was. I was only answering the OP's question that I quoted.

Fair enough was just trying to make a joke

pert:
That must be why Arduino has been such a huge failure with people new to programming. Oh wait...

As long as you don't say ALL the people new to programming who try it because I don't see near 100% success on the forum but then I've only been here 5 years now.

By your "how many people" metric, BASIC has been an astounding success.

By what I've been saying, 20 or 30 hours with interpreter line-number BASIC can get fundamentals down that I've seen more than a few newbies with more time miss.

Take a break, sheesh.

Robin2:
Nobody in his right mind would use C or C++ if he did not have to. :slight_smile:

Call the men with the butterfly nets for me then.

BulldogLowell:
Computer programmers like to stand behind the scary, fiery wall like the Great Wizard of Oz. Warding off folks, lest they discover what's behind all that fire and smoke.... just some dude pulling levers.

There's a priesthood with jargon and all, and boy oh boy they HATE when outsiders fix their code and beat them to contracts.

The problem with BASIC is that it has little standardization. A modern BASIC (say, Microsoft Visual Basic, or RealBasic) has most of the features that a modern programmer should like, has a compiler that produces fast code, and has a good IDE with powerful debugging features.) But those tend to lack "embedded" features. Other BASIC compilers are specifically aimed at microcontrollers, but you're likely to think that you've been handed a completely different language than those "Desktop BASICs" (you have.) Parallax Stamp PBASIC is horribly primitive and slow, for instance (but they make up for it by including "embedded programming functions" as language keywords (like "shiftout")

Pascal was indeed designed as a teaching language. But that was back in the mid-1970s, and it's been a bit neglected since the 1980s. To be useful, it needs "extensions" beyond the basic language, which are somewhat poorly standardized. I became disenchanted with Pascal when I realized how much it cheats - the language has features and syntax that a user can't duplicate (at least, not without more 'extensions.') And the extent to which it seemed to deliberately limit itself to be ONLY a "teaching language" (not that that lasted. For a long time, a lot of the Apple system and application software was written in a Pascal-like language.)

When considering a "learning language", you need to consider the teaching and learning resources available. And your "goal" - a lot of "learn XXX in 5 weeks" sort of programming instruction (including Arduino) is about learning to do some useful things as quickly as possible. That's great, but you miss out on principles. A lot of "University introductory Computer Science" classes are big on principles and theory, but essentially only prepare you to take the next class, where you'll learn more details (and eventually, how to do something more useful than a class assignment.) (and the truth is, that even after getting through a 4-year CS degree, your actual programming skill may be "meh" by industry standards, especially if you haven't forced yourself to do some major "projects" outside the scope of the usual assignments.) And University teach different languages depending on whether you're going into theory (CS) or into actual problem solving (EE, ME, Most of the sciences, etc.) (At one of the colleges my daughter looked at, they were still teaching Fortran! To Physics or ME majors, IIRC.

So... universities today seem to be teaching Java, Python, and C++ as their "intro" languages. I've take a bunch of online classes (MOOCs.) There have been some very good classes using Java and Python. The only C++ class I took was ... pretty awful. There was also the UTexas "Embedded Systems" class that used C (and taught some "embedded C constructs, but expected you to already know the basics.)

There's also the fact that "beginning" classes are NOT going to teach you everything there is to know about a language. One of the complaints about all three of those languages is that they're HUGE, with MANY FEATURES and EVEN MORE LIBRARIES. (as opposed to, say, C, which is really tiny (but still has lots of libraries.)) Some of the features seem to be obscure nods to some tiny corner of some unknown discipline, rarely used unless YOUR PROFESSOR happened to like them (or someone where you work.) The way you learn about these generally involves coming across them in published code, and going "WTF?" and then figuring them out...) Then you can either decided that they're useful, or the product of a deranged mind who shouldn't have been allowed near a compute. (There was a post recently where someone had used C++ operator overloading such that "a = b + c;" changed b and c. Shudder.)

Finally, it doesn't really matter all that much. If you learn C++, but the next class you take is "Data Structures and Algorithms using Java", you'll have a few things to catch up on, but you're not going to be completely lost. There are a lot of similarities between languages; you find pieces that you like better, pieces that you like worse, in one or another, and it may influence what you choose to use for your personal programming. But professionally, you're more likely to have that dictated by your employer, and it won't be THAT uncommon for an prospective employer to expect their language choice to be irrelevant. If you've done GPS data logging in C# for Windows Phone, the "GPS data logging for a phone" is likely to be a more important piece of the hiring decision than the "C#" part; you'd be expected to be able to do something similar in Java for Android phones without too much additional effort.