Swift vs. Objective-C: 10 Razões o futuro favorece a Swift

linguagens de programação não morrem facilmente, mas lojas de desenvolvimento que se agarram a paradigmas que desaparecem. Se você estiver desenvolvendo aplicativos para dispositivos móveis e ainda não investigados Swift, tome nota: Swift não só irá suplantar o objective-C, quando se trata de desenvolvimento de apps para o Mac, iPhone, iPad, Apple Relógio, e dispositivos para vir, mas que também irá substituir C para sistemas embarcados de programação em plataformas da Apple.,graças a várias funcionalidades-chave, a Swift tem o potencial de se tornar a linguagem de programação de facto para criar aplicações imersivas, sensíveis e voltadas para o consumidor nos próximos anos.

Apple parece ter grandes objetivos para Swift. Ele otimizou o compilador para o desempenho e a linguagem para o desenvolvimento, e alude a Swift ser “projetado para escalar de ‘hello, world’ para um sistema operacional inteiro” na documentação da Swift., Embora a Apple ainda não tenha declarado todos os seus objetivos para a linguagem, os lançamentos do Xcode 6, Playgrounds e Swift juntos sinalizam a intenção da Apple de tornar o desenvolvimento de aplicativos mais fácil e acessível do que com qualquer outra cadeia de ferramentas de desenvolvimento.

Aqui estão 10 razões para se antecipar ao jogo, começando a trabalhar com Swift agora.

Swift é mais fácil de ler

Objective – C sofre todas as verrugas que se espera de uma linguagem construída em C., Para diferenciar palavras-chave e tipos de C, Objective-C introduziu novas palavras-chave usando o símbolo@. Como o Swift não é construído em C, ele pode unificar todas as palavras-chave e remover os numerosos símbolos @ na frente de cada tipo de Objetivo-C ou palavra-chave relacionada a objetos.

Swift drops legacy conventions. Assim, você não precisa mais de semicolons para terminar linhas ou parêntesis para cercar expressões condicionais dentro de se/else declarações. Outra grande mudança é que as chamadas de método não nidificam dentro uma da outra, resultando em Hell—bye-bye, ]]., Method and function calls in Swift use the industry-standard comma-separated list of parameters within parentheses. O resultado é uma linguagem mais limpa e expressiva com uma sintaxe e gramática simplificadas.

O código Swift assemelha-se mais ao Inglês natural, além de outras linguagens de programação populares modernas. Esta legibilidade torna mais fácil para programadores existentes de JavaScript, Java, Python, C#, E C++ para adotar Swift em sua cadeia de ferramentas-ao contrário do patinho feio que era objetivo-C.,

Swift é mais fácil de manter

legado é o que detém Objective – C back-a linguagem não pode evoluir sem C evoluir. C requer programadores para manter dois arquivos de código, a fim de melhorar o tempo de construção e eficiência da criação de aplicativos executáveis, um requisito que leva para Objective-C.

Swift retira o requisito de dois arquivos. Xcode and the LLVM compiler can figure out dependencies and perform incremental builds automatically in Swift 1.2., Como resultado, a tarefa repetitiva de separar a tabela de conteúdo (arquivo de cabeçalho) do corpo (arquivo de implementação) é uma coisa do passado. Swift combina o cabeçalho Objective-C (.h) e arquivos de implementação (.m) em um único arquivo de código (.rapido).

Objective-c’s two-file system imposes additional work on programmers—and it’s work that distracts programmers from the bigger picture., No Objective-C você tem que sincronizar manualmente os nomes dos métodos e comentários entre os arquivos, esperançosamente usando uma convenção padrão, mas isso não é garantido a menos que a equipe tenha regras e revisões de código em vigor.

Xcode and the LLVM compiler can do work behind the scenes to reduce the workload on the programmer. Com o Swift, os programadores fazem menos contabilidade e podem gastar mais tempo a criar lógica de aplicativos. A Swift corta o trabalho de boilerplate e melhora a qualidade do Código, comentários e recursos que são suportados.,

Swift é mais seguro

