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: 80.713 ]

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

C - Include e Makefile

Ser livre, mas manter padrões

Mono e C# (parte 2)

Mono - Por que usá-lo?

Leitura recomendada

Cygwin, um Linux dentro do Windows

SIGERAR - Sistema de Gerenciamento de Requisitos

Fazendo jus ao nome GNU/Linux

Sabayon Linux 5.3, versões futuras e seu potencial + remasterização

Procurando ETs usando o Linux

  
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

[20] Comentário enviado por Skulling em 06/08/2019 - 23:51h

Olá pessoal,

Gostaria de saber como posso executar de fato comandos via C# no Terminal do Linux, mais especificadamente no Rasbian !

Já pesquisei por semanas, tudo que vejo é só "Hello World !!" Sendo que necessito executar via C# comandos como um simples "su" ou mais especificadamente o comando "candump can0" e conseguir recuperar o retorno de informações que o terminal devolverá...

Fico ansioso no aguardo de auxílio, valeu galera !!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts