Entendendo o C# e o .NET

Antes mesmo de falar sobre o C# e .Net se você ainda não conhece sobre linguagens de programação e suas características recomendo a leitura do meu post Linguagens de Programação – Tio Aguiar .

O que é o C# (C-Sharp)?

O C# é uma linguagem de programação compilada, fortemente tipada e de alto nível. Esta linguagem permite aplicar a programação orientada a objetos e orientada a componentes. Outra característica do C# é que ela é uma linguagem de código gerenciado, mas o que isso significa?

Código gerenciado – É o código que para ser executado necessita de um gerenciador. Esse gerenciador cuida automaticamente da memória, segurança e outros recursos básicos da máquina, isso significa que o desenvolvedor irá interagir menos com os recursos de máquina.

Você sabia? Além do C# o Java e o Kotlin também é uma linguagem de código gerenciado.

No C# este gerenciador é chamado de CLR – Common Language Runtime. O CLR é pega o código de linguagem intermediária gerada pelo compilador do C#, ele compila em linguagem de máquina ou binária e executa o mesmo. Este gerenciador é responsável em cuidar do acesso a memória, define os limites de segurança entre outras funções.

O fato do desenvolvedor não controlar esses recursos não quer dizer que ele fique limitado. Em linguagem não gerenciada como C++ ou Pascal(popular Delphi), o desenvolvedor tinha que se preocupar com acesso a memória, segurança e outros. Mas com o C# você não tem essa preocupação, isso não significa que o desenvolvedor fica limitado, pelo contrário, na verdade ele ganha em produtividade e se concentra no mais importante – desenvolver software para atender os requisitos de negócio.

Origem do C#

O C# foi desenvolvido pela Microsoft por uma equipe liderada por Anders Hejlsberg (responsável também pelo desenvolvimento do Delphi e Turbo Pascal). O seu desenvolvimento iniciou em 1999 e a linguagem foi lançada em 2002 como parte da plataforma .NET.

Porque aprender C#?

O C# é uma excelente linguagem para quem está começando aprender a programar. Por que?

  • Fácil aprendizado: Além de ter uma ampla documentação disponível e rico conteúdo na internet, ela é simples e objetiva.
  • Versatilidade: Permite a criação de aplicações web, mobile e desktop. Você pode desenvolver até mesmo jogos e softwares para dispositivos eletrônicos e muito mais.
  • Maturidade: Embora lançado em 2002, a linguagem está em constante evolução simplificando e melhorando a produtividade dos desenvolvedores. Encontramos bastante conteúdo disponibilizado pela comunidade técnica como soluções para problemas comuns em fóruns e blogs. Possui várias bibliotecas que resolvem tarefas do dia a dia e com certa complexidade que os desenvolvedores levariam tempo para desenvolver (exemplo: leitura de arquivos nos formatos XML, JSON e acesso a banco de dados)
  • Mercado de trabalho: Muitas das grandes empresas hoje em dia tem adotado o C# como uma de suas principais stacks. Com isso a necessidade de mão de obra na área torna-se cada vez maior.

O que é o .NET?

O .NET (dotnet) é uma plataforma de desenvolvimento (framework) open source (software livre), criada pela Microsoft para criar diferentes tipos de aplicativos em uma variedade de linguagens – isso mesmo você pode usar não somente o C# mas também outras linguagens como o Visual Basic, F# e outras.

Framework – É uma estrutura para que o desenvolvedor possa construir suas aplicações. Os frameworks permitem ao desenvolvedor ter acesso a recursos já desenvolvidos, prontos de tarefas que eles irão utilizar no dia a dia, como escrita de arquivos, acesso a dados e muitos outros.

Por que usar um framework? – (1) Poupam tempo e aumentam a produtividade e reduz riscos. (2) Já foi validado e testado o que torna confiável seu uso. (3) Não compensa começar algo que já está pronto do zero.

Dica Importante- Frameworks melhoram nossa produtividade, mas a medida que você pegar mais experiência tente entender como eles funcionam. Com frameworks de código aberto você tem a oportunidade de conhecer o código fonte, faça isso para a medida que evolui seu aprendizado.

Como o .NET trabalha?