um aspecto interessante do Objective-C é a forma como ponteiros—particularmente nulos (nulos)—são tratados. Em Objective-C, nada acontece se você tentar chamar um método com uma variável ponteira que é nula (não inicializada). A expressão ou linha de código torna-se uma no-operation (no-op), e embora possa parecer benéfico que ele não crash, ele tem sido uma enorme fonte de bugs. Um no-op leva a um comportamento imprevisível, que é o inimigo dos programadores tentando encontrar e corrigir um acidente aleatório ou parar um comportamento errático.,

tipos opcionais tornam a possibilidade de um valor opcional Zero muito claro no código Swift, o que significa que ele pode gerar um erro de compilador à medida que você escreve código ruim. Isso cria um loop de feedback curto e permite que programadores codifiquem com intenção. Problemas podem ser corrigidos à medida que o código é escrito, o que reduz grandemente a quantidade de tempo e dinheiro que você vai gastar na correção de bugs relacionados à lógica de ponteiro do Objective-C.,

tradicionalmente, no Objective-C, se um valor fosse devolvido de um método, era da responsabilidade do programador documentar o comportamento da variável ponteira retornada (usando comentários e convenções de nomenclatura de métodos). No Swift, os tipos opcionais e os tipos de valor tornam explicitamente claro na definição do método se o valor existe ou se tem potencial para ser opcional (ou seja, o valor pode existir ou pode ser nulo).

para fornecer um comportamento previsível, a Swift despoleta um estoiro de tempo de execução se for utilizada uma variável opcional zero., Este acidente fornece um comportamento consistente, o que facilita o processo de correção de bugs porque obriga o programador a corrigir o problema imediatamente. O estoiro de tempo de execução Swift irá parar na linha de código onde foi usada uma variável opcional zero. Isto significa que o bug será corrigido mais cedo ou evitado inteiramente no código Swift.

Swift é unificada com a gestão de memória

Swift unifica a linguagem de uma forma que o Objective-C nunca uniu. O suporte para a contagem automática de referência (ARC) é completo através dos caminhos de código procedural e orientado a objetos., Em Objective-C, ARC é suportado dentro da Apis cacau e código orientado a objetos; não está disponível, no entanto, para o procedimento C código e APIs como gráficos de núcleo. Isto significa que se torna responsabilidade do programador lidar com a gestão de memória ao trabalhar com as APIs de gráficos centrais e outras APIs de baixo nível disponíveis no iOS. As enormes fugas de memória que um programador pode ter no Objective-C são impossíveis no Swift.

um programador não deve ter que pensar em memória para cada objeto digital que ele ou ela cria., Porque o ARC lida com toda a gestão da memória no tempo de compilação, a capacidade cerebral que teria ido para a gestão da memória pode, em vez disso, ser focada na lógica do aplicativo núcleo e novas funcionalidades. Uma vez que o ARC in Swift trabalha em código tanto processual quanto orientado a objetos, não requer mais switches de contexto mental para programadores, mesmo quando eles escrevem código que toca APIs de nível mais baixo-um problema com a versão atual do Objective-C.

gestão automática e de memória de alto desempenho é um problema que foi resolvido, e a Apple provou que pode aumentar a produtividade., O outro efeito colateral é que tanto Objective-C Quanto Swift não sofrem de um coletor de lixo correndo limpando para memória não utilizada, como Java, Go, ou C#. Este é um fator importante para qualquer linguagem de programação que será usado para gráficos responsivos e entrada do usuário, especialmente em um dispositivo táctil como o iPhone, Apple Watch, ou iPad (onde lag é frustrante e faz com que os usuários percebam que um aplicativo está quebrado).

Swift requer menos código

Swift reduz a quantidade de código que é necessária para declarações repetitivas e manipulação de cordas., No Objective-C, trabalhar com strings de texto é muito descritivo e requer muitos passos para combinar duas peças de informação. Swift adota características modernas de linguagem de programação, como adicionar duas strings juntamente com um operador”+”, que está faltando no Objective-C. Suporte para combinar caracteres e strings como este é fundamental para qualquer linguagem de programação que exibe texto para um usuário em uma tela.

