logo
Contato | Sobre...        
rebarba rebarba

Rodrigo Strauss :: Blog

follow us in feedly

Meu caso com o Python, parte 2

continuação da parte 1

Com essa minha experiência com Python cheguei à uma conclusão interessante. Sou um apaixonado por programação e suas linguagens, não necessariamente apaixonado por C++. A parte do meu cérebro que responde pelo C++ se sente um pouco traída, já que a exclusividade acaba. Mas a parte que cuida do bom senso fica cada dia mais feliz. Não sendo eu somente um fanático programador C++, passo cada dia mais a confiar na minha (possível) imparcialidade e bom senso quando o assunto é programação. E minha parte C++ fica mais feliz ainda por isso ser uma evidência de que escolhi o C++ não porque é algo complicado somente para nerds e escovadores de bit, e sim porque tem suas inúmeras qualidades e é, indiscutívelmente, a melhor ferramenta disponível para determinados tipos de projetos. Eu sempre escrevi sobre usar a melhor ferramenta disponível para sua tarefa. Mas talvez minha relutância em usar algo que não C++ falava contra mim, apesar de fazer todo o sentido. Tudo resolvido agora. :-)

Ouvi uma história uma vez que resume tudo:

Imagine um carro de Formula 1. O volante é muito sensível. Quando você pisa no acelerador, ele arranca e você cola no banco. Se você não freia com cuidado, é quase arremessado para fora do carro. Ele é desconfortável, apertado, faz bastante barulho. Só que ele é o mais rápido que existe. Coisa para profissionais. Assim é o C++.

Coisa para profissionais. Quando você treina bastante, é o melhor carro do mundo. Mas usar um Formula 1 para fazer compras, no trânsito de São Paulo, não é viável. É muito legal, é muito divertido, mas pouco viável.

Lembre-se: não é lei do mínimo esforço. É a lei de o esforço necessário, de não desperdiçar o esforço. É sobre isso a frase "usar a ferramenta certa para o problema certo". Note que não estou dizendo que só percebi isso graças ao Python, mas digamos que o Python me parece o melhor carro de passeio que existe para fazer compras no supermercado... :-)

Algumas coisas que eu gostei muito no Python em relação ao C++ e aos wannabes (C#/Java):

  • O ciclo while(1){arruma-compila-debuga} quase desaparece. Você vai escrevendo código no console e testando, em runtime ou não. Funcionou? Copia do console e cola no fontes, um trecho de código já testado.
  • A linguagem é muito legível e simples. Em alguns casos, é uma especificação que roda e funciona. Por isso que existe bastante gente escrevendo protótipos em Python e depois refazendo tudo em C++, depois que o conceito está testado. Eu sou um deles :-)
  • Batteries Included. Quase tudo que você precisa vem na distribuição padrão (como o .NET Framework e as bibliotecas Java, só que com um pouco a mais). Precisa fazer profiling? A distribuição padrão tem 3. Unit Test? Sim, na distribuição padrão. Web Server em Python? Sim também. Regex? Threads? SMTP? XML-RPC? Sockets? Criptografia? XML? Biblioteca de Log? HTTP com tratamento de Cookies? Sim.

E, claro, encontrei também defeitos:

  • Um código feito em Python é bem legível, o que faz com que muito programadores Python relevem a importância dos comentários no código. Minha opinião sobre isso não muda, independente da linguagem.
  • Não existe livro avançado de Python. Estou acostumado com C++, onde existe muitos livros avançados. Os de Python ou são tutoriais ou cookbooks.
  • Sim, é lento em runtime (geralmente mais do que C# ou Java, mas nem sempre). Mas extremamente produtivo (muito mais do que C# ou Java). Ou seja, é bem usado quando não se precisa de performance ou quando o tempo de I/O ou rede é tão grande em relação ao resto do processo que o tempo da linguagem se torna quase desprezível.

Minha opinião pode não valer muito em termos de convencer as pessoas sobre o que o Python pode oferecer. Mas acredito que a opinião do Google, Nasa, ILM, YouTube e outros deve valer um pouco mais. :-)

Pronto, confessei, eu tenho outra (linguagem). Nem foi tão difícil quanto eu pensava...


