Hello, Swift!

Ícone da Swift

Faz dois meses que a Apple apresentou a sua nova geração de plataformas e, com elas, a empresa trouxe mais uma linguagem de programação ao mercado.

A Swift já foi discutida por aqui em alguns artigos e também está sendo bastante explorada por desenvolvedores ao redor do mundo — engajados não apenas em saber como produzir aplicativos com ela mas, também, em acompanhar a sua evolução, afinal de contas, testemunhamos até uma mudança no jeito de a empresa se comunicar com seus parceiros em função do seu novo projeto.

Cabeçalho do blog da Swift

“Novo”, aliás, é uma força de expressão: a Swift já está sendo trabalhada há anos pela Apple. Por muito tempo foi projeto de um homem só — mais precisamente de Chris Lathner, que no passado já esteve por trás de outras revoluções em desenvolvimento para Macs e aparelhos rodando iOS. Fora do escopo dos lançamentos para consumidores e algumas áreas relacionadas em que a imprensa e os entusiastas da Maçã ficam mais ligados, tecnologias para criação de aplicativos são de extremo interesse dela há anos em seus produtos.

Até hoje, no entanto, era difícil isso ganhar maior notoriedade. Mas por quê? A seguir tentamos refletir um pouco sobre o histórico da Apple em tecnologia e mostrar o que é fundamentalmente diferente em Swift.

No passado, uma aposta em união de paradigmas

Como já falamos, Objective-C é a linguagem de programação que permeia o desenvolvimento de softwares na Apple há quase 20 anos. Todavia, a sua história é muito mais rica do que isso. Começa na década de 1980, com Brad Cox e Tom Love engajados em levar para a tradicional C alguns conceitos de uma linguagem mais moderna da época, conhecida como Smalltalk. Era uma união de paradigmas de programação orientada a objetos com a robustez e a tradição de quem deu origem a uma boa parte dos sistemas computacionais mais modernos do mundo.

Esse trabalho foi apreciado pela NeXT, empresa fundada por Steve Jobs no seu “êxodo” da Apple, entre 1985 e 1996. Neste período, a NeXT esboçou as principais estruturas que dariam origem ao Mac OS X no final da década de 1990, incluindo os principais pilares do atual framework Cocoa: AppKit e Foundation. A base de todo esse desenvolvimento, claro, era Objective-C.

Para a época, a aposta foi ousada. Nenhuma outra empresa usava Objective-C em tecnologias: nos anos seguintes, o Java tomaria o mundo por ser extremamente mais versátil e multiplataforma; a Microsoft tentaria reproduziu o mesmo com .NET e tecnologias similares para Windows e, no meio disso, emergiram diversas tecnologias para fomentar inovação em desenvolvimento para a internet.

A bagagem da NeXT dentro da Apple fez do Mac OS X um exemplo de sistema operacional sólido e elegantemente programável, mas também um nicho. Mesmo hoje, somos 80 milhões de usuários ao redor do mundo — nada perto do que o Windows ou a própria web abrangem como plataformas. Mas no meio do caminho, a Apple trouxe consigo iPhones e iPads, levando a empresa a centenas de milhões de pessoas — o que ajudou a difundir o conceito de se usar aplicativos e, talvez mais importante, de se criá-los. Nenhuma outra audiência é tão assistida pela empresa quanto a de desenvolvedores, o que ajudou na aproximação de milhares de empresas ao longo dos últimos sete anos. Com isso, a Objective-C pôde ganhar maior notoriedade.

No geral, Objective-C é uma linguagem complexa mas que nos serve muito bem até hoje — e seguirá servindo indefinidamente, por ora: alguns dos melhores softwares do mundo estão no atual OS X e assim foram criados. Mas a comunidade impulsionada pelo iOS, desde 2008, sempre questionou muitos aspectos de como a Apple deveria atuar e o que suas tecnologias deveriam suportar. Surgiu então espaço para muitas melhorias.

Um presente de transições

Entre 2008 e 2014, passaram pelas pranchetas de desenho da Apple diversas tecnologias e parte delas eram respostas a um desafio: tornar as coisas mais fáceis de se programar. Quanto mais a fundo entre as camadas de uma plataforma você precisa ir para obter resultados, geralmente o esforço é maior. Isso era realidade para a empresa em várias áreas, como gráficos e paralelismo, multiprocessamento e multimídia, entre muitas outras.

Ao mesmo tempo, a difusão de outras linguagens de programação em plataformas concorrentes tornou possível a escrita fácil de aplicativos capazes de atingir a mesma qualidade com menos esforço, bem como se adaptar melhor a padrões de desenvolvimento que estão em constante evolução. Tudo isso fez a Objective-C mostrar sua idade perante o processo de criação em outras plataformas.

