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

[C++ 23] Alguém ainda se importa?

Com o boom das linguages de alto nivel vejo cada vez menos interessados na programação de médio/baixo nível, eu sou aficionado por C e C++ e não encontro ninguém que compartilha a mesma vibe, está a par de novidades, etc. A grande maioria estuda a reboque C 96 e da graças a deus por não precisar usar.

Se alguém se interessar na idéia seria interessante criar um discord ou algo do gênero pra trocar experiências, idéias, estudos, duvidas, etc.

Obs. Corrotinas são magia negra.

Adicionando o link para o discord:
https://discord.gg/8nAPAABb2M

Carregando publicação patrocinada...
4

Creio que você apenas sofra de um caso comum de bolha-DEV, amigo.

Apesar de hoje talvez não ter comunidades do mesmo tamanho de web e python, existe muita gente envolvida com C++ e espalhada em diversas comunidades de diferentes tipos de tecnologia: Desenvolvimento embarcado, desenvolvimento de jogos, programação competitiva, HPC, simulação computacional, dentre outros

Se fuçar um pouco voce encontra até servidores discord!

1

Acredito que você esteja certo, mas na minha visão partipando de diversas comunidades, sempre a espaço para linguagens de baixo nível, mas normalmente é a parte mais ninchada e que em sua maioria quem vai até lá é pra entender "o porque meu hello world não funciona", "como aprender C do 0", "como abrir um arquivo". Importante esclarecer que todos passamos por essa fase e já fizemos perguntas assim, mas em algum ponto passamos disso, e mesmo que aprender por conta seja o destino óbvio, compartilhar experiência com outros que "passaram da praia" agregue muito mais.

2

TODO MUNDO se importa (ou pelo menos deveria). C++ é a espinha dorsal do mundo moderno. Sem c++ não existe js, kotlin, java ou swift, só para começar a conversa. Todas as MANGAs tem representantes no comite resposável pela definição da linguagem.

1

Sei muito bem disso e gostaria de mostrar esse comentário pra pessoas que me dizem "C/C++ esta morrendo". Mas a realida que eu encontro, tanto em faculdade, grupos de interesse, comunidades em geral, Youtube, etc. É um enfoque quase exclusivo pra "línguagens web", por exemplo, me aponte um curso da Udemy de C++ 23 (ou C++ 20) em português e que não aborde o padrão de forma medíocre. Agora pesquise por "React Native JS", a realidade é outra, e pra ver a dura realidade procure por "C++ Vulkan" e encontre 1 ou 2 cursos realmente bons, mestrados em inglês por um Indiano.

5

Bruno, entendo completamente a tua frustração e vejo de onde ela vem. No entanto, gostaria de trazer alguns pontos à tona.

A Web é a Cara

Primeiramente, é inegável que há uma demanda muito maior por desenvolvedores web hoje em dia. O acesso simplificado e a presença onipresente da web levaram a uma concentração intensa nesse campo. E, de fato, a web se estabeleceu como o principal veículo para criar interfaces entre seres humanos e sistemas digitais.

A Pirâmide da Tecnologia

Aqui reside uma quantidade massiva de trabalho. Imagine uma pirâmide invertida: a camada mais ampla e visível no topo representa a vastidão de aplicações voltadas para o usuário final, hoje em dia, predominantemente baseadas na web, enquanto as camadas inferiores, mais estreitas, sustentam toda essa estrutura e são construídas sobre C ou C++.

Aplicações x Infraestrura

As aplicações são, sem dúvida, o que captura valor no mundo dos negócios. Elas são a interface com o usuário, a fachada. Porém, são sustentadas por um ecossistema mais profundo e complexo. C e C++ são a fundação desse ecossistema, garantindo que tudo funcione. Uma analogia com o mundo 'físico' é pensar em aplicações como as lojas e na infraestrutura como as ruas.

Os Alicerces Ocultos da Web

Navegadores? C++ é a linguagem de escolha. Banco de dados? Estão enraizados em C ou C++. Servidores web, como NGINX ou Apache? C. Sem mencionar os sistemas operacionais que respiram C, ou os interpretadores, runtimes e compiladores que dão vida a quase todas as linguagens.

A Jornada de Uma Requisição HTTP e o Legado do C

Agora, pense na simplicidade de um clique em botão de submit. O mouse, os switches de rede, os roteadores, os balanceadores de carga — Cada um desses dispositivos muitas vezes tem componentes, se não a totalidade de seu software, construídos em C. Este é o legado do C. E isso só estmos falando da web...

