Avançar para o conteúdo
Imagem com logotipo, contendo link para a página inicial
  • United Stated of America flag, representing the option for the English language.
  • Bandeira do Brasil, simbolizando a opção pelo idioma Português do Brasil.

Ambientes de Desenvolvimento: Preparando Seu Computador para a Criação de Programas

Alguns programas que se pode usar para o desenvolvimento de software em um computador: o compilador GCC, o editor de texto Emacs, o navegador de Internet Firefox e o editor integrado do motor para jogos Godot Engine.

Créditos para a imagem: Imagem criada pelo autor usando o programa Spectacle.

O Início de Toda Jornada de Desenvolvimento de Software

Embora seja possível criar programas de computador em dispositivos móveis, o uso de um teclado continua praticamente essencial para a escrita de programas mais complexos. No mais, não é necessário hardware de última geração para começar atividades de programação, pelo contrário. Um computador e acesso à Internet são suficientes para começar, aprender e praticar.

Dependendo da linguagem de programação escolhida, até mesmo o acesso à Internet é opcional. Em muitas linguagens de programação e para muitos programas, é possível instalar os programas necessários no disco rígido do computador e usá-los sempre que necessário.

Está em um computador? Caso contrário, você tem acesso a um computador? Excelente. Hora de começar sua jornada: a Jornada da Desenvolvedora ou a Jornada do Desenvolvedor.

O Mínimo Necessário para Iniciar Atividades de Programação

Para aprender a programar, o conhecimento mínimo necessário é saber instalar programas em um computador (ou conhecer alguém que saiba e pedir um favor).

Talvez você possa começar neste exato momento. Para linguagens como JavaScript, basta um editor de texto e um navegador. Navegadores como Mozilla Firefox, Google Chrome e Microsoft Edge possuem interpretadores para JavaScript integrados.

O interpretador não sempre é acessível em dispositivos móveis, mas pode ser iniciado em computadores pressionando, em geral, a tecla F12 do teclado.

Se estiver em um computador, o editor de texto pode ser ignorado neste primeiro momento. Pressione F12 e uma nova região aparecerá no navegador, provavelmente na parte inferior da janela. Procure pela aba Console (caso necessário) e prepare-se para se tornar uma programadora ou um programador.

No console, procure por um símbolo parecido com > ou >>, digite o texto da linha seguinte (você pode escrever seu nome ao invés de Franco, apenas certifique-se toda a mensagem esteja entre aspas) e, em seguida, pressione Enter:

console.log("Olá, meu nome é Franco")

Parabéns! Você acaba de escrever seu primeiro programa de computador (ou mais um, se não foi seu primeiro). console.log() é uma função que pode escrever uma cadeia de caracteres, isto é, texto escrito entre aspas, na saída padrão do console (o interpretador de comandos).

O terminal embutido no navegador de Internet Mozilla Firefox. Na imagem, exibe-se a saída resultante da execução da linha de código `console.log(\"Olá, meu nome é Franco\")`, que diz: \"Olá, meu nome é Franco\".

Você pode trocar Franco pelo seu nome. Também é possível alterar a mensagem. Use sua criatividade. Tradicionalmente, utiliza-se a frase Hello, world! (Olá, mundo!) como primeiro programa em linguagens de programação. A tradição tem décadas, com início em um livro do criador da linguagem C.

Caso você tente copiar e colar a mensagem anterior ao invés de digitar, é possível que surja um aviso.

Aviso sobre riscos cuidados ao colar código exibido pelo navegador Mozilla Firefox.

Pode-se remover o aviso seguindo os passos mencionados (por exemplo, digitando-se allow pasting no Firefox). Convém destacar, contudo, que o aviso é pertinente e serve como lembrete que nunca se deve confiar em código que você não entende. Digitar e executar código desconhecido (ou copiar, colar e executar código) sem entender o que ele faz pode resultar em perda ou roubo de dados, caso uma pessoa com más intenções tenha escrito o código para tais propósitos.