O sistema de tipo no Swift reduz a complexidade das declarações de código — como o compilador pode descobrir tipos., Como exemplo, Objective-C requer que os programadores memorizem tokens de cadeia especiais (%s, %d, %@) e forneçam uma lista de variáveis separadas por vírgulas para substituir cada token. Swift suporta interpolação de string, o que elimina a necessidade de memorizar tokens e permite aos programadores inserir variáveis diretamente alinhadas a uma string virada para o usuário, como um título de etiqueta ou botão. O sistema de inferenciação de tipo e interpolação de cadeia mitiga uma fonte comum de quebras que são comuns no Objective-C.,

com Objective-C, alterar a ordem ou usar o item de texto errado faz com que a aplicação estoire. Aqui, Swift novamente alivia você do trabalho de contabilidade, traduzindo em menos código para escrever (código que agora é menos propenso a erros) por causa de seu suporte inline para manipular strings de texto e dados.

Swift is faster

Dropping legacy C conventions has greatly improved Swift under the hood. Benchmarks para o desempenho do código Swift continuam a apontar para a dedicação da Apple em melhorar a velocidade em que a Swift pode executar a lógica do aplicativo.,

de acordo com Primate Labs, fabricantes da popular Ferramenta de desempenho GeekBench, Swift estava se aproximando das características de desempenho de C++ para tarefas de computação em dezembro de 2014 usando o algoritmo Mandelbrot.

In February 2015, Primate Labs discovered that the Xcode 6.3 Beta improved Swift’s performance of the GEMM algorithm—a memory-bound algorithm with sequential access of large arrays—by a factor of 1.4. A implementação inicial de FFT-um algoritmo ligado à memória com acesso aleatório de grandes arrays—teve uma melhoria de desempenho de 2,6 vezes.,

outras melhorias foram observadas no Swift através da aplicação de melhores práticas, resultando em um impulso 8.5 vezes para o desempenho do algoritmo FFT (deixando C++ com apenas um ganho de desempenho de 1.1 tempo). The enhancements also enabled Swift to outperform C++ for the Mandelbrot algorithm by a factor of a mere 1.03.

Swift está quase a par com C++ para ambos os algoritmos FFT e Mandelbrot., De acordo com o Primate Labs, o desempenho do algoritmo GEMM sugere que o compilador Swift não pode vetorizar o código que o compilador C++ pode — um ganho de desempenho fácil que poderia ser alcançado na próxima versão do Swift.

menos colisões de nomes com projetos de código aberto

uma questão que tem atormentado o código Objective-C é a sua falta de suporte formal para espaços de nomes, que foi a solução de C++para colisões de nomes de código. Quando esta colisão de nome acontece no Objective-C, é um erro de linker, e o aplicativo não pode correr. Existem bases de trabalho, mas elas têm potenciais armadilhas., A convenção comum é usar um prefixo de duas ou três letras para diferenciar o código Objective-C que é escrito, digamos, pelo Facebook versus o seu próprio código.

Swift fornece espaços de nomes implícitos que permitem que o mesmo arquivo de código exista em vários projetos sem causar uma falha de construção e requerendo nomes como NSString (Next Step — Steve Jobs’ company depois de ser demitido da Apple) ou CGPoint (Core Graphics). Em última análise, Esta característica no Swift mantém os programadores mais produtivos e significa que eles não têm que fazer a contabilidade que existe no Objective-C., Você pode ver a influência de Swift com nomes simples como Array, Dictionary, E String em vez de NSArray, NSDictionary, e NSString, que nasceram da falta de espaços de nomes no Objective-C.

com Swift, os espaços de nomes são baseados no alvo a que um arquivo de código pertence. Isto significa que os programadores podem diferenciar classes ou valores usando o identificador de espaço de nomes. Esta mudança na Swift é enorme. Isso facilita muito a incorporação de projetos de código aberto, frameworks e bibliotecas em seu código., Os espaços de nomes permitem que diferentes empresas de software criem os mesmos nomes de código sem se preocuparem com colisões ao integrar projetos de código aberto. Agora, tanto o Facebook como a Apple podem usar um arquivo de código objeto chamado FlyingCar.swift sem quaisquer erros ou falhas de construção.

Swift suporta bibliotecas dinâmicas

A maior mudança no Swift que não recebeu atenção suficiente é a mudança de bibliotecas estáticas, que são atualizadas em lançamentos de pontos principais (iOS 8, iOS 7, e assim por diante), para bibliotecas dinâmicas., Bibliotecas dinâmicas são blocos executáveis de código que podem ser ligados a um aplicativo. Este recurso permite que aplicativos Swift atuais se conectem com versões mais recentes da linguagem Swift à medida que ela evolui ao longo do tempo.

o desenvolvedor submete a aplicação juntamente com as bibliotecas, ambas assinadas digitalmente com o certificado de desenvolvimento para garantir a integridade (hello, ans). Isto significa que o Swift pode evoluir mais rápido do que o iOS, o que é um requisito para uma linguagem de programação moderna. As mudanças nas bibliotecas podem ser incluídas com a última atualização de um aplicativo na App Store, e tudo simplesmente funciona.,

bibliotecas dinâmicas nunca foram suportadas no iOS até o lançamento do Swift e do iOS 8, apesar de bibliotecas dinâmicas terem sido suportadas no Mac por muito tempo. As bibliotecas dinâmicas são externas ao executável do aplicativo, mas estão incluídas no pacote do aplicativo baixado da App Store. Ele reduz o tamanho inicial de um aplicativo como ele é carregado na memória, uma vez que o código externo é ligado apenas quando usado.

a capacidade de adiar o carregamento num aplicativo móvel ou num aplicativo incorporado no Apple Watch irá melhorar o desempenho percebido para o usuário., Esta é uma das distinções que fazem com que o ecossistema iOS se sinta mais sensível. A Apple tem sido focada em carregar apenas ativos, recursos, e agora compilou e conectou o código no momento. A carga on-the-fly reduz os tempos de espera iniciais até que um recurso seja realmente necessário para exibir na tela.

bibliotecas dinâmicas no Swift tornam possível para alterações de linguagem de programação e melhorias para se propagar mais rápido do que nunca. Os usuários não precisam mais esperar por lançamentos do ponto iOS para se beneficiar de qualquer melhoria de desempenho ou confiabilidade que a Apple introduz no Swift.,

Swift Playgrounds encoraja a codificação interativa

os Playgrounds recentemente introduzidos por Swift são uma vantagem para desenvolvedores experientes. Os Playgrounds foram parcialmente inspirados pelo trabalho do ex-funcionário da Apple, Brett Victor. Os Playgrounds permitem aos programadores testar um novo algoritmo ou rotina gráfica, digamos 5 a 20 linhas de código, sem ter que criar um aplicativo de iPhone inteiro.

Apple adicionou execução de código inline para Playgrounds para ajudar os programadores a criar um pedaço de código ou escrever um algoritmo enquanto recebe feedback ao longo do caminho., Este ciclo de feedback pode melhorar a velocidade em que o código pode ser escrito porque o modelo mental que um programador tradicional precisa pode ser substituído por Visualizações de dados em Playgrounds. A programação é um processo iterativo, e qualquer esforço que possa ser reduzido ou usado para complementar o processo criativo irá tornar os programadores mais produtivos e libertá-los para resolver problemas maiores, ao invés de se concentrar em detalhes aborrecidos que Compiladores tradicionais têm imposto aos programadores.,Nota: pela minha experiência em ensinar programadores novatos, os Parques Infantis não são tão poderosos para iniciantes como são para programadores experientes. Simplesmente mostrando como uma variável funciona no playground Swift não ajuda um iniciante a entender a necessidade de uma variável de ponto flutuante versus uma variável inteira. A necessidade torna-se óbvia quando você mostra um aplicativo que pode se lembrar de sua última posição no feed de notícias do Facebook. Para iniciantes, a pergunta” por que ” só pode ser respondida com um exemplo de trabalho: um aplicativo para iPhone.,

Swift é um futuro que pode influenciar

Objective-C não vai a lado nenhum, mas não verá tantas mudanças importantes, graças à introdução da Swift. Algumas características Swift provavelmente migrarão para o Objective-C, mas o legado do Objective-C Em C significa que ele pode absorver apenas isso.

Swift fornece à comunidade de desenvolvimento uma maneira direta de influenciar uma linguagem que será usada para criar aplicativos, sistemas embarcados (se a Apple alguma vez licenciar um framework e chip embarcados para terceiros), e dispositivos como o Apple Watch.,a Apple está focada em proporcionar a melhor experiência do consumidor e está construindo apenas aquelas características consideradas merecedoras de atenção. Com o lançamento Swift 1.2 no Xcode 6.3, A Apple já corrigiu milhares de bugs relatados com o popular utilitário Apple Bug Reporter. A equipe de Apoio ao desenvolvimento e evolução da Swift está muito interessada em como a linguagem pode ser melhorada para apoiar melhor a comunidade de desenvolvimento que constrói aplicativos e sistemas usando a Swift.,

Swift: a linguagem mais acessível e de Destaque

A maior parte das mudanças que permitem que Swift se erga acima do Objetivo-C resultam de deixar cair a linguagem legada em que o objetivo-C foi construído. A Apple não está se afastando do cacau, que é a sua API e biblioteca de código para criar as experiências que sentem o Apple-esque. Em vez disso, eles estão fornecendo paridade total e tornando mais fácil interagir com novas APIs que suportam recursos como o toque de força ou Feedback Taptico.

muitas decisões legadas foram projetadas para tornar o design do compilador mais fácil., Swift está se concentrando em tornar o trabalho do desenvolvedor de aplicativos mais fácil, descartando a tensão mental das práticas de codificação legacy. À medida que os compiladores modernos melhoram, mais informação pode ser inferida a partir de menos código.

com Swift, programadores têm metade dos arquivos de código para manter, sincronização de código zero manual, e muito menos pontuação para o mistype—levando a mais tempo gasto escrevendo linhas de qualidade de código., O código é agora auto-documentação em Swift com a adição de tipos opcionais: uma compilação de tempo de mecanismo de segurança para retornar um valor ou nenhum valor, que é um problema comum com operações assíncronas, falhas de rede, entrada de usuário inválido, ou de dados de erros de validação. ARC is unified in Swift between both procedural C-style code, as well as object-oriented code using Apple ‘ s Cocoa framework.

os desenvolvedores irão descobrir que eles escrevem menos código no Swift, e as características da linguagem moderna suportam-nos em manter linhas de código mais legíveis., A Swift manterá todo o ecossistema da Apple na vanguarda da programação à medida que ela continua a evoluir, graças ao Suporte Dinâmico da biblioteca em iOS e Swift. Projetos de código aberto, SDKs de terceiros e frameworks que se integram com automação doméstica, dispositivos e serviços sociais serão mais fáceis de integrar sem aumentar os tempos de construção. Swift é quase tão rápido quanto C++ em alguns algoritmos e a última versão do Xcode 6.3 e Swift 1.2 apontam para otimizações adicionais de desempenho no horizonte.,

Add to that the fact that Playgrounds and Swift enable a new way to program with visual feedback that assistes the development of algorithms using inline data visualizations. Um loop de feedback mais curto e descrições gráficas tornam o processo de codificação iterativa ainda mais fácil de iniciar.

em última análise, Swift é uma linguagem de programação mais acessível e completa que permitirá aos desenvolvedores não só construir aplicativos, mas também atingir sistemas embutidos, como o novo lower-power Apple Watch, por muitos anos.,

  • 10 apresenta a Apple ‘roubou’ o rápido linguagem de programação
  • 9 coisas que odeio em objective-C
  • Avaliação: 7 excelente aplicativo móvel construtores
  • Avaliação: AppStudio é como o Visual Basic para celular dev
  • Avaliação: Appery.io pares mobile app builder com serviços de back-end
  • Avaliação: Alfa em qualquer lugar aces off-line de aplicativos móveis

Share

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *