Mono e C# (parte 1)

Este é o primeiro artigo de uma série de artigos que visam apresentar e introduzir Mono e C# para os amantes do mundo livre e dos admiradores e usuários do Linux.

[ Hits: 65.722 ]

Por: Gilzamir Ferreira Gomes em 19/03/2005


Executando e compilando um Hello World em C#



Antes de apresentar o nosso HelloWorld, leia um artigo que já escrevi para o Viva o Linux sobre Mono. O link é:
Este artigo explica o que é o Mono. Podemos dizer resumidamente que Mono é uma implementação livre do Framework dot Net.

Para executar o nosso HelloWorld no Mono, você precisa primeiro instalar os pacotes básicos no seu computador. Todos os pacotes para utilização do Mono podem ser baixados do site http://www.go-mono.com. Baixando e instalando os pacotes mono-core e mono-devel no seu computador já é o suficiente para compilar e executar o HelloWorld abaixo.

HelloWorld em C#:

class HelloWorld{

public static void Main(){
       System.Console.WriteLine("HelloWorld in C#");
}

} //fim da classe HelloWorld

Copie o código acima para um arquivo e salve-o com o nome "HelloWorld.cs". Os programas em C# devem terminar com a Extensão ".cs". Para compilar o programa acima, abra o terminal do seu sistema operacional e execute o seguinte comando:

$ mcs HelloWorld.cs

Onde mcs é o compilador para C# do Mono e HelloWorld.cs é o arquivo a ser compilado. Apenas com o comando acima, o executável gerado é HelloWorld.exe (não se preocupem, não é um executável Win32, mas um arquivo numa linguagem intermediária que pode ser executado por qualquer runtime que implemente o padrão ECMA 335-336).

Para executar o arquivo gerado na compilação, temos duas opções: mono ou mint. A diferença entre estes dois comandos é a forma como o arquivo é executado. No primeiro caso (mono) há um mecanismo avançado para geração de código; já no segundo caso, há uma simples interpretação. Neste exemplo vou usar o comando 'mono', mas o comando 'mint' pode ser usado normalmente, apenas substituindo mono por mint. Veja:

$ mono HelloWorld.exe

Estou supondo que você está executando todos estes comandos no diretório onde o arquivo HelloWorld.cs foi salvo e onde o arquivo HelloWorld.exe foi gerado, pois do contrário você teria que usar o nome completo do arquivo (incluindo a sua localização), como no seguinte exemple (executando sob o Linux):

$ mono /home/gilzamir/lab/csharp/HelloWorld.exe

Veja o resultado da compilação e execução do HelloWorld.cs em meu computador:


Se você conseguiu compilar e executar o programa de amostra HelloWorld.cs, então pule para a próxima página, onde explicarei o código.

    Próxima página

Páginas do artigo
   1. Executando e compilando um Hello World em C#
   2. Explicando o código do HelloWorld
   3. C# e POO
Outros artigos deste autor

Ser livre, mas manter padrões

C - Include e Makefile

Mono e C# (parte 2)

Mono - Por que usá-lo?

Leitura recomendada

Conceito: Evitando acidentes com visão computacional

VLC, o reprodutor multimídia

Brackets - Editor Open Source no Linux Mint e Ubuntu

Acesso seguro a um desktop remoto utilizando Linux, OpenVPN e Nxserver

Phoronix Test Suite - Um framework para benchmark

  
Comentários
[1] Comentário enviado por fabio em 19/03/2005 - 23:22h

Ótimo artigo, código muito bem explicado! Depois dessa vou até experimentar o Mono pra poder tecer meus comentários sobre essa ferramenta :). Tô ficando pra trás.

[]'s

[2] Comentário enviado por scottys0 em 20/03/2005 - 01:00h

C# ... copia explicita do Java ... ehhehee

[3] Comentário enviado por dino em 20/03/2005 - 05:08h

Muito bom artigo. Bom trabalho

[4] Comentário enviado por kaos666 em 20/03/2005 - 20:08h

Sobre o comentário feito por scottys0:

C# não é uma cópia explicita do Java, mas reune as melhores características de várias linguagens de programação. Se um objeto A é uma cópia do objeto B, então é suposto que os objetos são idênticos(exceto pela posição que ocupam - dois objetos não podem ocupar o mesmo lugar ao mesmo tempo - Física básica). Java não tem o conceito de propriedades (algo que C# herdou talvez do Object Pascal - ambas as linguagens tiveram o mesmo arquiteto). C# suporta struct e enum, coisas que Java não suporta. Eu gosto de programar em Java, gosto de Java, mas com C# me sinto mais confortável. A linguagem oferece muitas facilidades.

[5] Comentário enviado por xfer em 21/03/2005 - 00:46h

Embora não esteja defendendo, Java 1.5 suporta enum e generics. C# na versão ECMA ainda não suporta. Torço para o pessoal do Mono manter-se fiel a especificação e não virar somente uma versão de .NET para GNU/Linux.

