Swift
O que é
Swift é a linguagem de programação moderna e de código aberto da Apple para criar apps em iOS, iPadOS, macOS, watchOS e tvOS — e cada vez mais também para código server-side e multiplataforma. Ela substituiu o Objective-C como padrão para o desenvolvimento Apple, combinando uma sintaxe limpa e expressiva com tipagem estática forte e segurança de memória. Você escreve Swift no Xcode (ou em qualquer editor com o toolchain de código aberto) e publica na App Store.
Pontos fortes
- Seguro por design: os optionals tornam explícita a ausência de valor ("no value"), e o compilador detecta classes inteiras de travamentos.
- Rápido — compila para código de máquina nativo, com desempenho próximo ao do C.
- Sintaxe expressiva e legível, com inferência de tipos, closures, generics e value types.
- Concorrência de primeira classe via
async/awaite actors. - Acesso completo a todos os frameworks da Apple e aos recursos mais recentes do sistema operacional (Operating System — o software central do dispositivo, como iOS ou macOS) desde o primeiro dia.
Contrapartidas
- O ecossistema é centrado nas plataformas Apple; existe suporte multiplataforma, mas é bem menos maduro.
- Na prática, o ferramental significa Xcode e um Mac para desenvolvimento de apps.
- A evolução rápida da linguagem às vezes exige trabalho de migração entre versões.
- Há uma curva de aprendizado real em torno de optionals, semântica de valor vs. referência, e concorrência.
Quando usar
Recorra ao Swift quando estiver construindo um app nativo para qualquer plataforma Apple e quiser o melhor desempenho, os recursos mais novos do sistema operacional e uma base de código segura e sustentável. É a escolha padrão certa para um app de iPhone ou Mac bem polido.
Encaixe com vibe coding
Swift se encaixa bem na programação assistida por IA porque seu compilador rigoroso transforma erros vagos em erros concretos que você pode colar de volta para o modelo. Peça ao assistente para se apoiar em optionals e guard para desembrulhar valores com segurança, para preferir value types (structs) e async/await em vez de pirâmides de callbacks, e para manter a lógica de view fora dos models. Como o compilador é rigoroso, um código gerado que compila costuma ser estruturalmente sólido — deixe que os erros guiem cada iteração.
struct Todo: Identifiable {
let id = UUID()
var title: String
var done = false
}
func pending(_ todos: [Todo]) -> [Todo] {
todos.filter { !$0.done }
}