Прежде чем начать изучать языки программирования?
стоит понять Архитектуру ЭВМ, Основы ОС и базовый АСМ. Что бы писать программы для компьютеров надо(внезапно) понимать хотя бы основные принципы работы компьютеров. Ассемблер учить не обязательно, а понимать почему в байте 8 бит на уровне архитектуры - достаточно важно, что бы потом не возникало вопросов "почему нельзя создать переменную которая бы занимала места столько, сколько нужно для хранения именно текущего значения, а не больше, чтобы память экономить", а то тут часто подобную дичь спрашивают. Так же - ОС на уровне как работает ФС, что такое страничная память, как работает адресация, кодировки символов и прочие составляющие. Если быдлокодить - это вообще не нужно знать, если писать что-то более-менее серьезное - без этого уйдет много времени на понимание что и как сделать "чтоб работало". Другой момент что это не обязательно делать ДО обучения, вполне можно совместить.
ИМХО, перед началом изучения любого языка программирования достаточно разобраться в след. темах:
– системы счисления,
– представление чисел на компьютере,
– текстовые кодировки,
– основы теории множеств и алгебры логики,
– понятие о сложности алгоритмов.
Всё из этого достаточно освоить на уровне средней школы, но твёрдо.
Всё остальное учится параллельно с языком программирования.