I dont know how old are you, but the best what you can do: go to university to study computer science, it it's not only about programming. You will need know how computers are working. What happens when you call function, ..... A lots of basic stuff you will need to learn to become good programmer.
If you really wanna dedicate you life to programing and don't or cannot go to university then definitely start with low level programing languages - assembler + C. Learn how to rewrite simple C code to assembler, recursion, memory allocation .... Code searching binary tree, linked list and other famous data structures in pure C (no c++). Learn how to create processes and threads, what is mutex, semaphore ... Code concurent server with berkeley sockets or try to implement some network protocol with raw sockets. And then write interpret of simple imperative language in C, than you will be sure that you are good programmer.
Next move on C++ and C#/Java, learn OOP, UML, GRASP, design patterns ..........
If you really wanna dedicate you life to programing and don't or cannot go to university then definitely start with low level programing languages - assembler + C. Learn how to rewrite simple C code to assembler, recursion, memory allocation .... Code searching binary tree, linked list and other famous data structures in pure C (no c++). Learn how to create processes and threads, what is mutex, semaphore ... Code concurent server with berkeley sockets or try to implement some network protocol with raw sockets. And then write interpret of simple imperative language in C, than you will be sure that you are good programmer.
Next move on C++ and C#/Java, learn OOP, UML, GRASP, design patterns ..........