Swift, o "One More Thing" da Apple que agradou milhares de desenvolvedores.
86
0

Swift, o "One More Thing" da Apple que agradou milhares de desenvolvedores.

A Apple é mundialmente conhecida por trazer inovações em diversas áreas da tecnologia e por criar tendências mundiais. Todavia, no âmbito da programação a Apple, até então, não era tão respeitada. Isso se deu por diversos fatores, como sua au...

Luiz Mello
9 min
86
0

Introdução

A Apple é mundialmente conhecida por trazer inovações em diversas áreas da tecnologia e por criar tendências mundiais. Todavia, no âmbito da programação a Apple, até então, não era tão respeitada. Isso se deu por diversos fatores, como sua ausência em criar ferramentas auxiliadoras para o desenvolvimento dentro de seu próprio ecossistema. A grosso modo, a comunidade de desenvolvimento se virava por conta própria para desenvolver no ecossistema Apple.

Email image
Compartilhar conteúdo

Felizmente, ao passar do tempo a Apple percebeu a sua falta de poder dentro da área de desenvolvimento e resolveu reagir. E então, em 2010 foi criado um projeto interno de desenvolvimento de uma linguagem de programação proprietária, o Swift.

Swift é uma linguagem de programação desenvolvida pela Apple para o desenvolvimento de apps, ferramentas e softwares dentro do seu ecossistema, como no iOS, macOS, watchOS e tvOS.

A linguagem foi pensada e desenvolvida para manter compatibilidade com a API Cocoa, uma interface de programação de aplicativos orientada a objetos nativo da Apple, e com códigos já existentes em Objective-C, uma camada muito fina construída sobre a linguagem C[1].

A linguagem Swift foi anunciada na WWDC (Worldwide Developers Conference) de 2014, uma conferência anual da Apple para desenvolvedores. O evento marca a chegada de várias novidades da empresa, sendo uma delas o Swift em 2014.

Swift, uma linguagem aberta e poderosa

A linguagem Swift é descrita, pela própria Apple, como uma linguagem aberta, poderosa, rápida e eficiente para todo mundo criar aplicativos[2]. Ainda, pode ser agregada com facilidade a um código Objective-C existente. Logo no início de sua vida, os desenvolvedores de todo o mundo já demonstraram grande paixão pela linguagem.

Chris Lattner, o criador de Swift, ingressou na Apple em 2005, onde trabalhou no desenvolvimento de Máquina Virtual de Baixo Nível (LLVM). A Apple usou a tecnologia do compilador LLVM para mudar a maneira como o Objective C é usado ao construir aplicativos. No ano de 2010, quando começou a desenvolver o projeto da linguagem Swift, ele manteve o sigilo total como um projeto de estimação.

Depois de um ano e meio, ele contou aos principais gerentes da Apple sobre o projeto, e eles ficaram impressionados com ele. Eles reuniram uma equipe para ajudar Lattner a desenvolver a linguagem. Outro ano e meio depois, o projeto de Lattner se tornou uma das principais direções da Apple, e a expansão da equipe se seguiu.

Em junho de 2014, a empresa lançou uma versão beta, posicionando a linguagem como uma forma mais rápida e eficiente de criar programas para iPhone, iPad e Mac.

Embora o Swift tenha atraído um grande número de críticos no início, muitos desenvolvedores apreciaram seus recursos. Cada nova versão trouxe melhorias significativas e avançou rapidamente para os nossos dias, onde conquistou o coração de muitos desenvolvedores.

Logo em 2015, a linguagem Swift ganhou primeiro lugar na categoria Linguagem de Programação Mais Amada em uma sondagem de desenvolvedores do Stack Overflow, e em 2016 ficou em segundo lugar na mesma categoria. Além da sondagem feita pelo Stack Overflow, a linguagem Swift ficou em 9º lugar em Janeiro de 2020 e em 16º nos dias de hoje, Junho de 2021, no indíce TIOBE, um indicador da popularidade das linguagens de programação.

Em questão técnica da linguagem, o Swift é descrita como uma alternativa à linguagem Objective-C que emprega conceitos modernos da teoria de linguagem de programação e se empenha em oferecer uma sintaxe mais simples e eficiente. Dito isso, a linguagem retém diversos conceitos chaves do Objective-C, como protocolos, clausuras e categorias.

Aprofundando em Swift

Entrando em termos profundos e técnicos, Swift é uma linguagem de programação 2.6x mais rápida que Objective-C, e 8.4x mais rápida que Python em sua versão 2.7.[3]

