it just isn't necessary because of the increased amount of processing power and memory available.
Ter memória barata, discos enormes e processadores rápidos não é a única coisa que libertou as pessoas da necessidade de ficar obcecada em cada byte e ciclo. Compiladores agora são muito melhores do que os humanos em produzir código altamente otimizado quando isso é importante.
Além disso, não vamos esquecer o que estamos realmente tentando otimizar, que é o valor produzido para um determinado custo. Programadores são muito mais caros que máquinas. Tudo o que fazemos para que os programadores produzam programas de trabalho, corretos, robustos e com todos os recursos, mais rápidos e mais baratos, leva à criação de mais valor no mundo.
My question though is how do people feel about this "hiding" of lower-level elements. Do you older programmers see it as a godsend or an unnecessary layer to get through?
É absolutamente necessário realizar qualquer trabalho. Eu escrevo analisadores de código para viver; se eu tivesse que me preocupar com a alocação de registros ou o agendamento de processadores ou qualquer um desses milhões de outros detalhes, então eu não gastaria meu tempo corrigindo bugs, revisando relatórios de desempenho, adicionando recursos e assim por diante.
Toda a programação é sobre abstrair a camada abaixo de você, a fim de criar uma camada mais valiosa sobre ela. Se você fizer um "diagrama de camadas" mostrando todos os subsistemas e como eles são construídos uns sobre os outros, você verá que existem literalmente dúzias de camadas entre o hardware e a experiência do usuário. Eu acho que no diagrama do Windows Layer Cake há algo como 60 níveis de subsistemas necessários entre o hardware bruto e a capacidade de executar "hello world" em C #.
Do you think younger programmers would benefit more learning low-level programming BEFORE exploring the realms of expansive libraries?
Você coloca ênfase em ANTES, então devo responder sua pergunta de forma negativa. Estou ajudando um amigo de 12 anos a aprender a programar agora e é melhor você acreditar que estou começando com eles em Processando. js e não x86 assembler. Se você começar um programador jovem em algo como Processing.js
, eles estarão escrevendo seus próprios jogos de shoot-em-up em cerca de oito horas. Se você os iniciar no montador, eles estarão multiplicando três números juntos em cerca de oito horas. Qual você acha que é mais provável engajar o interesse de um programador mais jovem?
Agora, se a pergunta for "os programadores que entendem que a camada n do bolo se beneficia da compreensão da camada n-1?" a resposta é sim, mas isso independe da idade ou da experiência; Sempre é possível melhorar sua programação de nível superior, entendendo melhor as abstrações subjacentes.