Все наоборот!
Никакие книги не нужны.
Все, что опубликовано в бумажном виде - в топку. Это полный отстой.
Программеры совершенно не способны ничего объяснять, они максимум умеют только показывать.
Первым языком может быть любой, какой вам интересен.
1. Определиться, что вы хотите писать и зачем.
Нет программиста, который знал бы и умел бы все.
Какие программы вы хотите писать?
Для чего?
Игры, или для бизнеса или для интернета, или для науки?
Вы хоите после завершения обучения устроиться на работу программистом, или только подрабатывать, или это для вас вообще не заработок, а увлечение? Или вы хотите писать программы для облегчения своей работы и прочих дел? Или вы хотите сделать свой динамический сайт? Или делать сайты на продажу или на заказ?
Кем и где именно вы хотите работать?
Вы хотите писать программы для интернета, или оконные для Windows, или кроссплатформенные?
Нужно ли для ваших планов уметь создавать удобный интерфейс, реализовывать сложные алгоритмы и выполнять сложные расчеты, работать с текстами, базами данных, графикой, аудио, видео, интернетом и локальными сетями, принтерами, микроконтроллерами?
От этого зависит, что вам надо изучать в первую очередь и без чего можно обойтись вообще.
2. Выбрать язык, среду (программу для создания программ) и библиотеки/платформы/фреймворки
Причем выбирать надо не только и не столько язык, сколько среду разработки и библиотеки, которыми вы будете пользоваться. Если вы хотите делать коммерческие продукты, а денег заплатить за платную среду разработки у вас нет, то вам надо первым делом подобрать бесплатную, но мощную среду, с конструктором форм и приличной библиотекой, которая хорошо установится на вашу ОС и вообще будет вам удобна, и учить ее языки и ее диалекты.
3. Освойте начальные понятия и ищите прежде всего ЗАДАНИЯ. Какие программы можно и нужно написать.
И только потом ищите образцы написания этих программ и рассматривайте, как они написаны.
Пользуйтесь сайтами. Ищите те, где много кода и мало слов.
Находите образец кода, решающего вашу задачу - копируйте его к себе в среду, подставляйте свои данные и смотрите, работает или нет.
Не работает - ищите другие образцы, проверяйте, срввнивайте. Представлйте себя компьютером, исполняющим вашу программу, и смотрите, что в ней невозможно выполнить однозначно, и как надо написать код, чтобы его стало можно понять однозначно и так, как вам надо. И экспериментируйте - вносите разные изменения, пока не заработает. Разумеется, осмысленные, основанные на преддположениях о причине ошибке и о том, какие варианты могут сработать.
Работает - все равно экспериментируйте, смотрите, а что будет, если сделать вот так и вот эдак.
Конструктор форм лучше всего вообще изучать без образцов, экспериментально. По очереди поставить на форму каждый имеющийся в вашей среде контрол, поизменять все его свойства и посмотреть, что получается.