Em 07/03/2007 17:48, por Rodrigo Strauss


  
 
 
Comentários
Leandro Severino | website | e-mail | em 07/03/2007 | #
Sabe Rodrigo,

Digamos que estou passando por um momento muito parecido com o seu, sou programador JAVA(05 anos) e agora estou me apaixonando pelo Python.

Parabéns pelo Blog e uma dica que vai te trazer muito visitantes.
- Posta alguma coisa que tu fez em Python.

Charles Schneider Pereira | website | e-mail | em 07/03/2007 | #
O mais interessante é que o Rodrigo me convenceu a estudar C++. E ando estudando.

Acho extremamente importante e até necessário para um cara que queira se julgar programador, conhecer uma linguagem do nível de C/C++ - linguagens de verdade, como costumo dizer. Aí sim se conhece como funciona o gerenciamento de memória do sistema operacional, gerenciamento de arquivos, enfim, o que acontece por detrás dos panos. Não há um framework escondendo o que há de mais interessante, rico e poderoso em um computador.

O exemplo do carro de Fórmula 1 é o mais pertinente, gostei muito. Só que dessa vez, vou continuar com o C# - e olha ele quase me convenceu a dar uma olhada nesse tal de Python. ;)

PS.: pra que esse negócio de preencher com 26?
Rodrigo Strauss | website | em 07/03/2007 | #
Vinte e seis? Anti spam tosco mas que funciona... :-)
Rodrigo Strauss | website | em 07/03/2007 | #
Charles, também acho muito importante saber C/C++. Só que algumas vezes é usar um canhão para matar uma mosca. Ex: eu fiz um programa que lê uma planilha com minhas horas de trabalho e preenche o sistema de relatórios da empresa. Isso não precisa de performance, foi MUITO mais rápido fazer em Python...
Claudio Torcato | website | e-mail | em 08/03/2007 | #
Parabéns pelo post. Passou a mensagem.
Rodrigo Cacilhas | website | em 08/03/2007 | #
Muito bom artigo, Rodrigo!

Parabéns. Sou (ou fui) programador Python (hoje em dia estou trabalhando com Lua) e nunca vi ninguém se expressar tão claramente.

Deve ser mal de nome, hehehehe.

[]'s
Francismar A. Silva | website | em 08/03/2007 | #
Oláh!
Tb sou fã de carteira C/C++.
Fui apresentado ao Python por um grande fã da linguagem.
Ganhei até um livro de aniversário :)
Pouca pressão***
:D
Resolvi fazer algo utilizando Python. Um problema que surgiu na empresa onde trabalho (como citou, a melhor forma de aprender é fazendo algo prático. Concordo!).
Bem, resumindo, tenho um interesse enorme em estudar mais Python, pela facilidade encontrada e a rapidez para implentar as coisas simples.
Afinal o que é simples, não precisa ser feita da maneira mais demorada e "complicada".

[ ]'s
Fau | website | em 09/03/2007 | #
Olá!

Eu acho que posso me considerar um programador, pois já programei em C, C++, Turbo Pascal, Cobol, Basic (com números de linhas), Clipper, Visual Basic, VBA, Delphi, Javascript, ASP, PHP, BAT (do DOS), Assembly, dentre outras menos importantes.

Atualmente trabalho com VB por questões de colocação no mercado de trabalho.

Minha opinião é a seguinte: Na hora do vamos ver, a linguagem é o que menos importa. O importante são os resultados, prazos, flexibilidade e mão de obra disponível.

A menos que você seja dono de uma empresa grande que presta serviços de informática, a escolha da linguagem nem sempre é uma coisa possível. Nem assim, às vezes, pois a tendência de mercado e as concorrências também influenciam muito.

O que realmente importa na programação é um bom conjunto de conceitos e de lógica. Com uma lógica boa é possível programar em qualquer coisa e ter resultados ótimos.

Já tive que reescrever sistemas quase inteiros de uma linguagem em outra, por motivos que não vêm ao caso.

Por isso tudo digo que, programação e linguagem são coisas totalmente diferentes. Exemplo: Uma dona de casa é uma ótima programadora, sem saber nada de informática. No entanto, já conheci caras que conheciam mais linguagens do que eu, no entanto eram péssimos programadores.

