Novo Blog

Novo endereço

https://blog.nilo.pro.br

domingo, 29 de julho de 2012

Por que UTF-8 e não ASCII para o Português? (PARTE I)

Leia no novo blog

Um outro post que fiz na Python-Brasil:

Os colegas já falaram sobre o por quê do UTF-8.

Eu gostaria apenas de lembrar que o assunto é mais complicado do que parece, por exemplo no Python 2.7:
# -*- coding: utf-8 -*-
print "Acentos: áéíóúãõç"
print u"Acentos2: áéíóúãõç"


Execute o programa acima no Windows, pode ser pelo IDLE ou pelo console:

C:\Users\nilo\Desktop>\Python27\python.exe test.py
Acentos: ├í├®├¡├│├║├º├ú├Á
Acentos2: áéíóúçãõ


Você deve ter obtido bons resultados apenas na linha do Acentos2. Se a string não é marcada com unicode, vai ser simplesmente impressa como uma sequência de bytes, sem tradução. Se tiver o u na frente, como em acentos2, o Python saca que precisa traduzir de unicode para cp850, no caso do console aqui de casa. Já no Linux, as duas linhas produzem resultados corretos!

O encoding: utf-8 informa apenas a codificação do código fonte. Ou seja, é apenas uma dica de como os caracteres deveriam estar codificados. Para que funcione corretamente, seu editor de texto tem que estar configurado para UTF-8 também. Se misturar, é desastre na certa. Eu recomendo o PSPad no Windows para editar com UTF-8. Para verificar o encoding de um arquivo que você não conhece, ou para ter certeza de qual codificação seu editor realmente utilizou, use um visualizador binário como o HxD [3]. No hex edit do PS Pad, atenção que ele mostra os caracteres em Unicode, mesmo se a codificação for UTF-8. Isso para lembrar que UTF-8 é uma representação ou forma de codificação de caracteres Unicode. O Notepad++ pode também ser usado para editar e codificar arquivos em UTF-8.
No Mac e no Linux, tente o hexdump -C arquivo
Quando o arquivo esta codificado corretamente em utf-8, você deve ter mais de um byte para os caracteres acentuados.

Por exemplo, o programa acima, criado no vim do Ubuntu:
nilo@linuxvm:~$ hexdump -C test.py
00000000  23 20 2d 2a 2d 20 63 6f  64 69 6e 67 3a 20 20 75  |# -*- coding:  u|
00000010  74 66 2d 38 20 2d 2a 2d  0a 70 72 69 6e 74 20 22  |tf-8 -*-.print "|
00000020  41 63 65 6e 74 6f 73 3a  20 c3 a1 c3 a9 c3 ad c3  |Acentos: .......|
00000030  b3 c3 ba c3 a3 c3 b5 c3  a7 22 0a 70 72 69 6e 74  |.........".print|
00000040  20 22 41 63 65 6e 74 6f  73 32 3a 20 c3 a1 c3 a9  | "Acentos2: ....|
00000050  c3 ad c3 b3 c3 ba c3 a3  c3 b5 c3 a7 22 0a 0a     |............"..|
0000005f


Um site bacana é esse aqui: http://www.utf8-chartable.de/

Uma vez resolvido o problema de codificação dos fontes, restam ainda:
* A codificação do console
* A codificação dos arquivos de dados
* Codificação do banco de dados

Tanto o Mac quanto Linux usam UTF-8 por padrão. O Windows usa a cp 1252 (GUI), compatível com iso8859_1. Cuidado também se você troca arquivos entre máquinas Windows, Linux e Mac. E nunca misture duas codificações no mesmo arquivo, pois isto gera erros difíceis de detectar e resolver.
É fácil misturar quando se faz append em um arquivo, vindo de outra máquina ou mesmo gerado em um outro programa.
O Windows em chinês, russo e outras línguas não utilizam a cp1252! Por isso UTF-8 é uma boa pedida, pois consegue codificar caracteres Unicode com um ou vários bytes, dependendo da necessidade.

