Alura > Cursos de Programação > Cursos de > Conteúdos de > Primeiras aulas do curso JavaScript: aprendendo a programar

JavaScript: aprendendo a programar

Primeiros passos - Apresentação

Apresentando o curso e o instrutor

Olá! Seja bem-vinda e bem-vindo a mais este curso na Alura. Vamos falar sobre JavaScript. Meu nome é Vinícius Neves, sou conhecido como o careca barbudo que vocês gostam aqui na Alura. Vamos discutir o que aprenderemos juntos nesta jornada. Passaremos um bom tempo conversando e trocando ideias. Vamos ver o que nos espera.

Para aprender uma linguagem de programação, é necessário ter uma bagagem prévia. Precisamos entender o que é pensamento computacional e como pensar de maneira diferente. Vamos mergulhar nesse mundo e aprender a preparar nosso ambiente para rodar os scripts que desenvolveremos. Chegaremos, então, ao JavaScript. Nesse momento, podemos pensar nisso como uma alfabetização, pois estamos aprendendo uma nova linguagem de programação. Assim como aprendemos o que são vogais e consoantes antes de formar sílabas, seguiremos um caminho semelhante no JavaScript.

Explorando os conceitos fundamentais de JavaScript

Vamos entender o que são variáveis, aprender sobre condicionais e operadores, laços de repetição, arrays (listas) e muito mais. Vamos partir do zero até alcançar um bom nível em JavaScript. Ao final deste curso, estaremos aptos a escolher entre front-end e back-end, conforme nosso interesse. O JavaScript nos permitirá trabalhar onde quisermos.

Antes de começarmos a prática, é importante lembrar que aprender uma linguagem de programação envolve muitos conceitos. Este curso é abrangente, então não precisamos nos apressar. Não é recomendável tentar fazer o curso todo de uma vez, como em um único dia. Em vez disso, é melhor separar um momento diário ou em dias alternados, de acordo com nossa rotina, mas de forma constante. Assim, teremos tempo para absorver o conteúdo.

Enfrentando desafios e práticas durante o curso

Durante o curso, enfrentaremos muitos desafios. Em determinadas aulas, será solicitado que pausemos o vídeo para praticar. Prometo que cumprirei todas essas promessas. Sempre que houver um desafio, esperarei que você o resolva. Conto com sua participação, pois a prática é essencial para absorver o conteúdo. Não pule os desafios e as práticas, pois são fundamentais em nossa jornada de aprendizagem.

Durante o aprendizado, é comum precisarmos relembrar conceitos de encontros anteriores. Não hesitemos em pausar e revisar o material sempre que necessário. Mesmo após aprender JavaScript e atuar como pessoas desenvolvedoras, não decoramos tudo. Consultar referências é parte do processo, e errar faz parte da aprendizagem.

Utilizando recursos e documentação de apoio

Além dos vídeos, atividades, práticas e artigos disponíveis, utilizaremos a documentação do JavaScript como guia. Vou compartilhar duas páginas importantes. A primeira é o guia de JavaScript no blog da Alura, que contém informações sobre a linguagem, curiosidades e links úteis. Este guia serve como um glossário para consultas rápidas. Caso algo mencionado não seja familiar, podemos pausar o vídeo e buscar no guia para entender melhor.

Além do blog da Alura, temos a documentação do Mozilla. Um recurso interessante que aprenderemos é a execução de código após um determinado tempo, como 5 ou 10 segundos. Podemos buscar o nome da função na documentação para mais detalhes. A maioria das páginas está disponível em Português do Brasil, mas, se necessário, podemos usar o recurso de tradução do navegador.

Preparando-se para a prática e encerrando a introdução

A documentação será nossa aliada, assim como eu, que estarei acompanhando vocês. Já temos a bagagem e a estratégia para este curso, então é hora de praticar. O único pré-requisito é saber operar minimamente o terminal do sistema operacional, como listar e navegar entre pastas. Familiaridade com o terminal melhorará nossa experiência.

Espero que estejam tão animados quanto eu, pois adoro JavaScript. Nos vemos no próximo vídeo.

Primeiros passos - O que é programar?

Introduzindo a programação e o conceito de instruções

Vamos dar início à nossa jornada na programação web, focando especificamente em JavaScript. Como dizem os antigos filósofos, "bem começado, metade feito". Para compreendermos o que é JavaScript, precisamos dar alguns passos para trás e refletir sobre o conceito de programação, mesmo antes da existência dos computadores.

Imaginemos um cenário sem computadores, por volta de 1600. Se quiséssemos explicar a alguém como chegar à nossa casa, precisaríamos fornecer instruções detalhadas: "Vire à direita quando vir uma farmácia, depois à esquerda". Se precisássemos fazer isso para várias pessoas, teríamos que repetir as instruções ou reunir todos em um só lugar para explicar de uma vez. Essa ideia de resolver problemas com soluções repetidas é a essência da programação, que existia antes mesmo dos computadores.

Explorando a evolução das instruções para computadores

Programar é, basicamente, descrever uma sequência de passos: "Faça isso, depois aquilo". Podemos incluir condições nessa sequência. Com o avanço da tecnologia, surgiram os primeiros computadores, como o ENIAC, que ocupava andares inteiros. Para interagir com esses computadores, utilizávamos instruções detalhadas, como no exemplo das direções para chegar à nossa casa.

Os computadores só executam o que lhes pedimos. Tudo o que fazem é resultado de instruções dadas por alguém. Nos primórdios da programação, essas instruções eram dadas por meio de cartões perfurados. A posição dos furos determinava a instrução que o computador interpretaria.

Compreendendo o pensamento computacional e algoritmos

Em resumo, programar é dar instruções detalhadas para uma máquina executar uma tarefa. Desenvolvemos o pensamento computacional a partir disso. Um exemplo prático é uma mensagem que recebi de minha mãe: "Filho, vá ao mercado e traga um litro de leite. Se tiver alho, traga seis." Interpretei que, se houvesse alho, deveria trazer seis litros de leite, pois minha mãe não especificou "seis cabeças de alho". Esse mal-entendido ilustra como um algoritmo funciona: uma sequência de passos para resolver um problema.

Assim como o idioma evolui, a arte de programar também evolui. No passado, utilizávamos cartões perfurados para introduzir dados nos computadores. Com o tempo, essa prática evoluiu, e chegamos ao assembly (linguagem de montagem), que representou um avanço significativo na forma como interagimos com as máquinas.

Demonstrando a programação em Assembly e C

Para ilustrar como era a programação em Assembly, vejamos um exemplo de código que imprime "Hello World!":

section .text
global _start

_start:
    mov edx, len
    mov ecx, msg
    mov ebx, 1
    mov eax, 4
    int 0x80

    mov eax, 1
    int 0x80
section .data
msg db "Hello World!", 0xa
len equ $ - msg

As instruções em Assembly são simples e diretas para o hardware, mas pouco humanas e muito detalhadas para nós. Termos como EDX, FX, EBX, EAX e 0x80 são exemplos disso. Ainda há muito espaço para evolução, e foi nessa direção que a programação se encaminhou. Trouxemos agora um exemplo de outra linguagem de programação, chamada C, que é mais amigável para nós. Como está mais próxima de nós, dizemos que é uma linguagem de alto nível.

Aqui está um exemplo de um programa em C que soma dois números:

#include <stdio.h>

int main() {
    int a, b, soma;

    printf("Digite um numero: ");
    scanf("%d", &a);

    printf("Digite outro numero: ");
    scanf("%d", &b);

    soma = a + b;

    printf("A soma dos dois numeros eh: %d\n", soma);

    return 0;
}

Explorando a evolução para linguagens de alto nível

Programar passou a ser escrever comandos que, a partir do C e C++, começaram a se aproximar mais da nossa linguagem. Não precisamos mais perfurar cartões ou escrever código em Assembly para que o processador entenda o que fazer. Agora, temos uma camada intermediária que nos permite escrever de uma forma mais semelhante a um texto, embora ainda em inglês.

Com isso, aprender uma linguagem de programação se tornou mais fácil, dando mais poder às pessoas. Quanto mais alto o nível da linguagem, mais próximo de nós e mais fácil de aprender, disseminando mais poder entre as pessoas que desenvolvem código. A evolução continuou, e surgiram linguagens como Java. Não precisamos nos apegar ao que cada palavra faz, mas podemos notar termos como ler números e somar. A programação começou a se traduzir para algo mais próximo da nossa linguagem e forma de enxergar o mundo. Passamos a ter uma programação mais estruturada e orientada a objetos.

Demonstrando a programação orientada a objetos com Java

Veja um exemplo de um programa em Java que também soma dois números:

import java.util.Scanner;

public class SomaNumeros {
    private int a;
    private int b;

    // Método para ler os números do usuário
    public void lerNumeros() {
        Scanner scanner = new Scanner(System.in);
        System.out.print("Digite um numero: ");
        a = scanner.nextInt();
        System.out.print("Digite outro numero: ");
        b = scanner.nextInt();
    }

    // Método para calcular a soma
    public int somar() {
        return a + b;
    }

    public static void main(String[] args) {
        SomaNumeros soma = new SomaNumeros();
        soma.lerNumeros();
        int resultado = soma.somar();
        System.out.println("A soma dos numeros eh: " + resultado);
    }
}

O objetivo da programação estruturada e orientada a objetos é organizar o código que escrevemos. Código mais organizado é mais fácil de entender e menos propenso a erros. A ideia do objeto é ter representações do mundo real dentro do código. Por exemplo, ao desenvolver um software para um banco, podemos pensar em conceitos como conta corrente e conta poupança, que são objetos com regras diferentes. Podemos traduzir e mapear objetos que simulam o mundo real para dentro do código. Linguagens como Java, C# e Kotlin adotam esse pensamento, tornando o código mais estruturado e orientado a objetos.

Explorando novas tendências em programação

A evolução continuou, e surgiram cenários de low-code e no-code. Isso significa programar com pouco ou nenhum código. Podemos criar aplicações arrastando e soltando elementos, montando o fluxo desejado sem escrever código. Essa forma de programar também evoluiu, e agora temos a programação com IA. A ideia de Prompt Engineering (engenharia de prompt) é pedir coisas para a IA, também conhecida como Vibe Coding, que é programar conversando com a IA. Podemos passar comandos para modelos como ChatGPT, Gemini Cloud e outros, que geram código para nós.

A evolução da programação nos levou de cartões perfurados a programação estruturada, orientada a objetos, low-code, no-code, Vibe Coding e Prompt Engineering. Essa é a visão sobre o que é programar. Se desejar se aprofundar nesse assunto, há um livro da Casa do Código chamado "Lógica de Programação". Como mencionado, "bem começado, metade feito". Já sabemos o que é programar antes de começar a escrever código. No próximo encontro, vamos explorar linguagens de programação, focando especificamente em JavaScript. Vamos abrir essa caixinha das linguagens de programação e entender por que foram criadas e por que existem tantas. Vamos seguir nesse caminho para nos tornarmos pessoas desenvolvedoras.

Primeiros passos - Entendendo as linguagens de programação

Introduzindo o conceito de linguagem de programação

Agora que já compreendemos o que é programar e entendemos um pouco da história de como as linguagens evoluíram ao longo do tempo, é hora de focarmos mais no conceito de linguagem de programação como um todo. Especificamente, nosso foco aqui será o JavaScript.

