Executando verificação de segurança...
2

Por onde (re)começar ?

Bom dia pessoal, ultimamente sinto que tenho alguns gaps no meu aprendizado de programação, já trabalho na área a quase 4 anos e estou para me formar na faculdade ed engenharia de software. Porém alguns conceitos básicos como "Como funciona a memória", "O que são threads", "Como o computador functiona" estão vagos em minha mente, eu sei fazer, porém não sei explicar com precisão e gostaria de reestudade por conta esses tópicos. Vocês conseguiriam me ajudar, dando dicar de livros ou alguns cursos que eu possa fazer.

Pensei em seguir este roadmap (https://roadmap.sh/computer-science), o que acham ?

Carregando publicação patrocinada...
3

Acho super válido seguir um roadmap para ajudar nos estudos, pois sempre haverá algum tópico que vamos esquecer de estudar ou nem mesmo lembrar da existência naquele momento. Já que você possui uma base de conhecimento na área, conseguirá filtrar de maneira mais eficiente aquilo que é interessante ou não para você dentro do mesmo. Faça isso, siga-o!

Sobre os assuntos "como funciona a memória", "o que são threads" e similares, sempre consolidei meus conhecimentos a partir de livros da linguagem que considero principal na minha stack. No momento, é o C#, mas já li alguns bons livros de C/C++ que me ajudaram consideravelmente a melhorar meu entendimento de como utilizar a Concurrency API corretamente e como sempre pensar em eficiência de memória, mesmo dentro de uma linguagem de alto nível como C#.

Independente da sua stack, procure por dev blogs oficiais dela, pois garanto que existe muito ouro não garimpado ali. No ano passado, li um dev blog sobre como Asyn/Await funciona (https://devblogs.microsoft.com/dotnet/how-async-await-really-works/), tanto nas primeiras versões do C# quanto nas mais atuais, e os motivos que levaram a Microsoft a tomar as decisões de design sobre a mesma. Nunca havia lido algo parecido em nenhum livro.

1

Obrigado pela resposta. Hoje trabalho com NodeJS e tudo é bem abstraido, pensei em estudar C/C++ (Já que Node é construido em cima destas linguagens) ou até mesmo um Java (Linguagem secundaria que gosto muito). Pois tem muitos conhecimentos que ainda são vagos como o que você citou "Concurrency API".

1

C/C++ e/ou Rust são boas opções para você que quer consolidar seus conhecimentos em nível "baixo nível". Particularmente, sou apaixonado por C/C++, mas tenho uma quedinha amorosa pelo Rust, pois acho muito interessantes os conceitos que regem a linguagem.

Java também é uma ótima escolha. Existem diversos conteúdos que explicam a relação entre o Java, a JVM e o sistema operacional. Na faculdade, aprendi Java. Muitos detalhes sobre como o processador se comunica com nosso código eu aprendi estudando a JVM.

A Concurrency API nada mais é do que um nome elegante para as ferramentas que nos ajudam a lidar com concorrência em nossas aplicações.

1

Show demais, vou usar o C/C++ por acabarem sendo utilizadas pelo NodeJS, porém Rust é uma ótima opção também. Acha válido estudar algum livro de sistemas operacionais ?.

Desde já agradeço pela ajuda!

1

Todo conhecimento é válido! Talvez você não use ele hoje, talvez não use amanhã, mas todo conhecimento faz parte da construção de algo maior.

Se você sente vontade em estudar sistemas operacionais, faça-o. Garanto que algo de bom você vai tirar dos seus estudos.

Agora a minha opinião pessoal: acho que seria bacana se na parte de sistemas operacionais você estudasse sobre o unix/linux.

1

Vou fazer isso, você tem algum livro em mente que possa me recomendar, pensei em iniciar por Organiazação estruturada de computadores - Tanenbaum ou Sistemas operacionais também do Tanenbaum, estudei alguns capitulos no inicio da graduação, porém não dei o devido valor.

Vou iniciar para já os estudos em paralelo com o que já estudo em relação a minha área de trabalho.

1

Sendo super sincero com você, não li livros o bastante sobre o assunto para lhe recomendar uma leitura que seja consistente e precisa no que diz respeito ao conteúdo. Infelizmente vou ficar devendo, mas vou lhe passar um link de onde já peguei alguns PDFs (todos gratuitos) sobre o assunto. Espero que ajude.

https://www.guiafoca.org/