Sempre me interessei por diferentes idéias sobre o aprendizado de programação. Talvez seja porque eu permaneço um eterno estudante neste campo. Mas hoje eu me familiarizei com uma
ideia inesperada para mim - começar a aprender com Java. E eu não consegui ficar calado.
Eu não sou um grande especialista em pedagogia - talvez em ciência da computação seja costume jogar estudantes na água, escolhendo um lugar mais profundo e lá - aqueles que estão destinados a aparecer. Mas ainda me parece que o treinamento será mais eficaz se o professor apresentar ao aluno vários conceitos de programação, um de cada vez, à medida que a complexidade aumenta. Portanto, o principal requisito para um PL de "treinamento" é a capacidade de usar seus recursos isoladamente, começando pelo mais básico.
Novamente, na minha opinião amadora, é fácil verificar se a linguagem de programação atende a esse requisito. Basta abrir
a seção "Hello World" no Código Rosetta .
Vamos tentar listar os conceitos necessários para entender esses programas elementares.
É complementado a pedido de ouvintes de rádio. Brainfuck, PHP, C, Julia.
Python 2
print 'Hello world!'
Ao analisar esse código, o professor deve explicar ao menos brevemente aos alunos quais são as
palavras-chave ,
operadores e
tipo de dados de sequência . É claro que, mesmo sem essa explicação, alguns alunos (mas não todos!) Podem rapidamente desenvolver um entendimento intuitivo desses recursos. No entanto, é melhor obter imediatamente a certeza.
Ruthon 3
print('Hello world!')
O conceito de uma
função é adicionado
às palavras-chave e
linhas . Sim, a função de
print
é uma vantagem do Python 3 como uma linguagem industrial. Mas, ao mesmo tempo, uma função é um recurso de nível superior ao de um operador, e isso complica o estudo do Python 3 como o primeiro PL. Sim, você como professor pode adiar a explicação da necessidade de usar colchetes para uma das seguintes aulas, mas isso continuará sendo uma dor no cérebro de seus alunos.
Julia
println("Hello world!")
Os mesmos conceitos básicos que no caso do Python 3. Mas Julia é um Java dinâmico de alto desempenho compilado em código nativo. Bravo!
Basic
10 PRINT "Hello world!"
Palavras-chave ,
string AP ,
operadores ,
numeração de linhas de código. A numeração de linha no Basic é um conceito de baixo nível bastante complexo que imita o dispositivo de memória física de um computador. Pode se tornar um obstáculo para um aluno se o professor não prestar atenção nela.
Em dialetos posteriores, como o VisualBasic, as linhas de código se tornam
rótulos simples e não computáveis. No primeiro programa, as tags não são necessárias. A linguagem, portanto, se torna mais fácil para o aprendizado elementar.
Pascal
program HelloWorld(output); begin writeln('Hello, World!'); end.
Palavras-chave ,
string TD ,
operadores ,
funções e o que mais? Como o programa usa várias linhas,
blocos ,
delimitadores (ou
terminadores ? Sempre os confundo) e os
recuos são adicionados aos primeiros conceitos. E a declaração do
program
não é tão simples ... Parece que a simpatia de Pascal é um pouco exagerada.
C
#include <stdlib.h> #include <stdio.h> int main(void) { printf("Hello world!\n"); return EXIT_SUCCESS; }
Palavras-chave ,
APs de cadeia ,
operadores ,
funções ,
blocos ,
delimitadores e
recuo , bem como
diretivas e
macros do pré-processador . Foi possível
return EXIT_SUCCESS
sem macros neste exemplo, mas o
return EXIT_SUCCESS
neste caso é muito indicativo: C é uma linguagem de programação de sistema tradicional; portanto, é aconselhável estudá-la com base em um bom entendimento da operação dos
sistemas operacionais e com foco na
portabilidade . Caso contrário, esse PL parece um pouco mais complicado que Pascal.
Php
<?php echo "Hello world!\n"; ?>
Além de entender
palavras-chave ,
APs de string ,
operadores e
delimitadores (ou
terminadores ?), Este exemplo não pode ser aprendido sem um entendimento básico de tecnologias específicas da web, como
linguagens de marcação (HTML) e
mecanismos de modelo . Na verdade, PHP é a linguagem de modelo, uma espécie de DSL. Como resultado, o PHP é uma ótima linguagem de aprendizado para um fornecedor front-end que deseja se aprofundar na tecnologia de back-end. Mas aprender PHP a partir do zero é bastante difícil.
C ++
#include <iostream> int main () { std::cout << "Hello world!" << std::endl; }
Palavras-chave ,
string AP ,
operadores ,
funções ,
blocos ,
delimitadores e
indentação , bem como um
pré -
processador com suas diretivas,
escopo ,
entrada / saída de streaming ... Ugh, isso é tudo?
Java
public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); } }
Palavras-chave ,
string AP (mesmo com dois string APs, mas você pode ficar quieto),
AP vazio ,
matrizes ,
blocos ,
separadores e
indentação , além de
classes ,
objetos (implicitamente, mas você não pode explicar
static
outra forma),
atributos ,
métodos ,
modificadores acesse ... Deus, eu já quero ver tudo isso! Afinal, eu só queria escrever mods para Minecraft!
C #
namespace HelloWorld { class Program { static void Main(string[] args) { System.Console.WriteLine("Hello world!"); } } }
O mesmo Java, menos
modificadores de acesso , além de
namespaces . Nada de interessante, nós passamos.
Brainfuck
Não quero listar aqui - é muito volumoso e monótono. Vou listar apenas os conceitos básicos que precisam ser aprendidos para entender este exemplo:
palavras -
chave ,
operadores ,
variáveis ,
ponteiros ,
condições ,
loops ,
representação numérica de caracteres (tabela ASCII). Sim, Brainfuck não é o idioma mais acessível para iniciantes.
Conclusão
Obviamente, além da “entrada rápida” (facilidade de entender os programas elementares), existem vários fatores que influenciam a escolha do PL para o treinamento. Essa é a disponibilidade de ambientes e ferramentas convenientes para codificação, a qualidade da documentação e, finalmente, a aplicabilidade prática. Mas se os primeiros passos no aprendizado estão relacionados à dor e ao mal-entendido, isso pode superar todos os outros argumentos. Em geral, aprenda com facilidade e não se incomode!