O Python 3 resolve muito destes problemas, mas a documentação diz[1]:


Files opened as text files (still the default mode for open()) always use an encoding to map between strings (in memory) and bytes (on disk). Binary files (opened with a b in the mode argument) always use bytes in memory. This means that if a file is opened using an incorrect mode or encoding, I/O will likely fail loudly, instead of silently producing incorrect data. It also means that even Unix users will have to specify the correct mode (text or binary) when opening a file. There is a platform-dependent default encoding, which on Unixy platforms can be set with the LANG environment variable (and sometimes also with some other platform-specific locale-related environment variables). In many cases, but not all, the system default is UTF-8; you should never count on this default. Any application reading or writing more than pure ASCII text should probably have a way to override the encoding. There is no longer any need for using the encoding-aware streams in the codecs module.

A parte que sublinhei diz: "... o padrão do sistema é UTF-8; você não deve contar nunca com este padrão..."
Resumindo, é um assunto que merece ser estudado, pois causa problemas  "mágicos" que sempre aparecem.

Um texto que explica tudo com detalhes pode ser encontrado em [2].

[]

Nilo Menezes
[1] http://docs.python.org/release/3.0.1/whatsnew/3.0.html
[2] http://wiki.python.org.br/TudoSobrePythoneUnicode
[3] http://mh-nexus.de/en/hxd/

quarta-feira, 25 de julho de 2012

Por que aprender várias linguagens de programação?

Leia no novo blog

Outro post da lista Python-Brasil, onde se discutia qual a melhor linguagem para se aprender a programar:


Eu concordo que Python é uma ótima linguagem como primeira linguagem de programação.
Mas nem tudo é Hello World e muitas vezes o professor ou o coordenador do curso ensaiam de apresentar Java ou C++... para facilitar cursos futuros. Exemplo: apresentam um Java troncho em ICC para depois afinar num curso de OO. Outros por não conhecerem Python ou descartarem Python por ser script.

Algumas faculdades são também assombradas por fatalistas que pregam o ensino de linguagens do mercado. Quando fiz faculdade, em aprendi Pascal, C, Java, Modula, Prolog, Assembly do MIPS e outros bichos. Nenhuma destas linguagens foi ensinada diretamente, mas no contexto das disciplinas de ICC, estruturas de dados, sistemas operacionais, etc. Já na época tinha fantasma dizendo que deveríamos aprender Word e outros praguejando Prolog. O esquema era que deveríamos aprender as linguagens sozinhos, eles só nos davam um bom motivo :-D

Eu fiz faculdade depois de já estar trabalhando, depois de um curso técnico em informática... 18 anos depois eu tenho uma visão pessoal. Acredito que o melhor mesmo é aprender e ter contato com o maior número possível de linguagens na faculdade. De preferência, linguagens com paradigmas diferentes.

Python é muito boa, mas se for a única, estaremos repetindo o mesmo erro.

Eu acredito que só programar numa linguagem é como falar apenas uma língua.

Eu defendo Python como primeira linguagem por ser uma das mais fáceis de aprender.
Além disso,  a taxa de retorno do Python é excelente. Você consegue premiar o aluno, pois este fica contente em saber que consegue fazer algo útil sozinho. Com C, muitos desistem, pois o esforço inicial é grande e a impressão é que o trabalho não rende.

ICC com Java ou C++ é terrorismo :-D

terça-feira, 24 de julho de 2012

XML-Man

De todos os super-heróis que vivem na ilha de Java, o mais perigoso é o XML-Man.

XML-Man resolve tudo com a herdeira do SGML, prima do HTML. Tudo, tudo. Se fosse possível, escreveria programas Java em XML também. O poder de XML-Man é de criar ferramentas de configuração e gerenciamento que você não precisaria se não tivesse que escrever tudo em XML.


sábado, 21 de julho de 2012

Certificados e diplomas em informática

Leia no novo blog

Esta foi a resposta que dei num post na lista Python-Brasil sobre a importância de certificados.

