* A Microsoft investiu bastante na criação da nova plataforma de desenvolvimento. Veja bem: uma equipe que é seguramente o melhor pessoal do ramo, com dinheiro para gastar e sem a pressão de precisar lançar um upgrade por trimestre para “fechar o balanço” e não ir à falência.
</blockquote>
</aside>
É, lá eles lançam SPs 1,2,3,4…ad infinnitum para tentar consertar as merdas que fazem.
<aside class="quote no-group">
<blockquote>
O C# tem intrinsecamente melhor performance que o Java;
</blockquote>
</aside>
C++ também. Não venha me falar que C++ não tem máquina virtual porque ele trabalha na máquina virtual do SO. Clasro que uns pequenos truquezinhos para colocar a CLR profundamente enterrada no Windows ajudam a melhroa performance…
<aside class="quote no-group">
<blockquote>
O C# suporta conceitos de componentes (propriedades e eventos), fundamentais para uma boa ferramenta RAD;
</blockquote>
</aside>
Tem egtne que gosta desta coisa doida de “propriedades” e “eventos”, ams eu acho que isto, do jeito que está, é voltar a usar bicicleta de rodinhas no VB e Delphi. Prefiro meus beans OO.
<aside class="quote no-group">
<blockquote>
O C# restaura certos recursos úteis tirados do C++, como sobrecarga de operadores, e acrescenta outros interessantes, como switch com strings. A importância destes recursos varia de pessoa para pessoa, mas acredito ser bom tê-los à disposição.
</blockquote>
</aside>
Eu acho sobrecarga de operadores bem legal, o difícil é achar alguma utilizade real para isso.
<aside class="quote no-group">
<blockquote>
Em C#, todos os tipos podem ser tanto atribuídos a object como ter métodos, NÃO APENAS AS CLASSES. Vou dizer de outra forma: em C# você pode atribuir um int diretamente a um object. Tem mais: um int tem métodos! E o melhor de tudo: quando você usar os inteiros “sozinhos”, você não paga o preço adicional de OOP; estes tipos são gerenciados na pilha de forma pouco custosa. Em Java você tem que gerenciar manualmente “classes associadas” aos tipos intrínsecos.
</blockquote>
</aside>
Depois do unboxing do Java 1.5 eles vão dizer o quê? Fora que Integer, Long, etc. semrpe existiram [e sim, eles têm métodos].
<blockquote>A struct é semelhante a class no sentido que pode possuir coisas como “campos” e “métodos”. As diferenças em relação a class são as seguintes:
* Elas são tipos por valor enquanto as classes são tipos por referência e, portanto, alocadas na pilha
* Não podemos declarar um construtor que não aceite argumentos;
* Podemos atribuir à variável this;
* Não suportam herança; elas são implicitamente sealed.</blockquote>
Acrescentaria mais um:
[list]Não são OO[/list]
A gente já reclama pra cacete de java não ser OO pura e esses manés vêm com conceitos de C, uma linguagem estruturada de mais de 25 anos! Faça-me o favor…
[quote]Em Java, assim como no C#, existem “tipos por valor”, como os inteiros e “tipos por referência”, como as instâncias das classes. Quando de uma chamada de função, os “tipos por valor” são passados por valor e os “tipos por referência” passados por referência. Mas e se quisermos passar um “tipo por valor”, como um inteiro, por referência? A resposta é que em Java não podemos. Precisamos “embalar” o tipo por valor em uma classe, alocar a um objeto da classe dinamicamente e aí passar o objeto, que “virou” uma referência. Estas maquinações do Java têm um grande custo tanto em termos de trabalho na programação como de performance.
Já o C# inclui passagem por referência “tradicional”. Este é, aliás, um recurso bastante útil que não havia no C, foi introduzido no C++ e retirado no Java. O C# o trouxe de volta.
Faltou o dever de casa, né? Java passa CÓPIAS de referência, C++ também. E C# também, ao que parece. Putz, isso é pergutna de iniciante em Java…
<aside class="quote no-group">
<blockquote>
O C# também permite que se coloque tags no fonte com a finalidade de criar documentação, mas o C# vai bem além da criação de páginas HTML. Em primeiro lugar, o Visual Studio cria as tags automaticamente, bastando digitar “///” antes do elemento a ser documentado.
</blockquote>
</aside>
Uma cosia que eu odeio em quem curte M$: estávamos falando da linguagem ou do VS.NOT? Vamos e venhamos… o Eclipse também gera sozinho JavaDoc, mostra ele quando rpeciso, etc.mas o Eclipsenão faz parte do Java.
<aside class="quote no-group">
<blockquote>
Conforme escrito no artigo, o Java tem static final que corresponde ao const do C#. O campo readonly, só presente no C# permite definir um campo que pode ser atribuído apenas no construtor da classe e não em outros métodos. Este recurso simplesmente não existe no Java.
</blockquote>
</aside>
Mais rodinhas para minha bicicleta? Não, obrigado. Deixo meu campo read-only implementando Defensive Coping, não rpeciso de uma keyword para esta bobagem.
<aside class="quote no-group">
<blockquote>
A Microsoft submeteu no fim do ano 2000 o C# a um órgão internacional de padronização, o ECMA (<a href="http://www.ecma.ch">http://www.ecma.ch</a>, <a href="http://www.microsoft.com/NET/sharedsourcewp.asp">http://www.microsoft.com/NET/sharedsourcewp.asp</a>). A Sun fez algumas tentativas de padronizar o Java, mas nenhum órgão internacional aceitou seus termos (<a href="http://news.cnet.com/news/0,10000,0-1003-200-320974,00.html">http://news.cnet.com/news/0,10000,0-1003-200-320974,00.html</a>, <a href="http://www.cnn.com/1999/TECH/computing/12/09/java.std.cancel.idg/">http://www.cnn.com/1999/TECH/computing/12/09/java.std.cancel.idg/</a>). O resultado é que o Java é uma linguagem proprietária enquanto o C# não é.
</blockquote>
</aside>
Ha-ha. Tem gente que realmente acredita que a Micro$oft produz algo livre? É contra o modelo de negócio deles, ora bolas!! De quem é a propriedade itnelectual? Quem pdoe cortar as asinhas da liberdade? Java não é nenhum exemplo de liberdade total, mas se for assim fico com um Python, PERL ou outra alternativa. O JCP é um processo aberto e que funciona muito bem, obrigado.
[quote]
Os attributes, um recurso completamente inexistente em Java, permitem que você “marque” código com informações declarativas definidas pelo programador. Estas informações serão interrogadas em tempo de execução através de “Reflections”.
C# surgiu depois do Java, então traz uma “tapagem” dos buracos. O TIger implementa muitas melhorias, dentre elas as Annotations. Podem não ser a meljor das maravilhas, mas são bem legais…
<aside class="quote no-group">
<blockquote>
Tanto o C# com o MSIL (Microsoft Intemediate Language) foram feitos para serem compilados e são sempre compilados. Já o Java e o Bytecode Java foram feitos para serem interpretados e podem ser compilados, como o artigo deixa claro. A questão “de qual porcentagem dos programas Java são compilados” pode ser discutida eternamente sem que se chegue a nenhuma conclusão.
</blockquote>
</aside>
Todos os programas Java são compilados, para a máquina virtual [da-lhe cv] mas são. JIT também vai muito bem, obrigado. Esse cara deve estar lembrando de applets no InternetExploder 3.0
Tá, chega, o cara fala de GOTO e várias linguages [alguém falou em Groovy?].
Não sou cotnra C#, não conheço a linguagem mas j’ouvi pessoas muito boas falando bem dela, acredito que seja bem legal, mas se este carinha escreve coisas deste tipo no site da Microsoft Brasil, cacete, imagina então quem desenvolve código lá?
[]s