Original Article: A Very Quick Comparison of Popular Languages for Teaching Computer Programming
Author: Patrick Jordan
Comentários sobre "Uma Comparação Muito Rápida de Idiomas Populares para Ensinar Programação de Computadores"
C++
Em 25 de fevereiro de 2005, Terje Slettebo escreveu:
Você também pode querer considerar o C ++ como uma linguagem para o ensino de programação (e acho que é uma alternativa plausível, permitindo a programação de alto nível e baixo nível). Aqui está o programa correspondente em C ++:
#include <iostream> int main() { int a,b; std::cin >> a >> b; int c=a+b; std::cout << c; } %> gcc add.cpp -lstdc++ -o add %> ./add
É bastante interessante que o Java - um idioma que se pretende ser _simpler_ do que C ++, realmente torna mais difícil escrever um programa tão simples como este (e outros, também). Apenas um nit da sua lista de Python, porém: "requer menos linhas de código para qualquer problema dado e é mais legível -, portanto, maior produtividade". Para "qualquer problema dado"? E menos do que? Certamente, você não pode dizer que os programas Python serão sempre mais curtos para qualquer problema, do que o programa correspondente em qualquer outro idioma, mesmo DSLs?
|
É um ponto justo sobre minha afirmação excessivamente ampla - talvez eu deveria ter dito "requer menos linhas de código (e é mais legível) do que qualquer linguagem de uso geral mais popular, para quase qualquer problema."
Conversa fiada
Em 8 de abril de 2005, Doug Clapp escreveu:
Bem, há smalltalk, onde você teria algo como:
x := FillInTheBlank request: 'Enter a number for X'. y := FillInTheBlank request: 'Enter a number for Y'. Transcript show : x + y. |
Lisp
Em 20 de abril de 2005, Erling Ellison sugeriu o seguinte Lisp:(print (+ (read) (read)))
No entanto, não posso ajudar a pensar, se Eric Raymond e Richard Stallman pensem que Lisp é uma linguagem importante para aprender, que possivelmente é...
Ruby
Em 7 de abril de 2005, Mark Hubbart escreveu recomendando Ruby, e pouco depois David Morton escreveu um e-mail quase idêntico. Seus argumentos, misturados:
The first program looks like this:
a = gets.to_i b = gets.to_i c = a + b puts c
Conceitos necessários para aprender:
prós e contras:
|
Perl
Em 28 de abril de 2005, Steven Cayford escreveu:
Gostei do seu artigo e dos comentários. Eu pensei que eu iria jogar perl também. Primeiro conceito, demorou cerca de um minuto principalmente porque esqueci a precedência do operador entre a concatenação de string "." e adição "+" enquanto os empurra para a função de impressão.
#!/usr/bin/perl print "enter a: "; $a = <STDIN>; print "enter b: "; $b = <STDIN>; print $a + $b . "\n";
#!/usr/bin/perl print <STDIN> + <STDIN>;
Caso contrário, provavelmente pros e contras semelhantes como python e ruby.
|
Shell
Em 31 de maio de 2005, Nathan Laredo escreveu:
I think it's also important to teach good shell programming -- your
python example opens the door to all these (examples assume they were
typed at a shell prompt): here's the whole thing for bash/sh/ksh/zsh:
read a; read b; echo $[a + b] aqui está tudo para awk:
awk 'BEGIN { getline a; getline b; print a + b; exit; }' or alternatively:
awk '{ a = $0; getline b; print a + b; exit; }' e aqui está tudo no perl (embora eu não gostei perl mais de C ++):
perl -e 'print <> + <> . "\n"' Claro que todos os itens acima podem ser formatados conforme necessário quando em um arquivo de script em vez de inserido no prompt do shell. Algumas pessoas escrevem programas simples em linguagens como java e C ++ quando um script de shell trivial teria feito o trabalho em menos tempo. A ferramenta certa para o trabalho é uma lição importante para aprender, e scripts de shell competentes são uma arte perdida. Se você está perdendo tempo no trabalho com o código java para ler e, em seguida, adicione dois números, seu empregador pode não ser tão feliz, mas, claro, o script shell é claramente o caminho errado para fazer visualizações de órbitas de satélites. Então, novamente, eu posso ser a última pessoa no mundo que procura desculpas para usar awk...
|
Os programadores Unix que funcionam seriamente provavelmente seriam bem atendidos por entender realmente shell e awk, mas acho que, apesar de resolverem o problema acima do que Java, geralmente são tão barrocos que são uma escolha muito pobre para os iniciantes.
Concordo, porém, que é muito importante impressionar os alunos a idéia de que "se tudo o que você tem é um martelo, cada problema parece um prego" - e que eles devem procurar expandir constantemente seu repertório de ferramentas. Eu também acho que uma aula dedicada à escrita de "one-liners" pode não ser uma má idéia - requer mais disciplina mental do que simplesmente desperdiçar a primeira solução inchada que vem à sua frente. Mas novamente - estes não são problemas que os iniciantes devem lidar.
Patrick Jordan - [email protected] - 2005-05-31
...artigo original