Há alguns anos eu contratei mais de 100 profissionais de informática... desenvovedores C++, Java, testadores etc. Durante este período, eu aprendi a não confiar em diploma algum.

Eu contratei gente vinda de faculdade particular muito melhor que de faculdades federais ou estaduais, embora esta não fosse a regra, mas a exceção. Se a pessoa que contrata é a mesma que vai trabalhar com você, por exemplo seu futuro chefe, ele procura alguém que resolva os problemas dele, diploma e certificado ele deixa para o RH ver :-D. Eu conheci muita gente boa que nem faculdade tinha, mas são casos raros e não a regra. Para algumas posições de TI, faculdade é luxo... para outras é absolutamente necessário. Eu sei que para administração de redes, certificação é fundamental.

A questão de diploma/certificados aparece quando você tenta trabalhar numa empresa maior onde:

a) Alguém do RH ou empresa externa vai fazer a pré-seleção para o pessoal de TI. Neste caso, a primeira seleção é quase mecânica com um check list do CV: tem faculdade? É de informática ou engenharia? trabalha há quantos anos... etc. Normalmente o RH não arrisca passar um CV para entrevista se nem tiver encontrado alguns pré-requisitos. Algumas empresas tem mesmo cotas de qualidade e escolarização, onde uma determinada porcentagem tem que ter mestrado, doutorado ou graduação. Onde eu trabalhei, nosso cliente pedia um inventário de talentos e diplomas. Neste caso, é importante aparecer a palavra Python, seja na sua experiência, ou mesmo no nome de um curso que você fez (mais abaixo).

b) A pessoa recebe um número excessivo de CVs para a mesma vaga, na época eu recebi mais de 2200. Neste caso, ela vai fazer um pesquisa como o pessoal de RH. Normalmente se privilegia experiência nesses casos, mas sem os diplomas, depende muito. No meu caso, minha secretária era professora de inglês. Eu passava uns CVs pré-selecionados para ela, ela ligava, fazia um teste por telefone e filtrava os CVs que eu deveria chamar para entrevista, sorte minha.

Eu comecei a trabalhar cedo com informática (início dos anos 90) e até meus 28 anos eu não tinha diploma universitário. Ná época, o importante para mim era ganhar dinheiro. Consegui ótimas vagas em empresas pequenas, apenas com um diploma do curso técnico. Nunca fiz certificação alguma. Nunca trabalhei em mega-empresas, pois o salário dependia da formação e nunca era bom para mim (pagavam menos).
Depois eu me formei e fiz mestrado. Valeu muito a pena na hora de trabalhar fora, pois para ter permissão de trabalho o diploma é obrigatório (pelo menos na Bélgica). Aqui, nem de certificação ouço falar, mas um "engenheiro" passa 5 anos na faculade em tempo integral. Aqui já se sai mestre. Escrevi "engenheiro", pois aqui esta palavra praticamente substitui o nosso graduado.

Como você mesmo disse, toda forma de adquirir conhecimento é importante. Se eu morasse em SP, eu assistira o curso do Luciano, tenho certeza que o networking e os bizus de Python apareceriam, independente do meu nível de formação ou experiência. Um curso online pode ser muito bom, mas depende muito. Eu fiz uns no Cursera, uns excelentes e outros que não consegui nem chegar ao fim. Tudo depende, só de experimentar já se aprende muito.

Quanto a certificado de curso livre, sinceramente, nunca serviram para nada, na minha experiência. Se for fazer o curso, faça para aprender. O certificado só serve para o RH fazer o tal  inventário de talentos mais tarde e se para isso servir. Eu tenho maior orgulho de um curso de programação Basic I que fiz em 86... mas nunca tive oportuinidade de usá-lo, ficou como recordação mesmo.

Se eu voltasse a contratar hoje, eu daria preferência para pessoas que saibam aprender sozinhas. Seja com livros, cursos presenciais ou on-line, mas alguém que se vire para aprender um assunto. Nessa lista, vale até que aprendeu Python lendo a documentação on-line que é ótima. Mas se eu tivesse que escolher entre dois candidatos com experiência equivalente, mas um formado e outro não, o com diploma teria a vaga.

Três coisas são importantes num CV: experiência, formação superior e em alguns casos certificações.

Cursos livres eu não colocaria nem no CV. Salvo se o CV estiver muito magrinho. Se o curso foi de Python, é mais importante dizer que sabe e que ja fez X, Y e Z com a linguagem. O curso livre pode aparecer na entrevista. O networking do curso pode ajudar mais que o curso em si, mas lembre-se que isso pode ser uma faca de dois gumes, pois estas pessoas lembrarão de como você se comportou no curso, nos intervalos, etc.

Resumindo, eu faria um curso online, independente do certificado, se quisesse acelerar o aprendizado de uma linguagem/assunto. Mas não ficaria só por ai.

terça-feira, 17 de julho de 2012

De volta à Alemanha

Comecei meu estágio em Braunschweig... 10 anos depois de Munique, me deparo com problemas bem diferentes. Munique é uma cidade grande... Braunschweig tem 250 mil habitantes. A estrutura é muito boa, mas diferentemente de Munique, só com inglês você não faz tudo :-(
10 anos mais velho, aprender alemão deixa de ser tão divertido. A falta de novidades faz tudo virar rotina bem rápido. Pelo menos está chovendo menos que em Mons :-D



sábado, 28 de abril de 2012

Gênesis Informático

Como estou quase sendo obrigado a programar em Java de novo, fica a piada:

No início não havia computadores, apenas máquinas.

As máquinas existiam, mas a lógica era limitada.

O homem domou a corrente elétrica e a transformou em sinais digitais capazes de  transportar infomação.

Tudo era nulo, apenas bits 0.

Criou-se então os bits 1.

Surge a lógica.

Mas os bits 0 e 1 eram sós e o byte foi criado para agrupá-los.

Bits e bytes sem nome vagavam pelas máquinas, sem saber o que fazer. As máquinas ainda eram criadas para uma finalidade bem específica e a lógica codificada no material. Surgiam os primeiros sistemas.

O programador foi então criado e a ele foi dada a responsabilidade de organizar bits e bytes. Surgia o Caos.

Mas o programador era só e criou linguagens e compiladores para acompanhá-lo. O sistema enviou mensagens dizendo que aquilo era perigoso e que agora milhões de bits e bytes teriam que ser utilizados para fazer as coisas mais simples. A mensagem foi ignorada e surgia assim o bug.

O programador continuou proliferando código escrito em múltiplas linguagens. Quando inventou o C, o sistema enviou uma nova mensagem dizendo que já era suficiente e que o programador deveria se contentar com bits, bytes e ponteiros, todos felizes na RAM.

O C era bom e foi usado para criar o UNIX.

O diabo, invejoso, criou o Windows para atentar o programador por toda sua existência.

Novos programas foram criados a partir desses princípios básicos entre o universo de software e hardware. Um dia, o programador traiu o sistema e criou jAdao e jEva, escrenvendo-os num dialeto de C++ banido aos habitantes da ilha de Java. O sistema então castigou jAdao e jEva por terem acumulado tantos bits e bytes a ponto de usar toda a memória do sistema e os baniu para Java dizendo:

Usarás o dialeto no teu dia-a-dia.
Esquecerás o que é um bit.
Usarás um IDE lento.
Verás tudo através deste código que não conhecerá limites de tamanho, performance ou coerência.
Jamais tocarás num ponteiro.
Teus descendentes não usarão propriedades e todos os programadores terão que escrever getters e setters pelo resto de seus dias.
Teu código só entenderá XML e produzirá logs indecifráveis.
Serás atormentado por cobras e outras pedras preciosas que não sofrerão desses males, serão menores e mais ágeis, porém ainda mais lentas.
Tuas classes proliferarão e dominarão o mundo.
Este dialeto será portátil e te acompanhará por todas as máquinas que usares, sempre pendindo para fazer update.





sábado, 4 de junho de 2011

A Era do Javascript

Leia no novo blog

Meus primeiros contatos com Javascript datam de uma época distante, onde o Netscape era o mais popular browser da Internet! Eu usava um servidor Sun e estudava um produto chamado Netscape One, que vinha com uma tecnologia de script do lado servidor chamada de LiveScript. Ela já era também disponível no browser, mas não prestava para muita coisa na época. As tecnologias quentes eram o CGI e o SSI. Eu me interessava também pela novidade do momento, a tal de PHP 3 ! Se minha memória não falha, estou falando do período de 95 a 98.

Tecnologias como Java Applets nunca "pegaram", sempre foram consideradas lentas demais, pesadas demais. Já com o Javascript, além de lento, não se podia fazer muita coisa. A maior parte dos trabalhos se limitava a validação de campos e tarefas menores com strings e datas. Jogos em Javascript, só de forca e da velha. Nessa época eu escrevia CGI's em C++ e lembro da magia que foi aprender a programar em Perl.

Javascript nunca foi uma linguagem "seria" até alguns anos atrás, quando ficou impossível de ser ignorada. No lançamento do iPhone, muitos ficaram chocados com idéia inicial da Apple de aplicações web com Javascript... depois é que eles liberaram aplicações nativas. Isso já em 2007... mas a maioria dos celulares tinha browsers de Internet sofríveis, muitos sem Javascript. Hoje vemos compiladores de e para Javascript, compactadores, obfuscadores e uma infinidade de livros. Javascript está instalada na maioria dos computadores do mundo, incluindo telefones celulares e mesmo sistemas embarcados. Você pode até mesmo usar Javascript para instrumentar seu programa escrito em Java ou C++! É impossível ignorar a força do Javascript. A prova final para mim foi há algumas semanas quando vi uma pequena máquina virtual, suficientemente completa para rodar o kernel do Linux em Javascript, fora jogos como Doom e emuladores diversos, completamente escritos ou portados para Javascript!

A impressão que tenho é o mesmo que aconteceu na década de 80, onde para se ter velocidade programava-se em Assembly, mas era difícil e cada micro tinha o seu próprio Assembly incompatível. Isso era nítido na programação de jogos. Até nas revistas, os programas eram escritos parte em Basic, parte em Assembly. Com o passar do tempo, ficou prático escrever em Pascal e C, compiladas e muito mais fáceis que Assembly. Com o Javascript acontece a mesma coisa, quando começo a ver a quantidade de compiladores que agora geram códigos em Javascript, tenho a mesma impressão. Como escrever grandes programas em Javascript ainda é difícil, diversas bibliotecas e ferramentas podem ser utilizados para reduzir este esforço. Uma dessas ferramentas é a CoffeScript, que dá uma sintaxe limpa ao Javascript, inspirada em Python. É como se essas linguagens estivessem fazendo o trabalho que C e Pascal fizeram antes e o Javascript sendo o novo Assembly universal, afinal é suportado pela maioria dos micros e é multiplataforma. Não falo aqui que o Javascript substitui o Assembly, nada disso. Apenas um posicionamento das linguagens como ferramenta num cenário de aplicações global.

Como tudo agora é na ou para a Web, Javascript é incontornável. A popularização do suporte a HTML 5 nos browsers só vem a ajudar. Nos últimos anos, motores Javascript de alta performance se popularizaram no Google Chrome, FireFox, Safari e até mesmo no Internet Explorer! Canvas, WebGL, bancos de dados locais, web sockets, web workers, tudo disponível em praticamente qualquer browser, via Javascript! 

sábado, 12 de março de 2011

Khan no TED


Eu ainda me impressiono com a Khan Academy. Fantástica ferramenta para quem precisa relembrar e aprender conceitos de matemática, física, etc. Agora ele ataca problemas de nivelamento entre estudantes com ritmos de aprendizagem diferente. Quando teremos este tipo de iniciativa em português? Vídeos e não mini novelas! O potencial das video aulas, com playback controlado pelos alunos é interessante, mesmo em áreas sem Internet ou infra-estrutura para video aulas transmitidas ao vivo.

terça-feira, 8 de fevereiro de 2011

Programe ou seja programado

Leia no novo blog
Eu vi este vídeo ano passado, mas como não tinha legendas em português... não o coloquei aqui.
Porém, mesmo sem legendas, estas ideias não poderiam ficar sem um comentário breve.
Assista ao vídeo:



Douglas Rushkoff apresenta a importância do conhecimento de programação no mundo moderno.
Não que ele defenda um mundo de programadores ou que aborde uma linguagem de programação X ou Y.
O que é fantástico no vídeo é a relação entre a invenção da escrita, programação e as mídias modernas.
Do início do compartilhamento do conhecimento através da escrita, de livros e depois com a invenção da prensa moderna, ele compara o acesso do cidadão comum a cada uma destas formas de transmissão do saber. Como esse conhecimento era controlado e distribuído entre as pessoas comuns e como sempre a sociedade comum estava um passo atrás das últimas tecnologias de produção e distribuição deste mesmo conhecimento.

A questão é realmente saber se hoje estamos ficando para trás, ao não incluirmos a programação no mundo de nossos filhos. Hoje, tão importante quanto ler e escrever, programar é necessário. De uma simples planilha a sistemas complexos, diferentes níveis de programação são utilizados. Assim como a invenção da escrita não levou a uma sociedade de escritores, como apresentado no vídeo, a programação não criará uma sociedade de programadores. O ponto é realmente ter ideia do que pode ser programado, de ter noções básicas de como as coisas funcionam e não de simplesmente utilizar os meios como nos são fornecidos: Twitter, Facebook, Google e mesmo a web.

O vídeo postado pela Wilmara no Facebook me chamou a atenção para o problema da educação:



Isso me fez pensar no por quê meus filhos ainda perguntam que língua é falada em tal ou tal país... tendo a Wikipédia e o Google disponíveis. Eles sabem acessar o Facebook, jogos e principalmente o YouTube. Mas a capacidade de síntese não é dada ou ensinada na escola. Continuamos a ensinar a decorar e não a reunir novas informações e criticar o conhecimento. Lembro do tempo que passei para achar o nome científico de 10 animais quando estava no primário... hoje isso seria feito em segundos!

O foco continua sendo: ler, memorizar, repetir. Eu fui confrontado com esta realidade no meu primeiro emprego, como professor de lógica de programação. Os alunos estavam na faixa dos 15 anos, e eu tinha acabado de completar 18. Quando começamos a trabalhar com problemas simples de matemática, como porcentagens e proporções a casa caiu. Isso era muito estranho, pois eu era professor numa escola técnica, digamos elitista do ponto de vista que você tinha que ser aprovado num concurso para estudar lá. Não eram alunos ruins ou com problemas de aprendizado, mas alunos acima da média! O que alguns tinham dificuldade era em como utilizar o conhecimento passado através de exercícios de cálculo para uma nova realidade. Repito, não era problema em calcular, mas de saber que técnica já conhecida utilizar para resolver um problema similar, mas em outro contexto. Era simplesmente desenvolver suas equações, escrever enunciados de novos problemas, aplicar o que já sabiam, o contrário da forma como tinham sido preparados a vida toda!

Traçando um paralelo: será que ao invés de apenas deixar nossas crianças assistirem vídeos no YouTube, deveríamos ensiná-las a criar seus próprios vídeos? A escrever corretamente, ou pelo menos tentar escrever corretamente, usando wikis e mesmo criando suas próprias home pages? Aqui falamos de programação em sentido mais amplo, como dominar as ferramentas que utilizamos. Afinal, eu não sou artista, mas recebi noções básicas de arte na escola... ainda sei combinar cores, embora não saiba desenhar ou pintar. Precisamos ensinar nossas crianças a dominar as novas mídias. Não para criar uma sociedade de programadores, mas para evitar que eles simplesmente consumam conhecimento sem a menor noção de como este é produzido, armazenado, disponibilizado e principalmente as formas que pode ser controlado.

Vídeo bônus:

Only at OR Books: Program or Be Programmed by Douglas Rushkoff from OR Books on Vimeo.

quinta-feira, 2 de dezembro de 2010

Livro de Introdução Programação com Python já está venda

Leia no novo blog

Nada como uma noite fria e cheia de neve para colocar o blog em dia!
Meu livro de programação foi publicado pela Editora Novatec e já está disponível para venda.
Eu criei uma página sobre o livro, com links para livrarias e emails de contato:

http://www.nilo.pro.br/iprog/

O livro foi escrito de forma a apresentar novos conceitos gradualmente, com exemplos e exercícios.   Quando comecei a dar aulas, eu ensinava Basic e Pascal. Com o Basic, tinha o problema dos números de linha. Com o Pascal os ponto-e-vírgula... era muita coisa para escrever antes de começar a programar. Nestes casos, o uso de um pseudo-código claro e simples, livre de símbolos em excesso era interessante. Eu evitei usar pseudo-código ou fluxogramas, pois acredito que ao se aprender a programar, o melhor é ir direto ao ponto. Com a linguagem Python, isso tudo fica muito mais simples. Escrever em pseudo-código pode até ser mais complicado que escrever em Python!
O leitor/aluno precisa ver algo acontecer para continuar estudando. O importante é saber ler o programa e entender o que vai acontecer quando o programa for executado. Eu realmente acredito que o aluno deve saber se o programa está correto antes de executá-lo. A execução é apenas uma confirmação. Uma seção sobre rastreamento foi incluída no livro, para preservar esta importante etapa no aprendizado de programação.

A clareza e simplicidade da linguagem são realmente muito importantes para facilitar o aprendizado. Python torna a programação acessível par estudantes de outras áreas e não apenas de computação e engenharia.
Outra característica do Python é que ela permite usar quase tudo que temos no computador. Uma vez aprendendo a programar em Python, pode-se continuar estudando outras linguagens de programação ou partir diretamente para aplicações web, jogos, banco de dados, etc. O caminho é mais suave e sem interrupções. Não serve apenas de linguagem introdutória, mas do dia a dia.

Escrever um livro era algo que eu sempre quis fazer. Dá muito trabalho, tem que ler, reler, re-escrever e corrigir inúmeras vezes. O trabalho de revisão é realmente incrível, principalmente com a nova ortografia e com os desafios de escrever um livro técnico para leigos. Ter uma editora ajuda muito nesta tarefa, pois sozinhos nós começamos a não perceber mais os erros. Digo nós porque minha esposa ajudou na revisão.


Título: Introdução à Programação com Python
Autor: Nilo Ney Coutinho Menezes
ISBN: 978-85-7522-250-8
Páginas: 224

Editora: Novatec
Ano: 2010


Resenha do Livro:


Este livro é orientado ao iniciante em programação. Os conceitos básicos de programação, como expressões, variáveis, repetições, decisões, listas, funções e arquivos, são apresentados um a um com exemplos e exercícios. A obra visa explorar a programação de computadores como ferramenta do dia a dia. Ela pode ser lida durante um curso de introdução à programação de computadores e usada como guia de estudo para autodidatas. Para aproveitamento pleno do conteúdo, conhecimentos básicos de informática, como digitar textos, abrir e salvar arquivos, são suficientes. Todo software utilizado no livro pode ser baixado gratuitamente, sendo executado em Windows, Linux e Mac OS X.
Embora a linguagem Python (versão 3.x) seja muito poderosa e repleta de recursos modernos de programação, este livro não pretende ensinar a linguagem em si, mas ensinar a programar. Alguns recursos da linguagem não foram utilizados para privilegiar os exercícios de lógica de programação e oferecer uma preparação mais ampla ao leitor para outras linguagens. Essa escolha não impediu a apresentação de recursos poderosos da linguagem, embora o livro não seja fundamentalmente uma obra de referência.

Sumário (PDF)