Вы находитесь на странице: 1из 12

Linguagens de programação

Introdução
•C# possui melhor balanceamento entre poder e
produtividade se comparado com C e C++.
•Ambiente sincronizado com os padrões Web que
proporciona a fácil integração com as aplicações
existentes.
•Possibilidade de codificar em baixo nível quando e
se a necessidade aparecer.
•Linguagem Orientada a Objetos
•Alto grau de fidelidade com C e C++
Visão Geral
Produtividade e seguranca
• Abraça os padrões de programação Web: framework
extensivo
• Elimina erros de programacao mais comuns em C++
com as seguintes implementacoes: coleta de lixo,
variaveis inicializadas automaticamente, variaveis sao
type-safe.
• Reduz os custos de desenvolvimento do dia a dia
com suporte pré-construído para versioning
Visão Geral
• Poder, expressividade e seguranca
• Melhor mapeamento entre processos abstratos de
negocio e a implementacao real do software
• Interoperabilidade extensiva
• Suporte nativo para o Component Object

Model (COM) e APIs baseadas em Windows®.


• Uso restrito de ponteiros nativos e premitido.
Especificação da Linguagem
• Um nome nao pode ser igual a uma palavra-chave da
linguagem, com uma unica excecao: podemos usar uma
palavra-chave de C# colocando @ na frente. O caractere @
nao e parte do identificador, apenas fornece um contexto para
interpretar a palavra-chave como interpretador.
• Os tipos em C# sao tipos de valor e tipos de referencia.
• Uma constante e uma classe cujo valor pode seratribuido em
tempo de compilacao.
class Constantes {
public const int A = 1;
public const int B = A + 1;
}
Especificação da Linguagem
Arrays:
• Unidimensionais: int[] arr = new int[5]
// Declaracao e construcao
• Multidimensionais: int[ , , ] a = new int[ , , ] {{1}, {4}, {8}};
// declaracao e construcao de um array de inteiros
tridimensional
• int [][][] j;

// array de (array de (array de inteiros))


Especificação da Linguagem
Classes:
Form Intuitive meaning
public Access not limited
protected Access limited to the containing
class or types derived from
the containing class

internal Access limited to this program


protected internal Access limited to this program
or types derived from the
containing class

private Access limited to the containing


type
Compilação
• Os fontes tem extensao “.cs” e sao compilados
diretamente para um unico Assembly (“.exe” ou “.dll”
no formato PE).
• Os executaveis possuem informações de versão
detalhadas tanto sobre o próprio módulo como os
demais módulos referenciados, informações detalhadas
de todos os tipos implementados no arquivo e Código
MSIL – Microsoft Intermediate Language.
• Um executável ou DLL pode tanto chamar classes da
biblioteca ou de outros executáveis como também criar
classes derivadas de classes localizadas em outros
executáveis.
Compilação
Ambiente gerenciado:
• O executável não contém código Intel x86 e sim código
MSIL com chamadas à biblioteca de classes;
• O gerenciamento de memória é feito automaticamente
com o uso de um coletor de lixo
• As atribuições têm o tipo validado;

• Operações que podem comprometer a segurança, como


abrir um arquivo, exigem permissões especiais.

O compilador pode, em tempo de execução / compilação,


verificar e garantir que o programa não faça nenhuma
operação que possa comprometer a segurança e
integridade do sistema.
Compilação
Em tempo de execução o código do assembly é finalmente
compilado, método a método, para o ambiente final com
um “JIT- Just In Time Compiler”. Isto traz as seguintes
vantagens:
• Independência de CPUs e sistema operacional: basta que
exista um runtime do “.NET” para o programa rodar.
• O sistema de runtime pode fazer verificações de
segurança impossíveis caso o código fosse realmente
executável. Os programas podem rodar em uma espécie
de “caixa de areia” e não danificar o sistema hospedeiro.
• A compilação final traz performance melhor que a obtida
em ambientes interpretados.
Compilação
Verificações em tempo de compilação:
• Uso de variáveis não atribuídas;
• Parâmetro out não atribuído na função de chamada;
• Parâmetro ref não atribuído na função de chamada;
• Existência de código inatingível;
• Possibilidade de uma função não receber o valor de
retorno;
• Switch/Case sem break nas opções;
Compilador alternativo gratuito pode ser obtido em:
http://www.visualbooks.com.br/imagens/download/CompiladorC
Bibliografia

• Lippman, Stanley B., C#: um guia pratico, Bookman, 2003.


• http://csharp.com.br
• http://microsoft.com