A Estrada Romana

As estradas romanas, construídas há mais de dois mil anos, foram projetadas com uma largura padrão que foi utilizada consistentemente em todo o vasto Império Romano. Mais tarde, ao longo do desenvolvimento da europa as novas estradas se aproveitavem e eram construidas sobre as extensa malha de estradas feitas pelo romanos em toda a europa. Influenciando diretamente a largura padrão das linhas de trem na Grã-Bretanha e, eventualmente, nos EUA.

O Ônibus Espacial

Ao transportar os componentes dos ônibus espaciais da fábrica até o local de lançamento, usaram trens. Portanto, a largura dos trilhos, que foi quasi diretamente influenciada pela largura das estradas romanas, determinou o tamanho máximo dos componentes dos ônibus espaciais. A largura das estradas romanas teve um efeito cascata que influenciou mais de 2000 anos depois o design do ônibus espacial, um das veículos mais avançadas já criadas pelo ser humano.

Um Pensamento Final

Agora, permita-me fazer um exercício mental, um pouco pretensioso: Em cem anos, existe uma possibilidade alta que o JavaScript esteja morto e esquecido. No entanto, em mil anos, eu não me surpreenderia se ainda encontrássemos coisas legadas funcionando em C. O que foi construido com estas linguagens, como as estradas romanas, são alicerces duradouros que suportam tudo o que construímos por cima delas. E simplesmente não são substituídos.

Assim como o império romano caiu, a Web, não importa quão dominante seja agora, vai eventualmente ser substituída. No entanto, as fundações, construidas em C, provavelmente terão em um futuro distante o mesmo tipo de impacto que as estradas romanas ainda tem hoje.

Um abraço e bons estudos, espero que este texto lhe dê bons argumentos para fazer sua própria realidade.

2

Realmente se for enxergar á cima os alicerces estão em C e derivados do mesmo. São ótimos pretextos para argumentar e os usarei sem dúvidas kkkkkk. Obrigado.

2

O problema é para empresas do Business aonde rola a grana, e que não trabalha diretamente com o sistema como a Microsoft, Google, etc. Linguagem de alto nível, é jogar dinheiro fora. Basicamente, se o sistema está lento, é mais barato comprar potencia do que contratar mais desenvolvedor de baixo nível.

Nessas empresas, é mais fácil usar um Python para tratar os dados, ou um site em JS, pois se aumenta a produtividade dos desenvolvedores.

Até mesmo um powershell e um shellscript faz um bom trabalho na automatização de tarefas.

1

Nunca pensei por esse lado, na minha visão era mais enfoque em produtividade e manutenção do código.

Acredito que existe um espaço de convivência com linguagens que você usa pra automação. Mesmo que você programe em C ou Java ela sempra vai estar lá.

1

Essa questão do desempenho atualmente está interesse.
Recentemente eu fiz um emulador de chip8 em Rust.
Em alguns momentos eu precisei criar formas do código executar mais lento pra simular a velocidade do sistema emulado.

0
1
1

Cara, não sou bem um psicopata do C/C++ (fiquei no GO pra não ter que lidar com o malloc kkkk), fiquei no basico por que fui mais pela curiosidade. Mas assim, tu realmente sentiu o pessoal indo pra linguagens de alto nivel ? Não tenho tanto tempo nisso e meu primeiro intuito foi ir em direção as linguagens "mais baixas".

1

Acredito que todo mundo começe por linguagens mais severas (ou que pelo menos deveria ser assim), elas te punem muito mais pelos erros e te ensinam a programar direito, más com o tempo, e muito por parte de requisitos de emprego e comodidade as pessoas migram pra um JS, Python, Ruby, entre outras. Não condeno pois eu mesmo trabalho com java e javascript, mas por hobby ou entusiasmo são poucos que vejo se interessarem a longo prazo por linguagem de médio nível (analizando meu ambiente social de emprego, faculdade e pessoal).

1
1
1

Não diria que o interesse está em queda, muito pelo contrário. Com figuras como Zig e Rust ganhando destaque, estamos vendo mais e mais pessoas entrando nesse mundo. O que está acontecendo é que as linguagens de programação de "alto nivel" tem um crescimento maior

A comunidade da Web é de longe a mais ativa, seguida por Mobile e Desktop (não necessariamente nessa ordem). Nessas áreas, as vantagens do C++ e outras linguagens de "baixo nível" não são tão críticas na maioria dos projetos. Quando a eficiência não é uma necessidade absoluta, a produtividade entra em jogo. É por isso que a maioria das linguagens populares de hoje se concentra na Web. Basta dar uma olhada em qualquer ranking de linguagens e você verá que a esmagadora maioria está fortemente inclinada para o desenvolvimento web.

