Vejo aqui no fórum, que muita gente fala mal do C#. Muitas pessoas pensam da forma “Java é a melhor coisa do mundo, o resto é lixo.”
Mas pelo o que eu vejo, C# sinceramente, em alguns casos, está muito a frente do Java. Tem muitos recursos, por exemplo, switch com strings, keyword “using”, LINQ* e etc. Outra coisa que noto, Java é muito pouco usado para aplicativos desktop. É difícil ver um programa Java para o usuário final usar no dia-a-dia. Já C# é diferente.
Simplesmente, quero saber porque tanta gente odeia o C#/.NET? Porque? Porque é da Microsoft? Só roda perfeitamente no Windows? (Sim, .NET é multiplataforma, Mono.)?
Também queria saber, aos usuários C# aqui do GUJ, porque usam essa linguagem ao invez do Java?
Todos aqui estão livres para falar bem o mal do .NET. Mas por favor. Sem flames.
* Para quem não sabe o que é LINQ, é um recurso de algumas linguagems do .NET, do tipo: List<int> a = new List<int>() {5,8,13,1,3,11};
foreach (int i in a.Where(x => x > 10)) Console.WriteLine(i);
Esse código pega os numeros maiores que 10 da Lista.
Por experiência aqueles que sentem a necessidade de “diminuir” a concorrência são justamente os programadores de .Net. Jamais vi nenhum desenvolvedor Java perdendo tempo para falar besteira sobre eles e tampouco indo a fóruns .Net para trollar. É muito mais fácil você ouvir falarem mal de Ruby ou algo assim por causa da cultura “rockstar” deles que acaba criando mal estar entre alguns profissionais.
O .Net tem problema de vendor lock-in, pois se você realmente deseja usá-lo para aplicações mais sérias precisará usar as ferramentas da Microsoft. Os padrões publicados do C# não cobrem tudo o que é usado em .Net e ainda existem questões sobre patentes caso você opte por soluções como o Mono. O Mono sempre estará um passo atrás da Microsoft e jamais será tão bom quanto, além de ser muito pior do que Java.
Fora isso existem problemas de design. A linguagem C# é uma zona. Algo que começou como uma mistura de Java e C++ descambou para o ridículo adicionando-se features atrás de features sem nenhum critério. Java preza pela simplicidade e isso é uma coisa boa. Features como o LINQ nada mais são do que hacks para consertar algo que não presta por definição, afinal de contas linguagens como o Lisp podem fazer isso e muito mais há tempos.
Não vejo muito sentido em C#, pois se desejo algo simples e rápido posso usar Java e se desejo maior flexibilidade e expressividade posso usar Lisp.
É exatamente isso que eu digo. Pelo que vi, a maior reclamação é ser da Microsoft. Isso não é problema. Pois a Microsoft apoia o Mono. (veja: http://research.microsoft.com/en-us/um/cambridge/projects/fsharp/release.aspx) a Microsoft está “recomendando” o Mono. Não há problemas. Como disseram, sim, o Mono está muito atrás do .NET da Microsoft, mas garanto que o projeto um dia vai crescer e se tornar equivalente ao C# de hoje. Não tendo problemas do tipo “vendor lock-in, microsoft sucks, closed-source” e etc.
Você fez uma pergunta e teve a sua resposta. Por favor faça um quote de onde está “Microsoft sucks” no texto que escrevi, caso contrário pare de falar besteiras.
O problema com o Mono é com patentes. Apenas recentemente a Microsoft fez uma “community promise” sobre não processar usuários do Mono, mas não sei quais implicações legais de uma “promessa” e se inclui tudo o que é necessário para interoperabilidade, i.e., bibliotecas, ou apenas a linguagem e bytecodes em si.
Aí é só uma questão de se você confia na Microsoft. Uma empresa com um histórico de enfiar faca nas costas de quem quer que seja merece confiança?
[quote=Thiagosc]Você fez uma pergunta e teve a sua resposta. Por favor faça um quote de onde está “Microsoft sucks” no texto que escrevi, caso contrário pare de falar besteiras.
O problema com o Mono é com patentes. Apenas recentemente a Microsoft fez uma “community promise” sobre não processar usuários do Mono, mas não sei quais implicações legais de uma “promessa” e se inclui tudo o que é necessário para interoperabilidade, i.e., bibliotecas, ou apenas a linguagem e bytecodes em si.
Aí é só uma questão de se você confia na Microsoft. Uma empresa com um histórico de enfiar faca nas costas de quem quer que seja merece confiança?
Tecnologia por tecnologia, então Lisp é superior.
[/quote]
Então, por favor faça um quote de onde eu disse que VOCÊ falou isso. Eu disse isso dos “odiadores” C# em geral. Não de você.
E sim, apesar de ser usuário Linux, confio na Microsoft. Que na verdade, estou postando isso pelo Windows 7 =)
E sim, antes de dizer que eu falei besteiras leia o meu post corretamente. Obrigado.
Realmente tem muito radicalismo sem sentido. Creio que, em especial quando somos novos, a gente costuma ser um pouco mais xiita e defender nossas preferencias com unhas e dentes. Quando a gente ganha mais experiencia, percebemos que nao existe a melhor ferramenta, e sim a mais adequada para cada caso.
Sobre .NET e Java especificamente, eu costumo falar que as duas plataformas tem poderio equiparavel, sendo que a maior diferenca é a forma de pensar, e de como a comunidade se move perante a tecnologia. logo isso vira um embate JCP x Microsoft, ai entram ideologias. Eu gosto mais do Java, mas nao teria problema nenhum em encarar o .NET em um projeto que considere-o adequado.
ja faz um tempinho que não mecho com .net, mais lembro que quando eu estava fazendo isso, e quando estava estudando eu estava achando a API do .net meio “estranha”, talvez meio desorganizada… claro que isso é só uma impressão, uma “opinião” minha, do por que “eu” gosto mais de java, considero mais “prazeroso” usar java enquanto eu to programando, sei la… é gosto mesmo…
agora, 2 coisas que faço questão de ressaltar, a primeira é que .net tem suas vantagens, sempre soube disso, e acho no minimo controverso dizer que uma das plataformas (ou mesmo linguagens no caso de c# e a linguagem java) é melhor do que a outra… eu ter achado a API “estranha” como eu disse pode muito bem ser por que estou acostumado com java, e que tenho um pé atras com a microsoft, de fato… a segunda coisa que ia dizer é que acho ridiculo esses tipos de troolzisses que vc descreveu… e sei que sempre tem, para ambos os lados.
Bom, não sou um usuário assiduo do forum, por falta de tempo, mas não vejo muita gente falando mal não. Pelo menos no meio profissional em que estive. Também não falam bem. Mas acho que o motivo do pessoal de java não ser fan de .Net é simplismente por ser da M$, que é uma empresa que tentou por várias vezes brekar o java. Isso ja é motivo para não gostar dos caras. E o fato mais importante pelo menos para mim é que o .Net em si não tem nada a mais que seja significativo o suficiênte para me fazer trocar de plataforma. Hoje java não é mais linguagem é uma plataforma gigantesca. Quase todas as soluções que você vai criar no .Net é possivel fazer em java de forma padronizada. Tirando claro as integrações com os produtos da M$ que tem um certo custo (escravidão). Acho que ninguém gosta da estratégia dela, e não é só os usuários de java, a União Européia também. Mas creio que a falta de padrões seja o motivo principal. Talvez em termos de linguagem seja trocar 6 por meia duzia, mas em termos de plataforma a coisa é meio gritante.
O maior problema está mesmo com .NET, ou é isso ou nada. As melhores opções são semre MS em tudo.
Com java tenho um maior nível de escolha posso usar produtos da Oracle, IBM, etc…
São inumeras as opções de software livre.
Concordo com o que o Paulo Silveira disse.
Essa e a mesma galerinha que cisma de rodar Crysis no Linux.
Porem também acho curioso os casos de rejeição. Na minha opinião o ódio é por causa das seguintes coisas:
.NET surgiu com o objetivo de ser a reação resultante do domínio do Java sob um setor do mercado ignorado pela Microsoft.
Cópia por melhor que seja sempre será uma cópia, C# sempre será lembrado como a alternativa mais simples (no sentido ruim da palavra) em relação ao Java ou como a linguagem que tem como objetivo ser melhor do Java; no mundo da tecnologia fazer o mesmo que a outra faz mesmo que seja um pouco mais simples não é o suficiente.
Equanto Java está preocupado em tornar seu mundo um pouco melhor C# está preocupado em criar um mundo paralelo em formato semelhante sem novidades relavantes.
Enquanto Java se preocupa com a questão “ser multiplataforma”, .NET aparenta utilizar a mesma idéia para amenizar uma situação irritante dentro do seu próprio ambiente onde o mesmo software não pode ser executado no Windows de versões diferentes por conta da incompatibilidade entre versões.
A Microsoft sempre passou a idéia (propositalmente) de que seus produtos (existem exeções) são para pessoas menos capacitadas tecnicamente; lembrando a idéia do “é só arrastar e soltar que está quase pronto”.
Por alguma razão estranha quem trabalha com as ferramentas da Microsoft fica tentado a gastar dinheiro ou se tornar pirata de alguma biblioteca que faz alguma firula bonitinha que no contexto do projeto é irrelevante.
…
Até gosto do c#, mexi semana passada aqui no trabalho, não conheço muito mas parece ser uma boa linguagem, o que me irritou foi o editor, pq to acostumado com o eclipse, que adiciona os imports e tal huahuahauhauh
Mas fora isso não tive muitas dificuldades com a linguagem, até gostei um pouco !! Mas ainda assim, prefiro JAVA !!
Normalmente, é muito difícil conversar com um javeiro ou sharpeiro. São pessoas que não possuem nenhum conhecimento da computação, e se acham muito por falarem a língua do momento(da moda).
Este tópico não foi muito feliz por causa do tema.
Respondendo a pergunta, eu sinceramente, prefiro em muitos casos codificar em c# e usar mono. Muitos dos projetos que trabalho estão codificados em java também. São aplicações que acompanham hardware e funcionam perfeitamente.
Se eu precisar trabalhar com outra linguagem, para mim não faria a menor diferença, no final, todo código vira instrução de máquina específica.
Bom, vou comentar pra responder uma questão que ficou “no ar” no tópico.
.NET geralmente é mais usado que Java para aplicações Desktop por causa da melhor performance da API Windows Forms frente ao Swing. Isso por que os Windows Forms acessam código nativo do Windows (as API’s Win32 e MFC), ou seja, os Forms rodam fora do runtime .NET, melhorando a performance, mas prejudicando a multiplataforma (Swing depende apenas do próprio Java).
Por isso a API Windows Forms no Mono depende da biblioteca libwine.
E, Xará (juliocbq) seu comentário sobre os “javeiros” e “sharpeiros” só mostra o mesmo preconceito que existe nos xiitas dessas linguagens.
Se vc ver o que tem de traz do framework .net vai ver uma tremenda gambiarra… não gosto do jeito que ele trabalha… seus componentes são muito presos ao framework… ele não te da flexibilidade… vc não pode por exemplo usar mais de um frame que nem no java… td é amarrado… e para controlar os objetos de visão, estilos, css e td referente a parte visual ele manda um campo hidden gigantesco com dados criptografados para o servidor… vc controla td do lado do servidor… pode dar a ilusão de ser mais rapido e produtivo para iniciantes mais se vc for analisar bem o “por baixo dos panos” é uma tremenda Gambiarra…
[quote=juliocbq]Respondendo a pergunta, eu sinceramente, prefiro em muitos casos codificar em c# e usar mono. Muitos dos projetos que trabalho estão codificados em java também. São aplicações que acompanham hardware e funcionam perfeitamente.
Se eu precisar trabalhar com outra linguagem, para mim não faria a menor diferença, no final, todo código vira instrução de máquina específica. [/quote]
Concordo com este ponto de vista também.
Mas já ouvi este tipo de discurso de quem programava em VB, e no final do projeto a irritação era enorme por conta das incompatibilidades que existiam dentro do proprio sistema operacional; simplesmente não dava para executar em versões diferentes do windows e porisso os recursos interessantes (visual e performance) eram podados.
A questão talvez não seja ser a melhor ou a pior, mas acho que quem adota os sistemas da Microsoft tem que saber o que está comprando…se vai trocar a versão do SO na empresa, que troque de todas as máquinas, se vai adotar .NET assuma as despesas e compre as ferramentas necessárias. O chato é ver a galera falando que .NET é bacaninha utilizando software pirata e se matando com questões de infra-estrutura na implantação sem assumir que fez besteira. Para piorar, no ponto alta da pressão acaba utilizando Java para construir algum tipo de gambi doentia. Várias vezes eu verifiquei softwares desenvolvidos em outras linguagens sem real necessidade; ou èra por não querer gastar mais dinheiro comprando mais componentes ou simplesmente para utilizar alguma coisa “da moda == Java” almejando status perante os clientes.
[quote=juliofsn]Bom, vou comentar pra responder uma questão que ficou “no ar” no tópico.
.NET geralmente é mais usado que Java para aplicações Desktop por causa da melhor performance da API Windows Forms frente ao Swing. Isso por que os Windows Forms acessam código nativo do Windows (as API’s Win32 e MFC), ou seja, os Forms rodam fora do runtime .NET, melhorando a performance, mas prejudicando a multiplataforma (Swing depende apenas do próprio Java).
Por isso a API Windows Forms no Mono depende da biblioteca libwine.
E, Xará (juliocbq) seu comentário sobre os “javeiros” e “sharpeiros” só mostra o mesmo preconceito que existe nos xiitas dessas linguagens.[/quote]
Digo javeiros e sharpeiros as pessoas que acham que computação é linguagem de programação, e acabam caindo em discuções inúteis. Da mesma maneira existem vbeiros, pascaleiros, cppeiros e assim por diante.
Um processador vai executar somente assembler específico dele, e isso inclui a máquina hipotética(virtual) java, e a mono. Então não há porque odiar uma e bendizer outras.
Só corrigindo uma coisa. O Winforms tem performance mais alta que o swing não devido a acessar código nativo. Isso porque mono também implementa winforms, mas devido a máquina hipotética rodar um nível mais baixo que a do java. Dot net roda praticamente no kernel do windows.
Respondendo a pergunta: pq tanta gente odeia, ou pq tanto ‘javeiro’ odeia?
Eu trabalho, na maior parte do tempo, com Java. Já trabalhei com C#, e sinceramente, gostei.
Do que senti falta: COMUNIDADE. Não achei nada em fóruns, é o MSDN e só, praticamente… difícil achar gente disposta a colaborar.
Xiita a gente acha em todo canto, mas sinceramente, conheço muito mais ‘javeiro’ xiita que ‘sharpeiro’. A comunidade Java - sendo aqui um pouco crítico - é, em geral, muito vaidosa; quem tem mais posts em fóruns, quem tem mais artigos ou tutoriais publicados, quem tem o blog de tecnologia mais acessado e por aí vai.
Aquela postura “a resposta é Java, a pergunta eu nem sei qual é ainda” persiste, ainda.
Mas normalmente é questão de costume, sinceramente. Como só desenvolvo pra web, praticamente, se posso optar, escolho Java por comodidade: produzo mais rápido, já conheço as ferramentas, entre outras vantagens PRA MIM.
Agora se fosse standalone… sei não. Talvez eu caísse nos braços da Microsoft.
Quanto ao Lock-in, esse negócio é meio punk mesmo. A empresa que ‘compra’ o projeto tem que ter colhões financeiros pra bancar isso tudo. Eu ‘ganho’ as licenças da Microsoft por parceria da faculdade, mas o cliente tem que comprar… e não é naaaaada barato. Pesa na escolha.
Mas fugi do assunto, na real. Acho que tanta gente ‘odeia’ C# por 3 motivos:
é meio “modismo nerd” odiar a Microsoft;
não conhece, repete o que falaram pra ela;
conhece outra linguagem, tentou fazer IGUAL com C# e não conseguiu (óbvio que não dá; é outra linguagem, forma diferente de trabalho) e saiu falando mal sem nem estudar um pouco.
Acho que é isso.