gildot

Topo
Sobre
FAQ
Tópicos
Autores
Preferências
Artigos
Sondagens
Propor artigo


8/3
gildicas
9/30
jobs
10/9
perguntas
10/25
press

 
O futuro do PHP
Contribuído por BladeRunner em 12-12-02 15:03
do departamento oráculo
php Este artigo muito interessante - IMHO - fala do presente e sobretudo, do futuro do PHP, já com os olhos postos na versão 5, que deve ver uma beta release já em Março próximo.
Fala também do seu posicionamento face ao PERL, ao ASP/.NET e da penetração nas grandes empresas, dizendo que se expandiu muito mais rapidamente na Europa.
Interessante...

Projecto de Lei do GDA | Codeweavers crossover office  >

 

gildot Login
Login:

Password:

Referências
  • Este artigo muito interessante
  • Mais acerca php
  • Também por BladeRunner
  • Esta discussão foi arquivada. Não se pode acrescentar nenhum comentário.
    versus (Pontos:2)
    por vd em 12-12-02 15:19 GMT (#1)
    (Utilizador Info) http://paradigma.co.pt
    php5 vai competir com o seu maior concorrente ... o perl :)

    Boa comparação entre o php e o asp.

    vd
    Hum... perdão? (Pontos:1)
    por Endymion em 12-12-02 16:11 GMT (#3)
    (Utilizador Info)
    E eu que até agora pensava que ambas as linguagens eram uteis e complementares :p Silly me...
    PHP CLI (Pontos:1)
    por MeeTra em 12-12-02 16:15 GMT (#4)
    (Utilizador Info)
    andei ah procura no google.com a ver se enkontrava alguma maneira de meter os scr1pts
    de PHP a funcionar na shell de linux e não sobre um httpd.

    nesta webpage podem ver komo eh simples. :)

      http://www.phpbuilder.com/columns/jayesh20021111.php3?page=1

    Re:PHP CLI (Pontos:1)
    por mlemos em 13-12-02 4:03 GMT (#44)
    (Utilizador Info) http://www.ManuelLemos.net/
    Sempre se pode usar o PHP a partir da linha de comando. Bastar usar a versão executável CGI. Faço isso há anos para executar tarefas de manuntenção como disparo de newsletters, processamento de mensagens devolvidas, actualização do mecanismo de busca do site, etc.. Enfim, coisas que já vi muitas pessoas a dizer que tem de ser feito em Perl. Falta de esclarecimento.
    Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por rollerball em 12-12-02 16:27 GMT (#5)
    (Utilizador Info)
    A unica desvantagem que eu vejo do PHP em relação ao Java e ao .Net é a pouca facilidade de reutilizar o codigo.
    Enquanto em Java ou .Net eu consigo de modo _FACIL_ pegar nas minhas classes e usa-las para construir webservices, programas de shell ou aplicações cliente, em PHP, ou não posso ou não é tão linear.
    E em projectos que tenham mais componentes para além da web isso é uma grande desvantagem.

    Nuno Paulino aka Rollerball
    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por Gamito em 12-12-02 16:33 GMT (#6)
    (Utilizador Info) http://www.dte.ua.pt/~gamito
    Eu cá estou a converter-me ao ZOPE/Python :-)

    Mário Gamito
    my web shelter
    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por vd em 12-12-02 16:46 GMT (#7)
    (Utilizador Info) http://paradigma.co.pt
    Grande "Valente"!

    vd
    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por Gamito em 12-12-02 16:55 GMT (#10)
    (Utilizador Info) http://www.dte.ua.pt/~gamito
    Por acaso está a dar-me umas dicas mais o jmce :-)

    Agora a sério, ainda estou a devorar literatura e a fazer testes, mas parece-me espetacular.

    Mário Gamito
    my web shelter
    Será... (Pontos:1)
    por ParadoXo em 12-12-02 17:17 GMT (#14)
    (Utilizador Info)
    ... que o novo startux vai ser um Zope? Era muito fixe. Com CMF? era interessante ;)
    De facto é muito poderoso, a reutilização é quase obrigatória e a coerência um mimo.



    Cumprimentos.

    "In order to make an apple pie from scratch, you must first create the universe."
    Carl Sagan, Cosmos
    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por mvalente em 12-12-02 19:16 GMT (#27)
    (Utilizador Info) http://www.ruido-visual.pt/
    :-) Foste tu que começaste.... :-)

    Nao estou muito em fase de evangelismo mas acho sempre piada às discussões (vide mais acima) sobre Object-Orientedness do PHP/Java/Perl etc. Tudo coisas coladas com cuspe (e eu usei PHP quando se chamava PHP/FI, lembram-se?) e "Real Soon Now".

    Acho que há 2 coisas que distinguem bem o Python e que justificam a escolha: Multiple Inheritance e MetaClasses. Se isto nao vos diz nada, deixem estar, estao bem com o Perl e o ASP e o VB e o PHP.

    Se preferirem "desenhos" vejam este e este. O segundo em particular, mais do que permitir comparar tecnicismos, permite ver a "olhometro" a diferença de kung fu de teclado...

    Se se quiserem dedicar a comparar linguagens vejam o The Great Computer Language Shootout: vejam por exemplo comparacções de Hello Worlds em Java, Python, PHP e Perl e comparem com o kung fu necessario em cada uma delas (farto-me sempre de rir com o numero de linhas de Java para fazer o "Hello World" :-) A minha conclusao *pessoal* é que estou disposto a trocar um "bocadinho" menos performance por uma maior produtividade (ie menos linhas de codigo; ie mais legibilidade)

    Cumprimentos

    Mario Valente

    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por leitao em 12-12-02 20:39 GMT (#36)
    (Utilizador Info) http://scaletrix.com/nuno/
    farto-me sempre de rir com o numero de linhas de Java para fazer o "Hello World" :-)

    Humm... um HelloWorld em Java:

    class HelloWorld {
    public static void main (String args[]) {
    System.out.print("Hello World ");
    }
    }

    5 linhas... tem assim tanta piada ?

    A minha conclusao *pessoal* é que estou disposto a trocar um "bocadinho" menos performance por uma maior produtividade (ie menos linhas de codigo; ie mais legibilidade)

    O numero de linhas de codigo nao tem nada a ver com simplicidade -- e' nisso que por exemplo o Perl falha (comparado ao Python por exemplo). O que realmente interessa e' a forma como tu mapeias o "software no teu cerebro", para codigo na linguagem.

    O problema do Perl e' exactamente que este mapa nao e' simples de aprender, e exige muita pratica. Ja' outras linguagens (o Python e o Java) estao muito mais proximas da forma como as pessoas pensam -- e' por isso que alguem que esta' a comecar em OO aprende mais facilmente Java do que, say, C++.


    "Monogamy is for guys that can't get pussy." --Steve-O.

    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por mlopes em 13-12-02 11:43 GMT (#50)
    (Utilizador Info)

    5 linhas... tem assim tanta piada ?

    Mesmo assim são 5X mais linhas do que em python!
    Quanto ao "kung fu" de teclado temos 19 caracteres em python contra 98 em java!


    If you don't have time to do it right, where are you going to find the time to do it over?

    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por leitao em 13-12-02 13:32 GMT (#54)
    (Utilizador Info) http://scaletrix.com/nuno/
    Ok -- entao talvez devessemos todos escrever software em dc(1):

    [Hello World!] p

    16 caracteres... I win ;-)


    "Monogamy is for guys that can't get pussy." --Steve-O.

    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:1)
    por p0et em 13-12-02 20:27 GMT (#59)
    (Utilizador Info) http://www.rnl.ist.utl.pt/~tisf
    Tive mesmo agora a ver a página acima mencionada cujo titulo é "a subjective analysis of two high-level, object oriented languages", e é engraçado ver por exemplo em dois casos o que o sr. acha das linguagens:

    a) no exemplo do IO test: onde é que em python se consegue tratar o caso de ocorrer uma excepcao? o programa simplesmente rebenta sem tratar o erro?

    b) no exemplo das listas: sim, o código em java pode ser "hideous", comparado com o codigo de python, mas para mim parece-me muito mais claro perceber o que ele faz, se o for ver passado um ou dois meses.

    sim, estou a exagerar um pouco no segundo caso, mas que eu saiba (mas secalhar sou só eu que sou muito lento a programar), passo mais tempo a ler código do que a escrevê-lo, e com algo decente para me ajudar, o kung-fu fica bastante reduzido.

    Será que vale a pena muitas vezes perder uns milissegundos a escrever uns quantos caracteres, para depois não conseguir compreender o que lá está?

    Bem... mas isto já está a ficar completly off topic.. :) halt()...
    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por mlopes em 13-12-02 22:18 GMT (#60)
    (Utilizador Info)
    O python tem funções para lidar com exepções! O código escrito em python é facil de ler e escrever!, e não estou a defender o python por ser a linguagem que uso, até porque não é, neste momento estou a programar maioritariamente em perl, e o que sei de python é muito pouco para alêm do que tenho lido e de algumas experiências que tenho feito.

    If you don't have time to do it right, where are you going to find the time to do it over?

    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por mvalente em 14-12-02 0:42 GMT (#61)
    (Utilizador Info) http://www.ruido-visual.pt/
    5 linhas... tem assim tanta piada ?

    >>> print "Hello World"

    Tem :-)

    Cumprimentos

    Mario Valente

    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por mvalente em 14-12-02 1:47 GMT (#65)
    (Utilizador Info) http://www.ruido-visual.pt/
    ... principalmente quando posso escrever antes isso (e ter tudo o resto do Python...) e usar o Jython para compilar para Java bytecode...

    Cumprimentos

    Mario Valente

    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:1)
    por Duke em 14-12-02 4:53 GMT (#69)
    (Utilizador Info) http://www.umproject.web.pt


    Queres contar os caracteres?
    PHP rules...

    Eu nao estou a deitar abaixo Python até pq nao conheço como deve ser... Mas isto assim é um bocado para o ridiculo... Em vez de contarem as linhas deviam dar exemplos mais úteis...

    Samuel Martins

    God is NoWHere...
    Re:Reutiliza��o de codigo em compone (Pontos:2)
    por mvalente em 14-12-02 16:32 GMT (#71)
    (Utilizador Info) http://www.ruido-visual.pt/

    Choosing the right server-side scr1pting language

    Cumprimentos

    Mario Valente

    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:1)
    por ssn em 12-12-02 16:47 GMT (#8)
    (Utilizador Info)

    Acho que o projecto Pear será relevante neste aspecto.

    Talvez se torne num CPAN para php.


    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por cgd em 12-12-02 18:14 GMT (#21)
    (Utilizador Info)

    nao conheco PHP o suficiente bem, mas acho que tem classes. é possivel definir classes num ficheiro e usa-lo noutro? se é, entao nao ha problema de reuso de codigo.

    pelo que escreveste, dá-me ideia que chateia-te nao reusares o *teu* codigo. e é bom chateares-te por isso. mas nao te *preocupes* com isso se comecares a escrever codigo com *outras* pessoas. por experiencia propria acredita que mesmo em linguagens que tentam (re)forcar a reutilziacao de codigo (orientadas a OO, por exemplo) na pratica esse reutilizacao torna-se impossivel pela mesma razao que a maior parte das pessoas nunca a conseguiu faezr em linguagens como c: é preciso organizacao e a maior parte das pessoas nao a tem.

    um exemplo bem real: java. java é um linguagem semi interessante e à partida permite um facil reuso do codigo (ao nivel da linguagem). o problema é ao nivel da organizacao de cada um. se para usar uma dada classe, tens que trazer 40 ou 50 atrás, o teu codigo nao é reusavel, pelo menos se essas 40 ou 50 nao se relacionarem funcionalmente (se se relacionarem, então *existe* reuso).


    -- carlos

    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por rollerball em 12-12-02 18:26 GMT (#24)
    (Utilizador Info)
    Acho que não percebeste o meu post!

    A reutilização de codigo que eu me referi não era relativa a programas no mesmo contexto. Isto é, o PHP permite partilhar classes entre varios sites e mesmo shell scr1pts. Mas, por exemplo, tenta por essas classes a correrem no teu telemovel ou PDA!

    E já agora, digo-te que a minha experiencia sobre partilha de codigo numa equipe de desenvolvimento alargada é bastante boa. Claro que há sempre coisas que correm mal mas depois de alguns afinamentos é possivel ter um modelo muito funcional. Para mim, o segredo está no gestor tecnico do projecto ser muito rigoroso !

    Nuno Paulino aka Rollerball
    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por cgd em 12-12-02 20:23 GMT (#32)
    (Utilizador Info)

    tens razao, nao tinha percebido que era para correr em PDAs ou telemoveis. mas isso ja e fugir a questao, é obvio que isso depende da existencia de compiladores/interpretadores nesses devices. neste momento java é a linguagem franca dos pequenos dispositivos. ha uns tempos a cisco usava tcl como linguagem de scr1pting em algum do seu HW.

    mas atencao que esse nao é o conceito de reutilizacao de codigo! este é mais um conceito (lato, muito lato) de portabilidade.


    -- carlos

    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por rollerball em 12-12-02 23:38 GMT (#42)
    (Utilizador Info)
    O conceito de reutilização de codigo mudou com as mais recentes frameworks. Com as frameworks actuais quer seja Java ou .Net é possivel usar as mesmas classes para aplicações que correm em vários devices. Logo estamos a falar de reutilização de codigo.
    Alias, IMHO a grande vantagem destas frameworks consiste na possibilidade de usar uma unica base de codigo para todos as aplicações necessárias, independentemente do device.

    Nuno Paulino aka Rollerball
    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por cgd em 13-12-02 11:37 GMT (#49)
    (Utilizador Info)

    nao conheco .NET mas posso-te garantir que isso nao é verdade para java.

    em java tens tres grandes plataformas j2me j2se j2ee que significam java 2 micro/standard/enterprise edition.

    a micro é a destinada a funcionar em pequenos dispositivos. é um java (ao nivel funcional) ligeiramente cortado apenas (nao suporta double nem float) mas brutalmente cortado (cerca de 140 classes, das quais apenas umas 10 se tanto, sao as genericas que se usam -- vector,stringbuffer,hashtable e poucas mais) e diferente ao nivel do resto (api especifica para io, user interface, record storing).

    os principios de desenvolvimento para j2me têm de ser completametne diferentes dos usados para se/ee: usar menos classes, menos objectos, mais coisas static em geral. Memória e eficiencia estão "at premium".

    ja em relacao as outras: j2se 1.3 sao 1700 classes e o 1.4 sao 2300. o j2ee sao classes EXTRAS que partem do principio que o j2se existe (ou sjea, o j2ee é construido em cima de j2se) e sao cerca de 420 classes (versao 1.3).

    portanto, o desenvolvimento em java NÃO é reusavel entre plataformas, apesar do código per se sintacticamente ser portavel. basicametne tens que ter noções (e códigos!) diferentes quer se trate de desenvolvimento para WEB/pequenos dispositivos/fat clients.

    cya


    -- carlos

    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:1)
    por Duke em 14-12-02 4:57 GMT (#70)
    (Utilizador Info) http://www.umproject.web.pt
    Se tiveres o Zaurus da Sharp ou qualquer outro PDA com Linux qualquer outro PDA com Linux, instalas-lhe o php e passas a correr scr1pts ou aplicações em PHP...

    Samuel Martins

    God is NoWHere...
    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:1)
    por mlemos em 13-12-02 4:13 GMT (#45)
    (Utilizador Info) http://www.ManuelLemos.net/

    Isso parece-me ser meramente falta de hábito da tua parte.

    Talvez conheças o site PHP Classes onde centenas de programadores partilharam as suas classes com dezenas de milhares de outros programadores que as reutilizaram.

    Quanto a não ser fácil usar PHP para Web services, programas shell, aplicações cliente, etc.. também é falta de hábito da tua parte. Não há nada que impeça o PHP ser usado para esses fins. O que acontece é que a maior parte das pessoas usa o PHP para aplicações Web e por isso vês muito menos aplicações de outros tipos.


    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por rollerball em 13-12-02 9:56 GMT (#46)
    (Utilizador Info)
    Não é isso que esta em causa!
    Por favor lê este post e a sua thread para compreenderes a que eu me estou a referir!

    Nuno Paulino aka Rollerball
    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por leitao em 12-12-02 17:04 GMT (#12)
    (Utilizador Info) http://scaletrix.com/nuno/
    não percebo como é que é difícil a reutilização de código...

    Porque nao podes simplesmente compilar um conjunto de classes, por num ficheiro .jar e usar noutro sitio qualquer. Para nao falar que em PHP o conceito de "namespace" ou nao existe ou e' uma anedota.


    "Monogamy is for guys that can't get pussy." --Steve-O.

    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:1)
    por ssn em 12-12-02 17:28 GMT (#16)
    (Utilizador Info)

    Porque nao podes simplesmente compilar um conjunto de classes, por num ficheiro .jar e usar noutro sitio qualquer.

    Claro que não dá para compilar, o PHP é interpretado. Qual o interesse nisso? Não é preciso compilar e criar um ficheiro único para que seja possível reutilizar componentes.

    Não compliquem, visitem o projecto Pear e vejam como já existem vários componentes prontos a ser reutilizados.


    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por rollerball em 12-12-02 17:44 GMT (#18)
    (Utilizador Info)
    Acho que estão a misturar conceitos.
    Como usas essas classes para criar um Aplicação Grafica Cliente? E se for para um PDA ?

    Nuno Paulino aka Rollerball
    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por cgd em 12-12-02 18:19 GMT (#22)
    (Utilizador Info)

    bem, o jar é uma questao de packaging. facilita o reuso em termos de deploying (e "logistico", vá lá) apenas, não a nivel de desenvolvimento.

    o conceito de namespace é simples syntax sugar: se nao o tiveres (php) tens de usar classes com nomes diferentes, isso resolve-se facilmetne com alguma disciplina de prefixamento (em xpto_XXX , xpto_ é o meu namespace). tal como em c, atraves de disciplina de prefixos de podem construir modulos (classes) perfeitamente reusaveis.


    -- carlos

    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por leitao em 12-12-02 20:29 GMT (#33)
    (Utilizador Info) http://scaletrix.com/nuno/
    o conceito de namespace é simples syntax sugar: se nao o tiveres (php) tens de usar classes com nomes diferentes, isso resolve-se facilmetne com alguma disciplina de prefixamento (em xpto_XXX , xpto_ é o meu namespace).

    Ou seja -- atraves de um "hack".


    "Monogamy is for guys that can't get pussy." --Steve-O.

    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por leitao em 13-12-02 11:36 GMT (#48)
    (Utilizador Info) http://scaletrix.com/nuno/
    O C ganhou posicao historica para ser um hack -- foi desenvolvido nos anos 70. O PHP, Perl, etc. foram desenvolvidos nos anos 90, nao teem o mesmo direito ;-)


    "Monogamy is for guys that can't get pussy." --Steve-O.

    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:1)
    por joaobranco em 13-12-02 12:56 GMT (#53)
    (Utilizador Info)
    Na realidade há coisas que se desculpam se foram feitas numa altura em que não se sabia dos problemas que isso causaria e já não se desculpam se foram feitas quando esse conhecimento já estava difundido.

    O C é melhor que o C++, o Java, o C# ou o Python? Provavelmente em termos abstratos não, mas tem a vantagem comparativa de estar mais difundido e integrado na "consciência colectiva" dos programadores, por ter sido desenvolvido há mais tempo.

    Desculpam-se as suas falhas por essas vantagens. No entanto, uma nova linguagem que não tenha essas vantagens dificilmente poderá apresentar como desculpa o facto de fazer o mesmos erros que outros também fazem, a menos que as suas vantagens compensem esses erros.

    Cumps, JB

    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:2)
    por raxx7 em 12-12-02 23:20 GMT (#41)
    (Utilizador Info) http://raxx7.no.sapo.pt/
    Os namespaces de Python e Java têm uma organização hierárquica, têm uma função estrutural (principalmente em python onde podes diverir-te à brava a brincar com o namespace).
    Os namespaces de C++ sim, são basicamente para evitar ter de estar sempre a escrever esses prefixos longos.

    Remember to be the Killer, not the Victim! (Nuklear Girl)
    Re:Reutilização de codigo em componentes (NOT) !! (Pontos:1)
    por MrVi em 26-12-02 11:37 GMT (#76)
    (Utilizador Info) http://nuno.eth.pt/
    namespaces em PHP5 ja nao sao anedota nenhuma, nem precisas de fazer hack nenhum.

    ---------
    Nuno Loureiro
    _NOT_WEB_ (Pontos:2)
    por rollerball em 12-12-02 17:08 GMT (#13)
    (Utilizador Info)
    Como eu sublinhei no meu post, eu estou a referir-me a solução que envolvam componentes _NOT_WEB_. E não venhas dizer que tens PHP a correr na shell e que fazes uns crons jobs com isso porque eu estou a ir muito mais além do que isso !!

    Nuno Paulino aka Rollerball
    Re:_NOT_WEB_ (Pontos:1)
    por CRPilger em 12-12-02 18:23 GMT (#23)
    (Utilizador Info) http://charles.pilger.inf.br
    Um exemplo de solução que usa o PHP de forma tanto via web como via cliente gráfico (usa PHP-GTK) é o Agata Report: http://agata.codigolivre.org.br/ Vale a pena dar uma olhada nos fontes, que a implementação de OO ali é muito bem feita.
    Re:_NOT_WEB_ (Pontos:2)
    por rollerball em 12-12-02 18:29 GMT (#25)
    (Utilizador Info)
    Eu não disse que não era possivel! Mas que não é linear não é! O que faz com que o tempo de desenvolvimento não seja muito rapido.
    Além disso, como já disse noutro post: e telemoveis e PDA's ?

    Nuno Paulino aka Rollerball
    Re:_NOT_WEB_ (Pontos:1)
    por Mulder3 em 12-12-02 19:08 GMT (#26)
    (Utilizador Info)
    Tens uma lib que com a classe para sacar os dados da DB, depois usas essa mesma classe para outputar os dados em PDA ou em WAP(pro telele) , dependendo do formato
    Re:_NOT_WEB_ (Pontos:2)
    por mlopes em 13-12-02 12:03 GMT (#51)
    (Utilizador Info)
    Esta é para web!

    With HAWHAW you can publish WAP pages which are also accessible by HTML standard browsers (...) If requested by the user agent, HAWHAW sites are capable to serve HDML, Avantgo®, i-mode(tm) and MML browsers as well!


    If you don't have time to do it right, where are you going to find the time to do it over?

    Qual a melhor linguagem de programação... (Pontos:1)
    por ssn em 12-12-02 21:45 GMT (#39)
    (Utilizador Info)

    Qual a melhor linguagem de programação?

    Mais uma daquelas questões sobre as quais toda a gente tem sempre algo a dizer e que dá sempre origem a discussões mais ou menos fundamentalistas, onde se acabam por discutir os detalhes mais irrelevantes e inconsequentes.

    A melhor linguagem de programação é aquela que dominamos, seja ela a mais adequada ou não para o problema em questão. Todos temos tendência a considerar o que há de diferente nas outras linguagens como problemas cruciais e altamente limitativos, mas por outro lado minimizamos os problemas com que nos deparamos na nossa linguagem de eleição. Isto acontece porque, depois de linhas e linhas de experiência, a forma como encaramos a tecnologia em questão se alterou. Qualquer programador é capaz de, ao fim de umas semanas, desenvolver programas em php, asp, perl, java, etc... mas é necessário mais para realmente dominar e ser eficiente numa tecnologia.

    A propósito desta discussão, o último artigo do Joel on Software é uma leitura muito interessante.


    Re:Qual a melhor linguagem de programação... (Pontos:2)
    por mvalente em 14-12-02 3:25 GMT (#67)
    (Utilizador Info) http://www.ruido-visual.pt/
    A melhor linguagem de programação é aquela que dominamos, seja ela a mais adequada ou não para o problema em questão.

    É exactamente o contrario. A melhor linguagem de programação é aquela que é mais adequada para o problema em questão.

    Obviamente que haverá uma tendencia natural e humana para dominar aquela que resolve a maior percentagem dos problemas que cada um enfrenta. Mas isso nao a torna "a melhor"; nem nenhum programador deverá deixar a familiaridade toldar o seu raciocinio sobre qual a melhor ferramenta a aplicar para resolver um problema.

    Cumprimentos

    Mario Valente

    Re:Qual a melhor linguagem de programação... (Pontos:2)
    por mvalente em 14-12-02 19:08 GMT (#73)
    (Utilizador Info) http://www.ruido-visual.pt/
    Resolves mais depressa. Mas nao resolves bem. Nem melhor.

    You can have something fast, good or cheap. Choose any two.

    Cumprimentos

    Mario Valente

    Re:Qual a melhor linguagem de programação... (Pontos:1)
    por ssn em 15-12-02 23:43 GMT (#75)
    (Utilizador Info)

    Se o tempo for considerado irrelevante, és capaz de ter razão.
    Mas o tempo raramente é irrelevante, e estamos a falar de situações reais.


    Yahoo prefere PHP: Contra factos não há argumentos (Pontos:1)
    por mlemos em 13-12-02 3:56 GMT (#43)
    (Utilizador Info) http://www.ManuelLemos.net/

    As discussões sobre qual a melhor linguagem são sempre muito engraçadas.

    O facto mais curioso é que os defensores mais fervorosos de cada linguagem normalmente reflectem que pouco ou nada conhecem das outras e defendem a sua linguagem como se estivessem a defender a sua equipa de futebol.

    A essas pessoas recomendo que vejam esta apresentação da Yahoo sobre porque mudar para PHP. A apresentação explica entre outras coisas porque não todas as outras linguagens que foram previamente estudas e consideradas.


    Re:Yahoo prefere PHP: Contra factos não há argumen (Pontos:2)
    por mvalente em 14-12-02 1:25 GMT (#63)
    (Utilizador Info) http://www.ruido-visual.pt/
    Ah, pois... a "famosa" apresentação do Yahoo a defender o PHP (quiçá "como se estivesse a defender a sua equipa de futebol".... :-)

    Uma coisa que nunca cheguei a perceber nessa apresentação e em toda a argumentação é porque é que o Python não foi sequer considerado. Ajusta-se na perfeição a todos os requisitos. Para além disso grande parte do Yahoo Groups (ex EGroups) foi feito tendo como base o Medusa, um framework em Python feito pelo Sam Rushing. Assumo que assim continue a ser. No caso do Yahoo Maps garanto que sim (vide URL).

    Mas o Yahoo escolheu, está escolhido. Boa sorte, adeus e um queijo...

    Mas se contra factos não há argumentos, então tenho um com mais peso: Google prefere Python. É confirmar nos requisitos para as variadas oportunidades de emprego no Google. (Não vou é entrar na discussão de qual é mais importante, o Yahoo ou o Google ;-)

    Cumprimentos

    Mario Valente

    Re:Yahoo prefere PHP: Contra factos não há argumen (Pontos:2)
    por mvalente em 14-12-02 3:28 GMT (#68)
    (Utilizador Info) http://www.ruido-visual.pt/
    grande parte do Yahoo Groups (ex EGroups) foi feito tendo como base o Medusa

    ...que, já agora, é também a base do Zope :-)

    Cumprimentos

    Mario Valente

    O futuro no presente (Pontos:2)
    por mvalente em 14-12-02 3:01 GMT (#66)
    (Utilizador Info) http://www.ruido-visual.pt/
    Do artigo original, o PHP...

    lacking Active Server Page's tight integration with .NET

    Que o Python já tem...

    without Java's object-oriented programming constructs,

    Que o Python tem (e muito mais, como multiple inheritance e metaclasses)...

    will allow PHP to provide a powerful Web front end for enterprise-class .NET and J2EE-based applications.

    Coisas que o Python  faz...

    PHP5's object model will put it in a good position to compete with Java Server Pages (JSP) as the primary application server language for J2EE sites
    PHP5's object model has syntax very similar to the Java programming language, so it will be easy for J2EE programmers to learn it, yet PHP5 is still a lightweight scr1pting language

    O Python tem esse modelo e essa sintaxe já hoje e pode ser facilmente usado de forma semelhante às JSP usando o ModPython

    Making inroads on the .NET platform will be more difficult for PHP5,
    The reason is that the .NET web scr1pting language, Active Server Pages (ASP), is tightly bound to the .NET platform

    O que nao impede o Python (vide link acima) de já o fazer...

    Suraski cites the landmark book, "Design Patterns" (isbn #0201633612), as one of the inspirations for PHP5's objected-oriented programming features
    "The way PHP4 was built -- it was not easy to implement design patterns," says Suraski. "PHP5 is much more suitable,

    Really ? O Python é suitable today

    PHP5's performance improvements, coupled with the use of code caching accelerators such as IonCube, APC, or Zend Accelerator, will make PHP5 more competitive with other scr1pting choices.

    Bem, aqui tinha que falar do Zope e do ZEO, mas depois aparecia alguem a dizer que estou sempre a bater na mesma tecla :-)

    Uma nota final: para quem está habituado a desenvolver em PHP (mod_php e ficheiros com mistura de HTML e PHP) não é obrigado a usar o Zope; pode perfeitamente usar o Apache e usar o mod_python para seguir o mesmo modelo. De notar no entanto que também é possivel usar o Python em PHP. E, usando o Zope como application server, é possivel usar o PHP como linguagem de programação

    Cumprimentos

    Mario Valente

    Re:Como !?!?! (Pontos:2)
    por leitao em 12-12-02 17:01 GMT (#11)
    (Utilizador Info) http://scaletrix.com/nuno/
    Porque e' que e' uma bacorada ?

    O PHP ate' e' uma linguagem engracada -- mas nao passa de uma linguagem de scr1pting, e e' esse o problema. Nao e' verdadeiramente orientada a objectos, e a sintax por vezes e' algo inconsistente.

    Tal e qual como o Perl, sofre de ter nascido e crescido organicamente (ou como algumas pessoas diriam, por ser um "hack"). Ja', por exemplo, o Java e' uma linguagem verdadeiramente OO (tirando multiple-inheritance), e tem uma sintax pura.


    "Monogamy is for guys that can't get pussy." --Steve-O.

    Re:Como !?!?! (Pontos:2)
    por cgd em 12-12-02 18:03 GMT (#20)
    (Utilizador Info)

    o java não é uma linguagem puramente OO. foste vitima da campanha de marketing da sun.

    o java tem tipos primitivos, switch, static methods (completar a lista) que nao sao puramente OO.

    a melhor forma de provar que java não é puramente OO é escrever um programa que nao defina um unico (programado por nós) objecto: uma classe X.java com todos os metodos e variaveis dentro dessa classe definidas static.

    e ate se pode fazer um melhoramento: dividimos os metodos/variaveis por classes, mas continua a ser tudo static. passas a ter um programa perfeitamente estruturado (mas continua a nao ser OO).


    -- carlos

    Re:Como !?!?! (Pontos:2)
    por leitao em 12-12-02 20:18 GMT (#29)
    (Utilizador Info) http://scaletrix.com/nuno/
    o java não é uma linguagem puramente OO. foste vitima da campanha de marketing da sun.

    Ok -- devia ter dito: "o Java e' uma linguagem verdadeiramente OO comparado com o PHP" ;-)

    Mas o Java define o essencial e util (IMHO) da definicao de OO. Nenhuma linguagem OO (IMHO) tem o balanco de features com facilidade de utilizacao como o Java.

    Se o C++ tivesse definido melhor a STL, e uma sintax decente talvez tivesse outra opiniao.


    "Monogamy is for guys that can't get pussy." --Steve-O.

    Re:Como !?!?! (Pontos:1)
    por p0et em 13-12-02 20:15 GMT (#58)
    (Utilizador Info) http://www.rnl.ist.utl.pt/~tisf
    Desculpa ser picuinhas em relação ao java ser ou não OO, mas há uma coisa que não me deixa de fazer confusão:

    em primeiro lugar, concordo plenamente com o "hack" que são os tipos primitivos, associados quase a um "hack" maior que é utilizar um wrapper por objectos (ainda estou à espera que alguém me explique uma maneira eficiente de fazer i++, se i for um Integer)

    mas em relação às classes.. gostava que alguém me explicasse como raios é que eu implemento, numa linguagem OO, funcionalidade respeitante a uma *classe* de objectos, sem ter metodos estáticos (que não são mais nada do que metodos da classe e não das instâncias, i.e., dos objectos)

    uma coisa tão simples como saber quantos objectos tenho instanciados...

    Ainda outra coisa: metaclasses parece ter um nome sonante, mas o que posso eu fazer com elas que é diferente de usar as classes da JVM e a reflection do Java?
    Re:Como !?!?! (Pontos:2)
    por mvalente em 14-12-02 1:36 GMT (#64)
    (Utilizador Info) http://www.ruido-visual.pt/
    mas em relação às classes.. gostava que alguém me explicasse como raios é que eu implemento, numa linguagem OO, funcionalidade respeitante a uma *classe* de objectos, sem ter metodos estáticos
    uma coisa tão simples como saber quantos objectos tenho instanciados...
    Ainda outra coisa: metaclasses parece ter um nome sonante, mas o que posso eu fazer com elas que é diferente de usar as classes da JVM e a reflection do Java?

    Podes por exemplo ter funcionalidades respeitantes às classes e não às instancias. Por exemplo, uma coisa tão simples como saberes quantos objectos tens instanciados :-)

    Cumprimentos

    Mario Valente

    Re:Como !?!?! (Pontos:1)
    por p0et em 14-12-02 22:04 GMT (#74)
    (Utilizador Info) http://www.rnl.ist.utl.pt/~tisf
    Ok, ok.. :) dou o braço a torcer nesse exemplo, porque acabou por ser demasiado simples e misturar conceitos: o que eu queira era quando temos um exemplo de uma propriedade da classe (e que não é apenas uma meta-propriedade, de nivel programático).

    Refazendo: temos uma classe motor, e queremos que cada objecto motor (instância) tenha um numero de série, diferente e sequencial (acho q isto até acontece com os motores IRL).

    Como é que isso é representado se não tivermos metodos estáticos? Com inner classes, value objects, etc, acaba sempre por ser mais pesado (no sentido de "cumbersome", não conseguir arranjar melhor tradução).

    Mas eu não sou um purista de OO, e até acho que por vezes ter outros constructs na linguagem, acaba por compensar mais, mesmo que alguém possa usar esses constructs para dar um tiro no seu próprio pé...
    Re:Como !?!?! (Pontos:2)
    por mvalente em 12-12-02 19:21 GMT (#28)
    (Utilizador Info) http://www.ruido-visual.pt/
    o Java e' uma linguagem verdadeiramente OO (tirando multiple-inheritance)

    ... e tirando metaclasses.... e tirando que nem tudo é um objecto....

    Cumprimentos

    Mario Valente

    Re:Como !?!?! (Pontos:2)
    por leitao em 12-12-02 20:19 GMT (#30)
    (Utilizador Info) http://scaletrix.com/nuno/
    e tirando que nem tudo é um objecto....

    Pera ai, o que e' que em java nao e' um objecto ?


    "Monogamy is for guys that can't get pussy." --Steve-O.

    Re:Como !?!?! (Pontos:2)
    por cgd em 12-12-02 20:33 GMT (#35)
    (Utilizador Info)
    Pera ai, o que e' que em java nao e' um objecto ?

    os tipos primitivos!

    e nem queiras saber o quantidade de "casos especiais" que isso provoca, especialmente quando se tenta fazer alguma coisa generica... tens o tradeoff: ou generalidade e falta de eficiencia e consumo de recursos, ou codigo multiplicado pelo numero de tipos primitivos que existem.

    um exemplo: todas as estruturas de dados sao definidas apenas para conter objectos. nao esta disponivel suporte para os tipos primitivos. para os usar, tens que os "enwrapar" (cuidado com esta palavra :-) no objectos Integer Long (etc). Isso é um desperdicio de memoria brutal (2 a 3x mais) e slowdown code gratuito. A alternativa é fazer listas, hashtables para int,long,char etc... (bom, na pratica bastava ter feito para int's que é sem duvida o que faz mais falta, e dava logo para suportar tb char short e byte, embora desperdicando 2 2 3 bytes por entrada, respectivametne)


    -- carlos

    Re:Como !?!?! (Pontos:2)
    por leitao em 12-12-02 20:46 GMT (#37)
    (Utilizador Info) http://scaletrix.com/nuno/
    um exemplo: todas as estruturas de dados sao definidas apenas para conter objectos. nao esta disponivel suporte para os tipos primitivos. para os usar, tens que os "enwrapar" (cuidado com esta palavra :-) no objectos Integer Long (etc). Isso é um desperdicio de memoria brutal (2 a 3x mais) e slowdown code gratuito.

    Sem duvida -- mas esse "enwrape" ;-) nao me parece que seja assim tao ineficiente. Depende obviamente o que estas a fazer no codigo. Mas ao menos o "wrapping" e' relativamente trivial e facil de entender:

    Integer i = new Integer(1);

    Facil! :-)

    Mas concordo contigo que nao e' ideal.


    "Monogamy is for guys that can't get pussy." --Steve-O.

    Re:Como !?!?! (Pontos:2)
    por cgd em 12-12-02 20:20 GMT (#31)
    (Utilizador Info)

    Pode-se dizer que java suporta metaclasses, embora de forma algo limitada (tens que ter classes ou interfaces conhecidos). O conceito de metaclasse é o conceito da classe das classes e o java tem o java.lang.Class, que é isso.

    cya


    -- carlos

    Re:Como !?!?! (Pontos:3, Interessante)
    por cgd em 12-12-02 17:54 GMT (#19)
    (Utilizador Info)

    quanto ao slower: qualquer linguagem interpretada, tem um ligeiro (ao contrario do que a maior parte das pessoas pensa) penalty resultante do overhead fetch-and-execute do proximo bytecode. quanto mais complexo for o bytecode (i.e. quanto maior quantidade de codigo for executado por bytecode) mais rápida é a linguagem, quanto mais simples simples for o bytecode, mais lento será.

    dois exemplos extremos:

    - uma linguagem tipo "sed" de unix. existem uma ou duas dezenas de bytecodes que fazem muitas coisas. o sed é quase tao rapido a executar determinadas tarefas como programas em c equivalentes (por exemplo, apagar a 4a e 6a linha do input).

    - emuladores! um emulador de outra arquitectura tem que mapear as opcodes da arq emulada uma a uma, e cada bytecode tem pouco codigo porque como as opcodes sao tarefas simples, mapeiam numa proporcao quase um para um. o penalty de interpretar nesse caso é muito significativo. de tal ordem que num caso de um emulador, normalmente é preciso uma cpu entre 15 a 20 vezes mais rapida que a original para a velocidade ser a mesma.

    em relacao ao perl,php,java etc... tudo depende em primeiro da qualidade da implementacao. mas o tecto de performance é ditado pelo bytecode de cada uma. quanto mais simples for o bytecode (de mais baixo nivel) mais lenta é a linguagem. é por isso que java ha-de sempre ser lento quando interpretado puramente -- o bytecode é de baixo nivel. o perl é mais rapido porque o bytecode é de mais alto nivel: fazer um s/// e executar os varios builtins corresponde a entradas directas no switch (acho eu!-- nao tenho a certeza disto). Nao conheco o bytecode do php...

    existe aqui uma situacao algo paradoxa: se o bytecode é de baixo nivel, o interpretador é o mais lento, mas é mais facil produzir machine code on the fly (os JIT compilers). se é de muito baixo nivel, torna-se quase impossivel fazer JIT, mas a interpretacao é mais rapida.


    -- carlos

    Re:Realidade nos sistemas Web (Pontos:1)
    por ssn em 13-12-02 14:50 GMT (#56)
    (Utilizador Info)

    Para *grandes* sistemas web ver a apresetação indicada pelo Manuel Lemos sobre o (provavel) uso de PHP no Yahoo.


    Re:Realidade nos sistemas Web (Pontos:2)
    por mvalente em 14-12-02 0:53 GMT (#62)
    (Utilizador Info) http://www.ruido-visual.pt/
    A questão coloca-se perante sistemas grandes.
    Um servidor único não chega, colocar vários webservers é uma solução, mas por si só não chega. Quando a solução terá que recorrer ao Corba, como faremos isso em PHP ? Perl ?

    Ferramos-lhe com o XML Blaster no meio e usamos a linguagem que nos apetecer; e de caminho cagamos no CORBA e usamos qualquer coisa decente como XMLRPC ou SOAP, continuando no entanto o CORBA disponivel para os masoquistas...

    Cumprimentos

    Mario Valente

     

     

    [ Topo | Sugerir artigo | Artigos anteriores | Sondagens passadas | FAQ | Editores | Preferências | Contacto ]