Já tinha ouvido falar, mas infelizmente as "soluções da moda" fazem a gente virar e olhar outras direções. E saber que tanta coisa pode ser feita dá aquela vontade imensa que querer conhecer! Grato por compartilhar!
Cara, vai resolver seu problema mas não vai ser a ferramenta mais eficiente... da mesma forma que um node n tem a mesma eficiencia que um Golang, uma gambiarra em python pra desenvolver apps não vai ter a mesma eficiencia do que um RN, Flutter ou Kotlin.
Aí está uma pergunta interessante de investigar. Tem as soluções já citadas, mas não vale a pena usar em alguns cenários?
Acredito que para projetos paralelos sim, vale a tentativa, o perigo está em querer usar soluções duvidosas em apps que vão pra produção, não acho que vale a pena, a gente já viu esse roteiro antes, cada ferramenta foi desenvolvida em prol de um objetivo, acho que é misturar muito as coisas querer atribuir responsabilidades para ferramentas que nao foram pensadas pra isso. Como disse, vai resolver seu problema, mas será a mais eficiente? Na maioria das vezes não.
Sim, vale à pena usar em diversos cenários. Vou te dar um cenário realista: eu estava numa clínica agora, e na entrada da clínica tinha um tablet com um software pra realizarmos o check-in.
Esse software da clínica se assemelha a maioria dos exemplos do mundo real: mais de 90% de todas as aplicações que existem não são aplicações que exigem alta performance, são apenas formulários: textos e imagens, campos de input, botões e animações. Realizam chamadas para API, conexão a um banco de dados offline. É isso.
Se você rodar Kivy no Android, você pode rodar qualquer código Java normalmente. Eu, por exemplo, estou realizando impressões térmicas via bluetooth usando esta biblioteca Java: https://github.com/anastaciocintra/escpos-coffee
Se você quiser realmente ter a linguagem mais eficiente possível pra Android, você iria codar em Java ou Kotlin. Mas a questão é, isto te interessa? Se sim, top!
Mas se você prefere continuar se divertindo com Python, você vai ter uma ferramenta excelente. Fala sério, tem alguma diferença se seu formulário renderiza em 5 milissegundos ou em 10 milissegundos? 😂
E quantos meses ou anos vai levar para você dominar uma linguagem completamente diferente como Java, Swift, Kotlin, Rust, etc? A gente gosta de Python justamente por ser nosso canivete suíço: a gente faz de tudo um pouco. Não precisa ser o melhor do mundo.
E pra ser bem sincero, se você precisa otimizar alguma porção crítica do seu código, você pode fazer o que as maiores bibliotecas em Python fazem: são escritas em C, em Rust, ou usam cython, e depois você chama essas funções a partir do seu código Python.
Exatamente isso filipe, geral tem um certo preconceito com python por ser de fato lenta e não ter um framework popular para mobile, quem tem tempo para aprender uma lang nova e seus frameworks vai lá e faz isso, mas se teu problema é específico e performance não é o mais importante, então python pode ser uma boa.
Eu não me importo se uma aplicação demora 5, 10 ou mais milissegundos pra abrir kkk, e o cliente também não tá nem aí pra isso, quero algo que não me tome muito tempo de desenvolvimento e o cliente quer algo intuitivo e funcional.
Tem gente que ainda usa sistemas em clipper e ainda desenvolvem sistemas assim e não estão nem aí pra linguagem em que ele é escrito, usuário quer é algo que funcione.
Se isso resolve seu problema e o problema do cliente, então tá ótimo.
Exatamente. É como os entregadores: quem não tem moto entrega de bicicleta.
Alguém poderia argumentar "ah, por que você não junta dinheiro por vários meses, compra uma moto e então faz o delivery de comida? É muito mais eficiente!!", e a resposta é simples, "eu tenho uma bike e eu preciso trabalhar agora!".
Pra mim, que estou recebendo a comida, é irrelevante qual o meio de transporte de quem me trouxe a comida. Se ele veio de bicicleta, de moto, de carro, de metrô ou avião, eu só quero comer! kkkkk
Bem isso.
O mais importante pra um trabalho bem feito é você gostar do que faz. Não adianta eu dizer pra você programar em Rust se sua paixão é Python. Essa paixão pode ser mais decisiva para o sucesso do que escolher uma tecnologia apenas por suas vantagens técnicas.
Pra quem gosta de programar em Python, tem experiência na área e não tem vontade de aprender outras linguagens, o Kivy pode ser uma excelente opção para você desenvolver para desktop e mobile.
Acho que "aprenda Dart", ou "aprenda html+css+typescript+react", ou "aprenda Rust", são boas dicas se eu quiser focar em apenas um critério: qual a ferramenta mais eficiente possível para realizar X?
Mas no mundo real, as pessoas não têm tempo nem interesse para aprender todas as tecnologias, linguagens e frameworks disponíveis, que mudam constantemente a cada semana. Eu mesmo, apesar de ter experiência com typescript e react, não me divirto tanto quanto quando estou programando na minha linguagem favorita: Python.
Mas meu ponto é eficiencia, pode dizer o que for, nao vai mudar o fato de que as "queridinhas" sao as "queridinhas" por conta de sua eficiencia na resoluçao de tais problemas, é muito facil falar "vai, programa com o que ama, use um python na web, um golang pra desktop, um c pra mobile", agora quero ver ter a maturidade tecnica de dizer o que é e o que nao é eficiente pra problema x e y, esse é o meu ponto. Como eu disse, vai resolver seu problema, mas vai correr o risco de enfrentar inumeros problemas no desenvolvimento e na escalabilidade do projeto.
A questao é deixar o saudosismo de lado e passar a entender que sao no fim ferramentas. Eu trabalho com front end, meu main, mas fui designado a criar um app offline para a empresa, corri atras e to terminando o aplicativo com quase 2 meses de desenvolvimento, eu gosto do mobile? nem de longe, mas eu o faço, afinal, nao sou um programador front end, sou um solucionador de problemas...
E eu nao gosto da area por tecnologia x ou y, eu amo a area por conta desse mundo diverso, com inumeras possibilidades de fazer o que quiser, como quiser e quando quiser, ser literalmente um "mago" do mundo moderno, isso que me fascina nessa area, nao uma "tszin com rééct", isso é bobagem, eu nao estudo ferramenta x ou y, eu estudo PROGRAMAÇAO e o seu vasto mundo, é assim que penso, espero que tenha entendido meu ponto.
Entendo sim, perfeitamente, e concordo com você.
O ideal é você usar a melhor ferramenta para cada tipo de problema, isso não há dúvidas.
Mas tem um ponto na questão da 'eficiência', se você estiver se referindo à velocidade de execução, é uma coisa, mas velocidade de desenvolvimento é outra!
Rust pode ser a melhor linguagem do mundo, mas se você leva dois meses pra terminar o "Hello World" que pediram na empresa, você está demitido! Não importa se seu "Hello World" roda em 8 nanossegundos mais rápido que o meu. Não adianta você fazer algo 2x mais eficiente mas levar 30x mais tempo!
Uma coisa é você estar trabalhando pra Google e está tentando fazer um app pra escalar para bilhões (não é realidade pra maior parte das pessoas simples, como eu).
Outra é você trabalhar pra padaria da esquina, e quer fazer apenas um controle de estoque simples pra entregar no mês que vem.
Garanto que você começa hoje em Python e no mês que vem você entrega um app excelente que faz o que precisa. Sem firulas.
Agora se você tiver que parar pra aprender uma nova linguagem do zero, ou ainda passar um prazo de desenvolvimento de 6 meses, você vai acabar ficando sem pão. Então acredito que depende muito do contexto: qual a complexidade da aplicação a ser desenvolvida, qual o prazo de desenvolvimento, quem vai desenvolver (quais suas experiências com cada uma das tecnologias que você pode utilizar pra criar o app), para quem vai ser desenvolvido, qual o tamanho do público da aplicação, e assim por diante... cada um deve avaliar conforme sua própria realidade.
Se você for começar do zero alguma coisa, nesse caso o melhor seria você já começar com a melhor ferramenta. Mas até isso é muito volátil, a melhor ferramenta hoje pode ser a pior amanhã. O cara pode ser o maior manjador de Dart da Sibéria, mas se depois de amanhã o Flutter for descontinuado, provavelmente é um conhecimento que você não vai poder fazer muita coisa usando apenas Dart. Quem usa Dart pra qualquer coisa além de Flutter? Eu nunca vi.
Mas se você aprender uma framework em Python, seja ela qual for, e amanhã tiver outra melhor, provavelmente você vai continuar programando em Python, porque a linguagem em si é sólida. Enfim, tentando enxergar um equilíbrio nesses pontos todos que você trouxe.
Penso exatamente como você, às vezes ficamos muito noiados em relação ao desempenho da aplicação, mas esquece que muitas das vezes a diferença é inútil...
O resultado disso é: todas as ferramentas são importantes e devem ser trabalhadas para serem melhores em todos os sentidos, assim, qualquer problema pode ser resolvido.
Pois é! Usando o pyjnius
você consegue ter acesso a toda a API do Android a partir do python, é top demais!
Em breve postaremos mais conteúdo e vamos mostrar sim que Kivy é mais robusto do que pensam. Até hoje não vi nenhuma funcionalidade no Android que não dê pra fazer no Kivy.