Conhecendo um pouco sobre C#

Conhecendo um pouco sobre C#

Neste artigo, falarei um pouco sobre o C#, uma linguagem de programação da Microsoft amplamente utilizada em diversas áreas do desenvolvimento de software.

O que é o C#?

O C# (CSharp) é uma linguagem de programação tipada, compilada e gerenciada. Foi criada por Anders Hejlsberg no ano 2000. Anders também é conhecido por ser o criador do Delphi e do TypeScript. Atualmente, o C# é a principal linguagem da Microsoft.

Tipada

O C# é caracterizado como uma linguagem tipada, ou "fortemente tipada". Linguagens fortemente tipadas nos exigem especificar o tipo de dado para cada informação. O tipo de dado define o formato da informação; por meio dele, podemos determinar se uma informação é um número, uma letra ou uma cadeia de caracteres.

Exemplo de código em C# (linguagem com tipagem forte):

int age = 30;
float height = 1.90f;
string name = "John Doe";
char gender = 'M';
bool isDeveloper = true;

Exemplo de código em JavaScript (linguagem com tipagem fraca):

let age = 30;
let height = 1.90;
const name = "John Doe";
const gender = "M";
let isDeveloper = true;

Compilada

Quando dizemos que uma linguagem é compilada, estamos nos referindo a um processo de compilação. Um processo que envolve a recepção de um arquivo de texto e sua conversão para binário.

Esse processo tem pontos positivos:

  • Desempenho: Geralmente, linguagens compiladas oferecem desempenho mais eficiente do que linguagens interpretadas. O código-fonte é traduzido para código de máquina nativo, o que resulta em execução mais rápida.

  • Detecção de erros em tempo de compilação: Erros de sintaxe e tipo são identificados durante a fase de compilação, facilitando a detecção e correção de problemas antes da execução do programa.

  • Executáveis autônomos: Os programas compilados geralmente geram executáveis independentes que podem ser distribuídos sem a necessidade de fornecer o código-fonte.

Contudo, existem pontos negativos:

  • Processo de desenvolvimento mais lento: A necessidade de compilar o código antes da execução pode tornar o processo de desenvolvimento mais lento. Cada modificação no código exige uma nova compilação.

  • Portabilidade: Executáveis compilados são específicos para uma arquitetura e sistema operacional. Isso pode resultar em desafios de portabilidade ao tentar executar o mesmo código em diferentes plataformas.

  • Menos flexibilidade em tempo de execução: Devido à natureza estática da tipagem e compilação, linguagens compiladas podem ser menos flexíveis em termos de adaptação a mudanças durante a execução.

Gerenciada

O C# é uma linguagem de código gerenciado, o que significa que sua execução depende de um gerenciador, também conhecido como runtime. O runtime, ou tempo de execução, tem a responsabilidade de gerenciar memória, segurança e outros recursos essenciais. Por meio desse gerenciamento, os desenvolvedores ficam isentos de preocupações como alocação e desalocação de memória, acesso a áreas inseguras do sistema operacional e outros eventuais "problemas". No caso do C#, o runtime utilizado é denominado CLR (Common Language Runtime).

A Microsoft suportava diversas linguagens de programação dentro do seu ecossistema, como C++, Cobol, VB.NET, C# e outras. Cada linguagem tinha seu próprio modelo de execução e seu próprio runtime. Isso tornava complexo integrar diferentes linguagens e dificultava o processo de manter todas elas. Para resolver isso, a empresa decidiu criar um ecossistema que permitisse a "unificar" o processo de desenvolvimento com todas essas linguagens. E com isso também eliminaria a necessidade de ter runtimes diferentes para cada linguagem. Assim surgiu o CLR, um ambiente de execução robusto e seguro que além de gerenciar a execução de programas, realiza a coleta de lixo, lida com exceções, garante a segurança de código e oferece suporte a diversas linguagens por meio da compilação para um código intermediário (IL ou CIL - Common Intermediate Language).

Ao compilar o código C#, esse código é traduzido para IL, processo esse conhecido como JIT (just in time). Durante a execução desse código, o CLR trabalha convertendo esse IL em código de máquina. Isso possibilita a inclusão de diferentes tipos de arquivos em um único projeto, como um arquivo F# dentro de um projeto C#.