Tutti hanno (abbiamo) ragione.
La cosa che però deve essere chiara è che:
1) imparare a scrivere un programma in un linguaggio X qualsiasi
2) imparare a programmare
sono due concetti totalmente diversi.
Nel lavoro di un programmatore, la scelta del linguaggio viene fatta in relazione a diversi fattori (adeguatezza al progetto, prestazioni richieste, tempi di sviluppo attesi...) ma ciò che renderà valido il tuo programma sarà per il 99% la tua capacità di risolvere i problemi.
Detto questo, puoi iniziare con il linguaggio che preferisci. Io personalmente consiglio di partire dal "pensare da programmatore", quindi concentrarsi sugli algoritmi e sulla risoluzione di problemi.
Scegliere come primo linguaggio il linguaggio X solo perchè X è il più utilizzato al mondo (o semplicemente quello per il quale esiste ancora tanto codice?) non è una giustificazione secondo me molto significativa, stiamo parlando di "imparare" non "lavorare", quello arriva dopo un paio di anni almeno, prima devi farti le ossa e visitare almeno 2-3 linguaggi per apprezzarne le differenze e sviluppare una mente critica.
Per cui, sempre secondo me, dovresti partire da linguaggi forse non potenti (che lo sono solo nelle mani di Programmatori molto navigati) come il C (linguaggio in se obsoleto, va bene per uso didattico in ambito di gestione basilare dell'architettura o per precisi software di basso livello come driver) e C++.
Il mio suggerimento sarebbe quello di pensare a linguaggi a più alto livello, come il python, nel quale pensi all'algoritmo più che alle problematiche dell'ambiente in cui lavori. Java e C# potrebbero essere scelte altrettando valide, ma essendo linguaggi orientati agli oggetti devi entrare in un'ottica di sviluppo particolare.
Sia chiaro, puoi anche iniziare con il C++, ma allora prendi un bel libro cartaceo da n-cento pagine (con n>5) e parti dalle basi, ma secondo me ti stufi prima :)