How to start learning formal language theory I sincerely apologize if this is not appropriate in this stack Q&amp;A, though it seemed the most fitting.

I want to learn formal language theory, as well as generating grammars etc. The purpose is primarily from a programming perspective (and from pure interest), not from academic requirements. My current state of knowledge includes basic college-level math (very far from good skills sadly), and of course programming skills. 
Which math and logic fields should I explore. What is the best way to learn it (other than majoring in mathematics)? 
Specific resources are welcome (as is general direction I should follow).

Also - what are skill requirements to properly learn the topic and understand it to the degree it may be useful in programming?

EDIT: my interest in this branch of mathematics started once I learned regular expressions and wanted to "delve deeper"
Theory of computation by M. Sipser is interesting per se. For introduction you have to practice and go in following sequence. 


Regular language and automata 
Context free grammar and expressions 
Pushdown automata
Non context free grammar 
Lr(k) grammar 
Turing Machines 


If interest level drops keep reading a fun book 
https://en.wikipedia.org/wiki/A_New_Kind_of_Science