Porque Ninguém gosta de low level?

Eu como um grande amante do low level, OS development e aplicações desktop, me questiono sobre o medo que as pessoas tem dessa área. Quando te perguntam a sua área dizem: "Tu é front ou back?", ninguém nem chega a cogitar que tu gosta de outra coisa, por isso questiono. Será a dificuldade do low level? Medo de conceitos obrigatórios como Stack e Heap? Baixo nível de abstração? Conteúdo "menos mastigado", com os sites de doc que aparentam ter saído diretamente de 2004? Queria saber a opinião dos alheios a respeito.

"Ninguém" é figura de linguagem, né?

Não sei se é medo que as pessoas não se envolvem. Certamente alguns. Já vi umas coisas descabidas.

Mas acho que é falta de visão sobre isso, falta de ser apresentado, falta de procurar algo, as pessoas adotam o que despejam em cima delas, elas não decidem ficar fora disso, outras pessoas decidiram por elas que deveriam ver outras coisas. Ou seja, é muito mais sério. Também tem a questão do emprego. Como tem menos vagas, as pessoas não querem se meter com isso. Também tem menos concorrência, mas isso não importa muito. Mas também tem concorrência mais qualificada, talvez lá no fundo a pessoa possa saber que "não dá para boca dela". Programação mais concreta exige um conhecimento mais aprofundado, os erros aparecem mais, tornam o uso mais inviável, a programação mais abstrata meio que aceita qualquer coisa.

É algo que exige um nível de atenção maior. Você vê que nem escrever as pessoas se preocupam mais. Eu inclusive tenho dificuldade, preciso de esforço extra. Acaba dando mais trabalho e sendo mais chato.

Não sei se LL é tão mais difícil assim, acho que só exige que realmente se aprenda a computação.

Por incrível que pareça o LL pode ter um nível razoável de abstração. Depende do que está fazendo e do jeito que a pessoa gosta. De qualquer forma as pessoas têm mais dificuldade com abstrações. Isso tem estudos mostrando. Caso contrário seriam boas de matemática. Parece contraditório, mas quem vai bem com matemática, que é abstração, vai bem de LL.

Conteúdo menos mastigado afasta as pessoas mesmo. Esse é um dos principais fatores.

É aí que eu falo de "programador de verdade" e os outros programadores. Sei que algumas pessoas não gostam, mas precisa de algum termo para identificar essas diferenças. Se alguém achar melhor, eu aceito. Quem faz LL costuma saber programar qualquer coisa. Os HL tendem a não saber, só sabem seguir receitas de bolo. Não foi eu que criei o conceito, só estou relatando ele.

Gerenciamento de memória é provavelmente o segundo assunto que mais gosto na computação, então pode ajudar: https://pt.stackoverflow.com/q/3797/101.

Fora isso, tem que consultar uma junta de sociólogos, psicólogos, filósofos e outros de humanas.

Faz sentido para você?

Espero ter ajudado.


Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).

"Ninguém" foi uma figura de linguagem sim. Gostei muito da sua opinião e compartilho dela. Seria muito mais interessante se as instituições de ensino apresentassem uma visão mais afundo dessa área, já que ela envolve os principais conceitos da computação. É meio difícil ser um programador não sabendo como um computador funciona. Em questão das vagas, as oportunidades de fato são mais escassas, esse problema poderia ser resolvido no futuro (eu acho) com a abertura para o horizonte do LL. Mas hoje (principalmente no Brasil), o setor de automação, robótica e áreas "software-hardware" foi morto e enterrado.
Acho que com o advento da IA, a coisa pode melhorar pra quem programa LL. Não sei quanto tempo vai demorar para as IA's conseguirem ter um nível de profundidade, mas pro HL elas já atendem alguns requisitos. Mas pra níveis de abstração, contextos mais complexos / amplos, quem sabe LL vai ter vantagem sobre a IA -- Claro que, até certo ponto e até certo tempo -- Mas é isso, Eu mesmo estava estudando programação mais voltado pro HL e "desisti", quero seguir o caminho difícil. Dei um tempo nos estudos porque comecei a trabalhar (não com programação) e estudar para PMPE. Quero desenvolver dispositivos para área de segurança, sites não vão me ajudar com isso, então preciso descer os níveis da máquina para desenvolver as minhas e em paralelo a isso seguir meu sonho de ser Policial...
Parabéns pelo nobre sonho! Em relação a IA, de fato já vi ampla utilidade, andei utilizando para contextualizar algumas docs ou comentários incompletos e obtive demasiado sucesso. Muito bom para aprender algum assunto e principalmente resolver bugs.

Acredito que seja por melhor empregabilidade e falta de necessidade desse conhecimento profundo no início. Para você começar a fazer apis rest e front não precisa ter um conhecimento profundo de low level. Você pode muito bem aprender Typescript/HTML/CSS/network e já estar pronto para o mercado. Para a maioria das empresas é muito melhor uma pessoa que vai criar suas APIs/front rapidamente e tem uma experiência no domínio que ela trabalha do que alguém que saiba programar um kernel mas demoraria muito para fazer essa API. É claro que com o passar do tempo se essa pessoa quiser evoluir na carreira provavelmente vai precisar dos conceitos de low level para melhorar a performance do que ela coda. Existem empresas que vão preferir essa pessoa que sabe programar um kernel, mas a quantidade é muito menor, o mercado é muito menor.

Exatamente. As boas empresas com vagas e salários elevados sabem reconhecer se o programador realmente domina oque faz.