Como em pesquisa acadêmica ou trabalhos escolares, escolha cuidadosamente fontes confiáveis para suas informações sobre programação. Por padrão, desconfie de tudo e todos. Especialmente em tempos atuais, repletos de fake news.

Cabe, pois, duas perguntas:

  1. Como posso confiar apenas em código que entendo se nunca programei antes?
  2. Por que confiar neste material?

Para a primeira, deve-se começar de algum lugar. Uma função que escreva uma cadeias de caracteres de forma legível quase sempre é promissora.

Para a segunda, minha recomendação continua a mesma. Desconfie! Procure outras fontes e, acima de tudo, sempre procure consulte a documentação oficial de qualquer projeto e sistema que você usar. A leitura de documentação (como manuais) é essencial para se programar corretamente -- sobretudo caso não se trate de software livre (free / libre software), de código aberto (open source).

Hora de vestir seu novo chapéu de programação. Por exemplo, o que realmente faz console.log() em JavaScript? Para descobrir, podemos consultar a Rede de Desenvolvedores da Mozilla (MDN), mais conhecida pelo nome inglês Mozilla Developer Network e pela sigla (MDN). Para JavaScript, a MDN é minha recomendação de referência para documentação.

Eis a entrada do manual para console.log() disponível na MDN: https://developer.mozilla.org/pt-BR/docs/Web/API/console/log. De acordo com o manual, o método "Exibe uma mensagem na console do navegador". Você pode não saber o que é um método, mas, agora, sabe o que console.log() computa.

Infelizmente, a documentação de projetos nem sempre estará em Português. Mesmo quando estiver, por vezes será incompleta, algo que pode ser constatado acessando a página inglesa para console.log(). De fato, material de qualidade em língua portuguesa -- principalmente escrito -- é escasso; inglês é a língua franca da Internet.

Assim, este material tem como um dos objetivos contribuir com material o ensino de programação em língua portuguesa. Minha intenção é introduzir conceitos aos poucos, construindo conhecimento passo a passo. Para isso, pretendo usar em minha experiência prévia em programação e pesquisa durante o doutorado em programação por usuários finais (se quiser saber mais sobre mim, confira aqui).

De Que Preciso para Começar a Programar?

Quando se começa a usar uma linguagem de programação ou quando se inicia um novo projeto, o primeiro basso é configurar o ambiente de desenvolvimento. A complexidade da configuração depende da complexidade do projeto, assim como da(s) linguagem(ns) escolhida(s) e das ferramentas. Por vezes, também sistema operacional -- a instalação de sistemas para programação costuma ser mais rápida em sistemas Linux (mas, hoje, existem containers).

No mínimo, precisa-se de um editor de texto, um compilador (ou interpretador, dependendo da linguagem de programação escolhida), um gerenciador de arquivos (não sabe o que é um? Confira uma introdução e também como realizar operações básicas) e um interpretador de linha de comando.

Dos quatro itens anteriores, a maioria dos computadores possuem dois instalados por padrão: o gerenciador de arquivos e o interpretador de linha de comando. Bem, três: praticamente todo sistema operacional provê um editor de texto padrão, mas o Bloco de Notas do Windows é tolerável como última opção. Caso você use Windows, a configuração do ambiente pode ser complexa. Caso você use Linux, a configuração de ambiente de desenvolvimento tende a ser mais simples (em alguns casos, quase trivial).

Felizmente, existem alternativas. Pode-se substituir os quatro sistemas anteriores por um único, chamado de ambiente integrado de desenvolvimento (do inglês, integrated development environment, mais conhecido pela sigla IDE).

Para iniciantes, IDEs simplificam significativamente os esforços iniciais para configuração do ambiente de desenvolvimento. Em muitos casos, basta instalar o IDE e começar a aprender como criar sistemas.

Entretanto, convém ressaltar que IDEs são ferramentas criadas para profissionais. Elas são soluções completas para o desenvolvimento de software e, portanto, podem ser um pouco assustadoras para o primeiro uso. Em geral, pode ser interessante começar a usar IDEs mais simples ao invés das mais complexas. Afinal, para começar, funcionalidades essenciais de IDEs são:

  1. Um editor de texto acoplado para escrever o código-fonte;
  2. Um compilador ou interpretador pré-instalado para executar o código-fonte;
  3. Uma abstração para o sistema de arquivos para minimizar (ou eliminar) a necessidade de uso de um gerenciador de arquivos.
  4. Uma forma simples de executar o projeto (de preferência, com uma tecla ou um clique).

Praticamente toda IDE moderna possui os quatro recursos anteriores. Muitas ainda contam com depuradores inclusos, uma ferramenta para inspeção de processos (programas em execução) que ajudam na identificação de erros em código-fonte.

Linguagens e Linguagens de Programação: Qual é a Melhor?

Por vezes, uma pessoa decide aprender uma linguagem específica, que seja popular, esteja em alta no momento (a linguagem da moda) ou que forneça salários promissores. De Ada até Zig, opções não faltam: Ada, Assembly, B, Basic, C, C#, C++, Cobol, Dart, D, Emacs Lisp, Erlang, F#, Fortran, GDScript, Go, Haskell, Idris, Java, JavaScript, Julia, Kotlin, Lisp, Lua, ML, Nim, Objective-C, Pascal, Perl, PHP, PL/SQL, Prolog, Python, Q, R, Ruby, Rust, S, Scala, Scheme, Scratch, SQL, Swift, Smalltalk, T, Tcl, Unicorn, Verilog, Visual Basic, VHDL, WebAssembly, X++, Yorick, Zig...

Algumas das linguagens possuem mais uso que outras. Mais importante para este momento, algumas das linguagens anteriores costumam ser mais simples para iniciantes que outras. C e C++ são linguagens rápidas, tradicionais, eficientes e complexas. Python, Lua e JavaScript são linguagens tradicionais, menos rápidas, mas mais simples. Python e Lua, em particular, são linguagens com sintaxe simples e elegante.

Por que optar por uma linguagem mais simples ao invés de uma linguagem mais complexa? Não seria melhor aprender a linguagem mais rápida? Qual é a melhor linguagem?

Não existe melhor linguagem de programação para todo e qualquer caso.

Da teoria da computação, pode-se demostrar que, caso uma linguagem satisfaça a algumas propriedades, ela pode escrever todos os programas que se possa escrever em quaisquer outra linguagem com as mesmas propriedades.

Como corolário (uma interpretação imediata), pode-se dizer que a maioria das linguagens de programação modernas (e sérias) podem escrever qualquer programa de computador que seja possível.

Em outras palavras,

  1. Você pode escolher praticamente qualquer linguagem de programação para aprender a desenvolver software;
  2. É melhor aprender uma linguagem de programação que seja mais simples e fácil de usar para começar que uma que seja mais complexa. Bom senso é importante em programação; a simplicidade é desejável e, muitas vezes, leva a resultados superiores a longo prazo.

Minha opinião é que linguagens de programação são ferramentas; utilize a melhor (a mais adequada) para o problema em questão.

Caso se deseje aprender, o problema é o aprendizado. Portanto, escolha uma linguagem que contribua com o objetivo.

Aprender a programar não é algo fácil nem trivial. Erros são extremamente comuns no início, muitas vezes aparentemente inexplicáveis. Uma das partes mais difíceis ao se começar não é aprender a linguagem ou os conceitos, mas a persistir e aceitar erros como parte do processo. Portanto, não se deve dificultar o processo sem motivos.

Python, Lua e JavaScript são algumas das opções que recomendaria para começar. Antes, ainda, talvez algo como linguagens de programação visuais como Scratch (infelizmente, algo que nem sempre é uma opção para pessoas com deficiência visual). Essa é abordagem que será usada neste website (por exemplo, em saída em console (terminal)).