Isso acaba criando um efeito cascata: mais pessoas mergulhando na Web resultam em mais conteúdo sendo criado para a Web, o que, por sua vez, atrai ainda mais pessoas para essa área. O problema é que isso pode ofuscar outras tecnologias, porque a visão se concentra demais em um único nicho. No entanto, o crescimento de linguagens como o C++ continua normal

2

Concordo muito com o que você aponta, só acho valido esclarecer um ponto, eu não duvido da importância e potencial evolutivo dessas linguagens (C++ 26 esta chegando ai pra não me deixar mentir). Mas acredito que sejam comunidades muito ninchadas, aonde a grande maioria já detem alto conhecimento e experiência ou ainda é um aventureiro na área. Pegue como exemplo conteúdo online, as suas opções pendem entre conteúdo introdutório, legado e algum material escasso realmente atualizado e de qualidade.

1

Sou novo por aqui, me interesso muito por c++, gostaria de conhecer pessoal mais experiente, eu adoraria uma comunidade no discord, sou iniciante buscando minha primeira vaga como desenvolvedor c++

1

Quando sobrar um tempo irei fazer o canal, provavelmente adicionar aqui o link.

Sobre a busca de profissionalização em C++, eu acredito que a melhor linguagem é a que paga seu salário, mas também que além disso existem gostos. Eu busco primeiramente me aprofundar em conceitos avançados a tentar uma vaga em desenvolvimento low level (provavelmente computação gráfica). Todo caso boa sorte, espero que consiga 👊.

1
1
1
1
1
0
1
6

Já pensei em postar conteúdo também, e acredito que acabe montando alguns tutoriais futuramente, mais voltados a recursos avançados da linguagem.

CMake é uma realidade que alguns nem conhecem, mas muda a forma que você enxerga a linguagem, eu por exemplo não usava bibloitecas (como boost e similares) até aprender CMake, seu conteudo é bom!

1

Posta mesmo, eu demorei um pouco a fazer meu primeiro post, tava tomando coragem, mas, depois do primeiro post você toma gosto, depois do primeiro vai querer postar mais depois.

1

Olá Bruno!

Sou professor de Computação e atuo com C/C++ há anos. Sem dúvida são excelentes linguagens!

Aqui temos grupos de estudo em C/C++ voltados para maratonas de programação, computação gráfica e outros.

1

São sim excelentes linguagens! Ainda mais quando se aprende a usar Cmake, sem mais dores de cabeça com configurações em IDE's.

Já encontrei algumas comunidades que abranjem c++, mas nada muito voltado a entusiastas, computação gráfica eu diria ser mais uma paixão que hobby, espero com o tempo evoluir ao ponto de engressar ná area.

Sobre maratonas, Bootcamps e entre outros infelizmente não tenho tempo de sobra atualmente (Morar sozinho te da toda a liberdade e toda a louça pra lavar kkkk). Mas quando terminar a faculdade pretendo ser mais ativo em eventos assim.

1

Eu até que gosto bastante de C e C++, uso diariamente em meus hobbies - tentando fazer um jogo pro meu PS Vita e ao mexer com Arduino e STM32.
Preciso estudar mais C++ e Assembly pra executar algumas ideias, tentar fazer o port de um jogo aí.

1

Fiz alguns projetos por hobby também, a maioria se perderam no tempo, mas tenho 1 ou 2 que ainda mecho as vezes.

Ja usei Raspiberry, mas penso em me comprar um arduino pra fuçar.

1

Rapaz, com o boom do arduino e esp, esses linguagens de baixo nivel ressucitaram. Agora seriam mais populares, no meu entender, se tivessem um manual, como php e outras lingugagens tem.

1

Concordo muito, acredito que a maior barreira seja conteudo legado ou extremamente técnico ou o minimo possivel, fazendo o interessado não conseguir experiência o suficiente pra avançar em tópicos complexos por conta própria. Eu mesmo estudo C++ por conta própria desde os 14 anos e só a 2 anos prá ca (tendo meus 21 anos) consegui abordar libs, Cmake, sockets, corrotinas, etc.

1
1

Eu curto C++, mas acho que uma coisa atrapalha a popularidade é que as melhorias na linguagem correm muito lentamente.