A Apple mostrou melhorias. Por exemplo, criou um moderno compilador para suas plataformas, o atual LLVM (um dos melhores do mercado). A partir dele, lançou funções para facilitar o desenvolvimento nas suas ferramentas (como análises estáticas e auto-corretores), e para facilitar a identificação e correção de erros por parte de desenvolvedores. Até mesmo contribuiu para o fim da dependência de ponteiros e referências a objetos vindas do C e C++ para gerir memória, inicialmente usando garbage collection (mas sem atingir a efetividade do C# e do Java) e, mais recentemente, com uma nova tecnologia chamada ARC (para contagem automática de referências a objetos).

Muitas coisas, entretanto, viravam remendos em torno de uma linguagem de programação que carrega uma pesada bagagem. Foi aí, segundo executivos e engenheiros da Apple, que veio a pergunta: e se ela não existisse?

Entendendo — um pouco de — Swift

É muito difícil criar todas as estruturas necessárias para suportar desenvolvimento nativo em uma nova linguagem. Mas a Apple já tinha investimentos nisso no lugar, controlando toda a arquitetura de desenvolvimento para iOS e OS X. Como linguagem de programação para um público tão diverso, a Swift nasceu rápido. Ao contrário de empresas que no passado inventaram linguagens e depois tiveram que inventar também as plataformas, a Maçã já tinha uma plataforma evoluída para o presente: só faltava uma linguagem que pudesse interagir melhor com ela.

Agora, o quão melhor é isso? Vejamos a seguir em alguns exemplos de recursos.

Funções modernas

Se você não precisar ir muito a fundo em uma plataforma para obter um resultado, consegue programar com menos esforço. Em uma linguagem de programação, isso significa contar com mais técnicas e funções à disposição. Entre Objective-C e Swift, a Apple trouxe uma série delas, incluindo:

  • Tipos implícitos;
  • Módulos, que eliminam arquivos de cabeçalho (headers);
  • Namespaces;
  • Tuplas;
  • Clasuras;
  • Tipos Opcionais;
  • Sobrecarga de Operadores.

Muitas dessas novidades são padrões de outras linguagens, mas são coisas que os desenvolvedores da Apple agora podem contar como facilidades, para tornar programas menos difíceis de se manter e mais fáceis de evoluir. Aliado a isso, a Apple criou um ambiente de playgrounds onde um desenvolvedor pode escrever rapidamente e ver os resultados em ação quase que instantaneamente, sem a necessidade de se criar um projeto inteiro de software e lidar com todas as fases de construção.

Até para o mais simples dos programas há diferença na hora de se programar. Em Objective-C, um dos modelos de programa de linha de comando que a Apple fornece com o Xcode imprime uma linha de texto na tela da seguinte forma:

Hello Objective-C

Através de Swift, uma única linha de código exibe resultados em tela — sem a necessidade de compilação.

Hello Swift

REPL

Além de se criar programas, a Swift também ajuda desenvolvedores a interagir com eles através de programação, mesmo depois de compilados. Um recurso chamado REPL (acrônimo para Read-Eval-Print-Loop) deixa um ambiente de scripts à disposição para interação com aplicativos rodando em tempo real.

Segurança

Para quem estiver começando em desenvolvimento, usar a Swift pode ser uma boa possibilidade para se evitar más práticas de programação. Algumas delas são impossíveis em relação ao que existe hoje para iOS e até para outras plataformas. Através de ARC, desenvolvedores não precisam lidar com ponteiros para gerenciar memória.

Também não é necessário lidar com inicialização de variáveis, já que todas estão sempre prontas antes do uso. A linguagem também é segura o bastante para evitar overflows e conta com padrões próprios de segurança, tentando estar a par do que as práticas de desenvolvimento atuais exigem.

Desempenho

Por ter sido criada para funcionar com o compilador LLVM, da própria Apple, a linguagem Swift pode trabalhar com diversas otimizações específicas. Desde sua introdução, na WWDC 2014, alguns desenvolvedores se divertiram bastante analisando como programas se comportam em determinados cenários comparados com Objective-C.

Recentemente, Jesse Squires, um desenvolvedor baseado em San Francisco, produziu longos testes comparando diversos algoritmos de sort entre Objective-C e Swift. Os resultados variam muito conforme o código é otimizado para execução pelo compilador e, no geral, trata-se de algo em que a Swift depende muito. Em alguns testes, algoritmos rodaram até 35 vezes mais rápido do que em Objective-C.

Uma nova linguagem para uma nova era

Comumente eu digo que em computação não existe o melhor nem o pior, e sim o que atende às nossas necessidades. Entre as críticas de quem esperava outras atitudes da Apple e a expectativa por se tornar algo revolucionário, eu acho que a Swift fica no meio termo. Não será o melhor dos mundos para todos, mas vivemos com outras necessidades do que quando o Objective-C surgiu, em 1983.

Uma linguagem moderna que esteja mais alinhada com o que desenvolvedores precisam atualmente ajuda muito, e a tendência é que teremos, sim, isso no futuro.

A Swift não está pronta — bem como o OS X Yosemite e o iOS 8. Durante minha avaliação com outros desenvolvedores, vimos muita coisa que deve mudar. É algo para se pegar os livros já publicados, ir se familiarizando e criando novos projetos nos casos viáveis. Até porque o Objective-C ainda não vai a lugar nenhum por muito tempo.

Além disso, contrariando a visão de alguns críticos/entusiastas, o que eu acredito é que a Swift não chega para revolucionar nada, mas sim para expressar mais uma visão em um novo mundo em desenvolvimento de software, que exige abraçar novos desenvolvedores facilmente. Quando você tem algo mais interativo em mãos, a tendência é que as barreiras de criação na sua plataforma diminuam, e muitas das iniciativas tomadas pela Apple em torno das suas tecnologias neste ano deixam isso claro — o que torna as perspectivas para o seu futuro bastante promissoras.

Recursos

Não dá para falar tudo de uma linguagem de programação num único artigo. Abaixo estão algumas recomendações de artigos e livros para quem quiser conferir:

Posts relacionados

Comentários