I'm in between jobs at the moment and thinking about getting back into programming but want to start fresh.
Why do you want to learn programming? Related to jobs? To code for fun (if so, which kind of things)? To code to automate some everyday tasks? Because you're interested in pure algorithmics?
You'll probably find as many suggestions as a start as there is programmers... The problem with languages is that those that are quite good to learn coding are also not-that-popular languages, and quickly lack the librairies to do large projects, and sometimes also ressources. Languages with a lot of supports aren't always the best for learning.
There's also a matter of taste...
I'd suggest something like Ada as a language to learn algorithmics, but for anyone that want to do something nice quickly, that won't work.
Python is nice, because it's close enough to natural language and logical so that you can easily get the trick and do interesting things. They'll be a couple surprises along the road, though*. And I wouldn't suggest Python for very large projects.
C is decent, but the close-to-the-metal philosophy make it annoying at times, since you'll have to redo a lot of things by hand. It's probably a must-learn, but not always the first thing to do. STL structures from C++ makes things more manageable but I'd avoid the bulk of C++ at the beginning.
I'd stay far away from Java, but that's me
C# is only very loosely linked to C (closer to Java, in fact, but better**), despite the name. It can be a good start, I think.
F# has a completely different philosophy (functional programming), but it's also a possible interesting starting point. I'd say you need to learn a functional language sooner or later if you're serious into programming, in any case. I used to suggest (O)Caml, but F# has the advantage of the ecosystem now, and they have a lot in common. It can feel strange, but many students I've seen that learn programming for the first time (Python, then Caml) don't want to go back to Python once they've tried Caml. Some others don't like it. You'll have to try to know
* Pass-by-assignation is nice, but not the easiest thing to fully understand... For example, this code
Code:
L = [ 1, 2 ]
def f(L) :
L[0] = 3
L = [ 4, 5 ]
L[1] = 6
return L
print(L, f(L), L)
is a common way to make life harder for beginners... (there's several traps if someone want to try
)
** yes, that's a troll, but I assume it