A lógica é tudo.

Abraços.
Rodrigo Strauss | website | em 09/03/2007 | #
Concordo em partes.

"Na hora do vamos ver, a linguagem é o que menos importa"

Isso vale em termos mercadológicos, não em termos pessoais. No meu caso foi uma escolha pessoal, não pretendo trabalhar com Python e não estou me importando com as questões mercadológicas.
Charles Schneider Pereira | em 10/03/2007 | #
Eu acho que entendo o que o Fau quer dizer. Há mais oportunidades para quem conhece a(s) linguagem(ns) da moda. Acho que a variação mesmo é o desejo pessoal do programador.
Há muitas sub-áreas (se é que posso chamar assim) dentro da programação. Pode-se trabalhar com desenvolvimento Web, desktop, sistemas embarcados, redes, bancos de dados, etc.
O mais importante é que se escolha uma área na qual se indentifica mais e estudar, pesquisar, ir atrás do que se quer fazer, pois dentro de cada uma dessas sub-áreas há outras mais especializadas ainda.
O mercado é bom guia para sabermos o que devemos aprender, mas acho que o que mais importa é o desejo pessoal.
Depois disso, escolher uma linguagem e segui-la por um bom tempo até que se tenha fluência na mesma, pois ficar trocando de linguagem não é um bom negócio (Claro que se você já sabe programar, pode tudo).
Na realidade, pra quem sabe programar de verdade, independente da escolha, sempre há oportunidades. É disso que o mercado carece.
Thiago Brito | website | em 13/03/2007 | #
Uma das coisas que eu acho que seria interessante você mostrar no seu site Rodrigo, é sobre as IDEs e bibliotecas que você usa no Python.

Parabens, seu site é excelente.
Francismar A. Silva | website | em 16/03/2007 | #
Olá a todos.
Bom, sobre linguagem da moda... Bom, depende da área.
Se vc está ligada a soluções visuais para usuários finais (relatórios, controles de estoque, produção, web) há uma variedade enorme de linguagens a sua disposição e, deve usar a que mais facilita o seu trabalho.
Moda?! Acho uma palavra má colocada. Não é moda e sim facilidade de desenvolver e concluir os projetos com qualidade.
Um dpto de TI, informatica, ... não vai iniciar o uso da ferramenta x pq está na moda e sim, pq se adaptada melhor ao(s) projeto(s) em questão. Pelo menos, deveria ser assim.
C/C++ para quem trabalha com sistemas embarcados, eletronica é tudo. Vc até pode ter as dll para utilizar com VB mas, não terá o controle total.
Não há como implementar um server OPC em outra linguagem que nao seja C++ (DCOM).
Resumindo, para cada aplicação, problema, há uma ferramenta, solução. Interessante é vc saber utilizar e ficar antenado para perceber o momento certo de estudar ou se dedicar à uma segunda ou terceira.
Quem já estudou música?
O seu professor não diz que deve ter um segundo instrumento?
Quase isto. *será que fui feliz no exemplo*
:)

Abraços...
Walter Cruz | website | em 16/03/2007 | #
heheh.. Nos EUA, um pouco de piano é obrigatório a todo mundo. Na Universidade Livre de Música, quando eu estava saindo de lá, eles estavam criando o curso de Piano Complementar para outros instrumentistas.

Ótimo texto. No meu caso, assim como o Torcato, eu preciso fazer o caminho inverso: aprender um pouco de C.
Rodrigo Strauss | website | em 19/03/2007 | #
Francismar suas afirmações estão perfeitas, considerando que o mundo é justo e as pessoas fazem as escolhas corretas. No nosso mundo entretanto não é isso que acontece. Muitas vezes as escolhas de liguagens e ferramentas são feitas baseadas em conceitos não técnicos, sejam comerciais ou por paixão mesmo (tipo Java é o melhor porque eu gosto muito).
André Duarte | e-mail | em 24/03/2007 | #
O Python foi tão bom pra mim que agora tenho tempo de ficar escrevendo comentários nos posts dos outros. :-)
Renato José Campos | website | em 09/08/2007 | #
Parabéns, ótimo artigo.
--------------------------------
Renato José Campos
Regra Consultoria e informática
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
  ::::