I take the opposite view and would suggest a lower-level language like C as a first programming language. Yes, there is a slightly steeper learning curve, but there is a reason for that, and it will help you through any other language your take up from then on.
In a lower-level language, you (not some opaque class implementation of X) are responsible for managing each byte of memory, protecting against reading/writing beyond the end of your allocated space (automatic or dynamic storage), validating all your input/output, locating each needed position withing arrays, managing line-endings, etc..., and a thousand other fundamental aspects of programming that higher-level languages work hard to hide from you.
By learning to code at a fundamental level and developing good habits for input/output validation, file handling, memory management, etc... at a low level, your transition to any language is made easier and shorter because you will understand how the higher-level paradigms are implemented and how each of those fundamental aspects of programming is working behind the scenes.
In the continuum of languages from machine code, to assembly, to C, to your so-called object-oriented languages of C++, Java, and the rest, C occupies a unique position. It provides many of the features of a higher-level language while providing complete hardware-level control.
While others may suggest you may be able to get more done quicker starting with a higher level language, you will never have a better opportunity to learn programming from a fundamental level than by starting at the lower end of the scale. Transitioning to any of the languages from lower-to-higher level will give you much more of an understanding of what the higher-level languages provide, as well as clear insight to the limitations they have, and most-importantly -- why.