Por que precisamos de linguagens de programação? Vamos destrinchar esse pensamento. O computador, ou melhor, o processador, só entende 0 e 1, ou seja, é binário. O idioma que ele "fala" é binário, composto por 0 e 1. Não vamos entrar no mérito dos computadores quânticos, mas sim nos tradicionais, que entendem 0 e 1, basicamente algo ligado ou desligado. Combinando 0s e 1s, conseguimos escrever e realizar qualquer tarefa que faríamos em uma linguagem qualquer, mas utilizando apenas 0s e 1s.

Necessidade de linguagens de programação

Embora o computador entenda 0 e 1, nós, seres humanos, não conseguimos ler ou entender isso facilmente. Imagine ter que lidar com centenas de 0s e 1s ao invés de uma frase clara. Precisamos de um meio termo. Mesmo que o processador só entenda 0 e 1, precisamos escrever instruções claras, passos que devem ser seguidos. Portanto, precisamos de uma linguagem comum a ambos, pois, mesmo que nos esforcemos para entender 0 e 1, isso não seria eficiente.

A linguagem de programação é um sistema formal composto por regras sintáticas e semânticas, ou seja, regras que seguimos para expressar algoritmos e controlar o comportamento dos computadores. Assim como aprendemos nosso idioma começando pelas vogais, consoantes, sílabas, palavras, frases, parágrafos e textos, seguiremos esse mesmo conceito ao mergulharmos no mundo do JavaScript.

Funcionamento das linguagens de programação

Como não conseguimos nos comunicar eficazmente com 0 e 1, escolhemos uma linguagem de programação para nos comunicarmos com o computador. Vamos analisar e entender como isso funciona. Vamos abrir o capô de uma linguagem de programação e entender os passos que ela segue.

Primeiro, nós, seres humanos, temos a intenção de escrever instruções para um computador, ou seja, escrever algoritmos. Já vimos em exemplos anteriores que podemos usar um comando como print. A ideia do print é literalmente imprimir, por exemplo, a palavra "oi". Escrevemos esse código:

print("Oi")

Processo de compilação e execução

Esse print passa por um compilador, que é a camada intermediária entre o 0 e 1 e o print("oi"). O compilador transforma isso na linguagem que o CPU, ou processador, consegue entender, que é 0 e 1. Finalmente, o computador consegue executar a instrução.

Perceba o fluxo: nós escrevemos o código, que passa por uma camada chamada compilador, que transforma o código em 0 e 1. Podemos chamar isso de tradutor, pois ele traduz a linguagem que seguimos com regras sintáticas e semânticas para que o compilador funcione. O código é transformado em linguagem de máquina, e o computador consegue seguir essas instruções.

Diversidade de linguagens de programação

Quantas linguagens de programação existem? Podemos chutar um número? É mais de 100, mas menos de 1000. Na data de gravação deste vídeo, ainda é menos de 1000, mas mais de 100. Temos mais de 700 linguagens de programação. Temos o JavaScript, que é nosso foco, além de Java, C#, Ruby, PHP, Dart, Kotlin, entre outras. Por que tantas? Quando alguém cria uma linguagem de programação, está criando uma ferramenta para executar uma tarefa específica. Algumas linguagens são mais eficientes para determinadas tarefas do que outras. Por exemplo, algo que roda dentro do computador de bordo de um carro ou dentro de um roteador são cenários específicos, enquanto um software que roda na web, acessado pelo Chrome, é outro cenário. Ferramentas diferentes para funcionalidades diferentes.

Evolução das linguagens de programação

As linguagens evoluem com o tempo. Por exemplo, a linguagem Lua foi criada no Brasil e é usada para criar jogos. Existem muitas linguagens de programação, cada uma com seus pontos fortes e fracos. Mas nosso foco aqui é o JavaScript. Vamos mergulhar no JavaScript e entender sua origem, evolução e aplicação.

Em 1995, um desenvolvedor chamado Brendan Eich criou o JavaScript.

Evolução do Javascript