Você talvez tenha ficado curioso e se perguntado como é possível o .NET suportar múltiplas linguagens para desenvolver aplicações?

Com o .NET é possível compartilhar bibliotecas escritas em C# e com outras escritas em Visual Basic.

Para saber como isso é possível vamos entender como tudo funciona: cada linguagem suportada pelo .NET tem o seu próprio compilador, esse compilador NÃO gera um código em linguagem binária ou de máquina como ocorre em linguagens não gerenciada, para chegar em uma linguagem de máquina o .NET dá dois passos importantes:

Passo 1: Os compiladores das linguagens geram um código intermediário chamado de IL ou MSIL (linguagem intermediária).

Dica: Para você entender melhor esse processo do compilador C#, Visual Basic e F# convertendo o código para o IL recomendo olhar o sharplab.io. Nele você pode ver a geração do IL pelo compilador C#. Veja a imagem abaixo no lado esquerdo onde temos um código C# e do lado direito temos o IL gerado pelo compilador C#. Você pode trocar no combo box “code” a linguagem e verá que o resultado em IL do lado direito será praticamente o mesmo.

Passo 2: O gerenciador que cuida dos recursos de máquina como memória e outros do .NET é chamado de CLR (Common Language Runtime) ou o runtime. Ele é responsável por este segundo passo. O que ele faz? O código IL é direcionado ao CLR que possui um compilador JIT (Just in time) que converte a IL em código de máquina específico para o ambiente do computador onde o CLR é executado.

Veja abaixo como é este processo:

Esta forma do .NET trabalhar viabiliza dois de seus maiores diferenciais, (1) suporte a múltiplas linguagens, o fato do compilador da linguagem gerar a IL permite isso. (2) suporte multiplataforma, como o CLR (runtime) gera o código em linguagem de máquina ele é capaz de fazer isso para Windows, Linux ou Mac.

Importante: O segundo diferencial só foi possível a partir da versão .NET Core.

Conclusão

Entender o C# e o .NET nos dá um insight importante: embora o .NET e o C# estejam próximos, interligados, eles são coisas diferentes.

O .NET é uma plataforma ou um framework que (1)permite criar uma variedade de aplicações e (2)oferece suporte a várias linguagens, (3)oferece ao desenvolvedor acesso a bibliotecas com rotinas já desenvolvidas que resolvem problemas comuns do desenvolvedor no dia a dia e (4)possui um gerenciador que cuida dos recursos de máquina durante a execução do programa no computador.

O C# é uma linguagem de programação compilada, fortemente tipada, de alto nível e gerenciada (pelo .NET).

Opinião: Muitas pessoas costumam a encarar o .NET e o C# como uma coisa só. Já ouvi coisas do tipo: “fulano é programador .net”. Muitos falam assim porque tem a percepção que os dois são uma coisa só, a razão disso está no pouco ou na falta de entendimento do que é o .NET e C#. Para quem está começando na área é muito importante entender essas diferenças.

Referências:

O livro C# para Iniciantes foi escrito por profissionais referência no mercado que fizeram um trabalho voluntário para compartilhar um conteúdo altamente rico para quem está dando o seus primeiros passos.

A plataforma do Balta do André Baltiere tem um conteúdo de primeira linha e ele é bastante didático para quem quer aprender C# e muito mais. Vale a pena conferir, inclusive ele tem alguns cursos gratuito.

A Microsoft possui um amplo conteúdo para quem quer começar aprender o desenvolvimento com C# e .NET. Veja abaixo:

O que é o .NET? Uma plataforma de desenvolvedor de software livre. (microsoft.com)

Dê seus primeiros passos com o C# – Training | Microsoft Learn

Tio Aguiar
Tio Aguiar

Especialista em Engenharia de Software com mais de 20 anos de experiência e atualmente trabalha na Arco Educação com a marca Sistema Positivo de Ensino que é uma das maiores empresa de educação e tecnologia do país.
Ajuda novas pessoas desenvolvedoras a começar sua carreira com o pé direito. Conhece os desafios para quem está começando sua carreira, por isso ele pode ajudar você a começar a sua.

Artigos: 7

Um comentário

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *