quinta-feira, 31 de março de 2011

Bibliotecas úteis para C/C++

Olá, colegas programadores.

Se você está iniciando em C e/ou C++, já deve ter percebido que muitas funções não estão disponíveis em bibliotecas padrão. Por exemplo, não se pode desenvolver aplicações com interface gráfica (GUI) somente com as bibliotecas padrão. Não se pode desenvolver aplicações com música ou sons, nem com gráficos, nem com bancos de dados, nem com p**** nenhuma!

Mas aí é que entram as bibliotecas de terceiros. Ao longo do tempo, comunidades ou empresas desenvolvem diversas bibliotecas de funções (em C) ou classes (em C++) que fornecem toda a funcionalidade que as bibliotecas padrão não possuem. Muitas vezes, fica difícil para o programador iniciante entender esta questão, uma vez que existem diversas bibliotecas para diversos fins, e existem várias bibliotecas para o mesmo fim, dificultando a escolha entre uma e outra.

Pois cá estou eu para te ajudar! Vou lhe apresentar algumas bibliotecas muito úteis para cada tipo de aplicação que você deseje desenvolver. Pesquise sobre elas no Google ou nos links que eu vou informar, e descubra qual ou quais delas são as melhores indicadas para fazer parte do seu projeto.


Para desenvolver aplicações em modo texto


Curses (PDCurses, NCurses)

Quando eu digo "aplicações em modo texto" eu me refiro a programas que rodam dentro da janelinha do console do Windows (tipo o Prompt de Comando), ou ao chamado "shell" dos Linux.

Na minha modesta opinião, a melhor biblioteca para esse fim é a Curses. Para o Windows você pode obter a versão chamada PDCurses, e para os sistemas da família Linux, você pode usar NCurses. Eu já escrevi um artigo sobre esta biblioteca, confira clicando neste link.

Dica importante: mesmo para os seus programas mais simples, evite usar bibliotecas ultrapassadas como conio.h, pois elas não são multiplataforma e tem uma funcionalidade bem limitada em comparação às outras, como Curses.


Para desenvolver jogos 2d e aplicações multimídia com gráficos 2d


Allegro

A biblioteca Allegro é provavelmente a mais completa e mais fácil de usar de todas as bibliotecas para desenvolvimento de jogos e aplicações multimídia, e além disso, é multiplataforma. Uma das limitações é que com Allegro você dificilmente vai conseguir fazer jogos em 3d ou aplicações com gráficos em 3d. Já escrevi um artigo sobre Allegro e vários tutoriais. Clique neste link para conferir.

SDL

A SDL é uma biblioteca para desenvolvimento de jogos e aplicações multimídia, ela é extremamente portável pois foi desenvolvida a baixo-nível, e por esse motivo, ela é bem mais complicada de usar do que a Allegro, e não é tão completa. Apesar disso, a SDL é uma das bibliotecas mais utilizadas para desenvolver esse tipo de aplicação. Já escrevi um artigo sobre SDL, clique neste link para conferir.


Para desenvolver jogos 3d e aplicações multimídia com gráficos 3d


OpenGL

A OpenGL eu creio que seja uma das bibliotecas mais utilizadas para o desenvolvimento deste tipo de aplicação, tanto por programadores amadores quanto por profissionais e empresas do ramo. Apesar disso, é tão complicada que eu nunca utilizei esta biblioteca, portanto não tenho autoridade pra falar muito sobre ela, mas você pode dar uma pesquisada e ver se ela supre as suas necessidades e se encaixa no seu projeto. Clique no link e confira OpenGL na Wikipédia.

DirectX

Se a sua intenção é desenvolver pro Windows, o DirectX é a escolha certa. Esta é a biblioteca oficial da Microsoft para desenvolvimento de aplicações multimídia e jogos 3d na plataforma Windows. Nunca usei essa biblioteca, mas você pode conferir DirectX na Wikipédia clicando no link.


Para desenvolver aplicações com interface gráfica (GUI)


Qt

Apesar de eu nunca ter programado com interface gráfica usando C ou C++, já andei dando uma pesquisada nas opções de bibliotecas disponíveis para esse tipo de aplicação, e dizem que a Qt é uma das melhores. Ela é multiplataforma e pode ser utilizada até para desenvolvimento em dispositivos móveis da Nokia (Qt é um produto da Nokia). Em todo caso, clique no link para conferir Qt na Wikipédia.

MFC (Microsoft Foundation Classes)

Se o seu alvo é o Windows, a MFC é uma biblioteca especialmente desenvolvida para ele. Ela é uma biblioteca de classes em C++ que encapsula uma boa parte da API da interface gráfica nativa do Windows, que à princípio foi escrita em C e é extremamente complicada para programadores iniciantes. Clique no link para conferir MFC na Wikipédia.

wxWidgets

Pelo que andei pesquisando, wxWidgets é uma biblioteca bem completa e multiplataforma. Confira wxWidgets na Wikipédia clicando no link.


Para desenvolver aplicações com acesso a bancos de dados


SQLite

A SQLite é uma biblioteca em linguagem C que implementa um banco de dados SQL embutido. Programas que usam a biblioteca SQLite podem ter acesso a banco de dados SQL sem executar um processo RDBMS separado. Esta é a biblioteca mais utilizada hoje em dia para acesso a banco de dados em C e C++. Clique no link para saber mais sobre SQLite na Wikipédia.

SQLAPI++

A SQLAPI++ é uma biblioteca em C++ que fornece acesso a diversos tipos de bancos de dados como Oracle, Microsoft SQL Server, Sybase, DB2, Informix, InterBase/Firebird, MySQL, PostgreSQL. Muito completa. Clique no link para saber mais sobre a SQLAPI++ no site oficial da biblioteca.




Se tiver sugestões de bibliotecas em C e/ou C++, me envie!