Swift e Objective-C

A origem do Swift: por que Chris Lattner abandonou o Objective-C?

Quem começa a desenvolver para iOS já se perguntou pelo menos uma vez: "Por que a Apple criou o Swift do zero em vez de continuar usando o Objective-C que já conhecia tão bem?"

5 min de leitura
Imagem de capa de A origem do Swift: por que Chris Lattner abandonou o Objective-C?

Quem começa a desenvolver para iOS já se perguntou pelo menos uma vez: “Por que a Apple criou o Swift do zero em vez de continuar usando o Objective-C que já conhecia tão bem?”

Quando criei meu primeiro app em Swift, também achei a sintaxe muito limpa, mas, ao investigar a história por trás dela, descobri uma trajetória bastante interessante.

Em resumo, Swift é uma linguagem que um engenheiro chamado Chris Lattner começou a criar quase sozinho e em segredo em 2010. A intenção era corrigir pela raiz os problemas de segurança do Objective-C, que permanecia praticamente inalterado havia mais de 30 anos.

Hoje, vamos conhecer de forma descontraída como o Swift chegou ao mundo.


Quando e por quem o Swift foi criado?

O desenvolvimento do Swift começou em julho de 2010.

O personagem principal é Chris Lattner. Talvez esse nome não seja familiar, mas, se você é desenvolvedor, já usa o trabalho dele todos os dias.

Ele criou os compiladores LLVM e Clang, tecnologias fundamentais que sustentam as ferramentas de desenvolvimento da Apple.

No início, o projeto era realmente só de Lattner. A história de ele aperfeiçoar silenciosamente o design depois do trabalho e nos fins de semana ficou famosa.

Por volta de 2011, outros engenheiros da Apple se juntaram ao projeto, que cresceu e virou um trabalho de equipe completo.

Por fim, o Swift foi apresentado ao mundo na WWDC de junho de 2014. Os desenvolvedores presentes ficaram surpresos, uma reação lembrada até hoje, porque ninguém esperava aquele anúncio.

Em setembro do mesmo ano, ele foi distribuído oficialmente com o Xcode 6 e passou a estar disponível para todos.


Por que Chris Lattner substituiu o Objective-C?

Havia um único motivo principal.

O Objective-C foi projetado no início dos anos 1980 e, por isso, não tinha mecanismos modernos de segurança.

Em termos simples, o Objective-C é uma estrutura que adiciona envio de mensagens à linguagem C. Ele herdou a flexibilidade do C, mas essa flexibilidade também podia ser perigosa.

Um exemplo clássico é o problema de lidar com nil (um valor vazio).

No Objective-C, enviar uma mensagem para um objeto nil não derruba o app. Simplesmente nada acontece.

Isso pode parecer conveniente, mas é uma armadilha. Bugs causados pela ausência de um valor ficam ocultos silenciosamente e acabam aparecendo mais tarde em outro lugar.

Ao criar o LLVM e o Clang, Lattner já havia passado anos lidando com a segurança de memória do Objective-C. Então, segundo a história, chegou à seguinte conclusão.

“Em vez de continuar remendando a linguagem existente, vamos criar uma nova que impeça os erros desde o começo.”

A ideia não era apenas detectar erros, mas tornar os próprios erros impossíveis.


O que mudou no Swift?

A mudança mais simbólica trazida pelo Swift foi o conceito de opcionais (Optional).

Ele obriga a indicar no nível da sintaxe que “este valor pode estar vazio”, fazendo com que o desenvolvedor trate sempre os casos em que não há valor.

O código abaixo mostra claramente a diferença de filosofia entre as duas linguagens.

No Objective-C, mesmo quando é nil, o fluxo simplesmente continua.

// nameSe isto for nil? Nada acontece e a execução segue silenciosamente
NSString *name = [user fetchName];
NSUInteger len = [name length];  // O resultado é 0, fácil deixar bugs passarem

Já o Swift pergunta explicitamente ao desenvolvedor se o valor pode estar ausente.

// nameé String? um tipo — o tipo declara que o valor pode não existir
let name: String? = user.fetchName()
if let name = name {   // Usar com segurança somente quando houver um valor
    print(name.count)
}

É um código curto, mas a diferença entre “deixar o erro passar” e “impedir o erro” aparece com clareza.

Além disso, o Swift ganhou popularidade com inferência de tipos, sintaxe concisa e execução rápida. Vale lembrar que ele foi projetado aproveitando pontos fortes de várias linguagens, como Rust, Haskell, Python e Ruby, além do Objective-C.


O que aconteceu com o Swift depois disso?

Depois do anúncio, o Swift se consolidou rapidamente.

Em resumo, os principais acontecimentos foram estes.

Período Evento
Julho de 2010 Chris Lattner inicia o desenvolvimento
Junho de 2014 Anunciado oficialmente na WWDC
Setembro de 2014 Distribuído oficialmente com o Xcode 6
Dezembro de 2015 Publicado como código aberto (Apache 2.0)
Janeiro de 2017 Lattner deixa a Apple e vai para a Tesla

O interessante é que Lattner, o pai da linguagem, deixou a Apple em 2017. Depois disso, Ted Kremenek assumiu a liderança do projeto Swift.

Ainda assim, o Swift continua firmemente estabelecido como a linguagem central do ecossistema da Apple. Ao se tornar código aberto, também se expandiu para Linux e para o lado do servidor.

O Swift continua crescendo mesmo depois da saída de Lattner
O Swift continua crescendo mesmo depois da saída de Lattner

Acho impressionante que um projeto iniciado silenciosamente por um engenheiro nos fins de semana tenha se tornado uma linguagem usada por desenvolvedores do mundo todo há mais de uma década.

Como nasceu de uma única pergunta — “por quê?” —, cada detalhe da sintaxe do Swift parece diferente quando conhecemos sua história.

Depois de conhecer o contexto, até uma linha de código passa a ser lida de outra forma
Depois de conhecer o contexto, até uma linha de código passa a ser lida de outra forma

Se você está começando agora com Swift, entender bem os opcionais já ajuda a perceber por que a linguagem foi projetada assim. Espero que o artigo de hoje seja o seu primeiro passo.


Referências

Continue lendo