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.
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.
[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.
[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".
[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.
[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.
[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á.
[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 !!