Encontre milhões de e-books, audiobooks e muito mais com um período de teste gratuito

A partir de $11.99/mês após o período de teste gratuito. Cancele quando quiser.

Programação Funcional Com C#
Programação Funcional Com C#
Programação Funcional Com C#
E-book363 páginas2 horas

Programação Funcional Com C#

Nota: 0 de 5 estrelas

()

Ler a amostra

Sobre este e-book

Descrição do livro Depois de décadas de relativa obscuridade, a programação funcional está finalmente se desenvolvendo. Com código conciso e fácil de ler que suporta processamento assíncrono e simultâneo, os aspectos da programação funcional começaram a aparecer em várias linguagens tradicionalmente orientadas a objetos, como C# e Java. Este livro prático mostra aos programadores de C# como usar recursos de programação funcionais sem precisar navegar em uma linguagem totalmente nova. Devido ao ambiente de tempo de execução compartilhado comum às linguagens C# e F#, também é possível usar a maioria dos recursos funcionais do F# em C#. O autor Simon J. Painter explica como você pode escrever código funcional em C# imediatamente, sem precisar instalar dependências ou recursos mais recentes que o .NET 3. Você aprenderá por que os conceitos de programação funcional podem trazer benefícios imediatos ao seu trabalho. Aprenda o que é programação funcional e como ela se originou Descubra recursos do paradigma funcional usando uma linguagem mais familiar Comece a codificar funcionalmente em C# imediatamente, sem depender de bibliotecas de terceiros Escreva um código mais robusto, menos propenso a erros e mais fácil de testar Examine maneiras menos convencionais de observar as estruturas disponíveis em C# Explore as praticidades de usar C# funcional em um ambiente de negócios
IdiomaPortuguês
Data de lançamento14 de nov. de 2022
Programação Funcional Com C#

Leia mais títulos de Jideon Francisco Marques

Relacionado a Programação Funcional Com C#

Ebooks relacionados

Administração de Sistemas para você

Visualizar mais

Artigos relacionados

Avaliações de Programação Funcional Com C#

Nota: 0 de 5 estrelas
0 notas

0 avaliação0 avaliação

O que você achou?

Toque para dar uma nota