Desde a sua concepção inicial, o Swift foi construído para ser rápido, sendo essa uma das prioridades durante todo o seu desenvolvimento inicial e desenvolvimento atual. Usando a tecnologia do compilador LLVM de alto desempenho, o código Swift é transformado em código nativo otimizado onde obtém o máximo do hardware atual. A sintaxe e a biblioteca padrão também foram ajustadas para tornar a maneira mais óbvia de escrever seu código e ter o melhor desempenho, seja executado no seu Apple Watch ou em um cluster de servidores.

Além do rápido desempenho, a linguagem combina o melhor das linguagens amigáveis ao desenvolvedor, como JavaScript e Python. Sua sintaxe é clara, concisa, fácil de entender e manter. O melhor de tudo, em minha opinião, é o fato de que você não precisa digitar ponto e vírgula. Os tipos inferidos tornam o código mais limpo e menos sujeito a erros. Para melhor oferecer suporte a idiomas, as Strings são "feitas" para Unicode e usam uma codificação baseada em UTF-8 para otimizar o desempenho para uma ampla variedade de casos de uso. A memória é gerenciada automaticamente usando uma contagem de referência rígida e determinística, mantendo o uso de memória no mínimo, sem a sobrecarga.

Além disso, o Swift foi feito para usar o melhor do gerenciamento de memória. A linguagem oferece suporte a ARC em todas APIs, permitindo que os desenvolvedores economizem tempo no gerenciamento de memória.

A tipagem da linguagem é opcional, o que permite que valores ou referências operem de forma equivalente ao C, onde um ponteiro provê uma referência a um valor. Ainda, o Swift possui suporte nativo a objetos usando as semânticas de passagem por referência e de passagem por valor, usando class e struct, respectivamente.

Diferente de outras linguagens, através do Swift não é preciso reescrever ou refatorar projetos inteiros para atualizar em novas versões da linguagem de uma única vez. Com o Swift 5, por exemplo, você não precisa modificar nenhum código anterior do Swift 4 para usar a nova versão do compilador. Em vez disso, você pode começar a usar o novo compilador e migrar em seu próprio ritmo, aproveitando os novos recursos do Swift 5, um módulo por vez.

Algoritmos em Swift

A linguagem Swift é usada para inúmeras utilidades, mas foi pensada principalmente para o uso de desenvolvimento de aplicativos para o ecossistema Apple. Assim como quase todas as linguagens, muitas vezes é preciso o uso de ferramentas externas para de fato desenvolver algo prático para o uso do público em geral. Dito isso, a fim de demonstrar um pouco do uso de Swift, estarei introduzindo de forma geral visto que o foco é apresentar o Swift e não outras ferramentas, o framework SwiftUI, uma nova inovação da Apple.

O SwiftUI é um framework, ou seja, é um pacote de códigos prontos que podem ser utilizados no desenvolvimento. A proposta de uso desse tipo de ferramenta é aplicar funcionalidades, comandos e estruturas já prontas para garantir qualidade e produtividade no projeto.

Em 2019 junto o iOS 13, a Apple lançou o SwiftUI ao mundo. Ele mostra muito potencial por ser a melhor opção para definir layouts de interface de usuário iOS e macOS. Ainda, possui a vantagem de que tudo está in-code, ou seja, a quantidade de código necessária para definir um layout de usuário parece ser muito reduzida em comparação com as opções programáticas anteriores, como o framework UIKit. Além disso, é elegantemente declarativo e torna natural um paradigma de programação reativa.

Usando o SwiftUI, você obtém novas estruturas de código, como Views, Controllers e estruturas de layout para declarar a interface do usuário do seu aplicativo. A estrutura fornece manipuladores de eventos para fornecer toques, gestos e outros tipos de entrada para o seu app, e ferramentas para gerenciar o fluxo de dados dos modelos do seu aplicativo até as visualizações e controles que os usuários verão e interagirão.

Além da facilidade em escrever uma tela complexa com poucas linhas de código, o uso do SwiftUI representa um afastamento da arquitetura MVC (Model View Controller) que seguimos por décadas, e um movimento em direção a uma arquitetura MVVM (Model-View-ViewModel), que faz um trabalho melhor em manter o máximo de lógica fora da definição de sua visão código possível. E, acima de tudo, há uma visualização ao vivo que é visível no Xcode, um ambiente de desenvolvimento integrado e software livre da Apple, para que você possa ver os resultados do código de definição da interface que você está editando em tempo real, mais rápido do que recompilar e executar novamente o aplicativo no simulador, como é feito no framework UIKit.

