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

[DUVIDA] Aos devs C# vale a pena usar linux para desenvolver?

Contexto

Sou dev web (NodeJS, React, TypeScript etc) e esse ano decidi aprender outras linguagens fora do ecossistema JavaScript. A primeira que eu escolhi foi Go. Como segunda, estou considerando Java, pela grande bagagem que a linguagem tem e boa quantidade de vagas, mas consideraria C# também, embora tenha um preconceito por ser da microsoft. Como gosto de desenvolver no linux, queria saber se é viável desenvolver nele.

Além disso, você que já trabalhou tanto com Java quanto com C#, qual você prefere e porquê?


edit: Quando eu disse "preconceito", é mais com o windows mesmo, eu apenas não gosto do sistema...

Carregando publicação patrocinada...
5

Eu sou dev C#, trabalho com Windows, mas vou dar meu relato.

Com o .Net Core, agora é possível instalar ele no Linux sim, e para IDE você pode usar o Visual Studio Code com extensões para C#. Tem um guia do próprio VsCode de como fazer o setup (https://code.visualstudio.com/docs/languages/csharp).

A questão de .Net Core no Linux funciona muito bem, os comandos podem ser todos executados pelo terminal, com a CLI do dotnet. Funciona similar a um NodeJs. A questão de usar o VsCode para C#, eu não tenho muita experiência, pois como estou no Windows faz mais sentido utilizar o Visual Studio que é muito mais completo, mas no que eu testei funciona super bem no VsCode também. É questão de costume mesmo.

Então respondendo, viável é sim. Antigamente, com .Net Framework, não era possível utilizar c# no Linux (até tinha uns esquema com o Mono, que é uma versão pra linux, mas dava muito trampo). Hoje em dia com .Net Core, ele foi pensado para ser multiplataforma. Só vai.

Entre Java e C#, não posso opinar. Usei muito pouco Java, e tenho muito mais experiência com C#, então com base na minha opnião, é C#, mas é uma opnião totalmente influenciada pelo fato de eu usar C# todo dia.

5
4

Há muitos anos era esse dilema qual é o melhor??? C#, Java, VB, Delphi, C, C++... Agora temos o RUST e Python.
Quando o MonoSDK e o MonoDevelop deixaram de ser suportados pela comunidade nós programadores Linux ficamos órfãos de uma boa solução para programar C# no Linux. Existe o Jetbrains RIDER é ótimo, porém o preço da licença é realmente para quem usa C# como a linguagem de seus projetos e trabalha exclusivamente nela.
No meu caso como iniciei minha carreira em 1977 como Administrador e Operador de sistemas UNIX não tinhamos como fugir do C e se quiser trabalhar com OOP usar o C++ que ambos estão em sua versão C23 publicada em 2024, ou seja a linguagem tem seus já seus 50 anos, eu estou com 58 (nasci em 1967).
Eu vi a maioria das linguagens hypes dos anos 80 e 90 nascerem e muitas cairem em desuso ficando vivas apenas graças ao Legacy Code. Atualmente estou muito positivo com a RUST e GOlang tem uma sintaxe e conceitos elegantes, resolvem e previnem os memory leaqs, andei dando uma estudada no Q# (proposta pela Microsoft para Computação Quântica) porém é emulada (afinal não dá para termos um computador quântico para estudos) supercomputação hoje é fácil graças as Raspberry Pis e as Nvidias JET Nano ORIN (que permitem você trabalhar com desenvolvimento de I.A. Generativa).
Em 1990 sai a primeira versão do Linux (embora eu já tivesse acompanhado o livro do Andrew Tannenbaum de Sistemas Operacional onde vinha um passo a passo para construir do zero um sistema operacional UNIX LIKE chamado MINIX totalmente em C, recomendo a todos que pelo menos uma vez na vida façam essa experiência e digitar o código fonte em C, debugar e compilar, isso vale a experiência que nenhuma faculdade federal ou particular de Engenharia de Software e Computação irá te oferecer, Botar a mão na massa e escovar alguns bits, temos também a vantagem do Linux, Unix e o Raspbian serem Opensource e você pode fazer um fork do github a vontade.)https://www.google.com/url?sa=i&url=https%3A%2F%2Fwww.amazon.co.uk%2FOperating-Systems-Design-Implementation-MINIX%2Fdp%2F8120329554&psig=AOvVaw3KFMovNLJWlSmbdZ4Mg1OF&ust=1740062616506000&source=images&cd=vfe&opi=89978449&ved=0CBAQjRxqFwoTCJjjt8X8z4sDFQAAAAAdAAAAABAE

