• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

teckV

The Python Paradox

23 mensagens neste tópico

In a recent talk I said something that upset a lot of people: that you could get smarter programmers to work on a Python project than you could to work on a Java project.

I didn't mean by this that Java programmers are dumb. I meant that Python programmers are smart. It's a lot of work to learn a new programming language. And people don't learn Python because it will get them a job; they learn it because they genuinely like to program and aren't satisfied with the languages they already know.

Which makes them exactly the kind of programmers companies should want to hire. Hence whatfor lack of a better nameI'll call the Python paradox: if a company chooses to write its software in a comparatively esoteric languagethey'll be able to hire better programmersbecause they'll attract only those who cared enough to learn it. And for programmers the paradox is even more pronounced: the language to learnif you want to get a good jobis a language that people don't learn merely to get a job.

Only a few companies have been smart enough to realize this so far. But there is a kind of selection going on here too: they're exactly the companies programmers would most like to work for. Googlefor example. When they advertise Java programming jobsthey also want Python experience.

A friend of mine who knows nearly all the widely used languages uses Python for most of his projects. He says the main reason is that he likes the way source code looks. That may seem a frivolous reason to choose one language over another. But it is not so frivolous as it sounds: when you programyou spend more time reading code than writing it. You push blobs of source code around the way a sculptor does blobs of clay. So a language that makes source code ugly is maddening to an exacting programmeras clay full of lumps would be to a sculptor.

At the mention of ugly source codepeople will of course think of Perl. But the superficial ugliness of Perl is not the sort I mean. Real ugliness is not harsh-looking syntaxbut having to build programs out of the wrong concepts. Perl may look like a cartoon character swearingbut there are cases where it surpasses Python conceptually.

So faranyway. Both languages are of course moving targets. But they sharealong with Ruby (and Iconand Joyand Jand Lispand Smalltalk) the fact that they're created byand used bypeople who really care about programming. And those tend to be the ones who do it well.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e digo mais...

I didn't mean by this that Java programmers are dumb. I meant that Python programmers are smart. It's a lot of work to learn a new programming language. And people don't learn Python because it will get them a job; they learn it because they genuinely like to program and aren't satisfied with the languages they already know.

pá... este argumento é tão bom... não se esgota... que mais vou dizer ??  :down:

agora a questão é.. aceitam dicas ou não?

teckV --- nefera neferu nefertiti

horus to seth

neftis to Chatolic shurch

we r o t h... b...m...g

or die...

theres no other choicezzzzzzzzX

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Acho piada e digo que e uma opiniao, porque estao-se a referir ao python mas poderiam estar a referir-se a qualquer outra linguagem exoterica. Sempre com o mesmo argumento que quem aprende uma linguagem estranha por gosto é bom programador, o que pode acontecer ou nao... Não existem generalizações neste mundo...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Por acaso essa opinião não coincide totalmente com a minha. Aprendi Python por saber que seria a ferramenta certa para construir soluções para problemas especificos, não por estar insatisfeito com as linguagens que já sabia na altura...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Sempre com o mesmo argumento que quem aprende uma linguagem estranha por gosto é bom programador

essa da linguagem estranha não percebi... será estranha por ser mais simples num mundo complicado?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Quando eu digo exoterica nao digo que seja estranha ou ma (eu tb programo em python) só digo que é menos comum. Tem o estigma que quem sabe e geek :P

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

É um texto interessante sem dúvida. Comecei a programar em Python á relativamente pouco tempo, mas ainda não tive disponibilidade para aprofundar conhecimentos na área.

Uma coisa que aconteceu comigo, e que não sei se tambem aconteceu convosco, é que, mesmo não dominando minimamente a linguagem, consegui perceber superficialmente o que lá estava, isto com muito pouca experiência na programação. Contactei pela primeira vez com o Python há quase um ano, mas só há coisita de 2 meses é que lhe peguei a sério para aprofundar e, no futuro, dominar a linguagem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