A avaliação deve ter pelo menos 10 palavras

    Pré-visualização do livro

    Programação Funcional Com C# - Jideon Francisco Marques

    Programação Funcional com C#

    Programação Funcional com C#

    Crie código mais suportável, robusto e testável

    Por Jideon F. Marques

    © Copyright 2022 Jideon Marques - Todos os direitos reservados.

    O conteúdo deste ebook não pode ser reproduzido, duplicado ou transmitido sem permissão direta por escrito do autor ou do editor.

    Sob nenhuma circunstância qualquer culpa ou responsabilidade legal será imputada ao editor, ou autor, por quaisquer danos, reparações ou perdas monetárias devido às informações contidas neste ebook, direta ou indiretamente.

    Notícia legal:

    Este ebook é protegido por direitos autorais. É apenas para uso pessoal. Você não pode alterar, distribuir, vender, usar, citar ou parafrasear qualquer parte ou o conteúdo deste ebook sem o consentimento do autor ou editor.

    Aviso de isenção de responsabilidade:

    Observe que as informações contidas neste documento são apenas para fins educacionais e de entretenimento. Todo esforço foi feito para apresentar informações precisas, atualizadas, confiáveis e completas. Nenhuma garantia de qualquer tipo é declarada ou implícita. Os leitores reconhecem que o autor não está envolvido na prestação de aconselhamento jurídico, financeiro, médico ou profissional. O conteúdo deste ebook foi derivado de várias fontes. Consulte um profissional médico licenciado antes de tentar este programa ou qualquer técnica descrita neste ebook.

    Ao ler este documento, o leitor concorda que em nenhuma circunstância o autor é responsável por quaisquer lesões, morte, perdas, diretas ou indiretas, que sejam incorridas como resultado do uso das informações contidas neste documento, incluindo, mas não limitado a a, erros, omissões ou imprecisões.

    Prefácio

    Quem deveria ler esse livro?

    Por que escrevi este livro

    Navegando neste livro

    Convenções utilizadas neste livro

    Usando exemplos de código

    Dedicação

    1. Introdução

    O que é Programação Funcional?

    É uma linguagem, uma API ou o quê?

    As Propriedades da Programação Funcional

    Assar bolos

    Um bolo imperativo

    Um bolo declarativo

    De onde vem a programação funcional?

    Quem mais faz programação funcional?

    Linguagens Funcionais Puras

    Vale a pena aprender uma linguagem funcional pura primeiro?

    E o F#? Devo aprender F#?

    Linguagens de vários paradigmas

    Os benefícios da programação funcional

    Conciso

    Testável

    Robusto

    Previsível

    Melhor suporte para simultaneidade

    Reduzir ruído de código

    Os melhores lugares para usar a programação funcional

    Onde você deve considerar o uso de outros paradigmas?

    Até onde podemos levar isso?

    Mônadas - Na verdade, não se preocupe com isso ainda

    Resumo

    2. O que já podemos fazer?

    Começando

    Seu primeiro código funcional

    Uma consulta de filme não funcional

    Uma consulta de filme funcional

    Programação Orientada a Resultados

    Algumas palavras sobre Enumerables

    Prefira Expressões a Declarações

    A Seleção Humilde

    Muitos para um - A arte sutil da agregação

    Comportamento de iteração personalizado

    Imutabilidade

    Juntando tudo - um fluxo funcional completo

    Indo além - Desenvolva suas habilidades funcionais

    Resumo

    3. Codificação funcional em C# 7 e além

    Tuplas

    Correspondência de padrões

    Contas Bancárias Processuais

    Correspondência de padrões em C# 7

    Correspondência de padrões em C# 8

    Correspondência de padrões em C# 9

    Correspondência de padrões em C# 10

    C# 11

    Sindicatos Discriminados

    Padrões ativos

    Imutabilidade

    Estruturas somente leitura

    Init apenas setters

    Tipos de registro

    Tipos de referência anuláveis

    O futuro

    Resumo

    4. Trabalhe de forma inteligente, não difícil com o código funcional

    Let's get Func-y

    Funções em enumeráveis

    Um validador super simples

    Correspondência de padrões para versões antigas do C#

    Filtragem Funcional

    Torne os dicionários mais úteis

    Analisando valores

    Enumerações personalizadas

    Consultar Elementos Adjacentes

    Iterar até que uma condição seja atendida

    Conclusão

    5. Funções de ordem superior

    Um relatório de problemas

    Thunks

    Combinador de mapas

    Combinador de garfo

    Compor

    Transduzir

    Toque

    Tentar/Pegar

    A não ser que

    Atualizar um enumerável

    Conclusão

    6. Sindicatos Discriminados

    Feriado

    Feriados com Sindicatos Discriminados

    Sindicato de Schrödinger

    Convenções de nomenclatura

    Pesquisa de banco de dados

    Enviando email

    Entrada do console

    Uniões genéricas

    Pode ser

    Resultado

    Talvez vs Resultado

    Qualquer

    Conclusão

    7. Fluxo Funcional

    Talvez, revisitado

    Talvez e Depuração

    Talvez e Logando

    Talvez e Assíncrono

    Talvez aninhados

    As leis

    Lei de Identidade Esquerda

    Lei de Identidade Direita

    Lei da associatividade

    Exemplos Você já está usando

    Enumerável

    Tarefa

    Outras estruturas

    Um exemplo trabalhado

    Conclusão

    8. Cura e Aplicação Parcial

    Currying e grandes funções

    Currying e funções de ordem superior

    Curry em .NET

    Aplicação Parcial

    Aplicação parcial em .NET

    Conclusão

    Prefácio

    A Programação Funcional não é apenas uma das maiores inovações da história do desenvolvimento de software, também é legal. Divertido também. Não só isso, mas está ganhando força ano após ano.

    Eu participo de conferências de desenvolvedores sempre que posso e notei uma tendência. A cada ano, parece haver sempre mais conteúdo sobre programação funcional, não menos. Muitas vezes, há até uma faixa inteira dedicada a ele, e as outras palestras geralmente incluem conteúdo funcional em algum lugar como um ponto de discussão nos dias de hoje.

    É lenta, mas seguramente, tornando-se um grande negócio. Por que é que?

    Com o crescimento de conceitos como conteinerização e aplicativos serverless, o Functional não é apenas um pouco de diversão para os projetos de tempo livre do desenvolvedor, não é uma moda que será esquecida em alguns anos, tem benefícios reais para trazer aos nossos stakeholders .

    A grande questão, porém - o que é isso? E, vou precisar aprender uma linguagem de programação totalmente nova apenas para poder usá-la? A boa notícia é que, se você é um desenvolvedor .NET, não precisa gastar muito tempo aprendendo uma nova tecnologia apenas para se manter atualizado - nem precisa investir em outra biblioteca de terceiros para adicionar às dependências do seu aplicativo - tudo isso é possível com código c# pronto para uso - embora com um pouco de ajustes.

    Este livro apresentará todos os conceitos fundamentais da Programação Funcional, demonstrará seus benefícios e como eles podem ser alcançados em C# - não apenas para seu próprio hobby de programação, mas com uma visão muito real de como eles podem ser usados para trazer benefício para a sua vida profissional também.

    Quem deveria ler esse livro?

    Este livro foi escrito com algumas categorias diferentes de pessoas em mente:

    Navegando neste livro

    Foi assim que organizei este livro:

    A introdução fala sobre o que é exatamente a Programação Funcional, de onde ela vem e por que qualquer um de nós deveria se interessar por ela. Argumento que isso traz benefícios comerciais significativos para nossos empregadores e que é uma habilidade que vale a pena adicionar ao seu cinturão de ferramentas de desenvolvedor.

    Sinta-se à vontade para mergulhar no nível para o qual se sente pronto. Isso não é uma novela1, leia os capítulos na ordem que fizer sentido para você.

    Convenções utilizadas neste livro

    As seguintes convenções tipográficas são usadas neste livro:

    itálico

    Indica novos termos, URLs, endereços de e-mail, nomes de arquivo e extensões de arquivo.

    Largura constante

    Usado para listagens de programas, bem como dentro de parágrafos para se referir a elementos de programa, como nomes de variáveis ou funções, bancos de dados, tipos de dados, variáveis de ambiente, instruções e palavras-chave.

    Largura constante em negrito

    Mostra comandos ou outro texto que deve ser digitado literalmente pelo usuário.

    Largura constante em itálico

    Mostra o texto que deve ser substituído por valores fornecidos pelo usuário ou por valores determinados pelo contexto.

    Dica

    Este elemento significa uma dica ou sugestão.

    Observação

    Este elemento significa uma nota geral.

    Aviso

    Este elemento indica um aviso ou cuidado.

    Usando exemplos de código

    Material suplementar (exemplos de código, exercícios, etc.) está disponível para download emhttps://github.com/oreillymedia/title_title.

    Capítulo 1 Introdução

    Se você aprendeu muita programação antes - seja em C#, Visual BASIC, Python ou qualquer outra coisa - então é provável que o que você aprendeu foi baseado no paradigma de programação que é atualmente o mais dominante - Orientado a Objetos.

    A codificação orientada a objetos existe há muito tempo. A data precisa é uma questão para debate, mas provavelmente foi inventada em algum lugar por volta do final dos anos 50 e início dos anos 60.

    A codificação orientada a objetos é baseada na ideia de agrupar conjuntos de propriedades e funcionalidades em blocos lógicos de código chamados Classes, que são usados como uma espécie de modelo a partir do qual instanciamos Objetos. Há muito mais do que isso: herança, polimorfismo, funções virtuais e abstratas. Todo tipo de coisa assim.

    No entanto, este não é um livro Orientado a Objetos. Na verdade, se você já tem experiência com OO, provavelmente obterá mais deste livro se deixar de lado o que já sabe.

    O que vou descrever neste livro é um estilo de programação que serve como uma alternativa à OO - programação funcional. A Programação Funcional, apesar de ganhar algum reconhecimento popular nos últimos anos, é na verdade tão antiga - se não mais velha - que a OO. É baseado em princípios matemáticos que foram desenvolvidos por várias pessoas entre o final dos anos 1800 e 1950, e tem sido uma característica de algumas linguagens de programação desde os anos 1960.

    Neste livro, mostrarei como implementá-lo em C# sem a necessidade de aprender uma linguagem de programação totalmente nova.

    Antes de começarmos a quebrar com algum código, eu gostaria de falar primeiro sobre a Programação Funcional em si. O que é isso? Por que devemos nos interessar? Quando é melhor usado. Todas perguntas muito importantes.

    O que é Programação Funcional?

    Existem alguns conceitos básicos em Programação Funcional, muitos dos quais têm nomes bastante obscuros para o que de outra forma não são conceitos muito difíceis de entender. Vou tentar colocá-los aqui da maneira mais simples possível.

    É uma linguagem, uma API ou o quê?

    Não, a Programação Funcional não é uma linguagem ou uma biblioteca de plug-ins de terceiros no Nuget, é um paradigma. O que quero dizer com isso? Existem definições mais formais de paradigmas, mas acho que é um estilo de programação. Como uma guitarra pode ser usada exatamente como o mesmo instrumento, mas para tocar muitos estilos de música, muitas vezes muito diferentes, também algumas linguagens de programação oferecem suporte para diferentes estilos de trabalho.

    A programação funcional também é tão antiga quanto a codificação orientada a objetos - se não for mais antiga. Falarei mais sobre suas origens mais tarde, mas, por enquanto, esteja ciente de que não é nada novo, e a teoria por trás disso não apenas antecede a OO, mas também a própria indústria de computação.

    Também vale a pena notar que você pode combinar paradigmas, como misturar rock e jazz. Não só eles podem combinar, mas há momentos em que você pode usar os melhores recursos de cada um para produzir um melhor resultado final.

    Paradigmas de programação vêm em muitos, muitos sabores1mas para simplificar vou falar apenas dos dois mais comuns na programação moderna:

    Imperativo

    Este foi o único tipo de paradigma de programação por muito tempo. Procedimental e Orientado a Objetos (OO) pertencem a esta categoria. Esses estilos de programação envolvem instruir mais diretamente o ambiente de execução com as etapas que precisam ser executadas em detalhes, ou seja, qual variável contém quais etapas intermediárias e como o processo é realizado passo a passo em detalhes minuciosos. Isso é programação como geralmente é ensinado na escola/faculdade/universidade/no trabalho [exclua quando apropriado].

    Declarativo

    Neste paradigma de programação estamos menos preocupados com os detalhes precisos de como atingimos nosso objetivo, o código se assemelha mais a uma descrição do que é desejado no final do processo e os detalhes (incluindo coisas como ordem de execução de as etapas) ficam mais nas mãos do ambiente de execução. Esta é a categoria a que pertence a Programação Funcional. SQL também pertence aqui, então, em alguns aspectos, a Programação Funcional se parece mais com SQL do que OO. Ao escrever instruções SQL, você não está preocupado com a ordem das operações (não é realmente SELECT, então WHEN e ORDER BY), você não está preocupado com a forma como exatamente as transformações de dados são realizadas em detalhes, você apenas escreve um script que descreve efetivamente a saída desejada. Esses são alguns dos objetivos do Functional C# também,

    Há muitos, muitos outros paradigmas além desses, mas eles estão muito além do escopo deste livro.

    As Propriedades da Programação Funcional

    Nas próximas seções, falarei sobre cada uma das propriedades da Programação Funcional e o que elas realmente significam para um desenvolvedor.

    Imutabilidade

    Se algo pode mudar, também pode ser dito que pode sofrer mutações, como um Ninja Mutante Adolescente2Tartaruga. A outra maneira de dizer que algo pode sofrer mutação é que é mutável. Se, por outro lado, algo não pode mudar, então é imutável.

    Na programação, isso se refere a Variáveis que têm seu valor definido ao serem definidas, e após esse ponto elas nunca mais poderão ser alteradas. Se um novo valor for necessário, uma nova variável deve ser criada, com base na antiga. É assim que todas as variáveis são tratadas no código funcional.

    É uma maneira um pouco diferente de trabalhar em comparação com o código Imperative, mas acaba produzindo programas que se assemelham mais ao trabalho matemático e incentiva uma boa estrutura e um código mais previsível - e, portanto, robusto.

    Data horae String são ambas estruturas de dados imutáveis em .NET. Você pode pensar que os alterou, mas nos bastidores cada alteração cria um novo item na pilha. É por isso que a maioria dos novos desenvolvedores fala sobre concatenar strings em loops For.

    Funções de ordem superior

    Estas são funções que são passadas como variáveis. Isso pode ser como variáveis locais, parâmetros para uma função ou valores de retorno de uma função. Os tipos de delegado Func ou Action são exemplos perfeitos disso:

    Func Adicionar = (x, y) => ${x} + {y} = {x+y};

    Action LogMessage = x => this.Logger.LogInfo($mensagem recebida: {x});

    Ambos os tipos são referências a funções armazenadas em variáveis e que podem ser chamadas como funções. A única diferença entre um Func e Action é que o Action não tem valor de retorno - ou seja, é um tipo de retorno void. O código acima era inteiramente equivalente a isso:

    função string Add(int x, int y)

    {

    return ${x} + {y} = {x + y};

    }

    função void LogMessage(string x)

    {

    this.Logger.LogInfo($mensagem recebida: {x});

    }

    A grande vantagem de usar esses tipos Delegates é que

    Está gostando da amostra?
    Página 1 de 1