[6] Comentário enviado por mpsnet em 21/03/2005 - 09:45h

Em uma versão anterior do mono, eu instalei o MonoDevelop um IDE para C#, mas não consegui utilizar a "ToolBox" para criar formularios, tinha q fazer isso na unha, q acarreta uma perca de tempo muito grande para desenvolvimento, será que alguem conhece algum outra ferramente mais completa, ou me desculpem se não utilizei o MonoDevelop de maneira correta alguem poderia me explicar como criar a "ToolBox".

Grato

[7] Comentário enviado por kaos666 em 21/03/2005 - 10:26h

Respondendo ao mpsnet:

O Monodevelop ainda não tem uma ToolBox. Uma forma fácil de criar formulário é vc utilizar o Glade. No Monodevelop, basta ir ao menu file e em seguida clicar em Soluções. Na janela que aparecer, escolha a opção de projeto Glade. Como estou com pouco tempo, em breve publicarei um tutorial explicando isso...

[8] Comentário enviado por removido em 21/03/2005 - 18:29h

realmente a ideia do mono seria interessante. mas ninguem tira da minha cabeça que existe código malicioso dentro do mono. um compilador .NET opensource numa versão estável e a M$ ainda não abriu a boca? muito estranho.... mas sei la neh... quem sou eu!

[9] Comentário enviado por Ragen em 21/03/2005 - 22:27h

arthurbsi,

Pense com seu bolso. As regras de mercado são sempre de *incluir* e agregar novos mercados.

Se a moda pega - coisa que eu realmente nao tenho medo - teriamos ai a Microsoft roubando o mercado da Sun. Mas essa discussão não me diz respeito... Não aposto minha fixa em nenhum dos 2, acho que a nova tendencia de desenvolvimento que será o boom está além do paradigmas de orientação à objetos.

[10] Comentário enviado por GlimerMan em 22/03/2005 - 10:50h

Saudações....

Pessoal, vou direto ao assunto: Diga NÃO ao MONO! Vocês realmente sabem o que é o "Projeto Mono" ? É uma farça! Ele é um framework baseado no .NET e vem entulhado de patentes e copyrights e coisas afins, que no mundo GNU/GPL não existem. Não fechem os olhos! A MS está querendo se infiltrar no mundo Linux, deixando o pessoal GPL "usar" seu valioso código cheio de patentes, e quando estiver tudo rodando as "mil maravilhas" (se é que algo usando code da MS funciona assim) em servers Linux, eles vem com seus advogados e dizem que estamos infrigindo essa, essa e essa patente, e esse e esse copyright.
Recomendo este link:
http://beam.to/taq/mono.php

Leiam e tirem suas próprias conclusões.... E pensem na história que foi construída até hoje com o GNU/Linux e GPL.

[]'s

[11] Comentário enviado por removido em 22/03/2005 - 19:54h

Concordo plenamente com nosso amigo GlimerMan ! F...-se o Mono e a M$!

[12] Comentário enviado por kaos666 em 22/03/2005 - 23:54h

Vejo que ignorância ainda impera. Pelo que eu sei qualquer software pode ser vítima do ataque das patentes (inclusive os SO's GNU/Linux). Recentemente, os mantenedores do projeto Mplayer (player que roda sobre Linux) anuciaram o fechamento do site oficial do projeto devido a violação de patentes e direitos autorais. Não há uma só linha de código do MPlayer escrita em C# ou que rode sobre a plataforma Mono. O que temos que lutar é contra a lei de patentes que os EUA querem exportar para todos os países do mundo e não contra o software X ou o software Y. A Europa está a um passo de aprovar a lei de patentes lá e isso signifca um ataque quase mortal contra o software livre naquele continente. A lei de patentes que os EUA estão querendo exportar para o mundo emperram a GPL.

Detalhes:

1 - O Mono é baseado num padrão aberto (ECMA/ISO ). O código escrito para fazer o Mono não foram feitos pela equipe da Microsoft; Mono não é da Microsoft. Há uma empresa que apóia o Mono: A Novel (detentora da Ximian, empresa que foi comprada do Miguel de Icaza). Mono é licenciado sob a licença LGPL (uma licença free).

2 - Compiladores para Mono (C#, VB .NET) são licenciados sob os termos da licença GNU GPL.

3 - A Biblioteca de Classes Mono é licenciada sob os termos da licença MIT X11, uma licença open-source.

4 - Se vocês acham que há algum troço no código do Mono, entrem no site http://mono-project.com e baixem o código-fonte do dito cujo; podem baixar! É livre. Podem baixar, ler, modificar, distribuir e usar.

[13] Comentário enviado por bittsbr em 07/04/2005 - 20:29h

Caro kaos666. Te devolvo o império da ignorância e lhe concedo a coroa. Considere a possibilidade de ler atentamente o artigo citado por GlimmerMan. A base de argumentação é bastante razoável.

Embora eu já soubesse que a equipe que desenvolveu o C# fora importada da Borland pela Microsoft e que a linguagem traga algumas características que a difere do Java. Ainda assim o C# me parece uma corruptela do Java. Você deve saber também que o .NET dificilmente se tornará multi-plataforma de fato. A menos que consideremos multi-plataforma um framework que seja somente 100% compatível em diferentes versões do MS-Windows. Lembrando que muitas da bibliotecas de classe são exclusivas para os ambientes MS.

Se a idéia é desenvolver em um ambiente multi-plataforma de fato acredito que o Java continua e continuará sendo a melhor alternativa.


[14] Comentário enviado por cirntista_loko em 13/04/2005 - 10:32h

meu email he: Andrexonline@mixx.com.br
tenho esta duvidas abaixo se alguem puder me ajudar ::
desde já agradeço.

C# roda em plataforma linux?
C# tem ferramenta free?
C# quanto é melhor seu desenpenho perrante a java?
C# vale apena mudar de java?
C++ é um algue para aplicações em desktop, porem para uma boa com comunicação web quem leva a melhor Java Ou C#

[15] Comentário enviado por ricesp em 18/05/2005 - 02:46h

Olha, cadastrei-me neste fórum somente para postar uma mensagem aos que procuram no mono uma alternativa VIÁVEL ao desenvolvimento multi-plataforma. Não sou xiita com uma linguagem ou outra, mas após ler os comentários acima senti-me obrigado a comentar...

Sobre a opinião do GlimerMan, só lamento por ele e por outras pessoas que comentam sobre determinada arquitetura sem conhecê-la ou estudá-la. Se ao menos tivessem interesse em obter mais informações antes de postar os comentários, estes fóruns seriam muito mais "limpos" e instrutivos.

Se todos nós seguirmos somente os "pedaços" de notícias que estão no artigo sugerido, podemos ter uma opinião errônea sobre determinada tecnologia (o que parece que está acontecendo)...

Sobre o Mono, leiam no projeto e verão que 99,9% dos "argumentos" citados não correspondem ao que é proposto pelo projeto. Acho mono uma alternativa viável ao desenvolvimento multi-plataforma, assim como o Java, Python(devidas proporções) e outras linguagens...

A idéia de um framework onde não importa a linguagem utilizada e sim a semântica do projeto é um sonho dos programadores (quem programou na década de 80 sabe o que estou falando), e finalmente surge um projeto que pode (digo PODE) revolucionar os paradigmas da programação com equipes multi-culturais em um mesmo projeto.

Portanto sugiro que antes de postarem comentários infantis do tipo (*Use isto, não use aquilo!!!) ou (Bill Gates é o Diabo!!) e coisas do gênero LEIAM BEM antes de propor uma idéia. Lembrem-se que várias pessoas que frequentam fóruns são iniciantes e esperam encontrar SOLUÇÕES para seus problemas.

A propósito, a respeito da "reportagem" mencionada leiam o currículo do autor e observem uma frase pouco "tendenciosa" a respeito....

...etc etc etc mas atualmente uso praticamente só Java, que é para mim, a linguagem mais prática e poderosa que tem por aí...

Opinião pessoal: É realmente de estranhar que os ataques ao mono são na maior parte por programadores em Java, talvez preocupados em ter que reaprender conceitos e tecnologias. Não tenho absolutamente nada contra o Java (apenas ressalvas quanto a performance e algumas incompatibilidades das jvm´s por aí) mas é uma tecnologia em uso em muitas empresas e projetos de grande porte.

Para concluir, linguagens de programação são FERRAMENTAS de codificação de algoritmos e não TIMES DE FUTEBOL e muito menos RELIGIÃO.

[16] Comentário enviado por kayohf em 27/07/2006 - 05:22h

putz valeu :D me mostrou que seu esqueleto é identico ao Java, me facilita muito aprender agora.

[17] Comentário enviado por removido em 20/08/2007 - 18:05h

Olá a todos! Estou fazendo um código em C#, utilizando o Visual Studio 2005, bem báasico usando uma list view para mostrar uma lista de diversos assuntos com uma check box para selecioná-los. Acontece que não estou conseguindo executar esse código no mono. Alguém sabe me dizer se a list view está criada no mono ou se existe algum outro objeto correlato onde eu possa fazer esse tipo de coisa? Obs.: o mono que estou usando é da versão 1.2.4. Obrigada desde já.

[18] Comentário enviado por FireBird em 13/11/2008 - 12:24h

Cara... MUITO BOM seu artigo... Me ajudou demais aqui, mas ainda to com uma dúvida...

Pra eu executar arquivos (.msi - MS Installer), como que faço?

Tentei aqui e não funfo...

[19] Comentário enviado por rbarfk em 29/10/2010 - 11:45h

bom artigo!
valeu


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor HostGator.
Linux banner
Linux banner
{BANNER_MODEL3}

Artigos

Dicas

Viva o Android

Tópicos

Top 10 do mês

Scripts