Beh, secondo me ha senso una risposta del genere: "tutti e nessuno"! Mi spiego meglio.
Ogni linguaggio di programmazione ha determinate caratteristiche e nasce per un determinato scopo (principalmente). Dirti di studiare l'algoritmo della ricerca del minimo o massimo di un array ("contenitore" di dati, di variabili) ha poco senso, a parte che si tratta poi di semplice ragionamento, ma l'ambito in questo caso sembra piuttosto didattico e comunque, se vogliamo, ogni algoritmo ha dei suoi campi di applicazione. Possono tornare più utili in genere gli algoritmi di ordinamento, per valutare efficienza e costo computazionale di un algoritmo (ad esempio, numero di operazioni asintotico a N2). Anche qui, nella pratica, trovi già pezzi di codice e funzioni già predefiniti, la corretta sintassi per quel linguaggio. Tornando a noi: allora, cosa è importante??
Non una lista di algoritmi in sé, ma una serie di concetti, ovvero:
- variabili semplici, dati strutturati (ogni linguaggio ha la propria sintassi e gestione delle variabili in memoria)
- condizioni (struttura if-else)
- cicli (per ripetere es. 100 volte un'operazione, senza diventare stupido e scrivere codice extra del tutto inutile)
- funzioni, procedure (maggiore astrazione e pulizia del codice)
Principalmente sono questi i concetti importanti. Poi ogni linguaggio ha delle "particolarità" specifiche (chiamiamole così), dato che è stato pensato per un determinato scopo (programmazione web, programmazione strutturata, programmazione orientata agli oggetti, ecc).
Lo studio del secondo (o terzo, ecc) linguaggio di programmazione sarà più semplice dato che i concetti precedenti (variabili, cicli, condizioni, funzioni) li conosci, si tratta di studiare la nuova sintassi e le particolarità che offre quel determinato linguaggio.
Sempre fondamentale nella programmazione, teoria + pratica!