Porquê continuamos a usar Python para criar soluções de Inteligência Artificial(IA) e Machine Learning (ML) mesmo sendo menos eficiente que outras linguagens em desempenho bruto?
Escrevo código em python já faz algum tempo. Enquanto estava estudando para aumentar minhas skills na linguagem me deparei com uma situação ou dado interessante.
Descobri que em termos de desempenho bruto python perde para outras linguagens ( como Rust ou C++) , ou seja , python é lenta. Apesar disso, python ainda é a escolha número 1 para IA e ML - me perguntei porquê, investiguei e decidi escrever sobre.
Então... Apesar de Python perder para outras linguagens em desempenho bruto, ela continua a ser amplamente utilizada em Inteligência Artificial, Machine Learning (ML) e até Ciência de dados por várias razões estratégicas, práticas ou por motivos de produtividade. Vou falar sobre aquelas razões que eu achei essenciais.
Python é uma das linguagens de alto nível com sintaxe simples e legível, isso permite pesquisadores e desenvolvedores se concentrar na lógica do problema e nos algoritmos específicos sem precisar se preocupar com detalhes complexos da linguagem. Isso é essencial em IA e ML, onde a prototipagem e experimentação são essências, fora que a maior parte dos profissionais vem de áreas como a matemática, ciências de dados ou estatística e não necessariamente da ciência da computação ou programação.
Python tem disponível uma grande coleção de bibliotecas e frameworks especializados em IA, ML e ciências de dados. Essas bibliotecas e frameworks cobrem áreas como : deep learning ( TensorFlow), manipulação de dados( Panda), visualização de dados( Matplotlib), machine learning( scikit - learn) e outras. Como essas bibliotecas são altamente especializadas e escritas em linguagem de baixo nível ( como C++), elas compensam a "lentidão" de Python.
Existe uma grande facilidade em integrar Python com outras linguagens e ferramentas o que permite que Python seja "rápida " onde importa mesmo não sendo a linguagem mais eficiente em deesempenho bruto.
Quando o assunto é IA e ML, poder testar ideias rapidamente é mais importante que "velocidade " no princípio. Essa capacidade permite a pesquisadores e desenvolvedores implementar e testar algoritmos de forma ágil - isso é crucial durante a experimentação.
Na grande maioria das aplicações de IA encontramos o gargalo do desempenho nos cálculos matemáticos intensivos, mas estes cálculos são realizados por bibliotecas otimizadas escritas em outras linguagens(linguagens de baixonível), Python atua como uma camada de abstração para uso dessas bibliotecas e o trabalho pesado é realizado por linguagens de baixo nível.
Os frameworks de Python usam GPU's e TPUs para acelerar os cálculo rodando códigos altamente otimizados, Python serve "unicamente" como interface para essas tecnologias.
Graças a sua grande e ativa comunidade, a disseminação de conhecimento e resolução de problemas em python é facilitada. Tutoriais, fóruns , cursos, apostilas... Tudo isso ajuda bastantes no momento em que nos deparamos com algum problema.
Apesar de "lenta" se comparada com linguagens como Rust ou C++, Python ainda é a escolha ideal para trabalhar com IA e ML por razões como ecossistema rico, facilidade de integração com tecnologias de alto desempenho e facilidade de uso. Fora que quando bibliotecas otimizadas e hardware especializado são utilizado a velocidade de desenvolvimento e produtividade superam na maioria dos casos a necessidade de desempenho bruto.
Como forma de simplificação, podemos encarar Python como a cola que une as tecnologias necessárias na construção de soluções de IA e ML eficientes.
A grande maioria das pessoas que trabalham com IA não tem um forte background em desenvolvimento, são matematicos, estaticos e por ai vai. Logo Python encaixa nesta demanda pois é muito simples para aplicar os conceitos matematicos envolvido em todo processo de IA.
do que ter uma curva de aprendizado gigantesco com outra linguagem.
Eu costumo dizer coloquialmente que python tem uma pegada didática.
É uma linguagem usada muitas vezes com o objetivo de mostrar o source.
Eu tenho essa impressão a bastante tempo.
Também tinha essa duvida kkkkk até ver o GeoHotz desenvolvendo o framework dele em python e C puros. Então descobri que é irrelevante a linguagem, pois quando chega na GPU, todas são processadas com a mesma eficiencia. Então a escolha de Python é puramente para acessibilidade. Já que um C++ não é pra qualquer um hahaha
Muito interessante esta análise, vejo que a adoção é dado o fato da curva de aprendizado da linguagem que é menor do que outras, mesmo você conseguindo fazer o "mesmo" em outras o esforço e o nível de projeção delas eram focados inicialmente para "use cases" diferentes.
Contanto que novas abordagens estão surgindo para se obter o melhor dos mundos, como por exemplo com este conjunto:
Bom demais a sua publicação para refletirmos sobre o uso de cada uma delas.
Há de se lembrar que a maioria das bibliotecs em python para IA utilizam backends em C ou C++, com o python apenas exportando as APIs.