e olhem para a pasta de instalação do python... é uma linguagem VERDADEIRAMENTE OPEN-SOURCE e podem olhar para o código fonte que a CONSTROI... muito bom para aprender técnicas avançadas de programação...

têm tambel montes de módulos que encapsulam tarefas complexas com API´s muito simples... e em código fonte...

olhem para módulos como o urllib (este uso mesmo muito h3h3h33h3h) e vejam como são implementados... há um muito interessante e não é só pelo nome... encontra-se em C:\Python24\Tools\webchecker e é o file websucker.py... faz o dump completo de um site remoto... muito util... seguindo a filosofia do Nessus

apenas um exemplo do que estou a falar... do file websucker.py

    # SAM 11/13/99: in general, URLs are now URL pairs.
    # Since we've suppressed name anchor checking,
    # we can ignore the second dimension.

    def readhtml(self, url_pair):
        url = url_pair[0]
        text = None
        path = self.savefilename(url)
        try:
            f = open(path, "rb")
        except IOError:
            f = self.openpage(url_pair)
            if f:
                info = f.info()
                nurl = f.geturl()
                if nurl != url:
                    url = nurl
                    path = self.savefilename(url)
                text = f.read()
                f.close()
                self.savefile(text, path)
                if not self.checkforhtml(info, url):
                    text = None
        else:
            if self.checkforhtml({}, url):
                text = f.read()
            f.close()
        return text, url

é mais uma das caracteristicas bombásticas do Python... estar em código fonte.. .quer no que toca ao C, quer nos modulos já em python

a linguagem tem os seus layers mais baixos em C mas depois vai-se construindo sobre as funcionalidade ditas python que o layer mais baixo (em C) fomenta...

podem ver como se cria um interpretador de uma linguagem de programação em código fonte

1000 pontos para o open-source

teckV

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Conheço excelentes programadores em várias linguagens, alguns deles não sabem Python e até têm no Java a sua linguagem preferida.

Python não é exotórico. Não tem nada disso, apenas ainda não é tão popular.

Estou num projecto em que estou a desenvolver um sistema para integrar um sistema à medida que também estou a desenvolver, com uma séries de soluções já existentes, umas à medida outras proprietárias.

A solução é suficientemente modular, que permite mesmo que cada elemento da equipa use a linguagem que prefira para este caso (Javas e .Nets estão fora de questão). Eu escolhi Python (foi a segunda linguagem que aprendi a seguir a C, à já alguns anos), outro escolheu Perl (que apesár de eu a conhecer e já ter usado, prefiro não usar), e o outro ainda não sei o que ele escolheu, mas penso que vai também usar Python.

Porque é que eu escolhi Python?

* Porque é Software Livre

* Porque desenvolver em Python é rápido;

* Porque é multi-plataforma;

* Porque tem "pilhas incluidas";

* Porque para além das "pilhas incluidas" tem ainda mais bibliotecas;

* Porque tem uma sintaxe muito simples (aprendes Python em poucos minutos, e ao fim de poucas horas já tas a fazer coisas complexas, também facilita a legilidade de código);

* Porque inclui na sua sintaxe boas práticas de estilo de código (que facilita muito a legibilidade do código);

* Porque tem uma excelente orientação ao objecto;

* Porque Python permite fazer desde aplicações de linhas de comando, a gráficas, baseadas em web, com webservices, servidores, clientes, etc... É uma verdadeira linguagem de propósito geral, e é boa em todos os aspectos;

Ou seja, é flexivél, poderosa, limpa, e fácil. UM SONHO!!!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Realmente é uma opinião, gosto genuinamente de programar, estou longe de estar satisfeito com as linguagens que sei, mas python está muito abaixo na minha lista....

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
rm. O GCC também é open-source.

O termo mais correcto para dizer o tipo de licenciamento do GCC é Software Livre.

Realmente é uma opinião, gosto genuinamente de programar, estou longe de estar satisfeito com as linguagens que sei, mas python está muito abaixo na minha lista...