Python é uma linguagem com bibliotecas (código pronto para apoiar o desenvolvimento de sistemas) de qualidade para diversas áreas do conhecimento humano. Em particular, a linguagem GDScript usada pelo motor Godot Engine é bastante similar a Python; Godot é um motor interessante para programação de jogos digitais.

Lua é uma linguagem brasileira (criada e mantida pela PUC-Rio), bastante usada como linguagem de scripting em jogos digitais (por exemplo, usando LuaJIT) e outras aplicações multimídia. Muitos videogames permitem criar modificações (mods) usando Lua (alguns também Python).

JavaScript é a terceira opção pelo motivo único de ser a linguagem dominante para programação para Internet. Na minha opinião, JavaScript não é uma linguagem simples ou elegante como Lua e Python, mas demonstra que nem sempre a melhor tecnologia é aquela de maior adoção. Felizmente, a parte moderna de JavaScript melhora a cada ano. Enquanto WebAssembly não se tornar uma alternativa viável, JavaScript (provavelmente) continuará a dominar a Internet.

Olá, Mundo!

Antes de prosseguirmos para configuração de ambientes de desenvolvimento para algumas linguagens de programação específicas, podemos deixar registrada a tradição.

  1. Em Lua:

    print("Olá, mundo!")
  2. Em Python:

    print("Olá, mundo!")
  3. Em JavaScript:

    console.log("Olá, mundo!")
  4. Em C:

    #include <stdio.h>
    
    int main()
    {
        printf("Olá, mundo!");
    
        return 0;
    }
  5. Em C++:

    #include <iostream>
    
    int main()
    {
        std::cout << "Olá, mundo!";
    
        return 0;
    }
  6. Em Java:

    public class OlaMundo
    {
        public static void main(String[] args)
        {
            System.out.print("Olá, mundo!");
        }
    }
  7. Em LISP:

    (princ "Olá, mundo!")
  8. Em Prolog:

    main :- write("Olá, mundo!").
  9. Em SQL (SQLite):

    SELECT "Olá, mundo!";
  10. Em GDScript (para Godot Engine):

    extends SceneTree
    
    func _init():
        print("Olá, mundo!")

A configuração de ambientes de desenvolvimento para as linguagens anteriores permitirão transformar cada código-fonte no respectivo programa.

Algo que se pode notar entre os exemplos anteriores é que, embora a sintaxe e as palavras possam ser diferentes, as estruturas são semelhantes. Todos os códigos anteriores definem o mesmo algoritmo (seqüência finita de passos para a resolução de um problema), que pode ser resumido abaixo:

inicio
    escreva("Olá, mundo!")
fimalgoritmo

A observação é importante; quando se aprende a programar em uma linguagem, boa parte do conhecimento é válida para outras linguagens de programação. De fato, mais importante que aprender a programar é aprender a pensar computacionalmente (algo chamado pensamento computacional). Quando se domina o pensamento computacional, linguagens tornam-se ferramentas -- em poucas horas, você poderá aprender uma nova. Talvez até começar a considerar a criação da sua própria.

Para a leitora ou para o leitor com maior curiosidade, a próxima seção comenta um pouco sobre alguns dos sistemas mais importantes para a criação de programas.

Além do Mínimo: os Passos Seguintes Após Aprender o Básico de Programação

O primeiro IDE não precisa ser o único. Com experiência, você pode começar a explorar outros IDEs, projetos, tecnologias e ferramentas para criação de software.

Embora minha recomendação seja começar por um IDE, convém conhecer os sistemas envolvidos em programação. Se para mais nada, apenas para saber o que um IDE simplifica e integra para você em um único programa.

Gerenciadores de Arquivos

