O JavaScript, apesar de suas muitas deficiências, é sem dúvida a melhor linguagem de programação para desenvolvedores iniciantes, e a melhor linguagem que as crianças podem mexer.
Era 2007. Excelente editora de livros técnicos, a O'Reilly Media entrou em contato comigo com uma ideia. Eles me perguntaram se eu gostaria de escrever um livro sobre JavaScript que seria para iniciantes em programação. "Por que diabos?" Eu imediatamente fiz uma contra-pergunta.
Não se pode dizer que o JavaScript era uma linguagem completamente inútil naqueles dias. Mas era apenas um, longe do ingrediente mais importante de um conjunto cuidadosamente selecionado de tecnologias necessárias para o desenvolvimento de sites. Sim, pequenos pedaços de código JS podem ser usados para validar formulários ou destacar botões que estão passando o mouse sobre. Mas o JavaScript era apenas uma adição opcional à funcionalidade do site. Se você removê-lo da página, tudo continuará funcionando quase da mesma maneira que com seu uso.
Além disso, o JavaScript puxou muita bagagem, apresentada por outras tecnologias. Portanto, problemas de incompatibilidade do navegador estavam associados a ele; era lento, inseguro e completamente não confiável. Eu não estava interessado em ensinar alguém a criar widgets inúteis para páginas da Web em JavaScript. Esses widgets me pareciam sem sentido como GIFs animados com um globo giratório, que eram muito populares no início da Internet.
A maneira mais óbvia de usar JavaScript, como eu pensava ingenuamente, era algo assim: uma grande estrutura de servidor deveria gerar todo o código JS necessário e incorporá-lo em uma página projetada especificamente para o seu navegador. O código JavaScript gerado pelo servidor pode ser muito complicado, mas seria projetado para uma versão específica do navegador. E, como o JS desempenhava apenas o papel de um mecanismo auxiliar, tudo funcionaria como deveria mesmo se o visitante do site desativasse completamente o JavaScript.
Escusado será dizer que, então, eu não escrevi um livro sobre JavaScript. Continuei fazendo programação no servidor e escrevendo sobre minhas tecnologias favoritas (geralmente sobre C # e o .NET Framework). Muitos anos se passaram.
Então, algo estranho aconteceu.
JavaScript decolou literalmente.
Ainda não acho que o JavaScript mereça a honra de ser chamado a melhor linguagem de programação do mundo. Mesmo que, honestamente, não o considere uma linguagem muito boa. Mas, de certa forma, mudei de idéia. Agora, acho que o JavaScript é provavelmente a melhor primeira linguagem para crianças e programadores iniciantes. O problema é que o JavaScript tem uma grande vantagem sobre todas as outras linguagens de programação.
A impressionante prevalência de JavaScript é sua principal vantagem.
Um dos benefícios exclusivos do JavaScript é sua prevalência.
Essa linguagem pode ser encontrada literalmente em qualquer lugar. É suportado em todos os sistemas operacionais, em todos os tipos de navegadores e em computadores desktop e dispositivos móveis. Também é muito importante que os aplicativos JavaScript funcionem sem os instalar nos computadores dos usuários. Na verdade, já é difícil relembrar os dias não tão antigos em que as empresas, implantando aplicativos cliente-servidor em suas redes internas, passaram semanas lutando com os problemas de configuração desses aplicativos e com erros inesperados. Diante desses pesadelos, você pode apreciar o apelo do JavaScript.
O JavaScript, devido à sua prevalência, não precisa ser a melhor linguagem de programação. Ele só precisa ser uma linguagem boa o suficiente.
Mecanismos semelhantes funcionam quando se trata de aprender programação. A princípio, o problema da prevalência de linguagem não parece particularmente importante para alguém cujo objetivo é aprender técnicas práticas testadas pelo tempo para o desenvolvimento de programas. Mas muitos dos mesmos problemas são relevantes, como para a programação profissional, no ensino de programação. Se você quiser que alguém use o que você criou, o JavaScript é a única alternativa.
Suponha que você esteja desenvolvendo um aplicativo maravilhoso que, fazendo perguntas a um usuário, determine seu perfil de personalidade. A configuração de um ambiente de desenvolvimento é bastante simples. Mas o que acontece quando você deseja enviar seu programa para um amigo? Ele precisará instalar um ambiente de tempo de execução ou recriar o mesmo ambiente de desenvolvimento que o seu? Será necessário “ajustar” as configurações de segurança do computador antes que ele possa baixar e instalar o seu programa? Talvez seu amigo use um sistema operacional que simplesmente não oferece suporte ao seu programa ou uma plataforma móvel na qual, se você não entrar em detalhes, poderá instalar apenas aplicativos profissionais distribuídos via iTunes ou Google Play? Se você usa JavaScript para desenvolver o programa e usa um site simples para distribuí-lo (por exemplo, o
GitHub permite criar esses sites gratuitamente), todos esses problemas simplesmente desaparecem.
E se o nosso futuro programador é filho, aqui está um fato inegável para você: filhos e navegadores estão fortemente conectados. Se você assistiu a uma criança que trabalha em um computador (não em um dispositivo móvel), pode ter notado que ela passa pelo menos 98% do tempo trabalhando com um navegador. As crianças brincam de navegadores, usam redes sociais e vão à escola com o Google Classroom e o Google Docs. E se o código que as crianças escrevem funcionar no mundo do navegador nativo, será completamente natural.
Agora estamos discutindo os pontos fortes do JavaScript. Mas, é claro, falando do JavaScript como uma linguagem de programação para iniciantes, não podemos deixar de lembrar suas deficiências.
Falhas de JavaScript
E quanto a problemas de javascript? Essa linguagem possui sérias falhas, suas peculiaridades, contradições e limitações podem ser extremamente desagradáveis para alguém que está apenas começando a aprender programação. Felizmente, existem soluções modernas que podem atenuar a maioria das deficiências do JavaScript.
Vamos analisar quatro reclamações principais sobre esse idioma.
▍1 O problema com o trabalho com tipos de dados em JavaScript
O conceito mais importante que os programadores iniciantes aprendem muito cedo é a idéia de variáveis, recipientes que armazenam informações enquanto o programa está em execução. O problema com o JavaScript é que essa linguagem é muito frouxa e confusa com variáveis. Ele permite que você faça algo que não parece certo e ignora inconsistências óbvias. Sua negligência pode transformar pequenos erros de digitação em desastres que atrapalham o funcionamento dos programas.
Aqui está um exemplo de um código que está fadado ao fracasso:
var myNumber = 100; myNumber = myNumbr + 1;
Você viu algum erro? A segunda linha, de fato, usa duas variáveis: a variável
myNumber
, que foi declarada na primeira linha, e uma variável dummy
myNumbr
. Sabemos que a segunda variável é o resultado de um erro de digitação, mas o JavaScript nos notificará apenas durante a execução do programa, fornecendo uma mensagem de erro semelhante a
ReferenceError: myNumbr is not defined
. O mesmo acontece se, ao escrever o nome de uma variável, as
myNumber
e minúsculas são misturadas (por exemplo, uma variável de
myNumber
acidentalmente transformada em
MyNumber
). Um problema, mas de natureza diferente, pode surgir se você, considerando que uma determinada variável armazena um número, adiciona outro número a ele, e essa variável, de fato, continha uma string ou outra coisa. Nesse caso, o JavaScript não reportará um erro, mas o resultado dos cálculos será completamente diferente do que você esperaria da adição de dois números. Todo desenvolvedor de JavaScript pode se lembrar de uma história desagradável desse tipo, quando a confusão de tipos causava erros estranhos nos programas.
Já é bastante difícil aprender a programar e, ao mesmo tempo, preocupar-se com a forma como a linguagem de programação que você está aprendendo pode prejudicá-lo. Felizmente, porém, os problemas de trabalhar com segurança com tipos de dados podem ser facilmente resolvidos com a ajuda de ferramentas de desenvolvimento adequadas.
Um dos meus editores de código favoritos, adequado para aprender programação e para uso profissional, é o
Visual Studio Code . É gratuito, pouco exigente para os recursos, seu código é aberto, pode ser expandido para o infinito. Um de seus recursos mais notáveis é oferecer suporte à organização de verificar o código JavaScript quanto a problemas comuns com o TypeScript. Você pode ativar essa verificação usando o arquivo de configuração apropriado ou inserindo o seguinte comentário na parte superior do arquivo JavaScript:
Aqui está um exemplo no qual existem dois erros, nenhum dos quais, do ponto de vista do JavaScript, é um erro.
Problemas JavaScript não considera errosSe você adicionar o comentário
// @ts-check
no início deste arquivo, o VS Code destacará as linhas de código que contêm erros em potencial.
Linhas de código destacadasSe você passar o mouse sobre uma linha destacada, uma janela pop-up aparecerá explicando o problema.
Explicação do problemaQue conclusões podem ser tiradas disso? Embora o JavaScript seja tolerante com muitas coisas ruins, se você combinar o JavaScript com um editor de código de qualidade e as ferramentas adicionais corretas, poderá criar um ambiente de desenvolvimento semelhante ao de outras linguagens de programação modernas. Como resultado, o desenvolvimento em JavaScript é tão conveniente quanto em outros idiomas e, é claro, suas outras vantagens não desaparecem.
§ 2 JavaScript não suporta OOP
A Programação Orientada a Objetos (OOP) é uma abordagem para modelar e organizar código. Se as técnicas de POO forem aplicadas corretamente, elas ajudarão o programador a criar código simples e bem organizado. OOP também facilita a reutilização de recursos importantes do programa.
O JavaScript é notório por sua falta de suporte à programação orientada a objetos. De fato, os desenvolvedores de JavaScript tradicionalmente contornaram essa falha usando todo tipo de construções estranhas. Essas construções podem significar algo para alguém que já estudou OOP (e mesmo para alguém que não estudou, mas simplesmente copiou um modelo em seu código e está acostumado a trabalhar com ele). Mas se você é uma pessoa completamente nova em programação, o uso de construções dúbias que implementam conceitos básicos de programação está completamente errado.
Felizmente, existem soluções bonitas que fornecem suporte ao POO em JavaScript. Minha solução favorita desse tipo é o
TypeScript , um projeto de código aberto lançado pela Microsoft em 2012. O TypeScript é um tipo de JavaScript aprimorado que suporta OOP (assim como muitos outros recursos úteis, como verificação de tipo forte).
Alguém pode dizer que estamos falando de JavaScript e que o TypeScript não é, no entanto, JavaScript. E, de fato, é. Mas aqui está um detalhe interessante. O código é escrito em TypeScript e depois convertido em JavaScript antes de ser executado. Isso permite que você aproveite o melhor dos mundos do TypeScript e JavaScript. Se você escolher o TypeScript, terá uma linguagem de programação moderna na qual poderá escrever seu código e o suporte mais amplo que o JavaScript comum usa.
E, o melhor de tudo, o código TypeScript é convertido em JavaScript automaticamente. Obviamente, o código JavaScript gerado por computador usa construções bastante pesadas para refletir nele os conceitos implementados pelo TypeScript, mas isso não muda nada. O programador estuda os conceitos de OOP, e o código finalizado funciona corretamente, processado sem problemas por meio de computadores modernos.
Não acredita? Em seguida, pense no fato de que alguns dos aplicativos de desktop inovadores mais modernos usam uma combinação de TypeScript e
Electron , uma estrutura que permite executar o código JavaScript fora de um navegador tradicional (embora seja importante notar que a Electron usa os recursos do navegador). Um dos exemplos mais impressionantes de um aplicativo como esse é o editor do VS Code. Acontece que a própria ferramenta com a qual é muito conveniente escrever código JavaScript é ela mesma escrita em JavaScript. É verdade que, para ser mais preciso, o VS Code é escrito em TypeScript, mas o código escrito nesta linguagem ainda é convertido em código JavaScript.
É claro que, ao aprender programação, não é necessário usar o TypeScript, e os novos programadores JavaScript, se decidirem fazê-lo, poderão fazer muito sem estudar os princípios do OOP. Isso é, de fato, uma questão de escolha. De qualquer forma, pode-se notar que o JavaScript é uma linguagem de desenvolvimento dinâmico, e os recursos são gradualmente adicionados a ele, aproximando-o de todo o valor que o TypeScript possui.
▍3 O código está cheio de código JavaScript de baixa qualidade
O que posso dizer? Código de baixa qualidade pode ser escrito em qualquer linguagem de programação. Já ouviu falar do
Visual Basic ?
▍4 O desenvolvimento de JavaScript requer bibliotecas e estruturas adicionais
Para obter acesso a uma gama mais ampla de funcionalidades do que na linguagem (e não para reinventar a roda), os programadores de JavaScript precisam usar bibliotecas e estruturas de terceiros. Escolher os ingredientes certos usados para criar um projeto não é tão fácil quanto parece à primeira vista. É, em particular, que as ferramentas adicionais selecionadas devem resolver corretamente as tarefas atribuídas a elas; é necessário que o programador tenha confiança de que continuará a usar o suporte de seus desenvolvedores por um longo tempo, para que não entrem em conflito entre si. amigo
Os desenvolvedores que usam outros idiomas também enfrentam algum tipo de problema. No entanto, deve-se notar que poucos idiomas sofrem tanto com esse problema quanto o JavaScript. Para se tornar um programador sério e aberto para todo o mundo JavaScript, você precisa montar seu próprio conjunto de ferramentas de desenvolvimento. Além disso, cada uma das opções possíveis é tão complexa e multifacetada que você só consegue entender se uma biblioteca é adequada para você, se você a estuda muito bem (e quando você a estuda, pode acontecer que ela já perca sua relevância ao seu lugar virá algo novo, atraente, talvez - por pouco tempo, interesse geral).
Não importa o quão triste tudo isso possa ser, esses problemas, de fato, não afetam os iniciantes. Se alguém está aprendendo a programar usando JavaScript, é melhor ficar longe de estruturas e bibliotecas, seja algo conhecido como
jQuery ,
Angular ,
React ou
Vue ou algo inventado no momento em que esta frase foi escrita ou a segunda quando este artigo foi publicado. Obviamente, um iniciante, tendo dominado bem as coisas fundamentais, provavelmente desejará se familiarizar com pelo menos uma das ferramentas adicionais populares. Mas esta é uma história completamente diferente.
Sumário
De fato, a escolha da primeira linguagem de programação é uma pergunta para a qual é impossível encontrar a resposta absolutamente correta. O autor deste material aqui compartilhou apenas sua própria opinião sobre esse assunto, deu exemplos que são próximos a ele por causa de sua experiência e preferências. Mas, de qualquer forma, todos os programadores começam em algum lugar e, por mais difícil que seja a escolha do primeiro idioma, essa escolha ainda precisa ser feita.
Caros leitores! Você concorda que o JavaScript é, em condições modernas, o melhor idioma para aprender programação? Se você não concorda, talvez conheça algum idioma mais adequado para esse fim?
