lincolixavier / tretadev

Repositório criado com o intuito de centralizar as tretas semanais que acontecem na cena dev BR
506 stars 3 forks source link

Programação funcional é uma religião #85

Open rodrigogs opened 2 years ago

rodrigogs commented 2 years ago

Não tenho nada contra funcional, e inclusive gosto. Mas é inegável que quem programa funcional fala do funcional igual quem faz crossfit fala do crossfit.

lincolixavier commented 2 years ago

Confirmo #here

terremoth commented 2 years ago

Vamos abrir o jogo e botar na mesa, que essa religiosidade veio boa parte do pessoal da pagarme e das fintechs de pagamentos (e dos amigos de quem trabalhava nessas empresas), pq se vc for ver é tudo um grupinho de amigos que andam juntos, frequentam eventos juntos, saem juntos, moram juntos, comem juntos, frequentam os mesmos grupos e tal.

O que não tem nada de errado ou ruim, mas eu acho que a "fonte" (início) veio por parte deles. A APDA tem um dedinho nisso, acho que lá sempre divulgaram bastante coisa.

E acho que tudo isso começou no JS com a pregação de uso do "map, filter, reduce" alguns anos atrás, depois evoluiu pra Ramda, e langs como Clojure, Haskell, Scheme/Racket, Elixir e daí nasceram novos discípulos e evangelistas dessas outras langs.

rodrigogs commented 2 years ago

Só que no JS o legal é que ele é híbrido. Tu pode(e deve) usar essas ferramentas funcionais, mas não precisa fazer tudo funcional o tempo todo.

O que eu não sei de onde vem é essa pira de que linguagens funcionais são "melhores por natureza", e que você deveria fazer TUDO funcional. Isso é igual aquela história de "SQL é velho, você precisa usar NoSQL", olha no que deu...

E sim, concordo que essa seita ocultista começou através desses grupinhos das fintechs.

rodrigogs commented 2 years ago

Também tem aqueles professores idosos e viciados em Haskell, é daí que sai aquele grupo de borther de faculdade que abre uma fintech que só usa Elixir.

terremoth commented 2 years ago

Não existe bala de prata, mas eu acredito que elas são na maioria das vezes melhores por natureza, por causa do paralelismo nativo, imutabilidade, poder retornar funções já pré-computadas (currying, ou partial function application) e receber funções diretas como argumentos... Geralmente quase tudo em linguagens funcionais são funções. Em Haskell por exemplo se vc fizer let f x = x*x + 4 o f não é uma variável, é uma função! e o x é o primeiro argumento dela.

Acredito que esse hype funcional no Brasil chegou meio tarde. No inicio dos anos 2000 já era amplamente ensinado FP no MIT como primeiro contato com programação, usando o famoso livro Structure and Interpretation of Computer Programs (SICP), cuja disciplina também era ministrada pelo autor.

Curiosidade minha em particular é que eu não conheci ninguém até hoje quem trabalha com desenvolvimento de linguagens de programação ou simplesmente parsers que não gostam de FP. Todos que conheci usam coisas como COQ, Idris, Agda, ou Haskell.

mariomeyrelles commented 2 years ago

Eu entrei nessa parada de religião porque queria uma forma mais fácil de fazer freelas e projetos pessoais. E todos os projetos que tenho visto em .NET usam a tal da "arquitetura orientada a pastinhas" que ensinam nesses cursos de qualidade questionável.

E eu, claro, só sabia trabalhar assim. Até que um dia um cara postou no twitter que tinha migrado pra F# e reduzido o tempo de entrega, bugs e mesmo, o número necessário de devs. E eles estavam bem felizes. Eu fiquei curioso porque naquele momento eu tava fazendo um projeto pessoal usando a arquitetura orientada a pastinhas.

Parei e vi o curso de DDD do Scott Domain Modeling Made Functional - foi realmente um divisor de águas. E de fato, acabei ficando absurdamente desanimado em ter que ganhar a vida usando C#.

Com o tempo eu consegui usar F# em algumas oportunidades no Brasil e até mesmo agora, na Irlanda. Mas de fato, todo mundo caga pra funcional e na minha visão mais madura, tá tudo bem! Não é porque eu tive uma alegria ao conhecer programação funcional que os demais profissionais são ruins ou inferiores. Eles simplesmente não se interessaram (ainda) por isso e beleza. Antigamente eu era evangelista, mas agora, sou apenas um autoflagelista, trabalhando com C# e ganhando os dinheiros que dá.

