Exemplo de uma macro em Elixir pra realizar inlining de soma de listas com valores conhecidos em compilação:
defmodule MyList do
defmacro sum_list(list) do
quote do
unquote(Enum.reduce(list, 0, &(&1 + &2)))
end
end
end
IO.inspect MyList.sum_list([1, 2, 3, 4, 5])
Resultado da compilação em Elixir. A cada compilação/execução de projeto, o código acima é convertido em Erlang VM bytecode, assim economizando realizar a soma em toda execução da função em requests de API, timers, etc.
IO.inspect 15
O código Spiral abaixo geraria 15
na linguagem escolhida, contando que um backend para tal tenha sido implementado.
inl sum list =
list |> listm.fold (+) 0
inl main () =
[1; 2; 3; 4; 5] |> sum
O código abaixo também geraria 15
, mostrando que transpilar não é o termo correto, e sim compilar, diferente de TypeScript para JavaScript.
type seq dim el = dim -> option el
inl fold fn init seq =
inl rec loop acc n =
match seq n with
| Some x => loop (fn acc x) (n + 1)
| None => acc
loop init 0
inl sum seq =
seq |> fold (+) 0
inl main () =
fun n =>
if n < 5
then n + 1 |> Some
else None
|> sum
Quando nem todos os dados das listas são conhecidos, Spiral tem a grande vantagem de pré computar o que é possível e gerar código normal para os backends escolhidos. Usando exclusivamente Elixir para escrever projetos, somente o código original é submetido à repositórios como Git e compilado a cada execução. Com Spiral o resultado da compilação também é submetido, os arquivos .ex e .rs gerados seriam versionados e incluidos manualmente em respectivos projetos existentes. Flags em código podem ser utilizadas pra gerar instruções diferentes de acordo com backend, similar com escrever Flutter ou React Native pra em teoria gerar Kotlin e Swift, porém com uma sintaxe pensada em programação funcional moderna, permitindo uma melhor customização.
Sobre redes neurais, poder gerar código legível para várias linguagens permite que aconteça o que você sugeriu, o output seria dados confiáveis pra treinamento. Não só isso, como a linguagem foi feita para implementar modelos de deep learning que utilizam essa capacidade de executar lógicas complexas em compilação pra “alocar” a exata quantidade de memória necessária – mais stack e menos heap, permitindo a álgebra linear ser executada em chips menos genéricos que GPUs. Além dessa capacidade de especialização em alguma tarefa determinada para hardwares pré-moldados, implementações de modelos de IA do zero usando Spiral também poderiam ser arquitetadas pra escrever e reescrever o próprio código, encontrando melhores formas de gerar output pra seus diferentes backends. Os modelos em Python de hoje são muito focados em dados e escalabilidade do processamento dos mesmos, podem ter até consciência do próprio código, mas sem influenciar a decisão de hiper parâmetros em escopo estrutural. Não tenho o treinamento formal pra explicar melhor essa parte, talvez esteja falando besteira, mas já consegui ver vantagens ao implementar coisas mais simples como smart contracts. Quem sabe até seja possível integrar IA e blockchain no futuro, da pra viajar bastante.
Tive que responder usando outra conta por causa desse erro :( Não é possível publicar porque há outras publicações mal avaliadas que ainda não foram excluídas. Exclua seus conteúdos mais recentes que estiverem classificados como não relevantes. 9d03783c-15b0-42fa-9fc4-f3f90d4136f9