Por este artigo, quero pedir às pessoas que comecem a programar no sistema operativo GNU/Linux (a partir daqui, referido apenas como ‘Linux’). Estudantes que estão apenas a começar a programar; educadores que ensinam ou têm um papel no ensino de programação a novos estudantes; hobbyistas que programam em Windows – peço a todos vós que, por favor, leiam e dêem ao Linux uma boa tentativa durante pelo menos uma semana. Se concordam que a programação em Linux é de facto uma experiência melhor do que a vossa plataforma anterior, então fiquem com ela, e desfrutem da liberdade que o resto de nós tem!
p>Apenas para esclarecer quaisquer mal-entendidos, não pretendo que escrevam código para o próprio núcleo Linux (embora isso possa muito bem seguir-se à medida que o vosso conforto e proficiência de programação aumentam). Em vez disso, estou a falar de escrever programas de espaço do utilizador – incluindo os exercícios, trabalhos de casa, e trabalhos de projecto que a maioria dos cursos de estudo de ciências informáticas incluem. Antes de começarmos, eis um aviso: este artigo contém opiniões e crenças pessoais fortes; não pretendo de forma alguma ser ofensivo, mas algumas destas ideias podem valer a pena tentar – por si – ver se se sente da mesma maneira!
Atacando a mentalidade
Acredita-se geralmente que o Linux é ‘difícil de usar’. Claro, é diferente do que as pessoas que estão habituadas ao Windows estão habituadas – mas não é difícil. Assim que se ajustar às diferenças, provavelmente rir-se-á desta concepção errada, e dirá aos outros quão errada é a sua percepção!
P>Possui>Justa considerar os muitos estudantes de informática que se inspiraram no burburinho que o Linux tem vindo a criar desde há muito tempo. Eles decidiram aprender a utilizá-lo por iniciativa própria – fazendo perguntas em listas de correio, fóruns e através de canais de IRC. No espaço de algumas semanas, estão prontos para fazer mais do que apenas circular. Muitas vezes, no espaço de um mês, estão tão à vontade com o Linux que começam a introduzir outros no SO. Espantoso? Pode parecer – mas é que esses estudantes estavam determinados a explorar e aprender, e ignoraram os gritos de “É duro”
Há sempre uma curva de aprendizagem envolvida sempre que se está a adquirir uma nova habilidade, e o Linux não é excepção. Se os estudantes forem ensinados a usar e programar em Linux, não só aprenderão, como também o acharão simples. Pareceria natural para eles – aprender algo que não sabiam antes. “Linux é duro” é um mito dos tempos modernos que tem de ser quebrado. Se você é um educador, por favor, faça a sua parte. É a si que os estudantes admiram, e se lhes mostrar o caminho certo, eles seguirão o seu exemplo.
Arrancar e executar o Linux
Okay, uma vez que tenha decidido usar o Linux, como é que o faz? Já deve ter ouvido falar de muitas “distros” diferentes de Linux (também chamadas distribuições): Ubuntu, Fedora, Debian e muito mais. Porquê tantos “Linuxes”? Deixem-me explicar. Tecnicamente, “Linux” é o nome de um kernel (para mais informações, consulte este artigo da Wikipedia, ou a casa oficial do Linux). Uma vez que um kernel é de pouca utilidade por si só, as ferramentas de espaço do utilizador do projecto GNU (incluindo a implementação mais comum da biblioteca C, uma shell popular, e muitas ferramentas comuns UNIX que realizam muitas tarefas básicas do sistema operativo) foram combinadas com o kernel do Linux para fazer um sistema operativo utilizável. A interface gráfica do utilizador (ou GUI) utilizada pela maioria dos sistemas Linux é construída sobre uma implementação do Sistema X Window. Diferentes projectos e fornecedores de software livre constroem diferentes combinações de pacotes e características, para fornecer diferentes experiências Linux a diferentes públicos-alvo – resultando assim numa miríade de distribuições Linux.
Então qual a distribuição Linux que se deve utilizar? Tanto o Ubuntu como o Fedora tornaram individualmente a experiência Linux muito fácil de utilizar para utilizadores casuais do computador – para navegação na Internet, e-mail e necessidades de processamento de documentos. Qualquer um destes é ideal para começar com.
Instalação do Linux pode ser algo complicado, especialmente se pretende configurar um sistema de boot duplo onde pode arrancar quer o Linux quer o seu antigo Windows. Caso contrário, é bastante simples: descarregue a imagem do CD (ISO), grave-a num disco, arranque o seu computador a partir dele, e deixe-o instalar! A melhor maneira de fazer uma configuração de dual-boot da primeira vez é contactar alguém na sua escola, localidade ou escritório que conheça o sistema, e pedir-lhe que o oriente.
Também, existem outras opções se quiser experimentar o Linux sem o instalar, sem substituir o Windows ou fazer uma configuração de dual-boot. Veja a secção Lidando com os aspectos práticos no final deste artigo, para algumas destas ideias.
O Guia do Novato Ultimate Linux é uma boa referência para o ajudar a aprender as coisas por si próprio. Com o Linux, uma abordagem experimental à aprendizagem ajuda muito. Portanto, faça uma cópia de segurança dos seus dados, e comece com os discos de instalação se não conseguir encontrar ninguém que o ajude. Hoje em dia, a maioria das distribuições Linux vêm apenas com as aplicações essenciais e bibliotecas instaladas – que provavelmente não serão suficientes para as necessidades de programação.
Para permitir a fácil instalação de novo software, a maioria das distribuições tem um gestor de pacotes (no mundo Linux, o software é distribuído na forma de “pacotes”), que utiliza para descarregar e instalar facilmente novo software a partir da Internet. O Guia do Novato Ultimate Linux é uma boa referência para este tópico.
Para que este artigo seja de máxima utilidade, vou tentar ser mais geral, e evitar favorecer qualquer distribuição em particular.
Seleccionar um editor de texto
Não utilizaremos um Ambiente de Desenvolvimento Integrado (IDE), pelo menos, inicialmente. Apenas o faremos da maneira simples: escrever código usando um editor de texto, guardá-lo, e compilá-lo/interpretá-lo usando um compilador/interprete apropriado. No mundo Linux, tem uma infinidade de editores de texto por onde escolher. Um dos editores, como o gedit ou kwrite, será definitivamente instalado quando instalar o Linux – pode usar qualquer um deles. Se instalar uma distribuição como o Ubuntu, que tem o ambiente de trabalho GNOME, então já terá o gedit instalado. É como o Notepad, apenas mais útil e rico em funcionalidades.
C/C++ programação em Linux
C é normalmente a primeira linguagem ensinada a muitos estudantes em escolas e faculdades de engenharia indianas, por isso vamos primeiro ver como programamos em C no Linux. Note que o código C que irá escrever em Linux será o mesmo que escreveria em Windows/DOS, desde que esteja a escrever o código ANSI C. Algumas funções da biblioteca, tais como as fornecidas por conio.h
e graphics.h
, não fazem parte da norma ANSI. Assim, não poderá utilizá-los em Linux.
O compilador C que utiliza em Linux é o GCC. Faz parte da Colecção de Compiladores GNU. Abra um terminal e execute o comando: gcc
. Se vir algo como a seguinte saída, significa que o GCC já está instalado.
gcc: no input files
No entanto, se vir algo como “Comando não encontrado”, então terá de instalar o GCC usando o gestor de pacotes.
Besides a compiler, também precisará da biblioteca padrão C, chamada glibc
, para compilar os seus programas C correctamente. Digite glibc
, e verifique a saída. Se mostrar estruturas de directório da forma /foo/bar/glibc
ou semelhante, então tem glibc
instalado; senão precisa de o instalar.
Okay, agora que confirmámos a presença de um editor de texto, um compilador e a biblioteca padrão, vamos escrever o nosso primeiro código em C no Linux. Para efeitos deste artigo, vamos criar um subdirectório chamado ‘codes’ sob o seu directório ‘home’, no qual armazenaremos todo o nosso código fonte.
Inicie o gedit e introduza este código C simples para imprimir o factorial de um número:
#include<stdio.h>int main(int argc, char **argv){ int n, i,fact=1; printf("Enter a number for which you want to find the factorial:: "); scanf("%d", &n); for(i=1;i<=n;i++) fact=fact*i; printf("Factorial of %d is :: %dn", n,fact); return 0;}
Guardar este código no subdirectório de códigos com o nome fact.c
. Inicie o seu programa shell (terminal), e corra cd codes
para ir a este directório. Uma vez lá, emitir o seguinte comando:
gcc factorial.c
Após executar o comando, executar ls
e verá um ficheiro a.out
no directório actual. Este é o ficheiro executável do seu programa C, compilado e ligado com as bibliotecas apropriadas. Para o executar, corra (note o principal ./
, que é essencial!):
./a.outEnter a number for which you want to find the factorial:: 5Factorial of 5 is :: 120
Congratulações, acabou de escrever o seu primeiro programa em C no Linux! Esse foi apenas o C normal que escreveu no DOS ou no Windows – sem surpresas lá! Um pouco mais sobre isto a.out
ficheiro: Este é o equivalente em Linux do ficheiro .exe que veria em DOS/Windows; é a forma executável do seu código. Como já deve ter adivinhado, este ficheiro não pode ser executado em DOS ou Windows, uma vez que está num formato diferente.
Agora, em vez de ter de renomear o seu ficheiro executável cada vez que compila, pode especificar o nome do ficheiro de saída para o compilador:
gcc -o factorial factorial.c
Tente mais alguns programas das suas classes de programação C e estruturas de dados.
A Linguagem de Programação C é um conhecido livro de programação de Brian Kernighan e Dennis Ritchie, que lhe ensina programação C com um forte sabor a Linux. Seria uma boa ideia experimentar os exemplos e exercitar programas deste livro para obter um sabor de programação em C em Linux.
Vamos agora escrever o nosso primeiro programa em C++ em Linux. O ciclo de codificação, compilação e execução é muito semelhante ao do C, excepto para o compilador que usamos, que é g++
. Verifique se já está instalado ao executar o comando num terminal, como fizemos para gcc
. Em seguida, use o seu gestor de pacotes para verificar se libstdc++
, a biblioteca padrão C++, está instalada (se não, instale-a). Uma vez ambos instalados, abra o gedit e escreva este simples programa C++:
#include<iostream>#include<string>using namespace std;int main(int argc, char **argv){ string s1="Hello"; string s2="World"; cout <<s1+" " + s2 << "n"; return 0;}
Guardar este ficheiro como string-demo.cxx
na subdirectoria de códigos.
Compilar e executar o ficheiro:
g++ -o string-demo string-demo.cxx./string-demo
Executar o comando acima deve produzir o seguinte no terminal:
Hello World
O código C+++ que se vê é o padrão C++, com o .h
omitido dos ficheiros de cabeçalho. Os ficheiros fonte C+++ utilizam convencionalmente um dos sufixos .C
.cc
.cpp
.c++
.cp
, ou .cxx
.
Deixe-nos agora escrever um programa C++ simples que utilize classes:
#include<iostream>using namespace std;class Circle{ float r; public: void init(float x) /* Inline function */ { r = x; } float area();};float Circle::area(){ return 3.14*r*r;}int main(int argc, char **argv){ float radius; Circle circle; cout << "Enter the radius of the circle:: "; cin >> radius; circle.init(radius); cout << "Area of the Circle:: "<<circle.area()<<"n"; return 0;}
Guardar o ficheiro na subdirectoria de códigos como class-demo.cxx
.
Compilar e executá-lo:
g++ -o class-demo class-demo.cxx./class-demoEnter the radius of the circle:: 4Area of the Circle:: 50.24
Assumindo que foi capaz de compilar estes programas com sucesso, recomendo agora que vá em frente e escreva, compile e teste algumas das suas atribuições C/C++ e problemas usando gcc e g++. Se enfrentar quaisquer problemas, é muito bem-vindo a ping me.
Java programming on Linux
Java é talvez a próxima língua mais ensinada nas escolas e faculdades indianas depois do C/C+++. A melhor parte da programação Java em Linux é que utiliza as mesmas ferramentas que utilizaria em Windows – sim, o Sun Java Development Kit.
Para instalar o JDK em Linux, descarregue o instalador para Linux a partir do seu site oficial.
Selecione o ficheiro .bin
, e não o ficheiro *rpm.bin
, a menos que saiba o que está a fazer. (O ficheiro .bin
é o equivalente a .exe
no Windows). Uma vez terminado o download, no seu terminal, cd
para o directório onde o ficheiro foi descarregado, e utilize os seguintes comandos:
chmod +x jdk-6u18-linux-i586.bin./jdk-6u18-linux-i586.bin
Os nomes dos ficheiros acima podem diferir dependendo da versão JDK que descarregou. A primeira linha torna o instalador executável, e a segunda linha executa-o. O instalador deve começar agora, e deve ver o “Sun Microsystems, Inc.”. Binary Code License Agreement”.
Accept the licence, and the extraction of the JDK should start. Uma vez que o instalador tenha saído, deverá ver um novo sub-directório chamado “jdk1.6.0_18” dentro do directório actual. Se estiver familiarizado com programação Java em Windows, esta deve ser facilmente reconhecível. Dentro deste directório está o subdirectório bin, que tem o compilador Java (javac
), intérprete Java (java
), e outros.
Com isto, estamos todos preparados; vamos escrever o nosso primeiro programa Java em Linux. Incendeie o gedit e escreva o seguinte código Java, que mostra o uso de um array de inteiros:
import java.util.Random;class ArrayDemo { public static void main(String args) { int arr = new int; for(int i=0;i<10;i++) arr = (new Random()).nextInt(); for(int i=0;i<10;i++) System.out.println("Element at index " + i + "is::" + arr); }}
Guardar o código num ficheiro ArrayDemo.java
, depois compile e execute-o como se segue:
/home/amit/jdk1.6.0_18/bin/javac ArrayDemo.java/home/amit/jdk1.6.0_18/bin/java ArrayDemo
Nota os dois primeiros comandos, onde dei o caminho completo para a localização dos executáveis javac e java. Dependendo de onde extraiu o JDK, o seu caminho irá variar.
Executar o segundo comando deve produzir o seguinte no seu terminal:
Element at index 0is:: 480763582Element at index 1is:: -1644219394Element at index 2is:: -67518401Element at index 3is:: 619258385Element at index 4is:: 810878662Element at index 5is:: 1055578962Element at index 6is:: 1754667714Element at index 7is:: 503295725Element at index 8is:: 1129666934Element at index 9is:: 1084281888
Assim, é assim que pode compilar, executar, testar e depurar os seus programas Java.
OpenJDK
Um artigo sobre programação Java numa revista de código aberto estaria incompleto sem falar do OpenJDK. É bom para si estar a par deste projecto. Como já deve ter adivinhado, é uma implementação de código aberto licenciada por GPL da edição padrão Java – ou seja, o código fonte do JDK com que está tão familiarizado, está agora também disponível para o seu escrutínio, caso não goste de algo no actual JDK.
Então, isto é um Java diferente? Não – você escreve o mesmo código Java. Pode instalar o OpenJDK a partir do gestor de pacotes da sua distribuição Linux (ele pode vir pré-instalado com algumas distribuições). As instruções de instalação estão disponíveis aqui.
Tratar de aspectos práticos
Devido a várias razões, nem sempre é possível instalar em todo o laboratório Linux. Nestes casos, é uma boa ideia ter uma única máquina Linux no laboratório, actuando como servidor SSH; pode instalar o software cliente SSH necessário noutros sistemas operativos, o que permitirá a ligação remota à máquina Linux.
Esta máquina deve ter uma configuração relativamente boa, dependendo de quantos estudantes a utilizarão para a sua codificação e compilação – uma CPU dual ou quad-core com 4 GB de RAM e um disco rígido de pelo menos 320 GB é uma boa ideia. Para Windows, Putty é um cliente SSH amplamente utilizado. Se escrever o código no Windows e copiá-lo para a máquina Linux para compilação e execução, terá também de descarregar o programa pscp
do site, que lhe permite copiar ficheiros da máquina local para o servidor SSH Linux.
Se precisar de uma sessão GUI do servidor Linux para estar acessível na máquina Windows (por exemplo, enquanto faz programação GUI), então investigue o servidor OpenNX (a ser instalado na máquina do servidor Linux) e o cliente NoMachine NX para Windows. Uma máquina com a configuração dada acima deve suportar cerca de 10 sessões de utilizadores antes de começar a abrandar. O ajuste fino do gestor do ambiente de trabalho (usar um leve como LXDE ou XFCE) e usar editores mais leves como GVim para escrever código, é um bom começo.
Outra opção (que não precisa de uma máquina servidor Linux dedicada) é instalar Linux numa máquina virtual no seu ambiente de trabalho. Isto também pode revelar-se útil num computador doméstico. VirtualBox é um software de virtualização que, quando instalado no seu sistema Windows, lhe permitirá criar uma máquina virtual, dentro da qual poderá instalar Linux sem perturbar a sua instalação Windows. É claro que necessitará de algum espaço livre em disco (8 GB ou mais) para o ficheiro de disco da máquina virtual. Neste caso, não precisa de gravar a ISO de instalação do Linux num CD – pode simplesmente instruir a VirtualBox para utilizar o ficheiro de imagem ISO como um disco inserido na unidade de CD-ROM da máquina virtual.
Esta é também uma boa forma de praticar a instalação do Linux, e ver como pode ser fácil. Para o Ubuntu, em particular, existe o Wubi que lhe permite instalar (e desinstalar) o Ubuntu como qualquer outra aplicação Windows, de uma forma simples e segura, “com um único clique”. Os ficheiros Ubuntu são armazenados numa única pasta na sua unidade do Windows, e uma opção para iniciar o Ubuntu é adicionada ao seu menu do carregador de arranque do Windows.
No entanto, o acesso ao disco rígido é ligeiramente mais lento do que a instalação a uma partição dedicada. Se a sua unidade Windows for muito fragmentada, o desempenho irá degenerar ainda mais. A hibernação não é suportada sob Wubi. Além disso, o sistema de ficheiros Wubi é mais vulnerável a reinicializações duras (desligando a alimentação) e falhas de energia do que uma instalação normal para uma partição dedicada, o que proporciona um sistema de ficheiros mais robusto que pode tolerar melhor tais eventos.
Em geral, a programação em Linux exigirá também um nível de familiaridade decente em relação ao trabalho com comandos shell. Familiarize-se com o trabalho com a shell. Tente minimizar o uso do rato 🙂
Usando a sua IDE favorita em Linux
Se tem estado a usar qualquer IDE para as suas necessidades de desenvolvimento, deve ser uma óptima notícia que duas IDE muito populares – NetBeans e Eclipse – também têm versões Linux, e ambas suportam desenvolvimento em C, C++ e Java. Para distribuições Linux baseadas em GNOME, Anjuta DevStudio é outro IDE poderoso para C, C++ e Java (e outras linguagens também). Todas as três devem estar disponíveis no gestor de pacotes da sua distribuição.
Para concluir este artigo, gostaria de instá-lo a fazer um esforço honesto para abraçar o Linux para programação. É um mundo muito melhor para se estar dentro. Gostaria de abordar quaisquer questões/concertações/comentários/sugestões que possam ter, relativamente a este artigo.
Recursos
- graphics.h like functionality using GCC
- GNU Compiler Collection
- por Brian W. Kernighan e Dennis M. Ritchie, The C Programming Language
- Bjarne Stroustrup, The C++ Programming Language
- Neil Matthew, Richard Stones, Beginning Linux Programming
- StackOverflow é um fórum comunitário onde pode colocar as suas questões relacionadas com a programação. É linguagem neutra, o que a torna muito atractiva.
- yolinux.com é um bom recurso para informação geral do Linux.
li> Uma introdução básica ao SSHli> VirtualBox. Manual do Utilizador.