|
*Crédito da imagem @PeddroAlmeida |
Em um último
post que fiz no blog e grupo "TI na Bahia" no Facebook, um dos muitos comentários que obtive como resposta à estória publicada me chamou a atenção. O comentário do William Oliveira salientava que o entendimento da estória não era devido apenas ao conhecimento da área de banco de dados, mas também da língua inglesa, visto que todos os comandos em SQL são descritos em inglês.
Durante as minhas turmas de banco de dados, esta hipótese levantada pelo William se confirma na medida em que vejo muitos alunos com dificuldades em decorar uma sintaxe simples de um comando SELECT, por exemplo. Já vi de tudo, aluno que troca o FROM pelo WHERE, o GROUP BY pelo HAVING, e por aí vai no mais perfeito empirismo desvairado.
Isto leva a crer que, apesar das milhares de ofertas de cursos de inglês, campanhas de "Salvador vai de Bike" e uso exagerado de termos ingleses em nossa mídia colonial, a grande maioria da população, na qual se insere os alunos em geral, não pensa necessariamente utilizando termos anglo-saxônicos.
Os efeitos colaterais desta situação são sentidos em sala de aula no momento em que os alunos demonstram grande dificuldade de aprender o uso correto da sintaxe de comandos na linguagem SQL.
Se pensarmos bem, no fundo, no fundo, a grande vantagem de um estudante que mora em um país que fala o inglês, de um outro que não fala, é que este praticamente "conversa" com seu computador em linguagem nativa.
Sim ! Se as linguagens de computador são em inglês, o emprego de comandos nesta lingua para quem pensa em inglês é praticamente um diálogo bacana de se ter com a máquina .
Vamos a um exemplo didático para que vocês entendam do que estou falando.
Suponhamos que o inventor da linguagem SQL seja um brasileiro, mais especificamente um soteropolitano. :-D
Em um belo dia, um professor de SQL discorre sobre consultas a serem feitas em um banco de dados e cita um exemplo hipotético envolvendo duas coleções distintas de dados: Os cabides dos guarda-roupas de Maria e Joana.
Tanto a Maria quanto a Joana guardam em cada cabide um trio de roupas contendo uma camisa, uma calça e uma meia.
Para fins de organização, elas resolveram guardar em um banco de dados as cores de cada peça de roupa, segundo o cabide onde estão localizados. A Maria e a Joana então tomaram o cuidado de numerar seus cabides com o objetivo de melhor recuperar as roupas. Desta forma, foram criadas duas tabelas distintas contendo os dados dos cabides de ambas:
TABELA cabide_de_maria
CAMPOS: id_cabide, cor_da_calça, cor_da_camisa, cor_da_meia
TABELA cabide_de_joana
CAMPOS: id_cabide, cor_da_calça, cor_da_camisa, cor_da_meia
É importante dizer que o campo "id_cabide" guarda o número do cabide que a Maria e a Joana numeraram em seus guarda-roupas.
Para criar estas tabelas, basta dizer para o computador que os criem com os seguintes comandos:
CRIE TABELA cabide_de_maria
(
id_cabide INTEIRO NÃO NULO CHAVE PRIMARIA,
cod_da_calça CARACTER (50) NÃO NULO,
cor_da_camisa CARACTER (50) NÃO NULO,
cor_da_meia CARACTER (50) NÃO NULO
);
CRIE TABELA cabide_de_joana
(
id_cabide INTEIRO NÃO NULO CHAVE PRIMARIA,
cod_da_calça CARACTER (50) NÃO NULO,
cor_da_camisa CARACTER (50) NÃO NULO,
cor_da_meia CARACTER (50) NÃO NULO
);
Uma vez dito ao computador para criar as tabelas, basta inserir os valores, seguindo este exemplo:
INSIRA DENTRO DE cabide_maria (id_cabide, cor_da_calça, cor_da_camisa, cor_da_meia)
OS VALORES (1,'azul','vermelho','amarelo');
Bem, digamos que Maria deseje recuperar os cabides que possuem uma cor de camisa que esteja em uma das camisas nos cabides do guarda-roupa de Joana.
Para fazer isto, é muito simples, basta dizer ao computador que ele faz:
SELECIONE TODOS_OS_CABIDES
DO cabide_de_maria APELIDADO DE cm
ONDE cm.cor_da_camisa ESTEJA NA
(SELEÇÃO cj.cor_da_camisa
DO cabide_de_joana APELIDADO DE cj)
Veja que os campos de ambas as tabelas são iguais, por isto foi necessário apelidá-las para economizar os dedos durante a digitação de qual cabide a cor de camisa, por exemplo, se refere. Note que sem isto o computador pode ficar em dúvida e irá interromper a execução do comando solicitado.
Em uma consulta mais complexa, digamos que a Maria queira saber quais cabides de seu guarda-roupa contém uma camisa e calça penduradas, cujas cores também existam em uma camisa e calça penduradas em um cabide de Joana.
Para saber isto, basta dizer o seguinte ao computador:
SELECIONE TODOS_OS_CABIDES
DO cabide_de_maria APELIDADO DE cm
ONDE EXISTA UMA
(SELEÇÃO TODOS_OS_CABIDES
DO cabide_de_joana APELIDADO DE cj
ONDE cj.cor_da_camisa = cm.cor_da_camisa
E cj.cor_da_calça = cm.cor_da_calca);
Viu como é fácil aprender o SQL? Basta dizer ao computador que ele faz. :-D
---------------------------
Bem, se você entendeu a lição, por que será que tem tanta dificuldade em fazer o mesmo em inglês?
CREATE TABLE cabide_de_maria
(
id_cabide INT NOT NULL PRIMARY KEY,
cod_da_calça CHAR (50) NOT NULL,
cor_da_camisa CHAR (50) NOT NULL,
cor_da_meia CHAR (50) NOT NULL
);
CREATE TABLE cabide_de_joana
(
id_cabide INT NOT NULL PRIMARY KEY,
cod_da_calça CHAR (50) NOT NULL,
cor_da_camisa CHAR (50) NOT NULL,
cor_da_meia CHAR (50) NOT NULL
);
INSERT INTO cabide_maria (id_cabide, cor_da_calça, cor_da_camisa, cor_da_meia)
VALUES (1,'azul','vermelho','amarelo');
SELECT *
FROM cabide_de_maria AS cm
WHERE cm.cor_da_camisa IN
(SELECT cj.cor_da_camisa
FROM cabide_de_joana AS cj);
SELECT *
FROM cabide_de_maria AS cm
WHERE EXISTS
(SELECT *
FROM cabide_de_joana AS cj
WHERE cj.cor_da_camisa = cm.cor_da_camisa
AND cj.cor_da_calça = cm.cor_da_calca);
-------------------------
Perceberam a diferença da coisa? Enquanto os comandos em português se resumem a "dizer" ao computador o que ele deve fazer, os comandos em inglês, para muitos alunos, participam de um intrincado quebra-cabeças de palavras que mais parece um código secreto de uma lingua alienígena dentro da máquina.
Em meu entendimento, pecamos um pouco por menosprezar o conhecimento de inglês dos alunos e o fato de muitos deles sequer terem a chance de pensar nesta língua durante as aulas. Como corrigir isto, bem tenho muitas sugestões a fazer e que deixarei para um próximo post. Só adianto uma coisa, o inglês nada mais é que uma língua como todas as outras. Nos concentremos na comunicação e no fazer entender-se apenas, ao invés de nos cobrarmos uma fluência bastante díficil de ser alcançada para quem não vive a língua diariamente.
Programar nada mais é do que dizer ao computador como se espera que ele faça algumas coisas. Pense nisto.