Por exemplo, lançam uma versão nova a cada 2 ou 3 anos, geralmente revisada por muita gente e bem burocrática. O que tá certo, dado o impacto que essas mudanças tem.

Mas aí o que complica é que qualquer facilidade que a linguagem poderia ter, acaba ficando dependendo de alguma lib externa (tipo a Boost). E isso acho que é uma barreira para muita gente.

Por exemplo:

  • Não tem uma forma de controle de dependências oficial. Você fica por conta de usar Conan, CMakeFiles, ou qualquer outra coisa que ainda sim não é padrão.
  • Não tem uma forma de fazer testes unitários oficial. Aí de novo, fica pedendendo de outra lib.
  • Tipagem bagunçada. Exemplo: no seu projeto você pode usar std::string, mas em uma lib que você tiver usando podem estar usando QString (do Qt), wxString ou alguma outra que reinventaram.
  • Faltam alguns syntax sugar que várias linguagens têm. Tipo um simples "take(3)" acaba virando 3 linhas porque tem que chamar uma função específica de algum include.

Dentre outras barreiras que outras linguagens acabam não tendo.

1

Então, mas se for parar pra pensar C++ não traz somente mudanças perceptíveis pra nós, como qualidade de vida e recursos, ele traz uma gama de correções, e melhorias de desempenho (sim ainda hoje inventam formas de compilação mais eficiente em C++), inclusive processamento em tempo de compilação que aumenta a cada nova versão. Isso tudo junto a desings de conceitos modernos adaptados para a realidade de C++ tipo lambdaz e corrotinas. Eu estou pessoalmente muito satisfeito com o avanço que vem sendo mostado (nem consigo estudar tudo oque sai de novo kkkk).

Sobre as libs, eu entendo sua dor, vendo que muita gente sofre por sequer saber adicionar uma lib, mas pegando de exemplo a boost, muitas coisas que deram certo lá se tornaram padrão da linguagem em algum momento (veja sobre std::move e os similares), além disso, tipos que "ofuscam" os tipos já existem, como wxString e entre outros tem seus motivos de implementação para existir.

Tratando de uix, provavelmente esses tipos trazem mutabilidade e reatividade, o que não esta e nunca estará presente em, por exemplo std::string. Mesmo que a certo ponto de vista, em algum momento existirá um inferno de namespaces o qual você tera de lidar, e isso é ruim, más acredito que os modulos da versão mais recente de C++ venham justamente para ajudar a mitigar esses problemas (não cheguei a estudar a fundo módulos c++).

Sobre Cmake, cara, cmake me parece um projeto muito bom, e com força o suficiente pra fazer eu não argumentar sobre precisar algo nativo. Ele simplesmente faz o trabalho muito bem, por que se preocupar em implementar isso sobre trazer outras coisas que foquem nos pontos fracos? Acho que os mantenedores da linguagem também pensam assim.

1

Sim, mas no seu caso, acho que você gosta tanto de C++ que não está conseguindo ver aos olhos das pessoas que nunca mexeram.

Para quem tá acostumado com outras linguagens, essas barreiras somadas fazem a pessoa desistir. A C++ por si só exige que pessoa entenda de memória e etc, aí com esses extras fazem com que muita gente prefira trabalhar com outras linguagens e deixam C++ de lado.

Tipo, wxString tem seus motivos para existir. Mas, se std::string fosse bom o suficiente, wxString não precisaria existir. E aí, se a pessoa tiver mexendo com wx e outra lib qualquer, ela ainda vai ter que transformar wxString para outra coisa. Se o padrão fosse mais forte, acho que todo mundo usaria só std::string.

Cmake é bom. Mas, dependendo da IDE, a pessoa tem que registrar os .cpp e .h na mão. Outras linguagens nem tem isso. Imagina a frustração da pessoa que não precisa fazer isso agora precisa? Sem falar que aqueles #define HEADER_H ou #pragma once deixam a pessoa que não tá acostumada doida.

Aí tem outro ponto: a maioria das pessoas não se importa com a desempenho do código delas. Se funcionou e tá "rápido suficiente", tá bom. Daí por mais que tenha várias otimizações que C++ faz, tanto faz para a maioria.

Eu sou fã de C++, mas acho que linguagem nunca vai ter uma "fanbase" tipo de Rust por coisas assim. Tipo, Rust não sofre com vários desses problemas citados.

1

Sim, são pontos relevantes, e justamente isso levou a minha pergunta, quando a maioria das pessoas chega a esse ponto do "pe da montanha" desistem.

Eu tenho mais de 6 anos estudando e praticando C++, e ja possuo proficiência em linguagens como python, java e javascript, e me arrisco a dizer que talvez a linguagem não condiza com a sua visão de programação, se você não quiser usar Cmake, use Visual Studio e deixe a IDE fazer tudo por você. E memória só é um problema quando você não se importa com ela, muitos sistemas dependem de gerenciamento ativo de memória. Se não for o seu caso, smart pointers podem facilitar seu trabalho, ou até mesmo alguma lib que faça esse gerenciamento.

O uso de libs é inevitavel, principalmente em baixo nível aonde todo esforço é um esforço considerável.

Sobre o std::string, acredito que você não entendeu o meu comentário, se quiser um exemplo veja Kivy e seus ObjectProperty em Python, Vue e seus encapsulamentos, é o mesmo padrão, você sobrescreve tipos de dados padrões por uma necessidade específica, e quem usa essa ferramenta precisa conviver com isso, esse luxo não é exclusivo de linguagens de baixo nivel em geral, só é mais evidente lá.

1

Quando falarem que C morreu é porquê ele está vivo! E se você acha que esqueceram é porquê ele está vindo te pegar!

C nunca vai morrer e isso é coisa de dev js emocionado. Inclusive existe um ciclo paradoxal estranho no mercado, pois precisam de programadores C/C++, mas não encontram, então retiram as vagas, as preenchem com indicações e contratações do tipo "o amigo do fulano sabe C", e isso faz ter menos programadores C kkkk

É estranho mas é real, eu AMO C/C++ e o unico lugar que vejo com possibilidade é com embarcados, porém, é exatamente essa realidade que mencionei. Também tem o fato de programadores C/C++ levarem mais tempo para serem minimamente programadores C/Cpp.

Apesar de gostar de mexer com Java, Python, Lua, Elixir e até arriscar um Fortranzin, continuo estudando ASM/C/C++. Minha esperança é pouca, mas se pintar, eu pego uma vaga C/C++

1

Interessante essa visão de mercado, isso pode explicar o por que eu nunca achei uma vaga em descente (ou sem 5 anos de experiência como requisito). E sim programar em C++ não significa ler a referência, coisa que é muito viável pensando em python, é preciso muito estudo e código pra conseguir fazer algo bom sair da linguagem. Muitos desistem quando descobrem essa realidade.

0

Na minha bolha é o contrário: a galera que eu conheço gosta de C, Assembly, engenharia reversa, segurança da informação e acha WEB "chato". Bom, eu mesmo sou desenvolvedor backend mas meu interesse pessoal é nessa linha.

Tenta entrar no servidor no Discord da Mente Binária que você vai achar gente assim. Ou no fórum.

Eu tenho um Discord também mas é um grupo privado. Se quiser entrar lá, me passa algum contato seu que eu te mando o convite.

Aliás, e fica aí a dica: se teu interesse é se envolver com conteúdo técnico mais sério e profundo, tu não vai conseguir isso em um grupo público.

Falo por experiência própria, a galera mais bem qualificada tecnicamente não tem paciência para compartilhar seu conhecimento em grupos públicos. Porque grupo assim é cheio de gente com efeito Dunning-Kruger que acha que sabe do que tá falando.

Já faz uns 2 anos ou mais que eu mesmo já desisti também de compartilhar conhecimento em grupo público também. Uma hora a paciência acaba.

Os grupos públicos só servem para você encontrar a galera que perdeu a paciência e eles te convidarem para o grupo privado, kkkkkk.

1

Interessante saber que ainda existem grupos ativos que atuam com conteúdo avançado.

Eu não digo que perdi a paciência pois nunca fui muito de engajar em foruns e sempre estudei por conta (ultimamente estou mudando essa visão por que cheguei em um ponto aonde avançar as cegas é confuso e as vezes te leva pro caminho errado).

Sobre grupos fechados sempre imaginei que existissem, mesmo que pareça frio da minha parte, para evitar pessoal do "Hello World" que se vc tentar abordar algo como concepts é a mesma coisa que falar russo.

Todo mundo já teve que ler uns conceitos "em russo" algum dia kkkkk, mas se toda bolha de comunidade se basear em ajudar pessoas assim, que espaço terá quem quiser debater conceitos mais avançados? Por isso de certo modo entendo seu ponto.

Eu adicionei o link de um canal no discord aqui, você consegue me encontrar por lá, ou se quiser meu nick do discord @brunodalagnol