Versão

O que é uma Versão de um Programa de Computador?

Versão (em Inglês: version) é o termo que usamos para identificar uma forma específica de um programa de computador. Um programa é feito para realizar uma tarefa e possui um nome, por exemplo, vamos supor que temos um programa chamado Prog. O desenvolvedor que criou esse programa Prog publica ele em seu website para você baixar e instalar. Após isso, o desenvolver adiciona uma nova função ao programa Prog, e publica o programa mais uma vez, dessa vez com uma nova função. Como podemos distinguir o Prog antigo do Prog novo? Já que ambos são chamados de "Prog"? É para isso que existem versões. Nesse exemplo simples, poderíamos chamar o primeiro Prog de Prog Versão 1, ou Prog v1, e o segundo Prog de Prog v2.

Em prática, programas possuem sistemas de versionamento muito mais complexos que isso. Um sistema de versionamento popular é chamado de versionamento semântico (semantic versioning), no qual usamos três números, como versão 1.20.2. Nesse código, 1 é a versão maior, (major version), 20 é a versão menor (minor version), e 2 é a correção (patch). Esse formato causa muita confusão pois o número depois da versão 1.9 não é a versão 2.0 mas sim a versão 1.10.

Nesse sistema, quando um programa é alterado para corrigir erros no programa (chamados de bugs), geralmente isso incrementa o último número, o patch. Quando um programa adiciona funções, isso incrementa o segundo número, a versão menor. O primeiro número só muda quando o programa é alterado de tal forma que quebra compatibilidade com versões anteriores.

Por exemplo, vamos supor que você pode salvar arquivos em Prog 1.0.Na versão 1.5, Prog passou a usar um novo formato de arquivo. Ele ainda abre arquivos salvos na versão 1.0, mas na hora de salvar, ele salva no novo formato. Na versão 2.0, Prog parou de abrir arquivos no formato antigo, e agora só abre arquivos no formato novo. Isto é, se você salvou um arquivo com Prog 1.0, Prog 2.0 não será capaz de abrir ele. Embora esse seja um caso comum quando a versão muda, há casos que a versão muda por outros motivos, como mudanças de licença. Enfim, a ideia é a mesma, se o número depois do ponto mudar, a versão menor, geralmente não haverão problemas, mas quando o primeiro número muda, a versão maior, pode ser que algo importante pare de funcionar.

Devido a esse sistema, não é possível saber o quão aperfeiçoado um programa é só de olhar sua versão. Por exemplo, se Prog estiver na versão 16.0, isso pode querer dizer que é um programa que tem sido feito a um longo tempo e possui 16 versões já completadas, ou pode ser que o programa foi feito mês passado e cada dois dias arquivos salvos em uma versão não abrem na próxima. Por outro lado, é possível que um programa 1.8 tenha sido desenvolvido por décadas, mas simplesmente nunca introduziu uma mudança que quebrasse compatibilidade com versões anteriores.

Programas que estão no 0.X não fazem promessas de compatibilidade com versões anteriores e com isso podem mudar bastante. Alguns desses programas nunca saem do 0.X.

Note que existem outros sistemas de versionamento. Em particular, você pode encontrar desenvolvedores que desconhecem versionamento semântico e vão sim mudar a versão do aplicativo de 1.9 para 2.0 só por que parece que é assim que funciona versões.

Além das versões numéricas também temos nomes para algumas versões, como alpha ("alfa"), beta, release candidate, e release. Uma versão alpha (abreviado a) é uma versão de um programa incompleto, ainda sob desenvolvimento. Uma versão beta (abreviado b) é uma versão que está completa em termos de função, mas existem erros a serem concertados. Um release candidate (abreviado rc), significando "candidato a lançamento," é uma versão que pode ser a versão final se não for encontrado nada que precisa ser mudado. E finalmente release é o que é lançado, ou seja, publicado. Esse ciclo de alpha até release existe independentemente da versão numérica. Por exemplo, você pode ter 1.2b que seria uma versão beta, e 1.2rc que é a release candidate. Geralmente, programas comerciais não publicam para usuários versões alfa, beta, e rc, apenas a versão final. Porém, programas de código fonte aberto costumam permitir o download de versões incompletas. Em particular, as versões nightly ("de noite") são versões geradas automaticamente toda noite com as últimas atualizações do programa, mesmo que essas atualizações conterem erros. Nesse nível não se usa mais números decididos por seres humanos como 1.2.3, mas sim um número de build gerado automaticamente.

Outro tipo de versão de software são versões no sentido do mesmo programa possuir funções diferentes, especialmente no caso de programas que possuem uma versão gratuita e uma versão paga. Nesse caso é comum termos nomes como versão Pro, ou versão Professional, ou versão Free (grátis), e assim por diante. O Windows possui várias versões nesse sentido, como Windows Home (lar, i.e. versão pessoal) e Windows Pro.

Há também versões que são marcas e podem ser qualquer coisa. No caso do Windows, temos o Windows 95, Windows 98, Windows 2000, Windows XP, Windows Vista, Windows 7, Windows 8, Windows 10, e Windows 11. Veja como é meio aleatório esse versionamento. 95 e 98 parecem ser os anos que o Windows foi lançado, mas depois temos 2000 em vez de 00. Então temos XP e Vista (na verdade há NT e ME também), que são letras? Palavras? Em vez de números. Então voltamos para números mesmo: 7, 8, 10. 10? Pera aí, cade o Windows 9? Parece que evitaram o Windows 9 por que alguns programas checavam se o nome do sistema começava com "Windows 9" para saber se era Windows 95 ou 98. Podiam ter chamado de Windows Nine pelo menos. E por que não os anos? Essas versões não são as versões reais do programa que é o Windows, mas sim versões do produto.

Algo similar são os codenames (nomes de código) usados em versões de outros sistemas. O Android usava nomes de doces como KitKat (4.4) e Lollipop (5.0) para suas versões. O MacOS usa nomes de animais como Jaguar e Leão da Montanha. O Ubuntu também usa nomes de animais.

Comentários

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *