Boas,
estava aqui de volta deste tópico e acho que posso dar algumas dicas.
Vou tentar ser um bocado leigo só mesmo porque sou de informática e por vezes é complicado perceber o conhecimento das outras pessoas sobre o tema. Vou tentar fazer algumas analogias também para deixar claro.
1) Linguagem de programação
O Python é simplesmente uma linguagem de programação. Há N linguagens de programação cada uma com as suas caracteristícas. Assim como os automóveis. Podemos ter um carro que anda muito bebe pouco e é desconfortável; podemos ter outro que é super confortável, consumos baixos e não anda muito. E é com base nisto que vou falar do Python.
- Claramente o Python é o primeiro carro. É "leve" e é capaz de processar toneladas de dados num piscar de olhos. Por outro lado peca noutros lados como a facilidade de compreensão do código em si. As contribuições online. O facto de haver poucas contribuições online vai obrigar-vos a terem que se sentar e a aprender a fazer... tudo! de raiz. É doloroso. É como montar um carro em versão planeta Agostini: vai ser custoso.
- Depois há outras linguagens que são mais "humanas", mais perceptíveis de se trabalhar. E eu venho falar-vos aqui um bocado do Java.
Que fique claro o seguinte: Eu não sou de todo defensor/Evangelista do Java. O Java tem N particularidades que o fazem muito mais lento que muitas das outras linguagem de programação mas para malta que gosta de chegar rápido aos seus objetivos (como eu
) é simplesmente o trade-off: Que se lixe a velocidade de execução, prefiro perceber o que faço.
Então vá: Não vou explicar como programar Java, vou explicar como esta conversa pode ajudar-vos no que querem.
O Java é uma linguagem modular.
Eu programo uma Classe. Meto a Class num Pacote/biblioteca (ficheiro de extensão .jar) e depois reutilizo noutro projecto.
Ou seja, imaginem hipoteticamente que eu faço uma biblioteca que vai ao googlefinance e dado o <Código-Mercado><Código-empresa> eu obtenho o histórico de 1 ano para trás.
A seguir posso pegar nesta biblioteca e usa-la num outro projecto que use esses dados para alguma coisa. Mais uma analogia: neste modelo não vamos montar um carro à planeta agostini, vamos montar um carro à IKEA: temos 1 motor, 1 chassis, 4 portas, 4 rodas, etc. e é "só" seguir o manual para montar.
Para além disto, o Java tem uma comunidade gigante. É daquelas comunidades que dá a sensação do: "Já tudo foi inventado" e os developers querem publicar os seus trabalhos, as suas bibliotecas, e ver o mundo a usa-las. E aqui é que está a magia. Toda a gente publica as coisas num repositório online (chamado Maven). Basta meter 1 linha de texto num ficheiro e automaticamente temos a biblioteca do gajo no pc pronta a usar.
Imaginem o seguinte cenário de construção <Frase de Necessidade> -> <Pesquisa pela solução> -> <Solução>
Necessidade: "Preciso de algo para ler sites e sacar algumas infos de tabelas e afins"
Pesquisa: No google: Java how to parse a website
Solução: https://stackoverflow.com/questions/2835505/how-to-scan-a-website-or-page-for-info-and-bring-it-into-my-programA resposta a este gajo diz: "Usa uma biblioteca como o JSOUP". vou ao site, vejo meia duzia de exemplos, meto a biblioteca no meu projeto e está feito: já tenho uma base para ler outros sites.
Necessidade: "Preciso de algo para ler texto de imagens porque nem todos os sites publicam em texto"
Pesquisa: No google: Java how to read text from image
Solução: https://stackoverflow.com/questions/22531656/api-to-read-text-from-image-file-using-ocrna Resposta o gajo sugere, mais uma vez, uma biblioteca. Lia meia duzia de exemplos, integrava no meu projeto e: done.
Ok até agora dei exemplos da tanga. Vou agora focar no que aqui se fala.
Necessidade: "preciso de machine learning em java"
Pesquisa: no google: java machine learning libraries
Solução: https://jaxenter.com/weka-collection-of-ml-algorithms-java-128964.htmlNão tenho solução porque estou a falar disto agora
Mas o que faria: vi o Weka aí e vou pegar por aí.
Vou ver se a biblioteca é publica: (Google: Maven weka ->
https://mvnrepository.com/artifact/nz.ac.waikato.cms.weka/weka-stable/3.8.0 -> Afirmativo)
Vou procurar exemplos (Google: weka tutorial (Não, isto não vai mostrar resultados da Shakira)) e se fizerem isto vão ver a quantidade de resultados que sai.
Qual a vantagem então de usar o Weka??
o Weka foi desenvolvido por um gajo que queria fazer machine learning (neste caso, até foi uma faculdade), e possivelmente o Weka ja tem funcionalidades tipo:
Injetam dados na aplicação, chamam um método qualquer e aquilo cospe logo resultados com base em histórico. Às vezes a dificuldade mesmo é perceber o que realmente queremos após vermos a quantidade de funcionalidades disponiveis.
Mas vá, só para concluir.
Vamos analisar um exemplo do Weka. Oh wait.. Não é preciso, basta ir ao youtube:
https://www.youtube.com/watch?v=m7kpIBGEdkIPortanto, conclusão:
Não escolham uma linguagem por ser rápida mas sim uma que vos deixe confortável. Procurem sempre linguagens que exista comunidades de suporte gigantes para vos minimizar o esforço. Usem o stackoverflow porque metade do que precisam de saber foi perguntado por alguém no passado. Se não são programadores, tentem escolher uma linguagem em que "se fale em inglês com o computador", ie, linguagem de alto nível, se forem para uma que é só operações ( tipo $3 - {Div($2,3) ... ) rapidamente vão se cansar.
Abraços