Swift fala todas as línguas: guia de integração com Python, C e muito mais

Treinador Online de Python para Iniciantes

Aprenda Python facilmente sem sobrecarga teórica. Resolva tarefas práticas com verificação automática e escreva código diretamente no navegador.

Start Course

Por que o Swift precisa "saber" outras linguagens?

\n\n

Imagine que você é um chef em um restaurante de elite. Você tem uma faca de marca (Swift) — afiada, ergonômica, encaixa perfeitamente na mão. Mas para cortar um peixe fugu, você precisa de um bisturi especial (C), e para criar um mousse perfeito, de um liquidificador caro (Python). Você não vai cortar o peixe com a faca principal, vai? Na programação é a mesma coisa: a integração do Swift com outras linguagens não é um sinal de fraqueza, mas o auge da maestria.

\n\n

O ecossistema Swift está evoluindo rapidamente, mas não existe no vácuo. Bibliotecas de machine learning são escritas em Python, parsers de alta performance em C, e código legado de sistemas bancários em C++. Saber unir esses mundos abre possibilidades cósmicas para o desenvolvedor. Neste artigo, vamos analisar três cenários principais: como integrar Swift com Python, C e C++.

\n\n

1. Swift + Python: a magia do PythonKit

\n\n

A Apple não seria quem é se não tornasse a integração o mais "Swift-like" possível. PythonKit é um framework que permite chamar código Python diretamente do Swift, como se fossem funções nativas. A instalação é simples: basta adicionar a dependência via Swift Package Manager.

\n\n

Configuração do projeto

\n\n

Adicione no Package.swift:

\n\n
let package = Package(\n    name: "MySwiftPythonApp",\n    dependencies: [\n        .package(url: "https://github.com/pvieito/PythonKit.git", branch: "master")\n    ],\n    targets: [\n        .target(name: "MySwiftPythonApp", dependencies: ["PythonKit"])\n    ]\n)
\n\n

Exemplo: calculando números de Fibonacci

\n\n

Suponha que você tenha um script Python super otimizado para calcular Fibonacci. Por que reescrevê-lo em Swift se pode chamá-lo diretamente?

\n\n

Arquivo Python (fib.py):

\n
def fib(n):\n    a, b = 0, 1\n    for _ in range(n):\n        a, b = b, a + b\n    return a
\n\n

Código Swift:

\n
import PythonKit\n\n// 1. Carregamos o módulo (sem .py)\nlet fibModule = try Python.attemptImport("fib")\n\n// 2. Chamamos a função\nlet result = fibModule.fib(10)\nprint("10º número de Fibonacci:", result) // Saída: 55\n\n// 3. Trabalhamos com numpy (se instalado)\nlet np = Python.import("numpy")\nlet array = np.array([1, 2, 3, 4])\nprint(array * 2) // Saída: [2 4 6 8]
\n\n

Observe: Python.attemptImport é um wrapper seguro. Se o módulo não for encontrado, você receberá um erro, não um crash do aplicativo. A integração Swift e Python via PythonKit funciona tanto no macOS quanto no Linux (com Python 3.x instalado).

\n\n

Quando isso é necessário?

\n
    \n
  • Você precisa de uma biblioteca que não existe em Swift (por exemplo, pandas ou scikit-learn).
  • \n
  • Você está escrevendo um aplicativo servidor em Vapor e quer usar Python para processos ETL.
  • \n
  • Você está prototipando um modelo de ML em Python e depois o incorpora em um aplicativo iOS.
  • \n
\n\n

2. Swift + C: conversa direta com o "hardware"

\n\n

C é uma linguagem lendária. Nela foram escritos os kernels de SO, drivers e metade do universo Unix. O Swift foi projetado para que a interoperabilidade com C seja o mais indolor possível. Você pode chamar funções de qualquer biblioteca C sem usar wrappers.

\n\n

Importando funções C

\n\n

Crie um arquivo bridge.h e coloque os cabeçalhos necessários:

\n
// bridge.h\n#include <math.h>\n#include <string.h>
\n\n

Agora no Swift você pode usar essas funções diretamente:

\n
// Swift\nimport Foundation\n\nlet angle = 45.0 * .pi / 180.0\nlet sine = sin(angle) // Função C de math.h\nprint("Seno de 45°:", sine)\n\n// Trabalhando com ponteiros\nlet str = "Olá, C!"\nstr.withCString { cString in\n    let length = strlen(cString) // Função C\n    print("Comprimento da string:", length)\n}
\n\n

Criando sua própria biblioteca C

\n\n

Supo

Blogs

Book Recommendations