Topo

sexta-feira, 5 de outubro de 2012

Preparar o PC para aprender C: parte I

A melhor forma de aprender e desenvolver programas na linguagem de programação C é através de um sistema operativo (OS) baseado em Unix, como por exemplo Linux ou MacOS X (sim, o MacOS X é baseado em Unix...). Porquê? Bem, porque basicamente o Unix e o C foram desenvolvidos mais ou menos em simultâneo por dois génios da computação (Ken Thompson e Dennis Ritchie1), e têm uma relação tão próxima que por vezes se confundem. Deixo aqui um excelente artigo sobre a história do Unix, a meu ver indispensável para qualquer aluno de Engenharia Informática ou Electrotécnica. Neste blog vou focar-me sempre no Linux, pois além de ser gratuito e aberto e de correr em qualquer PC (ou Mac!), por muito antigo que seja, não tenho (nem quero ter) acesso ao MacOS X. Aliás, por uns meros 25€ podemos comprar um pequeno computador que corre linux...

Dito isto, é possível - embora não aconselhável - aprender2 C em Windows. As (muitas e boas) razões para tal não ser aconselhável deixo para mais tarde. No entanto para os mais teimosos existem duas possibilidades: MinGW e Cygwin.

Não é necessário largar o Windows para aprender C num ambiente 100% Linux. Para tal basta fazer download de um gestor de máquinas virtuais (sugiro o VirtualBox) e instalar uma distribuição de Linux dentro do Windows (ou do MacOS X). Neste caso, podem inicializar e desligar o Linux apenas quando quiserem programar, podendo usar o Windows (ou o MacOS X) normalmente. O Linux vai "pensar" que está a correr num hardware físico, quando na realidade está a correr num ambiente virtual. Em todo o caso, se tiverem coragem, sugiro que deitem fora o Windows e comecem a usar Linux: muito mais seguro, muito mais rápido, mais aplicações e mais fáceis de instalar... mas isto é apenas a minha opinião e já estou a fugir do assunto em questão: aprender C.

Se começarem a procurar por uma distribuição Linux para instalar, vão verificar que existem muitas, e com tanta escolha pode tornar-se difícil escolher qual usar. Deixo aqui uma curta lista de distribuições, com indicação das principais vantagens e desvantagens de cada uma:

  • Ubuntu - Excelente distribuição, qualidade em toda a linha. No entanto tem uma interface muito moderna (chamada Unity) que requer um PC relativamente recente (não mais antigo que 2007) e que pode ser estranha ao princípio, embora após uma ou duas horas de habituação seja talvez a interface gráfica mais avançada e produtiva nos dias que correm.
  • Lubuntu ou Xubuntu - São versões do Ubuntu com interface gráficas mais tradicionais e muito mais leves em termos de requisitos. Basicamente têm todo o poder e qualidade do Ubuntu, mas correm com grande desempenho até em PCs do século passado. São boas opções para instalar dentro do VirtualBox, pois puxam muito pouco pelo sistema.
  • Mint (versão Cinnamon) - É uma distribuição baseada em Ubuntu mas com uma interface mais tradicional (chamada Cinnamon), embora inovadora e moderna. Talvez seja a interface mais familiar para quem vem do Windows 7 ou Vista. Tal como o Ubuntu, requer um PC relativamente moderno, com aceleração 3D. Existem outras versões do Mint, mais leves, como por exemplo o Mint Xfce, que usa a mesma interface que o Xubuntu. A única desvantagem do Mint em relação ao Ubuntu, é que parece um bocadinho menos profissional e estável no uso diário; mas não é por isso que não deixa de ser um OS excelente.
Talvez mais tarde publique qualquer coisa sobre a história das distribuições. Para já refiro apenas que todas as distribuições que mencionei derivam do Debian, uma das primeiras distribuições de Linux, muito estável e segura, mas com desenvolvimento um bocado lento e com repositórios de aplicações um pouco desactualizados. Uma lista completa (?) das distribuições existentes está disponível aqui (ver coluna do lado direito, um pouco mais em baixo).

Comecei este post por referir que um OS baseado em Unix (como o Linux) é a melhor forma para aprender a programar em C. Podem tirar as duas últimas palavras da frase anterior. Um OS baseado em Unix (e.g. Linux) é a melhor forma de aprender a programar, ponto. No caso do Linux, as ferramentas para programar em 99% das linguagens de programação existentes já estão instaladas de raiz ou podem ser instaladas com poucos clicks. Em posts futuros darei exemplos em Python, Java, PHP e Matlab (sem usar o Matlab!).

No próximo post vou escrever sobre o software que se pode usar em Linux para desenvolver programas em C, bem como sobre a linha de comando e o porquê de ser importante dominar esta ferramenta que tanto medo mete a tanta gente.

Até breve!


1 Dennis Ritchie faleceu recentemente, sem que isso tenha sido referido na imprensa, ao contrário do que aconteceu, por exemplo, com Steve Jobs. Acerca disto li um comentário muito interessante que dizia o seguinte: "If the ghosts of Jobs and Ritchie were to find themselves marooned on a desert island, it might be Jobs who managed to light the fire, but it would be Ritchie who showed up with the wood". Façam a vossa interpretação.

2 Refiro-me apenas a aprender C e não a desenvolver software em C para Windows, pois nesse caso o melhor é usar uma ferramenta integrada como o Visual Studio. No entanto, para aprendizagem de C considero que este género de abordagem é péssima, mas sobre isso falarei depois...

Sem comentários:

Enviar um comentário