how old are you?
it's easier when you're younger, (you have more time and your brain is more plastic)
honestly, yes, but it does take time.
your question about learning advanced programming...
sure it's possible be very advanced and self taught, but walk before you can run, and crawl before you can walk.
if you're absolutely new to programming, then most of your learning is going to be thinking about how programs hang together, if I do this then that happens, but if I do this with that setting turned on then that happens etc.
Things that can be modelled with simple flow charts.
Make your learning to crawl steps in programming with something that's setup for this, BYOB is a pretty cool way to start in this fashion, making you think about what you want to do, and making you lay it all out to decide how you'll get there.
Once you're comfortable with how to organise the flow of a program, then you should move on to a lower level language, (C++ C# Java etc)
A lot of advance programming isn't some kind of hidden secret, it's a lot of knowing the basics really really well, and applying them in a good fashion.
how can you expect to gather data from a database if you don't know how relational databases work? how could you make a program that processes any kind of data if you don't appreciate how system flow, how can you draw a brilliant, semi transparent box for your window if you don't know how to draw a window, or don't know how to set a colour etc...
it's possible to learn the basics yourself, it's possible to master the basics yourself, it's possible to master more advanced skills yourself. -it'll just take a while. (and a fair amount of dedication)