Tutorial: Começar a programar em Swift no Linux
Foi há cerca de dois anos que a gigante de Cupertino apresentou a linguagem de programação Swift. Criada inicialmente para iOS e OSX a Apple decidiu torná-la uma open source estando actualmente disponível também para Linux.
Hoje vamos aprender como podemos criar um simples programa em Swift usando o GNU/Linux como sistema operativo.
O que é o Swift?
Lançada em 2014, o swift tinha como objectivo ser uma linguagem mais acessível a novos developers para iOS e OS X e que pretendia colmatar algumas limitações do C e do Objective C, nomeadamente as restrições de compatibilidade encontradas no C. Adoptou padrões seguros de programação e adicionou características modernas para tornar a programação mais fácil, mais flexível e mais divertida.
O que é necessário instalar?
Para poderem começar a programar em Swift no Linux devem seguir os seguintes passos:
Passo 1) Obter o swift
O Swift está actualmente disponível para plataformas Apple e Linux aqui. Para este tutorial usamos como sistema base o Ubuntu 15.10. Para obter a respectiva versão basta que executem o seguinte comando:
wget https://swift.org/builds/ubuntu1510/swift-2.2-SNAPSHOT-2015-12-01-b/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu15.10.tar.gz |
Passo 2) Descompactar
Depois de obter o snapshot basta que o descompactem:
tar -zxvf swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu15.10.tar.gz |
Passo 3) Adicionar o directório do swift à variável de ambiente PATH
export PATH=/home/pplware/swift-2.2-SNAPSHOT-2015-12-01-b-ubuntu15.10/usr/bin:"${PATH}" |
Nota: No nosso caso a pasta descompactada do swift está dentro de /home/pplware
Passo 4) Instalar dependências (opcional)
Por fim é necessário instalar algumas dependências caso o sistema informe que estão em falta.
sudo apt-get install git cmake ninja-build clang uuid-dev libicu-dev icu-devtools libbsd-dev libedit-dev libxml2-dev libsqlite3-dev swig libpython-dev libncurses5-dev pkg-config |
Primeiro programa em Swift
Se o swift estiver bem instalado, conforme os passos apresentados anteriormente, basta que executem o comando swift para iniciar o compilador.
Vamos agora correr duas instruções: A primeira é o tradicional Hello World e a segunda é uma conta de somar (15+5).
Experimentem agora criar um ficheiro com o nome app.swift com o seguinte conteúdo:
Para executar o código anterior basta usar o comando
swift app.swift |
E está feito! Agora é hora de aprenderem a programar para swift para desenvolverem as vossas próprias aplicações. Se alguém quiser colaborar nesta rúbrica, ensinando a desenvolver programas básicos, podem contar com todo o nosso apoio.
Este artigo tem mais de um ano
Eu não aconselhava começarem já com esta rubrica… como alguém que usa a linguagem diariamente aviso-vos que ela ainda tem muitas falhas…
Que falhas é que tem? Eu nunca encontrei nenhuma.
Usa por exemplo a função sortInPlace, funciona a 100% em modo de debug e depois quando fazes o archive para enviares para a store apenas funciona para sorts pequenos, de resto crasha. (pesquisa por sortinplace debug e ver muita gente a queixar-se)
Tens também certas coisas “básicas” tais como cellstyles a que o próprio sistema falha em enviar os enums correctos (por vezes ate tens problemas porque ele cria valores que não são processados a 32 bits)
tens também alguns tipos de blocks que te criam memory leaks e não deviam, tens que fazer workarounds para te assegurares do correcto uso da memória.
E tens outras pequenas coisas que de momento não me lembro mas tens que utilizar workarounds (tal como fazer casts em alguns casos para NSObject em vez de AnyObject pois ha métodos que funcionam relativamente mal).
No geral a linguagem é optima, mas tem ainda que ser mais trabalhada para poder ser mainstream. Para uma linguagem recente, está bastante boa.
Mas isso parecem problemas do compilador. Eu pesquisei pelo primeiro problema e tens razão. Pelo que eles dizem isso está resolvido na ultima versão do xCode.
Como tudo, a linguagem tem pouco tempo, e como tal ainda não está madura o suficiente. Mas não considero que tenha grandes falhas. De qualquer maneira, não utilizo todos os dias. Vou utilizando… Sempre a aprender. Abraço
Com base na experiência que evidencias, podes aconselhar me onde devia começar a programar?
estou super motivado para começar a programar (de novo), tirei 12 de informática, e a base foi claro, pascal, depois, visual basic, c e c++… vou fazer um refresh sobre os conceitos (pois ainda cá está tudo) e queria agarrar me a uma que dê noção para outras,, mas principalmente uma base forte de linguagem e raciocínio.
Sei que a resposta é provavelmente muito complexa, mas tenta ai na mesma 😀
Depende do tipo de aplicações que queres fazer. Eu faço aplicações para desktop windows, linux e Mac, e apps mobile para android. Uso c++ e/ou javascript com Qt / QML e consigo fazer apps nativas para essas plataformas todas, quase sem mudar o código fonte. Agora se quiseres programar bases de dados, scripts para servidores, fazer sites ou outra coisa qualquer tens de escolher outras ferramentas mais adequadas. Se não fazes ideia do que queres, e só queres programar para aprender umas coisas e ganhar experiência, experimenta por exemplo fazer umas apps para android com javascript e QML, sempre é mais fácil do que o c++ e podes mostrar as apps a correr no android ao pessoal amigo, o que tem a sua piada. Outra opção será começares a brincar com python, está na moda, é engraçado e há muitos tutoriais na net.
Boa programação 🙂
Gostava apenas que me esclarecessem o seguinte: É possível, através do linux criar aplicações gráficas com o Swift?
É uma boa pergunta, também gostava de saber.
Claro. Mas não da mesma maneira que no iOS/OSX, pelo Xcode…
imagino que possa ser possível usar código Swift dentro de aplicações gráficas para Linux, mas no estado actual não creio que dê para criar essas aplicações exclusivamente só com Swift, muito menos ainda criar aplicações gráficas para as frameworks da Apple
Terias de usar uma framework estilo Qt ou algo do género.
O Swift tem bridging com C/ObjC, por isso, sim.
no linux o Swift só tem bridging com C – Glibc.
Não, tem bridging com ObjC.
O GlibC, é o que serve de base à Foundation framework, nos sistemas Apple, é o CoreFoundation.
Lê o blog do Swift, lá podes verificar que menciona repetidamente a ausência de suporte para o runtime do Objective-C no Linux, avisando também que de momento há mecanismos que não funcionam no Swift para Linux porque seria necessário bridging com o Objective-C
está errado quando diz que no Linux não há suporte para Objective-C?
e o Foundation framerwork não tem nada a ver com o Glibc. A Apple disponibiliza um módulo para fazer a ligação do Swift ao Glibc, isto é algo semelhante ao bridging feito nos sistemas da Apple para C
@leandro Como passou a Open source têm aqui alguma ajuda da Apple e até o livro : http://swift.org
Abc
Nada melhor para programar que macbook, xcode, garageband, iwork , ilife, pcs windows vem sem nada apenas com virus de premio!
Boa.
Seria interessante a criação de um artigo com as principais linguagens de programação, comparando-as e dizendo o que é possível fazer com cada uma para se ver quais as melhores para cada situação bem como as mais completas, fala-se em tantas (rails, php, python, c, c++, c#, swift, java…) que quem quer começar antes de se decidir já não sabe em quais investir o seu tempo.
Boas, não sou o supra sumo da programação para te dar a resposta mas na minha opinião, o ideal é aprenderes pelo menos 3 linguagens diferentes. No mercado de trabalho, pedem com conhecimentos em mais do que uma linguagem. Mas na minha opinião o JAVA é a melhor opção para comecar, se saltares para Python é optimo porque está a aumentar o uso mas depois queres aprender outras como C++ ou Java e a diferença é maior. JAVA é universal, não estás sujeito a Windows ou Linux, funciona em qualquer plataforma. Além de que o suporte dos programadores é enorme… Mas é a minha opinião e o melhor mesmo é deitar mãos ao teclado 😉
Tem na wikipedia a comparação.
A minha ideia de comparação é diferente, lá só diz orientada para objectos… comparação é algo mais como pontos fortes e fracos, esta linguagem faz o que aquela faz e mais isto… e de preferência com alguns dos melhores exemplos onde a mesma foi usada, para motivar a sua aprendizagem, já que a pessoa tinha uma visão mais alargada… além de ficar inspirada.