Então diante de tudo isso e meu histórico profissional de 48 anos na área! ah isso não te faz um milionário mas estou tentando ainda vou chegar lá. O que aprendi e vou transmitir para vocês jovens developers:

  • Não existe linguagem melhor ou pior! o fato reside se ela é adequada para implementar a solução ou não! e neste caso o conhecimento de várias linguagens de programação irá te dar o expertise para determinar qual a linguagem é apropriada para resolver o problema.
  • Não fique focado na linguagem em si mas sim focado na SOLUÇÃO do problema e no ALGORITMO(S) e na Lógica (Use fluxograma para essa parte, esqueça aquelas baboseiras gráficas de UML) e para documentar os Objetos (Diagrama de Objeto é ideal para visualizar e documentar, porém a lógica dos métodos use o bom e velho fluxograma para documentar que daqui uns 20 anos quanto tiver que dar manutenção tu vai me agradecer essa dica). Veja isso é como se fosse a planta baixa de uma velha construção, ajuda muito mesmo se o objetivo é fazer uma expansão de features sem precisar fazer toda uma reengenharia num legacy code que FUNCIONA
  • Não EXISTE PROGRAMADOR RUIM o que existe é PROGRAMADOR SEM EXPERIÊNCIA E VIVÊNCIA por isso antes de ficar chamando aquele senhor de 58 anos de vovô papai noel e ficar oferecendo fralda geriátrica e comidinha de bêbe para trollar. Cola no Gandalf da Computação e aprenda com ele os verdadeiros Hacks de desenvolvimento.Lembre-se que a humildade te leva longe! O valor de uma pessoa não está na juventude e sim NO CÉREBRO DELA E SUAS EXPERIÊNCIAS DE VIDA é aí que está o verdadeiro respeito: RESPEITE A SABEDORIA DE VIDA! Sim eu também tive meu Gandalf e tive muita sorte aquele senhor me ensinou Assembly e C com maestria, lição para toda vida! E nós eramos responsáveis pela manutenção dos sistemas de uma grande multinacional americana, corrigiamos as cagadas do dream team da TI e salvavamos a bunda deles quando as coisas davam errado!
  • A melhor linguagem de programação é AQUELA QUE VOCÊ DOMINA COM MAESTRIA
  • O DIFERENCIAL DE UM DEV É O DOMÍNIO DE ALGORITMOS E ESTRUTURAS DE DADOS é isso mesmo aquela matéria chata, massante, teórica, etc.. etc... SIM ELA É A DIFERENÇA DE SER UM SENIOR OU UM ETERNO JUNIOR. USE, REVISE, RECICLE E APLIQUE A EXAUSTÃO em seus projetos. Eu aprendi isso quando precisei CRIAR UM DATABASE RELACIONAL DO ZERO para um projeto que não poderia usar Banco de Dados comerciais por uma questão de SEGURANÇA NACIONAL então já entenderam para que tipo de cliente eu tive que desenvolver e ficar rezando para os caras não resolverem me eliminar para não deixar pontas soltas por isso use a filosofia do grande e eterno GALEN WALTON ERSO: "TORNE-SE ESSÊNCIAL E INSUBISTITUÍVEL". AH isso tem um nome bonitinho hoje chama-se LEETCODE e é usado nos atuais processos seletivos das empresas techs do mercado.

