Pokud učitel odpovídá takto kategoricky na takto obecně položený dotaz, nemyslím si o tom nic dobrého. Jistě, jazyky mají odlišnosti a hodí se různé jazyky pro různá použití, ale často je na výběr z více alternativ. Může se hodit naučit jazyky z různých kategorií:
Kontrola typů: statické typování (např. Java, C, C++, Rust, TypeScript) vs. dynamické typování (např. Python, JavaScript, Ruby, PHP). Mám trošku pocit, že svět směřuje trošku směrem ke statickému typování, ale může to být můj subjektivní bias. Možná bych řekl, že pro univerzálnost je znalost jen statického typování lepší než znalost jen dynamického.
Správa paměti:
A. Automatická dynamická – tak to má velká část dnes používaných jazyků (Python, Java, JavaScript, Ruby, PHP, …).
B. Ruční – programátor se sám stará, kdy který kus paměti uvolnit. (C, C++, Pascal, …)
C. Automatická při překladu – zatím snad jen Rust. Zajímavý způsob, může postupně nahradit ruční správu paměti. Automatickou dynamickou správu paměti IMHO jen tak kompletně nenahradí. Nicméně asi bych to nedoporučil na začátek.
Paradigma (imperativní/funkcionální/logické/…): Drtivá většina jazyků bude imperativní s funkcionálními prvky, které se prosazují čím dál tím více. Čistě funkcionální jazyk (např. Haskell) se IMHO moc neprosadí a jeho znalost je spíše zpestřením a zajímavým cvičením.
Jistě, občas hranice mezi kategoriemi není úplně ostrá a některé kategorie by šlo dělit i více, už tak ale mám pocit, že toho píšu až moc.