I would suggest C# is a good language for starting on Windows. It's popular, widely supported, and doggone easy to write GUI applications.
If you are working on Linux, Perl is good. It's almost everywhere, and can get everything done that isn't hard-real-time. It's also optimized for text processing.
The traditional route for ground-up understanding is C or C++. Those force you to deal up-front with a lot of low-level machine issues that only come up later in other languages.
If you are looking for the pure abstract programming language without worrying about usability, Scheme is likely your best bet.
Each of those languages provokes strong responses for and against. When choosing a language for a project, it is a engineering decision based on the tradeoffs.