Mas claro, pessoalmente eu acho impossível não continuar progredindo em FP. Meu maior interesse agora é Scala (sou fã de programação funcional tipada) e quem sabe um dia, eu consiga chegar a entender alguma coisa de Haskell.

jvhk commented 2 years ago

Como provavelmente vai vir uma galera de funcional aqui gostaria de deixar um pedido de indicações, se possível em Português (se não tiver pode indicar em inglẽs), de material para iniciar estudos sobre a programação funcional. Muito obrigado desde já.

mariomeyrelles commented 2 years ago

Tem esse curso de um cara foda, brasileiro: https://github.com/Guilherme775/Haskell4Noobs

terremoth commented 2 years ago

@mariomeyrelles F# é uma das poucas tecnologias de domínio da Microsoft que me agrada tbm, eu tenho curiosidade de aprender

terremoth commented 2 years ago

@jvhk cara, um dia eu comecei a ler o Learn You a Haskell for Great Good li acho que 2 ou 3 capítulos, parece bem interessante. Está em inglês, espero que isso não seja um problema.

adolfont commented 2 years ago

Então venham fazer meu curso!

PS: gratuito!

rodrigogs commented 2 years ago

Olha só como é religião mesmo, já tem até gente vendendo curso aqui.

adolfont commented 2 years ago

Meu curso é gratuito. Ah, e vai ter Meetup nesta sexta com ex-alunos. Quem quiser participar é só dizer. Vai ser em inglês.

Grubba27 commented 2 years ago

Primera vez que eu comento algo em um tópico assim, acho que dessa vez eu consigo melhorar a discussão de alguma forma. Caso esse comment não faça sentido e ou não está agregando eu com todo o prazer posso deletar o mesmo

Funcional é uma ferramenta como qualquer outra.

Mas me dizer que uma função pura não é bonita é pegado. Para deixar a discussão mais interessante eu gosto deixar esses videos que me fizeram correr atrás de outras formas de melhorar como eu trabalho no meu dia-dia, seja pensando em outra forma de trabalhar os problemas ou simplismente saber o pq de algo ser do jeito que é. Minhas recomendações são (tudo está no yt): Object-Oriented Programming is Bad - Video Why Isn't Functional Programming the Norm? – Richard Feldman Functional Programming in 40 Minutes • Russ Olsen • GOTO 2018 Imagem só para dar uma brincada com o tema func

rodrigogs commented 2 years ago

Você não pode dizer que é um programador melhor só porque buscou aprender funcional, e não tem nada de tão especial assim em uma função pura(é bom, só). Esse é o mesmo efeito que o NoSQL teve quando emplacou, e isso só cria gente empinada, que se "recusa a trabalhar" com coisa "velha"(funcional também é).

Uso funcional quase todos os dias, onde preciso... mas essa soberba aí de quem acha que deveria ser tudo funcional é ridícula!

izichtl commented 2 years ago

Acho que se 'recusar a trabalhar' fala mais sobre a maturidade do programador do que com a capacidade técnica dele, ele está ignorando o 'contexto'.

Talvez o que incomode a ponto desse tópico existir é o fato das pessoas ficarem deslumbradas com algo novo, a ponto de depreciar os modelos tradicionais para que a nova ideia sobressaia, quando existe espaço para que tudo coexista.

rodrigogs commented 2 years ago

Acho que se 'recusar a trabalhar' fala mais sobre a maturidade do programador do que com a capacidade técnica dele, ele está ignorando o 'contexto'.

Talvez o que incomode a ponto desse tópico existir é o fato das pessoas ficarem deslumbradas com algo novo, a ponto de depreciar os modelos tradicionais para que a nova ideia sobressaia, quando existe espaço para que tudo coexista.

Válido, concordo.

adolfont commented 2 years ago

OO um dia foi o novo (depois da programação funcional, que é mais velha) e as pessoas também vendiam suas qualidades comparando, talvez de forma injusta, com outras abordagens.

adolfont commented 2 years ago

Não é! Que religião prega a preguiça??? :)

"Haskell: Programação Funcional Preguiçosa Pedro Castilho"

https://cciuenf.github.io/scti2020/ image

terremoth commented 2 years ago

@adolfont pois é, o Castilho tá no balaio aí dos que evangelizam e espalham FP.

E quando ele se refere a "computação preguiçosa" ele se refere a um dos talvez mais poderosos recursos de haskell: Lazy Loading