Mas olha que prefiro Python a Java. Alias arriscaria dizer que o Python tem  uma orientação ao objecto pelo menos tão boa quanto a do Java, e é muito facil ser mais produtivo em Python do que em Java por várias razões:

* sintaxe mais simples e que fomenta a legibilidade;

* tipos dinâmicos;

* menos código para a mesma funcionalidade;

* frequêntemente menos ficheiros para o mesmo programa se ele for grande;

* gestão de excepções mais simples de fazer;

Mas não se fica por aqui! O Python tem outras vantagens, como ser muito mais rápido iniciar o seu interpretador, e realizar operações i/o mais rápidamente (no entanto o interpretador do Java é mais rápido e instância objectos mais rápidamente).

) . E não me lembro de nenhuma vantagem apelativa do Java em relação ao Python.

Para além disso e muito importante: Python é Software Livre e Java é proprietário.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

I may well be a java addicted mas não é por isso que python está abaixo na minha lista, como disse, as linguagens que sei não fazem tudo o que quero, mas python ainda está um pouco longe... pelo menos para já existem outras linguagens com mais prioridades na minha aprendizagem, umas por obrigação do curriculo escolar outras porque por uma ou outra razão me apelam mais, é como disses uma questão de opinião, neste momento não me apetece aprender python, por muito bom que seja.

Não conheço o python e não quero entrar em mais uma discusão sobre o porquê do java ser mais lento, e o porquê de até ser mais rápido.

Peace!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
rm. O GCC também é open-source.

O termo mais correcto para dizer o tipo de licenciamento do GCC é Software Livre.

Segundo o que está no FAQ, o modelo é mesmo open-source. Qualquer um pode pegar no código, melhorá-lo, e submeter as alterações para aprovação.

De qualquer forma, disse aquilo no sentido que o código-fonte está disponível para quem o queira ver.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Andas a ler as FAQs erradas e não deves saber o que é Software Livre e o que é Open Source Software. A FAQ oficial do site oficial do gcc não menciona Open Source Software.

http://gcc.gnu.org/faq.html

O GCC é Software Livre e Open Source Software, mas o termo que o define com mais precisão é Software Livre (Free Software).

Software Livre e Open Source Software, são conceitos muito parecidos, mas não são iguais, por diferenças filosóficas entre os seus criadores. Tudo o que é Software Livre é Open Source Software, no entanto o contrário já não acontece, embora a maior parte do Open Source Software seja também Software Livre e utilize a mais popular licença de Software Livre que é a GNU General Public License (aka GPL).

Definição de Software Livre:

http://ansol.org/filosofia/softwarelivre.pt.html

Definição de Open Source Software:

http://opensource.org/docs/definition.php

Explicação da diferença entre os dois conceitos:

http://www.gnu.org/philosophy/free-software-for-freedom.html

pelo menos para já existem outras linguagens com mais prioridades na minha aprendizagem, umas por obrigação do curriculo escolar outras porque por uma ou outra razão me apelam mais

Cheguei a aprender umas 5 linguagens ao mesmo tempo (se não foram mais) e garanto-te que é importante aprenderes mais do que te ensinam na escola, porque aprender o que ensinam na escola é o que é suposto todos fazerem. Aprender mais coisas é o que diferencia.

Então dá lá um exemplo de uma linguagem que te apele mais.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Cheguei a aprender umas 5 linguagens ao mesmo tempo (se não foram mais) e garanto-te que é importante aprenderes mais do que te ensinam na escola, porque aprender o que ensinam na escola é o que é suposto todos fazerem. Aprender mais coisas é o que diferencia.

E por isso é que umas são por obrigação curricular e outras não :D

Apesar de que no curso onde estou não me poder queixar muito, passamos por muitas linguagens diferentes, mas como diz um dos meus profs, "Ensino-vos a progamar não a conhecer a linguagem, isso fazem foces em casa!"

Linguagem que me apelam mais, algumas podem não ser consideradas linguagens:

. SQL

. PL/SQL

. Java, já vai na versão 6 e ainda não apanhei tudo da versão 5!

. PHP

. C#

. Rubby

. Haskel

. CSS, eu sei não é bem uma linguagem :thumbsup:

Enfim, a lista não refere uma ordem de preferências, na realidade não refere qualquer ordem, tento aprender as linguagens conforme o tempo que possuo e se preciso ou não delas para um ou outro projecto, de momento estou de volta de C++ e windows api e de CSS, devido a dois projectos onde estou envolvido.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Andas a ler as FAQs erradas e não deves saber o que é Software Livre e o que é Open Source Software. A FAQ oficial do site oficial do gcc não menciona Open Source Software.

http://gcc.gnu.org/faq.html

O GCC é Software Livre e Open Source Software, mas o termo que o define com mais precisão é Software Livre (Free Software).

Eu sei o que é software livre e sei o que é open source. Também sei o que significa "conceito" e onde ler o faq do GCC. Só porque o faq nao diz as palavras "open source", o conceito está lá. Já as tuas declarações são um pouco contraditórias.

Numa nota à parte, também sei o que é arrogância. E não gosto.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O que poderia estár na FAQ do GCC é o conceito de Software Livre, porque o GCC é do projecto GNU, que é uma iniciativa da Free Software Foundation. E a FSF é muito clara quanto à terminologia que usa.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Está certo, como disse não diz lá "open source". Mas fala em "open development model". Só estou a dizer que o conceito utilizado por eles para o desenvolvimenento do GCC é de código aberto, na medida que qualquer um o pode alterar. E ou percebi mal ou tu também disseste no teu post anterior que o GCC inclui o conceito de opensource.

E tanto quanto sei, háprojectos de Free Software que embora disponibilizem o código fonte, não permitem que qualquer um o altere e o remeta para alteração do software original, daí achar que o GCC se enquadra mais em open source que em free software. Agora se eles lhe preferem chamar free software, é lá com eles... ::D

E entretanto causei um off-topic gigantesco sem querer... parece que tenho tendência para isso...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Está certo, como disse não diz lá "open source". Mas fala em "open development model".

Sempre tinha razão quanto a uma coisa. Estás a confundir conceitos, mas não aqueles que pensei inicialmente.

Software Livre e Open Source Software, são modelos de LICENCIAMENTO de direito de autor. Não são modelos de desenvolvimento de software. Podes usar qualquer modelo de desenvolvimento de software com qualquer um destes modelos de licencimento.

Só estou a dizer que o conceito utilizado por eles para o desenvolvimenento do GCC é de código aberto, na medida que qualquer um o pode alterar.

O conceito de desenvolvimento é um modelo aberto, ou comunitário.  Mas não confundas um modelo de desenvolvimento de software, com um modelo de licenciamento de direito de autor para software. Uma coisa tem a ver com Engenharia de Software e a outro com Direito.

Claro que esses modelos de licenciamento têm propósitos que têm a ver com os objectivos das suas comunidades, o da FSF é proteger a liberdade de todos os que utilizam software através do licenciamento de direito de autor, e o do movimento Open Source é ter uma ferramenta legal que permita utilizar um determinado modelo dedesenvolvimento (embora isto seja uma explicação um pouco simplista).

E ou percebi mal ou tu também disseste no teu post anterior que o GCC inclui o conceito de opensource

Eu disse que TODO o Software Livre é também Open Source Software, mas que o contrário embora aconteça na maior parte dos casos, não acontece sempre. Esta semelhança de conceitos e o facto de a maior parte do software que é Open Source Software ser também Software Livre, leva a que as comunidades de ambos os movimentos colaborem com mais do que muita frequência.

Eu disse também que a definição mais precisa para o tipo de licenciamento do GCC é Software Livre. E se conhecesses suficientemente a FSF, saberias que eles nunca chamariam a um software deles Open Source Software, aliás, eles esforçam-se para que os outros também não chamem.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora