0

SWIFT

#Swift
A
Alfredo Neto

O desenvolvimento do Swift teve início em julho de 2010 por Chris Lattner, com a eventual colaboração de muitos outros programadores da Apple. O Swift é inspirado em linguagens como Objective-CRustHaskellRubyPythonC#CLU, entre outras.[11] Uma versão beta da linguagem foi disponibilizada a desenvolvedores Apple durante a WWDC de 2014 .

A versão 1.0 foi lançada em 9 de setembro de 2014, com a versão Gold Master do Xcode 6.0 para iOS.[12] A versão 1.1 foi lançada em 22 de outubro de 2014, com o lançamento do Xcode 6.1.[13] Swift 1.2 foi lançado em 8 de abril de 2015, com o lançamento do Xcode 6.3.[14] Swift 2.0 teve seu anúncio durante a WWDC de 2015, e foi disponibilizado para a publicação de aplicativos na App Store em 21 de setembro de 2015.[15] Swift 3.0 foi lançado em 13 de setembro de 2016.[16] Swift 4.0 foi lançado em 19 de setembro de 2017.[17] Swift 4.1 foi lançado em 29 de março de 2018.[18] Swift 4.2 foi lançado em 17 de setembro de 2018.[19]

Swift ganhou primeiro lugar na categoria Linguagem de Programação Mais Amada em uma sondagem de desenvolvedores do Stack Overflow em 2015[20] e segundo lugar em 2016.[21]

Em 3 de dezembro de 2015, a linguagem Swift, bibliotecas suplementares, depurador, e gerenciador de pacotes, tornaram-se open source sob a licença Apache 2.0 com uma Runtime Library Exception,[22] e Swift.org foi criado para hospedar o projeto. O código fonte é hospedado no GitHub.

Durante a WWDC de 2016, a Apple anuncia um aplicativo exclusivo para iPad, chamado Swift Playgrounds, com a finalidade de ensinar a programação na linguagem. O aplicativo dispõe de uma interface análoga a um vídeo-game 3D que concede feedback gráfico conforme a disposição e execução das linhas de código.[23][24][25]

Em janeiro de 2017, Chris Lattner anunciou seu regresso da Apple por uma posição na Tesla Motors, deixando o cargo de líder de projeto do Swift para Ted Kremenek.[26][27]

Histórico de VersõesData de LançamentoVersão09/09/2014Swift 1.022/10/2014Swift 1.108/04/2015Swift 1.221/09/2015Swift 2.013/09/2016Swift 3.019/09/2017Swift 4.029/03/2018Swift 4.117/09/2018Swift 4.225/03/2019Swift 5.024/03/2020Swift 5.216/09/2020Swift 5.326/04/2021Swift 5.4

Características

Swift é 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. Em sua apresentação, foi descrita como "Objective-C sem a corpulência do C".[28][29]

O Swift retém conceitos chave do Objective-C como protocolosclausura e categorias, porém, frequentemente substituindo a sintaxe por versões mais limpas e permitindo a aplicação desses conceitos em outras estruturas da linguagem, como tipos enumerados (enums).[30]

Controle de acesso

O Swift suporta seis níveis de controle de acesso com os símbolos: openpublicinternalfileprivate, e private. Ao contrário de outras linguagens orientadas a objetos, esses controles de acesso ignoram hierarquias de herançaprivate indica que um símbolo só é acessível no escopo imediato, fileprivate indica que só é acessível internamente ao arquivo, internal indica que é acessível no escopo do módulo que o contém, public indica que é acessível de qualquer módulo, e open (apenas para classes e seus métodos) indica que a classe pode ser "subclassificada" de fora do módulo.[31]

Tipagem opcional

Uma importante característica nova no Swift são tipos opcionais, que permitem que valores ou referências operem de forma semelhante ao padrão comum do C, em que um ponteiro pode prover referência a um valor ou ser nulo.[32]

Tipagem de valor

Em muitas linguagens orientadas a objetos, objetos são representados internamente em duas partes. O objeto é armazenado como um bloco de dados posicionado no heap, enquanto o nome (ou "handle") do objeto é representado por um ponteiro. Objetos são passados entre métodos por meio da cópia do valor do ponteiro, permitindo assim, o acesso aos mesmos dados contidos no heap por qualquer um que possua uma cópia. Por sua vez, tipos básicos como valores de inteiros e pontos flutuantes são representados diretamente; o handle contém os dados, não um ponteiro para os mesmos, e esses dados são passados diretamente aos métodos por cópia. Esses estilos de acesso são denominados passagem por referência no caso dos objetos, e passagem por valor para tipos básicos.

De forma similar ao C#, o Swift oferece suporte nativo a objetos usando ambas as semânticas de passagem por referência e passagem por valor, a primeira usando a declaração class e a outra usando struct. Structs no Swift tem quase todas as mesmas características das classes: métodos, protocolos de implementação e uso de mecanismos de extensão. Por esse motivo, a Apple nomeou genericamente todos os dados como instâncias, ao invés de objetos ou valores. Contudo, structs não permitem herança.[33]

// Definição de struct
struct Resolution {
    var width = 0
    var height = 0
}

// Criação de instância
let hd = Resolution(width: 1920, height: 1080)

// Sendo "Resolution" um struct, uma cópia da instância é criada
var cinema = hd

Exemplos

Programa Olá Mundo

Ver artigo principal: Programa Olá Mundo

print("Olá, Mundo!")

Algoritmo de Trabb Pardo-Knuth

Ver artigo principal: Algoritmo de Trabb Pardo-Knuth

import Foundation

func f(t: Double) -> Double {
    sqrt(abs(t)) + 5 * pow(t, 3)
}

let a = (1...11).map { _ -> Double in
    guard let input = readLine() else {
        return 0
    }
    return Double(input)!
}

a.enumerated().reversed().forEach { (i, t) in
    let y = f(t: t)
    print(i, y > 400 ? "TOO LARGE" : y)
}

Desenvolvimento e outras implementações

Sendo em código aberto, a linguagem proporciona perspectivas de implementações para web. Alguns frameworks já foram desenvolvidos tais como o Kitura da IBM, Perfect e Vapor.[34][35][36]

Um grupo de trabalho oficial para "APIs de Servidor" também foi criado pela Apple,[37] com membros da comunidade de desenvolvedores Swift ocupando papel central.[38]

Outra implementação do Swift, chamada Silver, oferece compatibilidade com plataformas como Cocoa, a CLI da Microsoft (.NET), Java e Android; faz parte do Elements Compiler da empresa americana RemObjects Software.[39]

0
0

Comentários (0)

alfredo gelk neto

Brasil