C'est relatif de toute façon, si tu demandes à un maçon il va te dire que la programmation c'est un truc abstrait, un programme c'est des données, tu peux pas le toucher. Certes tu vois ce qu'il fait à l'écran (et encore, un programme qui n'affiche rien fait quand meme des choses...), mais l'entité abstraite derrière est abstraite.
Après, il y a bien sur différents niveaux d'abstraction. Quand tu codes en C par rapport à d'autres langages (langages fonctionnels notamment), tu as vraiment les mains dans le cambouis, tu dois gérer l'allocation de mémoire, etc. Tu dois savoir comment fonctionne la machine.
Avec des langages plus abstraits, tu peux faire des choses plus évoluées sans te soucier de ce qui se passe en interne.
Et puis derrière tout ça il y a tous les aspects théoriques de la programmation... Tu peux faire de la programmation sans jamais toucher un ordinateur ou écrire du code, raisonner sur du lambda calcul, de la logique ou de la sémantique des jeux, et tout ça je pense que c'est indéniablement très abstrait.