Alguns dos tópicos anteriores mencionaram gerenciadores de arquivos (primeiro: uma introdução sobre sistemas de arquivos, arquivos, diretórios (pastas) e caminhos; segundo: operações básicas de manipulação de arquivos).

Embora um gerenciador básico seja suficiente para a maioria das tarefas, escolher um gerenciador de arquivos mais adequado com suas necessidades pode reduzir tempos e esforços com a realização de tarefas secundárias.

Em particular, como mencionado das entradas sobre sistemas de arquivos, a linha de comando é alternativa válida para automação.

Editores de Texto

Existem pessoas que se sentem satisfeitas com o editor de texto fornecido por sua IDE favorita. Outras pessoas podem preferir o uso de um editor externo.

Boa parte do tempo de desenvolvimento é destinado à escrita de texto. Código-fonte, documentação, mensagens para comunicação, relatórios. Um bom editor de texto é uma ferramenta essencial para desenvolvimento de software.

Existem várias opções de qualidade, como, por exemplo:

Para aqueles que querem o que há de mais moderno e atraente em editores de texto, as últimas opções da lista são as de aparência mais moderna. Existe também o Sublime Text, mas é um programa pago (embora possa ser usado gratuitamente para avaliação).

Para pessoas com deficiência visual, conhecer o projeto Emacspeak pode ser interessante.

Embora eu não recomende que nenhuma pessoa aprenda a programar usando Vim ou Emacs (muito menos ambos no Emacs), é interessante conhecê-los em algum momento. No mínimo, por motivos históricos: Emacs e Vim são editores que sobrevivem (e mantêm-se atuais) há décadas. Emacs foi lançado 1976. Vim em 1991. Emacs é mais velho que o autor desta página; ambos são, possivelmente, muito mais velhos que muitos leitores. Ambos continuam excelente e atuais, embora rudimentares e espartanos para o gosto moderno. Em particular, eu uso Emacs com um modo de emulação de Vim (Evil mode). O melhor de dois mundos -- até hoje.

Interpretadores de Linha de Comando

Caso não se queira usar um IDE, pode-se programar utilizando apenas um editor de texto e um interpretador de linha de comando com o compilador ou interpretador escolhido em muitas linguagens de programação.

Um interpretador de comando (ou shell) é o responsável por executar programas e gerenciar ciclos de vida de processos. Ambientes gráficos abstraem o uso do interpretador; por exemplo, ao clicar duas vezes sobre o ícone de um programa para rodá-lo, o ambiente gráfico inicia o processo em um shell por trás dos panos.

Programadoras e programadores podem preferir em remover o intermediário e utilizarem o shell por elas/eles mesmos.

bash, zsh, fish são boas opções de interpretadores para sistemas Unix-like, como Linux. Para Windows, cmd é operável, embora rústico.

Ferramentas como make e cmake permitem criar configurações para compilação, execução, testes e, até mesmo, deploy (algo como lançamento ou implantação) de projetos.

Em editores de texto avançados, também pode ser possível alterar configurações que o próprio editor inicie os processos de compilação (ou interpretação) e execução do programa.

Compiladores e Interpretadores

Compiladores e interpretadores são ferramentas essenciais para o desenvolvimento de software, pois são eles que traduzem código-fonte em código que pode ser usado pela máquina (pelo computador, dispositivo móvel, navegador de Internet, videogame, etc.).

Caso não se use um IDE (ou caso o IDE escolhido não instale o compilador ou interpretador necessário para a linguagem), deve-se instalar o compilador ou interpretador para a linguagem escolhida.

Sem interpretação ou compilação, o código-fonte é apenas um arquivo texto. A compilação transforma o código-fonte de um programa em código de máquina usável pelo computador. Compilando-se o programa uma vez, pode-se usá-lo quantas vezes se quiser em máquinas com arquiteturas compatíveis. Em particular, a máquina que executa o programa não precisa ter o compilador instalado para executar o programa (basta ter as bibliotecas instaladas, caso não estejam inclusas no arquivo executável). Cada vez que se altera o código-fonte de um projeto, deve-se recompilar o código e gerar um novo arquivo executável. C e C++ são exemplos clássicos de linguagens compiladas. Por exemplo, no Windows, programas executáveis costumam ter a extensão .exe.