Minha escolha atualmente é usar o C/C++23 que é compatível com C17 e C20 e implementa novas features interessantes e o RUST inclusive para ficar FODÃO NELA vou reescrever o código do MINIX inteiramente em RUST e deixar opensource no GITHUB para quem quiser ver como fica em RUST a implementação do MINIX o que poderá motivar que iniciativas de projetos de Linux reescrito em RUST e acabar com o conflito que atualmente existe no Projeto, deixa o LINUX com C e parte para um RLinux ou GLinux (pra quem curte GOlang).
No meu caso é que preciso de um código que execute rápido.
Inclusive para projetos de I.A em Python eu optei para usar compilações de Cpython e Cython pois geram código C e podem ser compiladas e desta forma termos Executáveis baseados em código fonte Python ultra rápidos e compactos.
Outra razão é minha paixão por Desenvolvimento de Jogos, e neste caso poderei usar o GODOT/REDOT e UNREAL para projetos de Metaverso, Realidade Virtual, Realidade Aumentada, Realidade Mixada, e XR. Pois não parece mas o Metaverso só esta hibernando porém quando a tecnologia gráfica, inteligência Artificial e de processamento estiverem no ponto de maturação certa, vai ser um BOOM e não um Hype Marketing da META, e tenho a desconfiança de quem vai liderar essa revolução seja a NVIDIA.

DICA FINAL: O JAVA para quem quer trabalhar na Gringa e na Europa abre portas de emprego, falo por experiência própria. Quando estive na Itália de 2000 a 2004 minha tia queria que fosse trabalhar de garçon no restaurante onde ela era cozinheira(uma pessoa com curso superior em Design Industrial e Artes Plásticas) eu não concordei pois acreditava que poderia trabalhar na minha área de software inclusive porque os caras estavam muito defasados em relação a nós no Brasil no quesito Web. Fui a uma entrevista em Milão e consegui o trabalho, inclusive era para ensinar Engenharia de Software em JAVA, e na minha entrevista com o Diretor e CEO ele me perguntou sobre CORBA, que estratégias usaria para manutenção de Legacy code, e falei com sinceridade e isso me valeu uma vaga. Na Europa o que domina é IBM AIX e Linux como S.O de datacenter. Salário de 7.000 EUROS. Voltei pro Brasil em 2004 pois minha avó estava com câncer e precisei estar ao lado dela, afinal foi ela que me criou e educou! Sim tem horas que você tem que tomar duras decisões e sacrificar futuro e carreira por um bem maior, mesmo que seja um paciente terminal! não me arrependo! Isso me tornou mais humano e ciente de como nossa vida é passageira.

PYTHON + DATA SCIENCE + I.A. é uma boa combinação porém é possivel combinar com C/C++ C# JAVA GO RUST o importante fazer um portfólio de códigos de exemplo no Github e deixar isso público no Linkedin assim quem estiver de olho pode conferir suas SKILLS de programação, Padrões de Design, CLEAN CODE (cuidado nem tudo é aplicável inclusive vai depender se é implementável na linguagem que você utiliza falo pela experiência em GO nem tudo que tá lá vale para este caso).

NÃO SEJA XIÍTA E MILITANTE DE TECNOLOGIA você perde tempo, energia, numa luta de evangelização que é fútil! TECNOLOGIA É COMO MULHER ELAS VEM E VÃO (ISSO VALE PARA OS HOMENS TAMBÉM) quem já passou por pelo menos 2 divórcios sabem do que estou falando.
Se for militar e advogar faça isso por muita grana! Mas aviso isso pode queimar sua reputação tipo Felipe Neto, A grana pode ser boa mas vender a alma pro diabo nunca é um bom negócio!

TRABALHE REMOTO(EMPRESAS QUE EXIGEM PRESENCIAL GERALMENTE SÃO TÓXICAS E NUNCA CUMPREM O QUE PROMETEM: POR FORA BELA VIOLA POR DENTRO PÃO MODORRENTO E DEMONSTRAM QUE SÃO RETROGRADAS INCLUSIVE CERTAS BIG TECHS)! SE PUDER SEJA UM NÔMADE DIGITAL CURTA A VIDA, FAÇA VIAGENS CONHEÇA NOVAS CULTURAS. E PRATIQUE A REGRA 80/20 = 80% DE ADIANTAMENTO e 20% NA ENTREGA FINAL se houver calote pelo menos você já recebeu 80%.

4

Uma dica relevante para todos, se você vai programar apenas para desenvolvimento web, não importa qual seja o sistema operacional que você utiliza, independente da linguagem. Sistema operacional realmente importará se você for programar para o ecossistema da Apple ou precisar utilizar alguma toolchain especifica de algum OS exemplo: MSVC.

3

Consideraria C# também, embora tenha um preconceito por ser da microsoft.

VS Code e Typescript também são da Microsoft 🙃, Golang é da Google e assim por diante, ter uma Bog Tech por trás não deixa a linguagem ruim, é até mais fácil pois tem um suporte do caramba. O que acho que o C#/.NET tem é um forte acoplamento aos produtos da Microsoft, Visual Studio, Azure, o próprio Windows, mas atualmente a plataforma está bem mais "solta" em relação a isso.

Sobre rodar no Linux, sei que tem o SDK e o Runtime pra Linux (uso nos containers), o problema seria a IDE já que só o VS Code ou Rider estão disponíveis.

Na escolha da linguagem, apesar de gostar de C#, acho que iria de Golang, não acho mais "fácil" que o C# mas a parte de Deploy e suporte para ferramentas é um pouco melhor na minha visão.

Minha dica: faça um projetinho de API em cada uma delas.

2

Eu utilizo C# no Linux diariamente. Existem apenas alguns projetos que você não tem acesso como o Maui (é possível utilizar o Avalonia para apps desktop, que é bem melhor na minha opinião). Mas em geral a experiência é bem equivalente ao windows com a exceção é claro da disponibilidade do visual studio. Porém no Linux o C# devkit do vscode quebra um galho, e se procura uma ide completa como o vs, basta utilizar o Rider.

No caso específico em que vai desenvolver apenas web, o Linux deveria ser a primeira opção. Uma vez que provavelmente seu deploy será lá.

Sobre preferências. Eu considero C# uma linguagem mais prática do que Java. Por consumir menos recursos, ser ligeiramente mais performática, ter uma sintaxe mais flexível e um ambiente incrível para server side. Geralmente sempre que começo um projeto em outra linguagem como Go tendo a recriar a experiência do ASPNET. Não por que sou acomodado com o framework, mas sim por que foi a melhor experiência que já tive com web em geral, tanto server side quanto frontend com o Blazor.

1

mas consideraria C# também, embora tenha um preconceito por ser da microsoft

O problema não é ser de uma big tech, mas o que essa big tech faz com a ferramenta. Programo muito pouco com C#, mas a microsoft investe na linguagem e todo o ecosistema de maneira consistente há algumas décadas.

A Oracle demorou um pouco para dar a atenção que o Java precisava, mas nos últimos anos Java tem evoluído de maneira interessante.

Go que é mantido pelo Google e é bem consistente, o propósito por trás faz sentido.

Além disso, é bem provável que você use ferramentas da Microsoft todos os dias direta ou indiretamente como Windows, VSCode, GitHub, Office, LinkedIn, SQL Server... São ferramentas consistentes e confiáveis o suficiente, seu preconceito não faz sentido.

Mas há pontos de atenção, por exemplo

Depois que a Borland foi adquirida pela Embarcadero, o Delphi parou no tempo, as atualizações na IDE não são significativas para a tecnologia continuar relevante e hoje basicamente Delphi é usado apenas para manter legados.

A Meta (Facebook) não faz/fez um bom trabalho com o React, a Vercel está assumindo as rédeas e tá levando a tecnologia do jeito que ela precisa para forçar um vendor lock-in.

O Google costuma matar os projetos sem mais nem menos (mas isso não deve acontecer com Go)

1
1

Claro que vale!

Já programo em C# ativamente no Linux faz 4 anos sem nunca mais ter tocado em Windows, sem nenhum problema. Graças ao .Net Core tivemos essa possibilidade de se tornar multiplataforma. Uso basicamente VSCode, um terminal e mais nada, mas te digo que com o plugin certo dá até pra codar no Vim pois já testei uma vez.

Único problema é se você trabalha com WinForms. Nesse caso é só Windows e Visual Studio mesmo, pelo que eu sei...

1
1

Eu vou compartilhar minha experiência. Sou desenvolvedor PHP com React (também conhecido como fullstack) e recentemente comecei a trabalhar em uma empresa que requer o uso do Linux como nossa principal ferramenta.

A justificativa da empresa é que o Linux oferece melhor desempenho do que o Windows e também porque precisamos desenvolver uma aplicação que será hospedada em um servidor Linux. Em meus trabalhos anteriores, os computadores sempre foram Windows e nunca tive dificuldades significativas para desenvolver, especialmente após a chegada do WSL, que facilitou muitas coisas.

