Все достигается упражнениями. Так что (1) надо найти задачник. Мне нравится задачник Абрамов, Гнездилова, Капустина, Селюн, еще кто-то, "Задачи по программированию". Там порядка 1052 задачи на разную тематику. В принципе, можно брать оттуда. Единственное, что некоторые современные скриптовые языки отошли от машинного представления в некоторых моментах. Так в Питоне свое представление целых чисел, которое исключает переполнение. Что делает ряд упражнений тривиальными.
Далее, (2) надо выбрать язык программирования. Тут дело вкуса и большой холивар. Потом надо найти мануал по этому языку. Классический путь это начинать с Паскаля (Например, Абрамов, Зима, Начала информатики). Особенно, если ассемблер близок. Но возможны варианты. Разве что Haskell не рекомендую...
Далее, (3) надо выбрать среду. Есть вариант online
ideone, где online можно потрогать разные языки. Еще вариант codepad. Там выбор языков достаточно хорошо. Единственный минус - мало возможностей отладки (логи все). И нет графики, но это отдельный вопрос. Чистой графики найти сейчас достаточно сложно, нужно искать либы. Обычно это либо часть GUI, либо OpenGL (DX), где все ориентировано на большую производительность и, часто, крутые ASIC-и, что добавляет много деталей.
Большинство языков изначально затачивается под Linux, так что все-таки я бы советовал начинать оттуда. Хотя Windows тоже вариант, но многие идеи, если конечно не брать что-то заточенного исключительно под винду. Если не очень хочется, могу создать акаунт на своем виртуальном сервере (Gentoo Linux), могу доставить каких-нить приблуд (FreePascal уже там есть). И можно будет работать в терминалке типа Putty: запустили, залогинились, запустили, работает не выходя из среды. Но на сервере не стоят иксы, поэтому текстовая консоль. Если это не пугает.
Ну а вообще исходя из поставленных задач, пункты (1) - (3) можно варьировать.