Códigos em Swift: duas formas de fazê-lo

Apresentando o SwiftUI da devida forma, o seu uso é extremamente dependente da linguagem Swift, não há nem como discutir, visto que o framework foi criado para ser o auxiliar/adicional da linguagem. Logo abaixo há um trecho de código de uma interface simples usando a linguagem Swift e o framework SwiftUI. E em seguida, há um outro trecho de código usando o framework UIKit junto com a linguagem Swift. É perceptível a redução de código e de complexidade para criar a interface no mesmo nível de dificuldade usando o framework SwiftUI.

Através do código abaixo, é notável a facilidade de leitura e entendimento do código mesmo sem ter conhecimento na linguagem Swift ou no framework SwiftUI. O elemento botão sendo a simples e própria palavra em inglês: Button. Ou o texto, que para adicionar basta adicionar Text() e inserir uma String. A junção da linguagem Swift com o framework SwiftUI facilita muito o desenvolvimento de interfaces, independente do nível de complexidade, no dia-a-dia.

VStack {
ZStack {
Rectangle()
.fill(Color.secondary)
}
.onTapGesture {
}
HStack{
Text("Intensity")
Slider(value: self.filterIntensity)
}
.padding(.vertical)
HStack {
Button("Change Filter") {
}
Spacer()
Button("Save") {
}
}
}
.padding([.horizontal, .bottom])
.navigationBarTitle("Instafilter")

Por outro lado, o código abaixo foi feito através da linguagem Swift junto com o framework UIKit demonstra ser muito mais complexo de entender e programar. Há diversos elementos, nomes e estruturas desconhecidas no âmbito popular da programação, que estão inseridas apenas dentro do framework UIKit da Apple. Representações como @IBOutlet, ou funções prontas necessárias como viewDidLoad(), entre outros apenas para criar uma interface do mesmo nível de dificuldade da interface criada em SwiftUI. 

private var favMusics: [Music] = (try? MusicService())?.favoriteMusics ?? []
var albumDetails: MusicCollection?
var songInfo: Music?
@IBOutlet weak var coverImage: UIImageView!
@IBOutlet weak var songArtist: UILabel!
@IBOutlet weak var songTitle: UILabel!
@IBOutlet weak var buttonFavorite: UIButton!
@IBAction func buttonTap(_ sender: UIButton) {
if let songInfo = songInfo{
let isFavorite = favMusics.contains(songInfo) ? true : false
let imageName = isFavorite ? "heart" : "heart.fill"
let imageButton = UIImage(systemName: imageName)
buttonFavorite.setImage(imageButton, for: .normal)
favoriteDelegate?.toggleFavorite(musics: songInfo)
}
}
override func viewDidLoad() {
super.viewDidLoad()
if let songinfo = songInfo{
coverImage.image = UIImage(named: songinfo.id)
songArtist.text = songinfo.artist
songTitle.text = songinfo.title
}
}
}

Conclusões

Concluo este documento demonstrando a grande importância e do impacto que a linguagem de programação Swift teve dentro do nicho de desenvolvimento da Apple, através dos desenvolvedores, bem como o impacto que a linguagem trouxe ao mundo de desenvolvimento de forma geral. Ainda, através dos frameworks inovadores criados pela Apple, é perceptível o nível de agente facilitador a Apple está tendo com o desenvolvimento de seu ecossistema. Essa facilidade que a empresa está trazendo através da linguagem Swift e seus frameworks são inspirações e, de certa forma, concorrência para outros nichos de desenvolvimento e linguagens de programação.

Referências:

[1] Wikipedia:“Objective-C’. Disponível em: Acesso em: 30. Jun. 2021.

[2] Apple Developer:“An Introduction to Swift”. Disponível em: Acesso em: 30. Jun. 2021.

[3] Apple: “Swift”. Disponível em: Acesso em: 30. Jun.2021.


E aí, gostou desse artigo? Quer me apoiar de alguma forma?

Se você gostou desse artigo e quer me apoiar de alguma forma, aqui vos trago algumas opções:

  • Me siga no PingBack! É fácil e de graça =)
  • Compartilhe meu conteúdo para outros devs! Compartilhar conhecimento nunca é de mais.
  • Me apoie pagando um café (amo muito), me envie um Pingback! 🥰
Deixe seu Pingback
Compartilhar conteúdo
Seguir meu Canal