Solucionado (ver solução)
Solucionado
(ver solução)
9
respostas

Dúvida no Ex. 4 da Aula 3 - Tuples e dictionary

Um grave problema conceitual está em toda as aulas de Python da Alura é quanto ao uso do termo "compilado". Python não é uma linguagem compilada, mas interpretada. Para um curso do nível dos cursos da Alura e da Caelum, esses erros conceituais são complicados. Isso faz muita diferença. Recomendo que leiam...

http://henriquebastos.net/diferencas-entre-linguagem-compilada-e-linguagem-interpretada/

9 respostas

Olá Douglas, Com certeza o Python é uma linguagem interpretada, uma casquinha sobre o C.

Se por acaso o termo compilação foi utilizado, foi um vício de linguagem por parte do instrutor.

Isso podemos corrigir, sem problemas. Aliás, em nenhum momento fico constrangido pelo seu comentário, é com ele que deixamos o Alura ainda melhor.

Acabei de verificar. Os textos não mencionam em qualquer momento o termo "compilar". Pelo o que eu entendi, foram os vídeos certos?

Esse eu farei um track de onde eu escorrego e digo "compilar". Só não sei se conseguirei fazer isso em tempo hábil até que você termine o curso.

Quando estiver tudo OK, eu te notifico. Combinado?

Flávio Almeida

Está mais nos exercícios e nas correções deste Flávio. Sei que não fica constrangido. A intenção é deixar o Alura ainda melhor que é. Tenho aprendido muito com vocês.

Obs.: Uma sugestão... estou esperando um curso de C++ com as suas bibliotecas (para estrutura de dados) e Visual Studio. Particularmente sei C++ num nível muito bom. Mas me embanano todo com o Visual Studio. Configuração de seus XMLs, e tal. E o mercado utiliza muito.

Opa, nos exercícios e nas correções? Isso já me ajuda bastante!

Sobre o treinamento de C++ com Visual Studio. Vou adicioná-lo na minha "wish list" e assim que tiver oportunidade levo a ideia para o "cúpula do trovão" do Alura.

Eu vou concluir essa dúvida aqui e marcar sua resposta como solução. Porém, deixarei como favorito. Assim que alterar os exercícios eu posto aqui. Combinado?

Abraço e sucesso!

Desculpe Flavio. Realmente não ajuda mesmo. Eu reportei no exercício e copio aqui o aviso default.

Problema no exercício do curso: Introdução ao Python, aula: 3, exercício: 3

Obrigado.

Opa! Não fiz ironia, realmente disse que me ajuda, porque é mais rápido a correção do que dos vídeos :) Estou lá, acho que até 13:30 está tudo certinho.

Ahhh sim. Obrigado.

Fiz a revisão e parece que o capítulo afetado era apenas o terceiro. Ótimo! Estamos 100% no senso comum e isso é bom para quem está começando a programar. Porém, ao revelar que você é um programador C++ experiente me permite sair do senso comum e contribuir com algo mais técnico.

Na documentação do Python temos:

"Python is an interpreted language, as opposed to a compiled one, though the distinction can be blurry because of the presence of the bytecode compiler."

Tradução minha:

Python é uma linguagem interpretada , em oposição às compiladas, embora a distinção pode ficar desfocada devido à presença do compilador de bytecode

Temos um compilador, porém de bycode. Então é uma linguagem compilada?

Em 2003, Fredrik Lundh (http://effbot.org/zone/python-compile.htm), em seu artigo Compiling Python Code, título que perverte o senso comum começa:

"Python source code is automatically compiled into Python byte code by the CPython interpreter. Compiled code is usually stored in PYC (or PYO) files, and is regenerated when the source is updated, or when otherwise necessary."

Tradução livre minha:

O código fonte é automaticamente compilado no bytecode do Python pelo interpretador CPython. O código compilado é comumente armazenado nos arquivos no PYC (ou PY0), sendo regerado quando o arquivo fonte é atualizado ou quando é necessário.

E aí? Python é interpretada ou compilada? As duas coisas? Lembro de discussões acaloradas com meus colegas de trabalho, cada um com sua opinião. Então, uma resposta que me atendeu muito bem está no StackOverFlow, aliás, a resposta mais bem avaliada:

(http://stackoverflow.com/questions/6889747/is-python-interpreted-or-compiled-or-both)

"First off, interpreted/compiled is not a property of the language but a property of the implementation (...) Python is compiled. Not compiled to machine code ahead of time (i.e. "compiled" by the restricted and wrong, but alas common definition), "only" compiled to to bytecode"

Tradução livre minha:

O fato de uma linguagem ser interpretada ou compilada não é uma questão da linguagem, mas da sua implementação. (...) Python é compilada. Não compilada para o código de máquina além do tempo, apenas para o bytecode.

Isso significa que alguém pode implementar o Python totalmente compilado, totalmente interpretado ou ambos, a linguagem continua a mesma.

Isso não quer dizer que o link que você postou está errado, muito pelo contrário. O autor foi demais engenhoso delimitando a análise no escopo da arquitetura da linguagem de programação, um viés totalmente válido.

O mais legal é que podemos trazer esse debate para o Alura. Penso em adicionar uma pergunta no treinamento sobre a questão do Python ser interpretado ou compilado. Tenho certeza que teremos respostas mescladas, mas isso é que torna o debate interessante.

Agradeço mais uma vez pelo seu olhar atento no que diz respeito aos nossos treinamentos e com certeza você contribuiu mais do que imaginava.

Um abraço do Flávio Almeida

solução!

Tudo certo? Podemos fechar essa dúvida?