Cara eu sou muito fã de low level, é que as vezes eu não sei por onde começar, eu adoraria por exemplo fazer meu próprio OS, pegar sei lá um Linux e modificar o código num sei, eu não conheço tanto atualmente to fazendo um banco de dados com C++ por enquanto, eu escrevi no TabNews sobre ele, da uma olhada nos recentes, mas voltando ao assunto low level é muito legal sou louco pra aprender mais, porém é um pouquinho difícil achar conteúdo que explique direitinho, eu acho que a galera tipo gosta mas não tem coragem de botar a mão na massa porque acha muito dificil ja que a maior tendencia são sites e apps, ainda mais lotado de cursos front-end/back-end por ai prometendo rios de dinheiro. Mas sendo sincero quando me perguntam minha área meu sonho é dizer que desenvolvo jogos eu queria muito, to fazendo um game na Unity, alias o meu banco de dados é justamente pro game ksksks. Eu fico chateado muitas vezes de ficar limitado a Sites e apps, mas fico mais chateado ainda de não ter um emprego KKKKKKKKKKKKKKKKKKKKK

Exato!! Os vendedores de sonhos vão pelo caminho mais fácil, por isso eles só te propoem HTML,JS e Python. Já desenvolvi protótipos de Kernel e Linguages de programação posteriormente. Creio que esse conteúdo possa te ajudar: https://wiki.osdev.org/Creating_an_Operating_System#Phase_0:_Introduction Também aconselho ver o repositório: https://github.com/pritamzope/OS
Caramba vou olhar os links, muito obrigado

Verdade! Compartilho do seu mesmo pensamento.

Acredito que essa percepção de poucas pessoas gostarem de low level também se deve ao fato que os amantes de low level acabam sendo também low profile, então o pessoal do Full Stack, Dev Web etc acabam se destacando na Internet, por estarem se expondo mais nas redes sociais etc.

Eu, por exemplo, gosto bastante do estudo da computação no nível mais baixo, e estou atualmente me dedicando ao estudo de Cybersegurança e Hacking, para isso estou revisitando as bases e fundamentos da computação de uma forma bem mais aprofundada do que quando fiz minha graduação.

Parabéns. Como dito anteriormente: Se tu não sabe como um computador funciona, não és programador de respeito.

MUITA gente gosta de low level, inclusive eu, que adoraria trabalhar com embarcados e avionics, MAS, é uma área bem difícil de entrar. É natural que se busque mais o que tá em alta em termos de oportunidades e dinheiro.

Eu acho que geralmente é mais comum as pessoas serem front-end e back-end e não porque tem dificuldade em low level, ou até mesmo por serem iniciantes na área e não conhecer todos os conceitos e áreas.

Certamente existe uma falta de apresentação aos conceitos primordiais da computação.

Opa man, bom eu acho que o low level é pouco divulgado. Não sei para outras pessoas mas quando comecei a me aproximar dessa área da computação esses assuntos não apareciam tanto... Hoje eu comecei a pesquisar e tenho gostado para caramba!

Pura diversão, os python only piram...

Na minha visão é porque áreas que envolvem low level demandam muito mais conhecimento técnico do que desenvolvimento web. Com alguns cursos, Youtube, documentações (que na maior parte das vezes são muito bem explicativas e simples de entender) qualquer um consegue iniciar nessa área. Trabalhar com desenvolvimento de sistemas operacionais, por outro lado, envolvem conceitos bem mais complexos (na minha opinião, pelo menos), como gerenciamento de memória, escalonamento de processos, arquitetura de computadores etc, que você provavelmente vai ter que ler uns bons livros bem densos para entender realmente bem.

Errado não está, o meu ponto é que arquitetura de computadores e gerenciamento de memória são conhecimentos essenciais para qualquer programador. Obrigado pelo comentário

Acho que o fator principal é o conteúdo menos mastigado. Eu tenho bastante interesse por low level mas tem pouco conteúdo sobre isso na internet em relação a web dev, então acabo nem procurando sobre, ainda mais porque eu não pretendo trabalhar com isso, então seria como um hobby, o que não dá tanto incentivo

Eu comecei nessa área ai como programador de sistemas embarcados, mechendo com C e Assembly. Hoje migrei um pouco, trabalho mais com alto nível, ainda no mundo embarcado mas com Android Embarcado.

Eu vejo que a própria área de embarcados não exige tão fortamente o low level como já foi um dia. Lógico, ainda é importante, ainda é necessário, porém hoje em dia já existem abstrações e linguagens mais alto nível que podem ser usados para programar sistemas embarcados.

As próprias empresas de microcontroladores já fornecem bibliotecas de HAL (Hardware Abstraction Layer) em que tu pode usar API para configurar periféricos sem ficar configurando reigstradores diretamente.

Além disso, já temos linguagens mais alto nível integradas a alguns microcontroladores, como Python e Javascript.

Bom, eu nem entrei na área ainda, mas estou estudando back-end a algum tempo e vou iniciar faculdade semana que vem e lhe digo: eu AMO essas coisas mais low-level, entretanto, vejo que a barreira de entrada é muito maior, tanto para começar a ser produtivo quanto pelo fato de muitas coisas que um iniciante poderia fazer com resoluções low-level já é feito de maneira muito mais rápida e ágil no high level.

Comecei com Python, agora estou estudando Java e já gostaria de estudar um C ou C++ pra entender como funciona os SOs e IoT em si (talvez até Assembly para entender a conexão de software com hardware na unha), entretanto, não é isso que o mercado quer ou espera de um novato e para sair do campo abstraído e navegar nas profundezas acaba demandando mais tempo e exposição do que alguém que precisa pagar as contas consegue dedicar.