PythonBrasil: Primeira Linguaguem

10 05 2007

Num desavergonhado plágio de um resumo do Marinho de uma das discussão interessantes que rolou na lista PythonBrasil sobre a “primeira linguagem de programação” segue abaixo algumas declarações interessantes:
decopzp: ” A galera nas faculdades no meio de programação so fala em Java. Queria saber como começar a aprender Python, gostei muito só que estou com algumas duvidas em relação a classes methodos e etc…Na verdade que saber tudo como fazer o que fazer…Não aguento mais java”

Luciano Ramalho: “Em Java, existe uma aberração sintática chamada “inner classes” que foi parida para suprir a grotesca falta de um jeito de se passar funções como parâmetros. Apenas uma das diversas falhas gritantes de projeto da linguagem Java. Mas é uma ótima linguagem para quem está em busca de um emprego chato.

Agora sério: Java é um excelente substituto para C++. Empresas e instittuições que antes desenvolviam em C++ agora têm uma alternativa mais segura e confiável para seus projetos. Faz todo o sentido a Apache Foundation e a IBM usarem Java, por exemplo.

O grande erro que muitas empresas no mercado estão cometendo é substituir linguagens de mais alto nível por Java, e achando que a queda de produtividade é apenas passageira, enquanto a equipe não ganha fluência na linguagem.”

Rodrigo Senra: ” No contexto particular de ensino *introdutório* de programação, eu diria que Java como primeira linguagem é no mínimo nocivo.

> Java está na moda.

Piercing também está. Fumar já esteve na moda. Particularmente eu não sou um cara que liga para a moda. Prefiro mais a média, ou até mesmo a mediana ;o)

Em suma, o fato de Java estar na moda para mim só não é irrelevante porque me atrapalha. Atrapalha pois tenho que convencer semi-leigos de que o fato de Java estar na moda é irrelevante ;o) Eu não digo para o Padre qual vai ser o sermão, eu não digo para
o padeiro como fazer o pão nem para o médico qual o tratamento que quero receber antes dele dar o diagnóstico. O computeiro, apesar do nome cacofônico, merece respeito. Uma tecnologia ditada pela moda, e não fundamentada pela análise prática e teórica, é uma falta de respeito para a nossa classe.

> Ela é uma otima linguagem

Aqui concordo, ela tem seu nicho e suas vantagens. E ainda é melhor que *muita* linguagem por aí.

> Vamos com calma. Python está sendo usada em cursos
> introdutorios de programação pois é uma linguagem de fácil acesso…
> mas isso nao quer dizer que seja a melhor linguagem do mundo.

Melhor é um conceito extremamente dependente de contexto. No contexto de ensino introdutório, ainda não vi nada melhor do que Python.”

Luciano Ramalho: “tenho plena consciência de que existem milhões de programadores brilhantes que preferem Java. Mas eu não resisto a uma oportunidade de criticar o Java, exatamente porque “está na moda”.

Isso tem duas consequências lamentáveis, a meu ver:

(1) muitos gerentes que não sabem distinguir uma referência de um ponteiro escolhem Java para projetos que poderiam ser muito melhor resolvidos em PHP, Python, Ruby, Perl, VBScript etc, e acabam submetendo equipes inteiras de desenvolvedores a uma linguagem e uma API que são otimizadas para projetos imensos e complexos, e
consequentemente acabam induzindo projetos pequenos e simples a ficarem imensos e complexos também.

(2) é tão sofrido aprender e ficar produtivo em Java que muitos de programadores estão ficando sem vontade de aprender uma segunda, terceira ou quarta linguagem, com medo de passar pelo mesmo calvário de novo; pior, depois de suar tanto a camisa para aprender Java, muitos se convencem de que complexidade == qualidade, e que uma linguagem mais fácil de usar, como Python, tem que ser necessariamente inferior ou mais limitada, o que absolutamente não é verdade.”

Luciano Ramalho:
> E como ensinar herança múltipla, sobrecarga de operadores e tipagem
> dinâmica em uma linguagem que não os suporta/não os tem?

Sua lista de conceitos de OO está contaminada por uma perspectiva javista, Gleidson. Smalltalk, a primeira e até hoje uma das melhores linguagens orientadas a objeto já criadas tem tipagem dinâmica e não tem interfaces. C++ tem sobrecarga de operadores e não tem interfaces. Ninguém pode dizer que Smalltalk e C++ não são exemplos de linguagens
orientadas a objetos (*). Enfim, o que é essencial em uma linguagem orientada a objetos? A resposta não é simples, nem única.

> A questão do Java é meio que a popularidade dele.