Então, decidi instalar o Ubuntu. Já o tinha instalado em computadores antigos por curiosidade e propósito de aprendizado. Naquela época, o Ubuntu não chegava nem perto do Windows em termos de usabilidade. Porém, hoje em dia, com a predominância das aplicações web, mal sinto falta do Windows. Estou realmente gostando de trabalhar no Ubuntu para desenvolvimento e percebo que meu notebook está mais ágil. Os problemas que encontro consigo resolver facilmente, seja encontrando uma alternativa no Linux ou recebendo correções de usuários mais experientes para meus problemas.

De maneira geral, tem sido muito mais fácil lidar com os pacotes, pois parece que tudo foi projetado pensando no Linux.

1

Não cheguei a trabalhar com java.
Porém da minha experiência com c# se tu não for trabalhar com dotnet antes da versão 6 é bem tranquilo de desenvolver no linux. A versão 8 tem alguns recursos novos que deixa o codigo bem menos verboso, principalmente na injeção de dependências.
Recomendo o Rider, vscode tem algumas limitações com relação a inclusão de arquivos que precisa em alguns projetos.

A cli do dotnet não é muito intuitiva igual do node.

Fazendo um adendo sei que o kotlin é menos verboso que o java com sintaxe bem parecida e um pouco de retrocompatibilidade, caso opte talvez seja mais tranquilo de aprender.

1

Trabalho com desenvolvimento usando .net fazem alguns anos, bom afim de aprendizado acho que você não deverá encontrar muitos problemas, afinal você estará criando um sistema novo e irá utilizar .net core que roda no linux sem mais problemas.
Bom porém quando você chega ao mercado, encontramos alguns dinossauros construídos, temos aplicações que rodam com windows service por exemplo, sistemas bancários que rodam em .net framework 4.5 (que roda só no windows), mas pode ser que você só tenha contato com soluções novas que já utilizam .net core, então poderia estar mais familiarizado.

Acho que pra fins de estudo não há problemas, porém te adianto que talvez no mundo das empresas pode ser que você tenha que ter um dual boot para essas aplicações que necessitam do windows :)

Eu recomendaria talvez você considerar o Rider (Produto da Jetbrains) que roda tanto no windows quanto no linux, então você estaria familiarizado nos dois SO com sua principal ferramenta de trabalho ;)

Valeu!

1

Sou desenvolvedor c# backend e, por gosto pessoal, utilizo Mac. Respondendo sua pergunta, C# funciona sim muito bem fora do sistema Windows. A única limitação que tive até hoje foi com projetos Windows Forms mas, até aí, é meio óbvio... É uma linguagem robusta, um framework muito completo e tem ganhado cada vez mais recursos. Além disso, trabalha muito bem com qualquer Banco de Dados e Cloud (não apenas SQL Server e Azure).

1

Preconceito?

Linguagem é só uma ferramenta. Se a empresa que me emprega usa C#, Java ou VB, da na mesma. Programador entrega solução.

Vc pode ate dizer que prefere linguagem X pq tem mais mercado, totalmente logico e aceitavel. Vc pode dizer que pra um projeto pessoal, prefere linguagem Y , pq tem features que outra não tem. Mas preconceito nao faz sentido, gente.

1

Me expressei mal, eu apenas não sou muito fã do windows, gosto de desenvolver no linux e fiquei curioso se funcionaria bem no caso do C#. Se windows é melhor nesse cenário, então Ok, eu uso windows.

1

não recomendo, a maioria dos projetos não usam dotnet core. Então uma hora tu vai ter que usar o windows por que no linux não vai da para você coda, mesmo que seja para web.

-2

Vamos entender o que é "desenvolver".
Alguém precisa de algo, um software, um site, app mobile etc. talvez ela tenha algumas premissas, tem que funcionar na plataforma X, o prazo é Y, pelo preço Z, etc.
Você entrega esse algo no prazo e valor combinado.
Perceba que não importa se você usa Linux, Windows, macOS, etc.
Qualquer coisa vai valer a pena se você consegue suprir a necessidade do cliente simples assim, ou seja, entregar no prazo o que foi pedido e no valor combinado.