Linguagem para o ensino de programação básica

8

Eu sou interessante no ensino de programação para alunos do ensino médio. Eu gostaria de uma linguagem de programação com os seguintes critérios:

  1. Simples - reduzido ao mínimo absoluto necessário para oferecer suporte a programação sofisticada sem muito código. Como tal, para esta linguagem, não estou interessado em indicadores e estou cansado da orientação a objetos (embora as funções sejam boas).
  2. Poderoso - eu gostaria de poder programar elementos do século XXI, incluindo gráficos, redes e processamento distribuído.
  3. Depurável - eu gostaria de um ambiente de desenvolvimento integrado elegante com um depurador legível por humanos (ou seja, não uma mensagem de erro estranha com um rastreamento de pilha, mas uma explicação clara que um estudante médio do ensino médio pode usar para determinar o que há de errado com o código) .

As linguagens de programação padrão (C, C ++, C #, Java) falham no primeiro critério. Linguagens de programação básicas como o Scratch falham no segundo (e possivelmente terceiro) critério. Linguagens de script (perl, python, php) falham no último critério.

Eu gostaria de saber se alguém conhece uma fera assim, antes de eu me sentar para fazer as pazes.

Ari Trachtenberg
fonte
2
Você tem um exemplo do tipo de saída de depuração legível por humanos que deseja? Você descartou explicitamente o Python, mas é simples, poderoso e possui integração com IDE / depurador: wiki.python.org/moin/IntegratedDevelopmentEnvironments O rastreamento de pilha é melhor do que muitos, mas não no nível de "Você perdeu um colchete" na linha 42 "... não conheço nenhum exemplo disso.
precisa saber é o seguinte
Principalmente, gostaria que as mensagens de erro fossem claras e suficientemente descritivas para que um programador iniciante as entenda: por exemplo: "AttributeError: 'module' objeto não possui atributo 'BufferedIOBase'" não é descritivo - qual objeto foi o problema, e onde ele precisava do atributo desejado?
Ari Trachtenberg
11
Não tenho certeza de que a) seja ontópico aqui eb) tenha respostas objetivas, mas enquanto discutimos isso no bate - papo sobre ciência da computação, você pode conferir esta pergunta que discute critérios úteis para selecionar o primeiro idioma a ser ensinado. Dito isto, você pode olhar para Scala. Não é uma linguagem fácil, se você quiser aprendê-la em profundidade, mas o "primeiro nível" é bastante simples, ele escala e atende aos seus critérios, eu acho.
Raphael
11
Não vejo como o Python "não é depurável", basta usar seu interpretador de linha de comando. E eu não estou sozinho nessa "depuração" é uma maneira ruim de desenvolver programas. Sim, também busco um depurador na ocasião, mas acho que me saio melhor sem quase o tempo todo.
vonbrand

Respostas:

4

Eu recomendo Javascipt.

  • Quase todo mundo que lê isso tem acesso a um ambiente de desenvolvimento por padrão em seu navegador.
  • É perdoador para novos programadores.
  • Ele suporta um conjunto de recursos modernos.
  • Existe um vasto repositório de códigos de amostra na Internet , apesar da qualidade
  • É uma linguagem aplicável no mundo real.
John
fonte
A academia Khan parece ter um bom wrapper para Javascript que faz a maior parte do que eu preciso.
Ari Trachtenberg
4
Você esqueceu o link para destroyallsoftware.com/talks/wat
Andrej Bauer
+1, acrescentarei que, se você quiser classes reais (em oposição à herança de objetos) e tipos estáticos opcionais, o Typecript da Microsoft está disponível no Visual Studio Express (com todos os avisos e avisos do depurador). (Eu não acho que o Typescript é bastante diferente Javascript para justificar a sua própria resposta).
Wandering Logic
8

Talvez você deva procurar no Racket (formalmente conhecido como Scheme, uma derivação do Lisp). É o idioma ensinado aos alunos do primeiro ano do ensino médio da minha universidade. Como é uma linguagem de programação funcional, a sintaxe e os conceitos são bastante simples em comparação com o C / C ++, existem várias bibliotecas que podem fazer algumas coisas básicas relacionadas ao desenho ou à rede e o Dr. Racket como vários recursos de depuração ... incluindo um Stepper ( ou seja, ele mostrará e executará uma substituição de cada vez quando você clicar no botão "próximo"). Eu acho que vale a pena olhar para: http://racket-lang.org/ . Ele tem vários outros recursos que você pode gostar, como módulos de ensino (iniciante, intermediário, avançado, níveis completos de aluno) e boa documentação e exemplos. O livro: Como criar um programa ( http: //www.htdp.) é uma excelente referência de ensino para esse idioma, com alguns bons exemplos usando algumas das bibliotecas que mencionei acima.

user340082710
fonte
5
Discordo. A programação funcional é muito mais difícil de entender do que o necessário, mesmo para estudantes universitários. Eu não gostaria de ensinar as crianças do ensino médio sobre estruturas de dados recursivas (um absoluto must para Raquete e co).
Patrick Collins
2
@PatrickCollins: Eu me lembro de estudos em que estudantes (de qualquer idade) aprendiam programação de funções mais rápido que programação imperativa, se suas mentes não tivessem sido alinhadas / poluídas anteriormente pelo paradigma sequencial-imperativo, sem dúvida intuitivo (ou seja, novatos em absoluto) ) Definitivamente, posso confirmar isso para a universidade: ensinamos a programação de funções primeiro e aqueles sem nenhuma experiência em programação têm menos problemas do que outros.
Raphael
5
@Raphael, conheço muitas pessoas que são programadores imperativos / OOP competentes (mesmo entre pessoas que não foram treinadas como tal) e poucas que sabem o que fazer em programação funcional. Sim, a recursão é natural se você está mergulhado no pensamento matemático . Caso contrário, é apenas uma maneira extremamente estranha de fazer o "repeat ... até done" que vem realmente naturalmente. Vamos lá, a indução não era realmente compreendida até o tempo de Fermat, as pessoas definiram / aplicaram algoritmos por algumas centenas de milhares de anos antes disso.
vonbrand
11
A raquete pessoas têm desenvolvido material educativo para as crianças do ensino médio e tê-lo usado com sucesso: bootstrapworld.org
Dave Clarke
3

Se você decidir que o Python pode funcionar para você, eu daria uma olhada no Jython Environment for Students (JES). Existem algumas ferramentas bacanas de depuração, incluindo um "observador" que permite escolher variáveis ​​a serem observadas. Você pode controlar as etapas ou deixá-lo ir rapidamente. Eu usei esse IDE com alunos do ensino médio em um programa de verão com sucesso, mas também o uso em um curso introdutório no nível universitário. As bibliotecas de computação de mídia também são divertidas. Os alunos dos meus cursos gostaram de editar imagens e sons. Também há suporte para fazer animações.

Eu não o usei para redes e processamento distribuído. Existem exemplos no livro de computação de mídia de Guzdial e Ericson para tópicos como bancos de dados e programação funcional, incluindo procedimentos de ordem superior. Você pode fazer coisas regulares do Python no JES, mas ele oferece suporte extra para coisas da mídia.

PrairieProf
fonte
2

Você provavelmente deve usar o Visual Basic. É simples, você pode facilmente fazer o aplicativo da lista de contatos, juntamente com alguns jogos simples da GUI. Você também pode depurá-lo. Se sua escola estiver disposta a distribuir a massa, você poderá obter uma assinatura do dreamspark . Eu acho que vai prender a atenção dos alunos.

109
fonte
2

Python é uma linguagem "quase pseudocódigo" que é poderosa o suficiente para fazer programação "real" (a maioria das ferramentas administrativas no Fedora Linux, por exemplo, são escritas em Python), possui extensões simples de usar para interfaces gráficas / gráficas, pode lidar com grandes problemas numéricos (as pessoas usam o NumPy para isso), muita programação na web é feita nele, vários programas o utilizam como linguagem de extensão. Há uma biblioteca extensa e muitos sistemas maiores escritos nela. Portanto, não é uma linguagem de brinquedo, aprendendo é útil mais tarde.

Olhe para a sua página inicial , existem implementações maduras disponíveis para praticamente qualquer plataforma que você possa cuidar. É grátis (não apenas com custo zero). Há extensa documentação disponível, uma pesquisa no Google por "tutorial em python" fornece milhões de acessos. Um tutorial prático da Web é o Aprenda Python . Para um curso de programação introdutório usando Python, considere o Think Python de Downey .

vonbrand
fonte
O OP mencionou especificamente o Python como não abordando o critério "fácil de usar o depurador". Essa resposta seria melhorada se você pudesse apontar para alguns IDEs do Python com suporte a depurador fácil de entender.
Wandering Logic
1

você exclui os riscos desenvolvidos pelo MIT, que parecem atender a alguns dos critérios. de qualquer forma, aqui estão duas línguas mais recentes que merecem consideração.

  • pelo google. projetado para compilação rápida. aqui estão os objetivos de design

  • Swift by Apple para desenvolvimento móvel. projetado para ser uma alternativa menos complexa ao objetivo C. da Apple

  • O node.js é mais recente e basicamente projetado para expandir os recursos do Javascript para o lado do servidor e incluir recursos de rede.

vzn
fonte
11
Obrigado ... zero carece de programação funcional. Pode ser bom para crianças do ensino fundamental, mas crianças mais velhas rapidamente superam isso (na minha opinião).
Ari Trachtenberg
não é um especialista no zero. no entanto, no skim rápido, ele suporta funções em blocos personalizados e ainda suporta a passagem de mensagens via "broadcast" e alguns conceitos de multithreading. ele também parece apoiar robótica rudimentares através de uma interface de picoboard
vzn
Berkeley tem uma extensão do zero chamada Snap, que possui funções. Ele também possui manipulação de eventos, mas não possui rede e não é fácil depurar.
Ari Trachtenberg
direita. depurador (s) figurado (s) não estaria lá e falharia nesse item. mas apenas avançar na execução cmd-a-cmd (não é muito difícil suportar isso) pode ser considerado como depuração básica. me depurar é mais um aspecto implementação ... ou seja, não se pode descartar a zero depurador (s) materializando em algum lugar / em algum pt no futuro ...
vzn
0

Você já viu o Newspeak? O Newspeak é uma variante moderna do Smalltalk. Então, sim, é orientado a objetos, mas no sentido de Alan Kay, e não no sentido do Simula 67.

Dito isto, se eu estivesse ensinando programação para o ensino médio, abandonaria o requisito do depurador e ensinaria algo mais como Haskell.

Pseudônimo
fonte