Come "nuovo" programmatore (ho scritto per la prima volta una riga di codice nel 2009), ho notato che è relativamente facile creare un programma che presenta elementi abbastanza complessi oggi con cose come .NET framework, ad esempio. La creazione di un'interfaccia visiva o l'ordinamento di un elenco può essere eseguito con pochissimi comandi ora.
Quando stavo imparando a programmare, stavo anche imparando la teoria dell'informatica in parallelo. Cose come algoritmi di ordinamento, principi su come l'hardware funziona insieme, algebra booleana e macchine a stati finiti. Ma ho notato che se avessi mai voluto provare alcuni principi basilari che avevo imparato in teoria, era sempre molto più difficile iniziare perché tanta tecnologia è oscurata da cose come librerie, framework e sistema operativo.
40/50 anni fa era richiesto un programma efficiente in termini di memoria perché non c'era memoria sufficiente ed era costoso, quindi la maggior parte dei programmatori prestava molta attenzione ai tipi di dati e al modo in cui le istruzioni sarebbero state gestite dal processore. Al giorno d'oggi, alcuni potrebbero sostenere che a causa della maggiore potenza di elaborazione e della memoria disponibile, tali preoccupazioni non sono una priorità.
La mia domanda è se i programmatori più anziani vedono innovazioni come queste come una manna dal cielo o un livello aggiuntivo attraverso cui astrarre, e perché potrebbero pensarlo? E i programmatori più giovani traggono maggiori benefici dall'apprendimento della programmazione di basso livello PRIMA di esplorare i regni delle librerie espansive? Se è così allora perché?