A linguagem C# foi criada junto com a arquitetura .NET. Embora existam
várias outras linguagens que suportam essa tecnologia (como
VB.NET, C++, J#), C# é considerada a linguagem
símbolo do .NET pelas seguintes razões:
- Foi criada
praticamente do zero para funcionar na nova plataforma, sem
preocupações de compatibilidade com
código de legado. - O compilador C# foi
o primeiro a ser desenvolvido. - A maior parte das
classes do .NET Framework foram desenvolvidos em C#.
Características
C# (pronuncia-se “cê chárp” em português ou
“cí charp” em inglês) é, de certa
forma, a linguagem de programação que mais
diretamente reflete a plataforma .NET sobre a qual todos os programas
.NET executam. C# está de tal forma ligado a esta plataforma
que não existe o conceito de código
não-gerenciado (unmanaged code) em C#. Suas estruturas de
dados primitivas são objetos que correspondem a tipos em
.NET. A desalocação automática de
memória por garbage colletor além de
várias de suas abstrações tais como
classes, interfaces, delegados e exceções
são nada mais que a exposição
explicita recursos do ambiente .NET.
Quando comparada com C e C++, a linguagem é restrita e
melhorada de várias formas incluindo:
- Ponteiros e
aritmética sem checagem só podem ser utilizados
em uma modalidade especial chamada modo inseguro (unsafe mode).
Normalmente os acessos a objetos é realizada
através de referências seguras, as quais
não podem ser invalidadas e normalmente as
operações aritméticas são
checadas contra sobrecarga (overflow). - Objetos
não são liberados explicitamente, mas
através de um processo de coleta de lixo (garbage
collector) quando não há
referências aos mesmos, previnindo assim
referências inválidas. - Destrutores
não existem. O equivalente mais próximo
é a interface Disposable, que
juntamente com a construção using block
permitem que recursos alocados por um objeto sejam liberados
prontamente. Também existem finalizadores, mas como em Java
sua execução não é imediata. - Como em Java,
só é permitida a herança simples, mas
uma classe pode implementar várias interfaces abstratas. O
objetivo principal é simplificar a
implementação do ambiente de
execução. - C# é
mais seguro com tipos que C++. As únicas
conversões implícitas por default são
conversões seguras, tais como
ampliação de inteiros e conversões de
um tipo derivado para um tipo base. Não existem
conversões implícitas entre inteiros e
variáveis lógicas ou
enumerações. Não existem ponteiros
nulos (void pointers) (apesar de
referências para Object serem
parecidas). E qualquer conversão implícita
definida pelo usuário deve ser marcada explicitamente,
diferentemente dos construtores de cópia de C++. - A sintaxe para a
declaração de vetores é diferente (“int[]” ao invés de “
a = new int[5]int“).
a[5] - Membros de
enumeração são colocados em seu
próprio espaço de nomes (namespace) - C# não
possui modelos (templates), mas C# 2.0 possui
genéricos (generics). - Propriedades
estão disponíveis, as quais permitem que
métodos sejam chamados com a mesma sintaxe de acesso a
membros de dados. - Recursos de
reflexão completos estão disponíveis
Apesar de
C# ser freqüentemente tido como similar a Java, existem uma
série de diferenças importantes, tais como:
- Java não
implementa propriedades nem sobrecarga de operadores. - Java não
implementa um modo inseguro que permita a
manipulação de ponteiros e aritmética
sem checagem. - Java possui
exceções checadas, enquanto
exceções em C# são não
checadas como em C++. - Java não
implementa o goto como estrutura de controle, mas
C# sim. - Java utiliza-se de
comentários Javadoc para gerar
documentação automática a partir de
arquivos fonte. C# utiliza comentários baseados em XML para
este propósito. - C# suporta
indexadores e delegados.
Fonte:
http://pt.wikipedia.org/wiki/C_Sharp
em 27 de Março de 2007, à 01:07am
Só para completar um pouco essa parte “teórica”,
vale dizer que a Microsoft está desenvolvendo uma
extensão do C#, chamado de CÔmega. O projeto ainda
está bem inicial, mas pode ser conferido em: http://research.microsoft.com/Comega/

0 Respostas para “História da Linguagem”