Изучаю программирование на языке С++ пока что, т.к вроде бы он наиболее перспективен.
А мужики-то не знают...
но как создавать программы, которые не в чёрном окошке вылезают, а подобны всем современным программам.
Современные программы - слишком размытое понятие. Некоторые никуда не вылезают, вы даже черного окошка не увидите. А у некоторых вообще окошко отсутствует (как устройство) и никогда не появится. Поэтому я бы вам рекомендовал сначала как-то обозреть окрестности - какое вообще бывает программирование. Не какие языки используются, а какие задачи решаются. Выбирать все равно придется, лучше сделать это осознанно.
Если вы решили взять С++ как первый язык - ну пусть будет С++, какие-то базовые вещи (структуры данных, алгоритмы и прочее), общие для всех языков, все равно так или иначе изучить придется.
хочется писать очень хорошие программы
Хорошие программы - это тоже широкое понятие. Помимо эффективного использования памяти и процессора (которое вы упомянули) есть еще эффективность в плане командной работы (не всю же жизнь вам писать в одиночку, рано или поздно кодом придется делиться), эффективность в плане поддержки и развития (насколько просто будет править баги и раширять функциональность), юзабилити (насколько удобно пользователю пользоваться вашей программой). И если вы хотите программу "с окнами", юзабилити вам заниматься придется. В этом плане могу посоветовать Алана Купера "Об интерфейсе" (3-е издание) и "Психбольница в руках пациентов" (обе книги примерно об одном и том же, но первая немного основательнее и академичнее, а вторая лучше объясняет, зачем это надо).
-- 04.10.2016, 01:58 --(минутка грустного юмора на тему юзабилити)