Tieni conto che più si cerca di semplificare le cose, più il supporto per farlo diventa complesso.
A parte la tiritera sul fatto che i nuovi linguaggi ad alto livello condizionano, a mio parere, il cervello delle persone che iniziano da poco a programmare, inserendo facility un pò troppo semplici e molto standardizzate, limitando alla fine la dinamicità intrinseca del programmazione, ci sono anche dei limiti.
Tenendo conto che lo scrivere 3/4 righe di codice per leggere e modificare un file credo sia già un traguardo, teniamo anche presente che la sintassi usata nasconde un qualche migliaio di reali righe di codice per eseguire le operazioni (librerie).
Un linguaggio di programmazioen deve poter essere il più possibile slegato dall'uso che ne farà l'utente finale (ossia il programmatore), cercando di essere il più dinamico possibile, anche eliminando i giri obbligati che vengono comunque risolti dal codice sottostante, ma senza togliere la possibilità di usarlo un pò per tutto.
Nel caso in cui serva una specializzazione di una determinata funzione, è il programmatore che la farà sulla base degli strumenti che offre il linguaggio.
Gli esempi che ti ha postato vuott, possono sembrare complicati ma in realtà non lo sono affatto, in quanto ha usato il minimo indispensabile per effettuare un determinata operazione. Se parliamo poi del modo logico con cui affrontare e risolvere un problema, bè, qui il discorso si amplia, in quanto per raggiungere uno scopo le strade possono essere svariate, e non sempre quella più semplice è quella più dritta.
Comunque, un minimo di base bisogna pure crearsela, e non è un approggio giusto quello di pretendere una risoluzione se non si sà neppure che ci sono le strade per raggiungerla, nè si sia intrapresa almeno una di queste strade. Una volta capito un meccanismo, si può sempre migliorarlo successivamente.
Il mio consiglio è intanto di provare i suggerimenti che hai ricevuto, poi si vedrà di evolverli...
Tocca sudare prima...