Sim, é o que eu tenho dito: a popularidade do Java é ao mesmo tempo sua maior virtude e seu maior defeito. O defeito está no fato de qua a “popularidade” está levando milhares de empresas a usarem Java para desenolver aplicações que seriam feitas de forma muito mais simples com uma linguagem mais ágil, como Python, Ruby, Perl ou até mesmo PHP
e VBScript.

> É fácil achar um
> computador que tenha um ambiente java instalado. Agora vai achar um que
> tenha o python instalado pra poder rodar os programas?

A Microsoft parou de distribuir Java com o XP, lembra? Há anos o Java perdeu a vantagem de sair pré-instalado em milhões de máquinas Windows. No Linux, praticamente qualquer distribuição vem com Python, mas não com Java. E no MacOS X vem as duas.

> Fora que em Python não é compilado, então tens que
> dar o código-fonte para que alguém possa rodar seu programa.

Não é verdade. Python é compilado para um bytecode, assim como o Java. E eu posso distribuir este bytecode em vez do fonte. Mas existem ferramentas capazes de regenerar o código-fonte a partir do bytecode, tanto no caso do Java quanto no caso do Python. De qualquer forma, para 90% dos desenvolvedores essa questão é irrelevante, porque não
somos pagos para produzir software proprietário que vai ser vendido em caixinhas, e sim para desenvolver soluções customizadas para clientes, internos ou externos, que exigem o fonte de qualquer maneira.”

Luciano Ramalho:
> Ninguém pode dizer que Smalltalk e C++ não são exemplos de linguagens
> orientadas a objetos (*).

Faltou explicar o (*)…

O Alan Kay, líder da equipe que criou Smalltalk, uma vez disse:

“I invented the term Object-Oriented, and I can tell you I did not have C++ in mind.”

“Eu inventei o termo Orientado a Objetos, e posso lhe dizer que não estava pensando em C++.”

Se tem alguém que pode dizer o que é ou deixa de ser OO, é o Alan Kay.”

Luciano Ramalho: “Gleidson, talvez vc não saiba ou passou batido, mas interfaces são uma gambiarra no java para fornecer herança multipla. A unica coisa que é bom em interfaces é que elas fornecem duck typing para java, o que não é necessario em python justamente por causa da tipagem dinamica.”

DANIEL: Não sou da UFRGS mas vou expressar minha opinião quanto a adotar python como
primeira linguagem. Bem, aprendi python a pouco tempo, cerca de 1 ano, antes
só mexia com C. Apesar da linguagem python possibilitar programação
procedural, a quebra de paradigma Procedural-para-OO foi a coisa mais
difícil que tive de aprender quando comecei a estudar python. É claro que C
não é uma linguagem que vá morrer tão facilmente, na minha opinião, logo
também concordo com o que o Senra disse dias atrás, sobre C+Python. Se é um
caso de sucesso em um lugar pode se tornar em vários outros. Quanto ao que o
Ricardo disse, creio que há matérias específicas tais como
(Microcontroladores, Microprocessadores etc) que cuidam da aproximação
aluno-hardware. Na minha opinião se Assembly fosse ministrado nos primeiros
períodos poderia surgir dois comportamentos da turma, ou eles seriam
desestimulados ou se tornariam hackers.

Fábio: Vindo python ou assembly, a dor do baixo nível será praticamente a mesma…

Agora, se não for necessário “baixar o nível”, o python é ótimo como
primeira linguagem…

Temos como exemplo prático a Sociesc, em Joinville.
A minha turma pegou a época do C++…… e o resultado? muita dificuldade e
desânimo…
Conheço alunos, das turmas mais novas, que começaram com o Python.
O entusiasmo é completamente outro. Os alunos conseguem fazer as coisas
acontecerem de maneira mais fácil.

Outra metáfora que pode ilustrar aqui é o de comparar um sedã, uma scania e um trator. Digamos que o Python seja o sedã, o Java seja a scania e o C seja o trator: cada um tem sua aplicabilidade.


Ações

Information

2 responses

10 05 2007
Marinho Brandão

Saudações!

ufa! num primeiro momento eu cheguei a pensar que eu estivesse sendo atacado por ter feito o resumo… ahiuaihuaiha

obrigado pela referência🙂 eu tb gostei bastante deste debate… tem gente muito boa na nossa lista, que declara de forma muito contundente e incisiva, gosto muito de aprender ali🙂

abraços!

10 05 2007
techberto

Realmente!

Pena que não tenho o “tão precioso tempo” para acompanhar a lista de forma regular, mas sempre aprendo com a Python-Brasil, assim como com a Python-L.

[]s++;

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s




%d blogueiros gostam disto: