Tudo começou no blog batteries not included com o post sobre Smalltalk X Java. Neste post são apresentados trechos de códigos básicos nas linguagens Java e Smalltalk, fazendo um comparativo entre as vantagens das sintaxes entre as linguagens. O resultado ficou subjetivo, mas com leve vantagem para a sintaxe do Smalltalk, embora os exemplos em Java pudessem ser melhorados, conforme foi descrito nos comentários.
Depois o negócio foi pro Fecha Tag, por sinal um belo blog. Lá o autor escreveu um post com os exemplos em Phyton.
Os exemplos comparados foram:
- Fatorial
- Listar números de 0 à 10
- Imprimir Colections
- Mostrar pares e ímpares entre 1 e 10
- Invocar métodos via Reflection
Nas comparações feitas entre o Smalltalk(vencedor do primeiro confronto) e o Phyton, ficam as minhas seguintes conclusões:
- As implementações são bastantes parecidas
- A simplicidade do Phyton é um pouco superior e elegante
- Em Smalltak Reflection é muito style
Nos comentários do fecha tag o leitor Fábio implementa os exemplos em PHP, abaixo transcrevo os códigos com uma modificação no fatorial.
FATORIAL
function factorial($n) {
if($n >0) return $n*factorial($n-1);
elseif($n ==0) return 1;
else return 0;
}
ou
function factorial($n) {
return ($n > 0)?$n*factorial($n-1):(($n==0)?1:0);
}
Listar Números
foreach(range(0, 10) as $n)
print $n;
Collections
$l = array (‘Em PHP,’,’chamamos as’,’collections’,’de “arrays”‘,);
echo implode($l, “\n”);
ODD/EVEN
foreach(range(0, 10) as $n)
echo (1 & $n) ? “$n is odd, ” : “$n is even, “;
Reflection
$o = new ReflectionClass(‘MyClass’);
$o->newInstance()->showMessage();
Um dia desses conversando com o meu amigo Antonio Fonseca sobre linguagens, mais especificamente sobre Phyton e sua simplicidade e elegância. Sem dúvida Phyton é simples e elegante, mas esses fatores não colocam essa linguagem acima do PHP ou do Ruby, pois cada linguagem tem seu principal ramo de aplicação trazendo a tona os seus principais benefícios e simplicidades.
Com estas implementações fica claro que em termos de simplicidade, Phyton e PHP se equivalem. Talvez em estilo alguns gostem mais de uma ou outra linguagem. Particularmente, existem pontos da sintaxe melhor em uma ou outra linguagem, o que, na minha opinião, as deixam num mesmo patamar.
Mas ainda vou fazer duas camisas com essas frases abaixo, só pra descrontrair:
“Toda Linguagem decente tem ;”
“Toda variável é String até que se prove o contrário”
Legal o post!
Cara, quando eu escrevi aquele post, eu jamais imaginei que daria tanta briga! 😀 Mas é que, naquela época, eu praticamente não conhecia NADA de Smalltalk, por isso os exemplos de código que coloquei lá são até meio idiotas. Mas agora – conhecendo melhor o Smalltalk – digo com tranquilidade que ela dá pau no Java em termos de flexibilidade e poder, sem sombra de dúvidas. Quanto ao estilo, bom, aí já é uma questão de gosto mesmo, como você mesmo disse.
O Python.. bom, eu já cansei de ouvir as pessoas elogiando essa linguagem! 🙂 Então, para não ficar boiando na próxima vez que falarem dela por aí, já comprei um livro que pretendo ler assim que possível.
E o PHP… eu já programei bastante em PHP, gosto dela. Mas, se darmos uma procurada por aí, podemos encontrar diversos problemas da linguagem, especialmente no lado ‘orientado a objetos’ dela. Mas acho que a próxima versão resolverá esses problemas.
Bom, é isso aí!
Abraço.
O post original no teu blog é muito bacana, dá pra avaliar de maneira interessante o algumas formações das linguagens. Esse tipo de comparação adicionam conhecimento mesmo.
Não conhecia também o Groovy, bem interessante.
como se resolve esse problema ? Faça um programa que leia dez conjuntos de dois valores, o primeiro representando o
número do aluno e o segundo representando a sua altura em centímetros. Encontre o aluno
mais alto e o mais baixo. Mostre o número do aluno mais alto e o número do aluno mais
baixo, junto com suas alturas.
Acho que tem várias maneiras de fazer isso, mas ai vai uma 🙂
for($i=0;$i<10;$i++)
$alunos[rand(0,1000)] = rand(130,200)*0.01;
asort($alunos);
$alunosCopy = $alunos;
print ” Maior aluno – matricula: “.($key = array_search(array_pop($alunos),$alunosCopy)).” – altura: “.$alunosCopy[$key];
print ” Menor aluno – matricula: “.($key = array_search(array_shift($alunos),$alunosCopy)).” – altura: “.$alunosCopy[$key];