A história do Javascript começou com a empresa Netscape, que desenvolveu um navegador chamado Netscape. Essa empresa desejava executar código no navegador, mas não havia uma maneira de escrever sequências de passos para que o navegador entendesse e executasse. Naquela época, exibia-se um formulário que, após preenchido, era enviado de volta ao servidor. Antes de chegar ao servidor, não era possível realizar validações, como verificar se um campo era obrigatório ou se um e-mail era válido. Essa necessidade motivou a Netscape a encomendar o Javascript.

Em 1996, aproximadamente um ano depois, a Microsoft percebeu que o Netscape possuía o Javascript e decidiu lançar o JScript para o Internet Explorer, permitindo que ele também executasse código, assim como o Netscape.

Em 1997, surgiu a ECMA, que propôs a padronização do Javascript para evitar que cada navegador implementasse sua própria linguagem. Dois anos após o nascimento do Javascript, o ECMAScript foi institucionalizado, estabelecendo um padrão recomendado para quem quisesse segui-lo.

Avanços e inovações no Javascript

Em 2005, houve um avanço significativo com o surgimento do AJAX e da Web 2.0. Em vez de enviar e carregar a página inteira, começou-se a atualizar parcialmente as páginas, tornando-as mais dinâmicas. O navegador fazia uma requisição ao servidor, que processava e retornava apenas o necessário, sem recarregar todo o documento HTML.

Brendan Eich foi o responsável por escrever o Javascript. Em 2017, houve uma curiosidade sobre o motivo pelo qual os meses no Javascript são representados de 0 a 11, em vez de 1 a 12. Isso ocorreu porque, na época em que o Javascript foi criado, o Java já tinha uma forma de trabalhar com datas, e a Netscape pediu para seguir o mesmo padrão do Java, onde janeiro é representado por 0.

Impacto do jQuery e Node.js

Em 2006, o jQuery, uma biblioteca Javascript, simplificou a quantidade de código necessário, dominando o mercado na época. Muitas funcionalidades do jQuery foram incorporadas ao Javascript ao longo dos anos, mudando o paradigma de como se pensava em Javascript.

Em 2009, nasceu o Node.js, um software que permitiu a execução do Javascript fora do navegador, em servidores ou computadores pessoais. Isso revolucionou o uso do Javascript, permitindo sua execução em qualquer lugar.

Revolução do ECMAScript 2015 e frameworks modernos

Em 2015, o ECMAScript 2015 trouxe uma grande revolução na sintaxe e semântica do Javascript, adicionando várias novas funcionalidades. O Node.js e os navegadores passaram a dar suporte a essas novidades, acelerando a evolução da linguagem.

Entre 2016 e 2020, houve um boom de frameworks e bibliotecas, como React, Angular, Vue e Ember.js, que mudaram a forma de escrever para a web. Surgiram ferramentas para todos os lados, e a cada momento, novos frameworks de Javascript eram lançados.

Presença do Javascript em 2023

Em 2023, o Javascript está presente em todos os lugares: na web, em dispositivos móveis e na Internet das Coisas (IoT). O Node.js abriu essa porta, permitindo que o Javascript fosse utilizado em diversas plataformas. Hoje, é possível usar Javascript de ponta a ponta, desde o front-end até o back-end, facilitando o trabalho de equipes de desenvolvimento.

Essa linha do tempo do Javascript destaca as contribuições de Brendan Eich, o criador da linguagem, e do jQuery. Estamos prontos para continuar explorando e evoluindo na direção da linguagem de programação Javascript, que tem muito a oferecer.

Sobre o curso JavaScript: aprendendo a programar

O curso JavaScript: aprendendo a programar possui 400 minutos de vídeos, em um total de 108 atividades. Gostou? Conheça nossos outros cursos de em Programação, ou leia nossos artigos de Programação.

Matricule-se e comece a estudar com a gente hoje! Conheça outros tópicos abordados durante o curso:

Escolha a duração do seu plano

Conheça os Planos para Empresas