logo
Contato | Sobre...        
rebarba rebarba

Rodrigo Strauss :: Blog

follow us in feedly

Eu acho que sei C++

Eu sempre achei que conhecia bem C++, afinal, trabalho com isso faz vários anos. Já fiz drivers (sim, usando C++), programas em WTL, uso bastante ATL, etc. Sempre me considerei "fluente" em C++. Meu interesse em C++ tem crescido mais e mais ultimamente, e tenho buscado ampliar meus horizontes. Com esse objetivo, comprei dois livros do Herb Sutter ( Exceptional C++ e More Exceptional C++, muito bons), o livro do Stroustrup, tenho usado muito STL, estudado Boost e generic programming. Foi então que eu descobri que o C++ moderno está um pouco longe do que eu aprendi a 7 anos atrás, e apesar de fluente em C++, eu ainda tenho muita coisa para aprender.

Se você é programador C++, faça um teste. Dê uma lida no comp.lang.c++.moderated e veja se você consegue entender as discussões. Dê uma olhada no blog do Thiago Adams e veja se você compreende tudo que ele escreve. Se você entende tudo, você realmente entende de C++. Eu até entendo tudo isso, mas programar "C++ moderno" só está virando parte do meu cotidiano agora. Mesmo assim, eu não tenho experiência nem conhecimento para implementar muitas das libs que fazem parte do Boost. Foi tão mais fácil conhecer tudo de VB6... :-)

(Para quem não sabe o que é Boost: é uma espécie de extensão extra-oficial para a Standard Template Library do C++. É formada por libs que podem ser propostas por qualquer um, é só passar pelo crivo da lista de discussões do Boost. Dez libs do Boost serão incluídas no próximo padrão C++.)

Outra coisa que eu acabei percebendo é que, apesar de o C# e o Java serem baseados em C++, eles estão muito distantes do C++ moderno. É só dar uma olhada em alguma lib do Boost e isso que eu estou falando ficará muito claro. É possível que elas se aproximem um pouco mais com a implementação de generics, mas só o tempo vai dizer. Essas linguagens são baseadas no C++ de 10 anos atrás.

Eu vou começar a dar aulas de C++ in company semana que vem. Uma das coisas que eu pretendo fazer com as minhas aulas é formar alunos que não tenham o vício que eu (nós) sempre tive(mos): usar o C++ como um C melhorado. Como eu já escrevi em post anteriores, não é preciso fazer programação low level só porque se sabe como fazer. É como usar um canhão para matar moscas. Da mesma forma que eu recorro ao C# para tarefas que ele é melhor do que o C++ (XML, por exemplo), devemos saber reusar as coisas que já estão feitas e deixar de lado o "eu não sei direito como isso funciona, não fui eu que fiz". Quantas vezes eu não fiz um thin wrapper para alguma coisa em Win32, só para descobrir depois que já tinha uma classe igual na ATL...

Isso me fez lembrar de uma coisa muito interessante: a STL ajuda muito a resolver o problema do "não fui eu que fiz". Como os containers são intercambiáveis entre si, é possível usar usar um std::map hoje, e depois trocá-lo por um hash map do Google, ou até mesmo implementar um. O padrão de interface/implementação disponível em Java/COM/CORBA/.NET ajuda nesse sentido, mas tem o problema de ser amarrado ao tipo do dado (ou boxing/unboxing desenfreado). Como a STL é toda baseada em templates e generic programming, esse problema quase some.

Bom, chega de divagações de sábado a noite...


Em 27/03/2005 05:37, por Rodrigo Strauss


  
 
 
Comentários
Algo a dizer?
Nome:


Site:


E-mail:


Escreva o número vinte e seis:


 Não mostre meu e-mail no site, não serve pra nada mesmo...

Comentário





Os comentários devem ser sobre assuntos relativos ao post, eu provavelmente apagarei comentários totalmente offtopic. Se quiser me enviar uma mensagem, use o formulário de contato. E não esqueça: isso é um site pessoal e eu me reservo o direito de apagar qualquer comentário ofensivo ou inapropriado.
rebarba rebarba
  ::::