C♯
-
Nota: Para outros significados, veja Sharp.
| C♯ | |
|---|---|
| Paradigma | Orientação a objetos estruturado imperativo |
| Surgido em | 2001 |
| Última versão | 4.0 (12 de abril de 2010) |
| Versão em teste | () |
| Criado por | Microsoft |
| Estilo de tipagem: | estática e dinâmica, forte, segura e insegura |
| Compiladores | .NET Framework, Mono, DotGNU |
| Dialetos: | Cω |
| Influenciada por | Java,[1] C++, Eiffel, Modula-3, Object Pascal[2] |
| Influenciou | D, F♯, Fantom, Java 5,[3] Nemerle, Vala |
| Licença: | Domínio público / CLR Proprietária |
| Página oficial | msdn.microsoft.com |
C♯, também escrito como C# ou C Sharp (em português lê-se "cê charp"), é uma linguagem de programação orientada a objetos, fortemente tipada, desenvolvida pela Microsoft como parte da plataforma .NET. A sua sintaxe orientada a objetos foi baseada no C++ mas inclui muitas influências de outras linguagens de programação, como Object Pascal e Java.
Índice |
[editar] História
Durante o desenvolvimento da plataforma .NET, as bibliotecas foram escritas originalmente numa linguagem chamada Simple Managed C (SMC), que tinha um compilador próprio. Mas, em Janeiro de 1999, uma equipe de desenvolvimento foi formada por Anders Hejlsberg, que fora escolhido pela Microsoft para desenvolver a linguagem. Dá-se inicio à criação da linguagem chamada Cool. Um pouco mais tarde, em 2000, o projeto .NET era apresentado ao público na Professional Developers Conference (PDC), e a linguagem Cool fora renomeada e apresentada como C#.
A criação da linguagem, embora tenha sido feita por vários programadores, é atribuída principalmente a Anders, hoje um Distinguished Engineer na Microsoft. Ele fora o arquiteto de alguns compiladores da Borland, e entre suas criações mais conhecidas estão o Turbo Pascal e o Delphi.
A Microsoft submeteu o C# à ECMA para uma padronização formal. Em Dezembro de 2001 a associação liberou a especificação ECMA-334 Especificação da Linguagem C#. Em 2003 tornou-se um padrão ISO (ISO/IEC 23270). Há algumas implementações em desenvolvimento, destacando-se a Mono, implementação open source da Novell, o dotGNU e o Portable.NET, implementações da Free Software Foundation, e o BDS 2008, implementação da CodeGear.
A Microsoft anunciou planos de adicionar o suporte a tipos parciais, generics e outras características. A padronização pela ECMA/ISO destas características foi solicitada, mas ainda não são parte da versão padrão da linguagem.
[editar] Etimologia
Pensava-se que o nome C# viria duma sobreposição de quatro símbolos +, dando a impressão de ++++, uma alusão à continuação do C++. Entretanto, o # de C# se refere ao sinal musical sustenido (♯), pronunciado sharp em inglês, que aumenta em meio tom uma nota musical.[4]
Porém, devido a limitações técnicas (fontes padrões, navegadores, etc) e o fato do símbolo do sustenido (♯) não estar presente nos teclados, o cerquilha (#) foi escolhido para ser usado no nome escrito.[5] Essa convenção é refletida no ECMA-334 C# Language Specification, a especificação técnica da linguagem.[6] Entretanto, em determinados lugares, como em propagandas e capas de livros, é usado o símbolo sustenido.[7]
[editar] Características
A linguagem suporta ponteiros através da palavra reservada unsafe (código não-seguro), que é obrigatório. Seu uso não é aconselhável, e blocos de códigos que o usam geralmente requisitam permissões mais altas de segurança para poderem ser executados. As operações aritméticas são verificadas contra transbordamento de dados. C# também suporta as operações aritméticas básicas como adição, subtracção, multiplicação e divisão. Esses símbolos são chamados operadores, e "operam" os valores das variáveis.
Um coletor de lixo também é suportado, um processo usado para a manutenção de memória. Com este recurso, é possível recuperar a zona de memória que um programa já não utiliza. Quando isto não ocorre pode acontecer a chamada perda de memória, um erro comum que pode levar ao término não desejado do programa em execução por esgotamento da memória livre.
Em C# não existe herança múltipla, ou seja, cada classe só pode herdar apenas uma outra classe e não mais do que uma, no entanto é possível simular herança múltipla utilizando interfaces. Assim, através da herança reduzimos código através da sua reutilização.
Os gabaritos não são suportados, mas a linguagem possui um suporte abrangente a generics. Nela podem se usar tipos genéricos para a maximização da reutilização de código, segurança de tipo, e desempenho. A utilização mais frequente é para a criação de classes. Pode criar as suas próprias interfaces genéricas, métodos, classes, eventos e delegates. As classes genéricas podem ser utilizadas para permitir acesso aos métodos usando tipos de dados específicos. Informações sobre os tipos usados em um tipo de dados genérico podem ser obtidas em tempo de execução por meio de reflexão.
[editar] Passagem de parâmetros
Há três tipos de passagem de parâmetros em C#, por valor, por referência e por saída. Na passagem por valor é feita uma cópia do argumento da chamada do método para o parâmetro do mesmo. Isso significa que as alterações que ocorrem nas variáveis passadas por cópia dentro do método não se refletem fora dele. Na passagem por referência toda alteração feita na variável passada por referência dentro do método alterará também seu valor fora dele.
Por padrão todo objeto e vetor são passados por referência e toda estrutura e variáveis primitivas são passadas por valor. Para se forçar a passagem por referência, tanto a chamada do método como a declaração dele devem estar com os argumentos e parâmetros precedidos pelas palavras reservadas ou ref ou out. A primeira é usada para se manipular um parâmetro já inicializado antes da chamada do método, de forma a somente editá-lo. A segunda é usada para se inicializar um parâmetro durante a execução do método, retornando o resultado para o método que o chamou.
[editar] Exemplos de código
-
Ver página anexa: Lista de exemplos de código C♯
Segue, abaixo, o programa teste Olá Mundo, que exibe a frase "Olá, Mundo!":
using System; namespace Teste { class OlaMundo { static void Main() { Console.WriteLine("Olá, Mundo!"); } } }
[editar] Bibliotecas
Ao contrário das outras linguagens de programação, nenhuma implementação de C# actualmente inclui qualquer conjunto de bibliotecas de classes ou funções. Mesmo assim, esta linguagem está muito vinculada à plataforma .NET, da qual obtém as suas classes ou funções de execução. O código é organizado num conjunto de espaços de nomes que agrupam as classes com funções semelhantes. Por exemplo, System.Windows.Forms contém o sistema Windows Forms; System.Console é usado para entrada/saída de dados.
Um nível de organização superior é fornecido pelo conceito de montador, que pode ser um simples arquivo ou múltiplos arquivos ligados juntos que podem conter muitos espaços de nomes ou objetos. Programas que precisam de classes para realizar uma função em particular podem se referenciar aos montadores como System.Drawing.dll e System.Windows.Forms.dll assim como a biblioteca core (conhecida como mscorlib.dll na implementação da Microsoft).
[editar] Política
Muitos dos produtos e iniciativas da Microsoft geram polêmica no campo político e a criação e desenho da C# não foi excepção. Devido à natureza fechada do C# com uma instituição comercial, a discussão política continua em relação à legitimidade da sua normalização, as suas semelhanças com Java, o seu futuro como uma linguagem de uso geral e outros assuntos. Alguns peritos em segurança se encontram cépticos em relação à eficácia do mecanismo de segurança do CLR e criticam a sua complexidade.
Ao contrário de linguagens proprietárias tal como a Visual Basic, a Microsoft optou por submeter a C# a um processo de normalização. No entanto, a empresa continua a ser a principal força a induzir mudanças e inovação na linguagem. Além disso, a Microsoft tornou bem claro que a C#, tal como outras linguagens .NET, é uma parte importante da sua estratégia de software, tanto para uso interno e para consumo externo. A Microsoft leva a cabo um papel activo em publicitar a linguagem como uma componente da sua estratégia global de negócios.
[editar] Ver também
- Anexo:Lista de exemplos de código C♯
- ASP.NET
- Common Language Runtime
- Microsoft .NET
- Microsoft XNA
- Mono (projeto)
Referências
- ↑ Why Microsoft's C# isn't (em inglês). Página visitada em 26 de agosto de 2010.
- ↑ The A-Z of Programming Languages: C# (em inglês). Página visitada em 26 de agosto de 2010.
- ↑ Java 5 catches up with C# (em inglês). Página visitada em 26 de agosto de 2010.
- ↑ C#/.NET History Lesson (em inglês). Página visitada em 24 de agosto de 2011.
- ↑ Microsoft C# FAQ (em inglês). Página visitada em 24 de agosto de 2011.
- ↑ C# Language Specification (em inglês). Página visitada em 24 de agosto de 2011.
- ↑ Visual C#.net Standard (em inglês). Página visitada em 24 de agosto de 2011.