[INDICAÇÃO] Por onde começar no desenvolvimento Desktop?
Recentemente estou interessado em programar softwares para desktop, anteriormente eu estava totalmente focado em desenvolvimento web, mas já tive uma introdução com Java (Lógica de programação, POO e estrutura de dados), e sinceramente odiei Java FX e as maneiras em que a linguagem lida com interfaces. Então, em uma pesquisa superficial (Vulgo incentivo do Akita) me interessei por C, C++, C# e afins, a minha questão agora é: Por onde começar? Primeiro: Começar por C# seria pular muitas etapas ou não há problema? (Já que só quero programar softwares, não um kernel ou bibliotecas utilizando C) Segundo: Depois que eu aprender o basicão: Váriáveis, condicionais, estruturas de repetição e POO, para onde devo ir? Terceiro: Poderiam me indicar conteúdos de qualidade sobre a linguagem (livros, cursos, vídeos e etc)? É isso rapaziada, valeu :)
Não me parece que seja pular etapas ir para C# no seu caso. pelo contrário, parece o caminho natural. De fato hoje quando se fala em desktop não é tão fácil achar solução melhor pronta (as melhores são para programadores bem hard core).
Dê um passo de cada vez. Não se preocupe com passos que podem nem ser oque deseja depois de dar o próximo. Os passos virão. Ou está fazendo algo errado no seu aprendizado.
Vou indicar o que virá no link abaixo :D Mas pode começar pela documentação já linkada por outra pessoa. Por enquanto é só o que eu digo, farei uma lista curada com responsabilidade daqui alguns meses. Chitar qualquer cosia fácil, eu tenho um compromisso maior.
Por favor, não caia na tentação de alguns. Desktop tem inúmeras vantagens que muitos resolveram ignorar, e as desvantagens podem ser todas solucionadas. Então faça desktop, não faça web fazendo de conta que é desktop (vulgo Electron, se for para fazer web e fingir que é desktop tem até coisas melhores para a maioria dos cenários - Electron só é solução porque a escolha foi porca e causou problemas). Só porque algo é popular não significa que deva fazer. E nem é tão popular assim. Para confirmar isso, web é extremamente popular, se for na popularidade não deve nem olhar para desktop. Popularidade não é tudo, qualidade pode ser mais interessante. Entenda que a maioria das pessoas vão mesmo pela popularidade. Sequer resolveram estudar sobre o assunto para decidir, ouvem influenciadores e acabou.
Ao mesmo tempo tenho que dizer que fazer para desktop é ótimo, mas também vai comprar briga. É como tocar música clássica em festa de pancadão. Ok, estou exagerando também. Se achar seu caminho terá um diferencial incrível.
Observou? Faz sentido para você?
Espero ter ajudado. Em geral estou à disposição na plataforma (sem abusos :D)
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).
Electron não é desktop! Ao contrário do que muitos dizem, é desenvolvimento web. Ele embute seu HTML/CSS em um navegador embutido super pesado e que usa muitos recursos além do que precisa.
Desktop é para ser otimizado, usufruir dos recursos do sistema operacional e diminuir camadas de instruções até o processador central. Se você quer fazer algo certo, estude Windows Forms, C#, Qt ou Gtk+, ou até mesmo uma aplicação que rode em terminal, mas não misture web com desktop.
Uma boa aplicação desktop usa somente o que ela precisa e as melhores rodavam em até Windows XP. Electron (e similares) não rodam em máquinas inferiores ao Windows 10 pois são baseadas no Chromium. Algumas pessoas falam que nem certos processadores funcionam bem mas não consigo afirmar se isso é verdade.
em C# eu recomendo experimentaravalonia. ele permite criar aplicações desktop multiplataforma. mas mais interessante do que qual plataforma usar no frontend acho interessante você estudar padrões de arquitetura como DDD e Clean Architecture. A ideia nisso é você entender como consumir o mesmo código de diferentes maneiras como uma aplicação web, console ou desktop.
Apenas mais um ponto de vista. Eu uso para desktop Lazarus/Delphi (ObjectPascal). Não sei se existe algo melhor para Desktop.
Basicamente permite a rápida criação de diversos tipos de aplicações nativas CLI, GUI, C/S, etc. bem como transpila para JS permitindo a geração para NodeJS, etc.. A minha instalação permite:
Você pode facilmente prototipar uma aplicação e ir refinando sem a necessidade de jogar fora o que foi feito (top-down). Um exemplo que coloquei em outro post aqui que mostra como pode ser desenvolvido um CRUD em 5 minutos ()
Um projeto com mais de 20 anos rodando em diversos SOs https://simthyr.sourceforge.io/screenshots.html
Uma boa opção é o flutter. Ele é uma "nativo" para diversas plataformas...E se lá na frente você mudar de ideia, dá pra ir para web ou mobile facil. Sem falar que existem muitas mas muitas bibliotecas para fazer diversas coisas com o fluter, o fluter preza muito pela facilidade em construir telas animadas e bonitas e tem alta performance. Dá uma pesquisada e coloca na lista de possibilidades. Agora se você quer performance e velocidade para execução de grande volumes de dados, vai de C++... Ou dá para mergear os dois, flutter para fazer telas hiper bonitas e c++ para cálculos pesados.
Flutter pode ser usado em desktop assim como o Electron citado, com a vantagem da compilação nativa em bibliotecas do SO. Quanto a C# no Microsoft Learn encontra tudo o que precisar.
Se quer desenvolver para desktop, use .Net e c# e o seu conhecimento de Java vai te ajudar a pular pro c#, eles possuem semelhança.
Não ha nada nelhor do que .net para desktop.
Voce pode construir aplicações com windows forms, WPF/winui3 (o whatsapp para windows utiliza ele) e por último voce pode utilizar o recem lancado MAUI com blazor e a biblioteca de terceiros mud blazor que é incrível.
Hoje em dia só utilizo maui e mudblazlr para criar apps desktop coisa mais linda e produtiva que existe.
Olá Nicolas,
Vou deixar meus 2 dedos de prosa.... Só opinião mesmo. Para desenvolvimento desktop existem "mil maneiras", então não existe certo ou errado, melhor ou pior.... Se pensar em ganhar fluencia em C++, tem o QT muito usado na industria, KDE é um exemplo classico, a STONE (maquininhas) usa QT, BMW ( em sistema embarcado), e outros. Em C#, eu usaria o ecosistema da Microsoft, afinal a criadora é referencia. Outra ferramenta que evoluiu muito, mas por ser paga, meio esquecida, é o Delphi, com uma base de codigo, desenvolve para iOS, Android, windows e Linux. Tem uma versao free. O Flutter é outra opção. O GTK é outra opção se pensar em opensource, pode usar com C, Rust por exemplo.
Tem o Tauri se quiser usar Rust, é uma solucao similar ao electron, onde você usa tecnologias WEB e embarca em um webview.
O conhecido Electron. Dispensa comentarios.
Enfim.....
É questao de começar, e nada melhor que ter um projeto, tudo fará sentido e aprenderá de verdade...
Meu conselho, pense um projeto, escolha a tecnologia e nao sr preocupe, afinal o objetivo é aprender....
Seja QT, GTK, C# com ecosistema Microsoft, Delphi, Tauri, GTK, Electron. No final do dia, o que vale é o que aprendeu....
Bons estudos.
Acredito que alguém já deve ter falado, mas eu recomendaria o Electron. Com tecnologias web (HTML, CSS e JS/TS), você consegue criar apps multiplataforma (Windows, macOS e Linux) sem uma curva de aprendizado muito sofrida. Aliás, a comunidade do Electron é muito ampla, e muitos apps famosos foram feitos com ele (como VS Code, Spotify, Slack, Telegram, Discord, Skype, Unity Hub, Microsoft Teams etc). Inclusive, no meu perfil do Medium, recentemente postei um artigo sobre criação de apps desktop com Electron e NextJS, é um guia pra iniciantes. Sinta-se à vontade pra dar uma olhada caso se interessar. Também, no meu GitHub, tenho 3 projetos de apps desktop feitos com Electron:
- Local.Host, uma alternativa ao Xampp para construção de um ambiente local de desenvolvimento, com algumas features a mais, para Windows
- Video Viewer, um app para reproduzir vídeo e áudio de dispositivos de entrada (placas de captura, webcams etc), para Windows, macOS e Linux
- Mesh Viewer, esse é antigo, um app para visualizar arquivos de modelos 3D pensado para o Linux, mas funciona no macOS e no Windows também
Não poderia esquecer do recém lançado Kotlin Multiplatform que segue a mesma filosofia do Flutter. Mas ainda está em fase beta, também pode ser uma boa opção a ser considerada.
Oi Nicolas, experimenta o ElectronJs, você pode aproveitar o conhecimento de Web para criar apps desktop.
Acredito que o Electron seja o caminho mais rápido, tive a oportunidade de trabalhar com Electron-vite no desenvolvimento de um sistema de gerenciamento interno para um sindicato da minha cidade. E basicamente você faz um site que roda no desktop, com a vantagem de poder ser buildado facilmente para Windows, Linux ou Mac. Também é possível reaproveitar muita coisa do desenvolvimento web, no projeto que eu trabalhei, por exemplo, utilizei Vue e Tailwind. Acho muito legal poder utilizar toda essa bagagem de desenvolvimento de interfaces web, para desktop.