A interpretação traduz, em tempo de uso, o código-fonte do programa em instruções para a máquina. Em outras palavras, para usar um programa escrito em linguagem interpretada, é necessário possui o interpretador na máquina. JavaScript, Lua e Python são linguagens interpretadas. É por isso que navegadores permitem a escrita de código JavaScript quando o console é acessível em navegadores para computadores: o interpretador está embutido no programa. Desde que ele seja acessível por usuários, pode-se rodar código arbitrário usando o interpretador.

Programas compilados tendem a ser mais rápidos que interpretados. Atualmente, linguagens interpretadas empregam técnicas que reduzem a diferença (como just-in-time -- JIT), mas ela ainda existe para sistemas de alto desempenho. Essa é uma das razões pela qual sistemas que requerem desempenho como principal requisito (como jogos digitais de estúdios AAA) normalmente são escritos em linguagens compiladas como C++.

Programas interpretados tendem a ser portáveis com menores esforços para os desenvolvedores que os compilados. Se o interpretador for compatível com a plataforma (assim como todas as dependências do projeto), o programa funcionará (caso não tenha bugs impeditivos) na plataforma. Programa compilados, por outro lado, requerem a geração de arquivos executáveis para cada plataforma e arquitetura desejada.

Via de regra, linguagens interpretadas permitem a escrita de código-fonte com maior facilidade que as compiladas. O interpretador pode inferir dados de contexto durante uso e desenvolvimento para auxiliar os desenvolvedores, algo mais complexo e incomum em linguagens compiladas.

Depuradores

A subseção anterior mencionou a palavra bug, que, genericamente, é o termo popular para designar quaisquer problemas em programas de computador. O termo remete ao passado: insetos podiam interferir com o funcionamento de mainframes, causando problemas.

Mais tecnicamente, bugs podem ser defeitos, erros ou falhas. As três categorias estão relacionadas; o que muda é o nível ou local em que ocorrem. Defeitos ocorrem em nível de algoritmo (isto é, da solução concebida). Um defeito implementado no código de um programa resulta em um erro. Finalmente, a falha é o resultado da execução de um defeito, momento que este torna-se observável.

Na prática, muitos programadoras e programadores costumam ser pessoas práticas e usam o termo bug como todo mundo. Qualquer que seja o termo escolhido, depuradores (debuggers) são ferramentas que auxiliam desenvolvedores na identificação de problemas em seus projetos.

Muitos IDEs integram depuradores de forma visual, algo que pode facilitar o uso. Entretanto, pode-se usar depuradores compatíveis com a linha de comando, caso se prefira.

Depuradores integrados em IDEs são bastante convenientes. Particularmente, recomendo a escolha de um IDE baseada naquela que tiver o melhor suporte e a melhor integração com depuradores. Para bugs que não sejam evidentes e que requeiram inspeção, uma boa integração pode reduzir significativamente tempos e esforços para encontrar a causa e solucionar o problema.

Sistemas de Gerenciamento de Controle de Versões de Código-Fonte

Atualmente, sistemas de gerenciamento para controle de versões de código-fonte (source-control management ou SCM) são praticamente sinônimo de Git (git) para muitos programadores e programadoras.

git é o sistema. Serviços populares para hospedagem de código usando git incluem:

Os três serviços anteriores são excelentes, embora o GitHub seja o mais popular. Pessoalmente, prefiro o GitLab. Até poucos anos atrás, o GitLab tinha menos restrições quanto ao uso de repositórios privados de código-fonte. Permitia-se a criação de repositórios privados para contas grátis, sem limitações para colaboradores. BitBucket permitia a criação de repositórios privados no plano grátis, mas possuía algumas limitações. Contudo, o plano grátis do GitHub permitia apenas a criação de repositórios públicos. Atualmente, o GitHub também permite a criação de projetos privados no plano grátis. De qualquer forma, não é preciso escolher; caso se queira, pode-se usar todos. git permite hospedar um mesmo projeto em vários serviços , caso se deseje, ou apenas em sua própria máquina. Também é possível criar sua própria instância na nuvem com algumas opções (como o próprio GitLab, Gitea e Cogs).

Existem outras alternativas para controles de versões diferentes de git, das quais se pode citar Subversion (svn) e Mercurial (hg).

Portanto, existe opções e você pode escolher a que preferir. Minha única sugestão é escolher um SCM é e usá-lo. Em caso de problemas, pode-se comparar e/ou reverter o código do projeto para versões anteriores, além de facilitar o desenvolvimento de novas funcionalidades em paralelo com a versão principal do projeto.

IDEs e editores de texto avançados podem, inclusive, ter opções para integração com SCM. Convém consultar a documentação de suas ferramentas favoritas para verificar sobre a possibilidade de uso integrado.

Testes

Bugs são inevitáveis e fazem parte do processo de desenvolvimento de software. Para a identificação de bugs, realiza-se testes.

Pode-se realizar testes em todas as etapas de um projeto: desde antes da escrita da primeira linha de código, até após o lançamento do sistema ao público.

O objetivo de processos de teste é identificar problemas, isto é, mostrar que existe algo errado no design, implementação ou qualquer outro artefato relacionado ao projeto. Em outras palavras, um projeto cujos teste não indiquem problemas não está necessariamente correto. A realidade é que, talvez, faltem testes que explicitem os problemas.

Quando se começa a programar, utiliza-se umas das técnicas mais rudimentares para teste manual: comandos de impressão (como print() ou console.log()). Talvez surpreendentemente, a técnica rudimentar pode ser eficiente mesmo em sistemas complexos. Em particular, em alguns sistemas (como de tempo real interativo, como jogos digitais), ela pode ser a única opção, em alguns casos.

De qualquer forma, existem técnicas para diversos propósitos e fins. Exemplos incluem testes de função, unitário, regressão, sistema, usabilidade e acessibilidade.

Integração Contínua

Se, neste ponto, fazer sistemas funcionarem corretamente pareça ser um desafio, a realidade é que, realmente, pode ser. Sistemas complexos inevitavelmente possuem problemas. Novamente, testes podem indicar que um sistema possui problemas, não dificilmente são completos o suficiente para garantir que o sistema está correto.

Testes e deploy podem ser automatizadas e facilitadas por meio de processos de integração contínua, que podem integrar compilação, teste e distribuição dos artefatos gerados caso todos os testes tenham sucesso. Uma linha de produção (pipeline) para a geração de sistemas.

Erros São Intrinsecamente Parte da Programação

No mais, erros fazem parte da programação. Toda programadora e todo programador erra, não importa a experiência. Só não erra aquele que não tenta algo novo e faz sempre a mesma coisa.

Aprender a aceitar que erros são parte do processo é uma habilidade importante. Muitos desenvolvedores de software experientes desconfiam quando uma primeira implementação parece estar correta. Possivelmente existam problemas, apenas ainda não se sabe.

Além disso, pode parecer que há muito a aprender e que é impossível aprender tudo. De fato, é. O importante é começar; adquire-se conhecimento de forma incremental ao se praticar.

Para programação, o aprendizado é contínuo e nunca termina.

Próximos Passos

Os próximos tópicos descrevem ambientes de desenvolvimento para algumas linguagens de programação. Em seguida, iniciam-se os conceitos básicos para o aprendizado de programação.

  • Informática
  • Programação
  • Iniciante
  • Dev Env
  • Windows
  • Linux
  • Pensamento Computacional