O documento discute as diferenças entre as linguagens de programação F# e C#. Ele explica que F# foi desenvolvido pela Microsoft Research para ser funcional em primeiro lugar e ter tipos algébricos, ao contrário de C# que tem raízes em C e é orientado a objetos. Ele também destaca que F# tem inferência de tipos, composição funcional e imutabilidade como padrão.
Este documento apresenta conceitos básicos da linguagem de programação GO, incluindo sua história, características, tipos de dados, variáveis, constantes, operações aritméticas e pacotes.
TDC2017 | São Paulo - Trilha Acessibilidade How we figured out we had a SRE t...tdc-globalcode
O documento apresenta as principais SDKs e APIs para acessibilidade de empresas como Microsoft, Google, IBM e Intel. Ele descreve brevemente cada ferramenta, incluindo o UI Accessibility Checker, Speech API e Magnification API da Microsoft, assim como as APIs de acessibilidade do Android e Chrome da Google. O documento enfatiza a responsabilidade dos desenvolvedores em criar soluções acessíveis.
Projeto CoCoA: Um Colete de Comunicação AlternativaTalita Pagani
O documento descreve o projeto CoCoA, um colete de comunicação alternativa que usa computação vestível para auxiliar pessoas com deficiência de fala. O colete conecta-se à internet e permite o uso de símbolos táteis para escolher mensagens pré-programadas, fornecendo feedback visual, tátil, vocal e escrito. Isso oferece uma alternativa mais ergonômica e acessível aos atuais sistemas de comunicação alternativa.
Linguagens de programação populares como JavaScript, Java, Python, PHP, C# e suas principais bibliotecas e frameworks como React, Angular, Spring, Ruby on Rails, Django e Laravel são discutidos. Também são abordados tópicos como lógica de programação, algoritmos, controle de versão e como linguagens como Arduino são usadas no IOT.
O documento discute a programação orientada a objetos (POO) no Arduino usando o IDE Eclipse. Ele explica os benefícios da POO, como reutilização de código e manutenção mais fácil. Também descreve como configurar o Eclipse para desenvolvimento de projetos Arduino, incluindo a criação de classes e objetos, e instanciar objetos a partir das classes.
A primeira linguagem que todo programador deve aprenderLF Bittencourt
O documento discute a importância de aprender inglês para programadores, destacando que a maioria dos recursos e oportunidades na área de tecnologia estão disponíveis nesse idioma, incluindo documentação, projetos de código aberto, blogs, vídeos e livros. Também aponta que o conhecimento de inglês abre portas para trabalhar em empresas internacionais, freelancer para clientes estrangeiros e mesmo morar em outros países.
O documento apresenta os principais conceitos da programação funcional usando a linguagem F#, como imutabilidade, funções como valores, tipos fortemente tipados, pipelines e composição. O palestrante destaca recursos da linguagem como Option, unidades de medida e type providers para carregar dados dinamicamente.
O documento discute o ecossistema .NET e a linguagem C# de programação. Ele descreve as vantagens da tipagem estática, inferência de tipos, LINQ e outras funcionalidades do C#. Também aborda os custos, oportunidades de mercado e desafios em torno da comunidade e código aberto. O autor argumenta que vale a pena apostar no .NET/C# devido à sua constante evolução e capacidade de atender às demandas atuais e futuras do mercado.
Este documento apresenta conceitos básicos da linguagem de programação GO, incluindo sua história, características, tipos de dados, variáveis, constantes, operações aritméticas e pacotes.
TDC2017 | São Paulo - Trilha Acessibilidade How we figured out we had a SRE t...tdc-globalcode
O documento apresenta as principais SDKs e APIs para acessibilidade de empresas como Microsoft, Google, IBM e Intel. Ele descreve brevemente cada ferramenta, incluindo o UI Accessibility Checker, Speech API e Magnification API da Microsoft, assim como as APIs de acessibilidade do Android e Chrome da Google. O documento enfatiza a responsabilidade dos desenvolvedores em criar soluções acessíveis.
Projeto CoCoA: Um Colete de Comunicação AlternativaTalita Pagani
O documento descreve o projeto CoCoA, um colete de comunicação alternativa que usa computação vestível para auxiliar pessoas com deficiência de fala. O colete conecta-se à internet e permite o uso de símbolos táteis para escolher mensagens pré-programadas, fornecendo feedback visual, tátil, vocal e escrito. Isso oferece uma alternativa mais ergonômica e acessível aos atuais sistemas de comunicação alternativa.
Linguagens de programação populares como JavaScript, Java, Python, PHP, C# e suas principais bibliotecas e frameworks como React, Angular, Spring, Ruby on Rails, Django e Laravel são discutidos. Também são abordados tópicos como lógica de programação, algoritmos, controle de versão e como linguagens como Arduino são usadas no IOT.
O documento discute a programação orientada a objetos (POO) no Arduino usando o IDE Eclipse. Ele explica os benefícios da POO, como reutilização de código e manutenção mais fácil. Também descreve como configurar o Eclipse para desenvolvimento de projetos Arduino, incluindo a criação de classes e objetos, e instanciar objetos a partir das classes.
A primeira linguagem que todo programador deve aprenderLF Bittencourt
O documento discute a importância de aprender inglês para programadores, destacando que a maioria dos recursos e oportunidades na área de tecnologia estão disponíveis nesse idioma, incluindo documentação, projetos de código aberto, blogs, vídeos e livros. Também aponta que o conhecimento de inglês abre portas para trabalhar em empresas internacionais, freelancer para clientes estrangeiros e mesmo morar em outros países.
O documento apresenta os principais conceitos da programação funcional usando a linguagem F#, como imutabilidade, funções como valores, tipos fortemente tipados, pipelines e composição. O palestrante destaca recursos da linguagem como Option, unidades de medida e type providers para carregar dados dinamicamente.
O documento discute o ecossistema .NET e a linguagem C# de programação. Ele descreve as vantagens da tipagem estática, inferência de tipos, LINQ e outras funcionalidades do C#. Também aborda os custos, oportunidades de mercado e desafios em torno da comunidade e código aberto. O autor argumenta que vale a pena apostar no .NET/C# devido à sua constante evolução e capacidade de atender às demandas atuais e futuras do mercado.
O documento discute a API Roslyn do .NET, que permite o acesso ao pipeline de compilação do C# e VB.NET. Isso torna possível implementar ferramentas de código como syntax highlighting, intellisense e refactoring sem precisar reimplementar a análise sintática e semântica. A API Roslyn também permite a geração e análise de código em tempo de execução, facilitando o desenvolvimento de ferramentas de software.
O documento discute a importância da refatoração de código para mantê-lo limpo, de fácil manutenção e entendimento. Apresenta conceitos como Clean Code, Object Calisthenics, princípios SOLID e padrões de projeto que auxiliam na refatoração, além de discutir técnicas como identificar código que precisa ser refatorado, manter a interface inalterada e testar durante o processo.
O documento discute conceitos de qualidade de código como sistemas legados, refatoração, bad smells, nomenclatura, comentários, métodos, testes e métricas. A palestrante Gisele Zomer Rossi fala sobre como melhorar a estrutura e legibilidade do código através de refatorações.
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPRodrigo Dos Santos
O documento discute princípios de programação procedural versus programação orientada a objetos. Ele enfatiza a importância de separar as responsabilidades do código através de modelagem, uso de padrões e testes para produzir software de melhor qualidade e mais fácil de manter.
TDC2016SP - Desenvolvendo uma linguagem maker inclusiva em Pythontdc-globalcode
O documento discute o desenvolvimento de uma linguagem maker inclusiva em Python chamada Linguagem Fazedores, que visa tornar a programação acessível para todos ensinando conceitos básicos de programação de uma maneira simples e passo a passo por meio de projetos práticos com dispositivos eletrônicos e placas como Intel Edison. A linguagem utiliza o framework Django e recursos básicos de Python como listas, dicionários e try/except para permitir que iniciantes programem dispositivos. Desafios e melhorias futuras também são discut
O documento apresenta os principais conceitos da programação funcional usando a linguagem F#, como imutabilidade, funções como valores, composição de funções, type providers e features como Option e unidades de medida. O objetivo é mostrar como F# oferece um paradigma diferente de programação e como seus recursos podem ser usados no desenvolvimento .NET.
O documento apresenta uma palestra sobre programação funcional e refatoração de código usando abordagens funcionais. A palestra discute como o paradigma funcional pode ajudar a resolver problemas comuns como null exceptions, apresenta conceitos como value containers e high order functions, e mostra como refatorar uma função de atualização de usuário usando esses conceitos para melhor tratar erros e encadear operações.
Lições aprendidas com a Re (escrita |design) de uma aplicação PHP Domingos Teruel
Um mergulho no mundo de feature-flipping, otimização de perfomanec, remoção de dívida técnica, lidando com o legado e reconstruido uma API sustentável.
TDC2018SP | Trilha .Net - Programacao Funcional com C#tdc-globalcode
O documento discute programação funcional usando C# e apresenta três tópicos principais: (1) Apresenta o conceito de programação funcional e como ele é diferente da programação orientada a objetos; (2) Discutem value containers como Option e Either e como eles podem ser usados para lidar com valores nulos de forma segura; (3) Apresenta um exemplo de refatoração de código usando value containers para lidar com erros de forma funcional.
O documento resume uma apresentação sobre programação funcional usando C#. Apresenta conceitos como value containers e como lidar com resultados e erros de forma funcional usando tipos como Option e Either. Demonstra como refatorar código imperativo para um estilo mais funcional com esses tipos.
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...tdc-globalcode
O documento resume o framework Blazor da Microsoft, que permite criar aplicações web interativas usando C# no lado do cliente, sem plugins. Explica que o Blazor compila C# para WebAssembly, permitindo que o código rode diretamente no navegador. Detalha alguns recursos e limitações atuais do Blazor, que é um projeto experimental da Microsoft.
O documento apresenta uma palestra sobre robótica e PHP. Apresenta conceitos de Arduino e computação física, como integrar sensores e dispositivos Arduino com PHP na web para aplicações de automação, robótica, arte e entretenimento. Demonstra como iniciar no assunto com cursos, comunidades e sites de apoio.
TDC2018SP | Trilha Kotlin - Kodando com Kotlin aplicacoes front-end.tdc-globalcode
Este documento apresenta o uso da linguagem Kotlin para desenvolvimento front-end. Apresenta como o Kotlin transpila para JavaScript através do Kotlin2JS e permite o uso de bibliotecas JavaScript populares como React e Redux através do framework Kodando. Demonstra exemplos de código Kotlin usando essas bibliotecas e discute os benefícios do Kotlin para desenvolvimento front-end.
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?tdc-globalcode
O documento discute a história do PHP e as razões para usar o framework Laravel. Apresenta o histórico do PHP, as experiências do autor com frameworks PHP, e explica como o Laravel oferece boas práticas de programação, produtividade e suporte da comunidade.
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipsterEdlaine Zamora
Palestra apresentada no TDC Florianópolis 2017.
Fazer o startup de aplicações Web com Java Stack tem custado muitas horas de engenheiros experientes. Quem nunca sofreu ou gastou muito tempo com configurações de frameworks, bibliotecas, gerenciador de dependências, entre outros ao criar um projeto Java web? Aprenda a gerar toda sua arquitetura com JHipster com apenas alguns comandos e economizar seu tempo.
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreamsJacqueline Abreu
1. O documento discute como trabalhar com sistemas legados desenvolvidos em linguagens não mainstream como Perl, abordando conceitos como o que é legado e como melhorar a manutenção de códigos antigos.
2. É explicado que legado não significa necessariamente código ruim e que linguagens mais antigas podem ter boas práticas e comunidades ativas de desenvolvedores.
3. São dados conselhos como documentar tudo, escrever testes, usar frameworks existentes em vez de reinventar a roda, e manter uma mente aberta.
Computação Física com Arduino/Program-ME e a Plataforma JavaDr. Spock
O documento apresenta conceitos de computação física e hardware open source como Arduino e Program-ME. O palestrante discute como esses projetos começaram e características desses hardwares e como programá-los usando Java e novas aplicações para essa plataforma.
O documento apresenta os resultados de uma pesquisa sobre o mercado de trabalho para desenvolvedores PHP no Brasil. Fornece estatísticas sobre a formação, experiência, salários e preferências de colaboradores PHP, tanto empregados quanto empreendedores. A pesquisa também analisa as necessidades de contratação de empresas que buscam desenvolvedores PHP.
O documento discute as vantagens do Java Server Faces (JSF) para desenvolvimento de interfaces web. O JSF permite a divisão de responsabilidades entre modelo, visão e controle através do padrão MVC, facilitando a manutenção e organização do código. Ele também suporta integração com diversas tecnologias como CSS, JavaScript e Ajax, além de recursos como validação de dados, conversão e recuperação de objetos.
Desafios e glórias na implementação de infra as codeEduardo Rozario
Este documento discute os desafios e conquistas na implementação de infraestrutura como código. Resume três pontos principais: 1) O uso do controle de versão para gerenciar a infraestrutura como código; 2) A importância de componentes reutilizáveis; 3) A necessidade de testes para garantir a confiabilidade da infraestrutura.
Nesse palestra iremos explorar os recursos mais complexos do TypeScript, de forma didática vamos entender como não se sentir engessado pelos tipos, e mais que isso, ter toda ajuda que a tipagem estática provê.
Conheça ROP - Programação orientada e trilhosLucas Teles
O documento introduz o conceito de Programação Orientada a Trilhos (ROP), onde funções são modeladas como "trilhos" para lidar com erros de forma funcional. A analogia dos trilhos mostra como compor funções encapsulando sua lógica interna. Um adapter é criado para permitir a composição, representando funções como "TwoTrack" que podem retornar resultados ou erros. Exemplos demonstram como validações, mapeamentos e funções que lançam exceções podem ser implementadas dentro deste modelo.
O documento discute a API Roslyn do .NET, que permite o acesso ao pipeline de compilação do C# e VB.NET. Isso torna possível implementar ferramentas de código como syntax highlighting, intellisense e refactoring sem precisar reimplementar a análise sintática e semântica. A API Roslyn também permite a geração e análise de código em tempo de execução, facilitando o desenvolvimento de ferramentas de software.
O documento discute a importância da refatoração de código para mantê-lo limpo, de fácil manutenção e entendimento. Apresenta conceitos como Clean Code, Object Calisthenics, princípios SOLID e padrões de projeto que auxiliam na refatoração, além de discutir técnicas como identificar código que precisa ser refatorado, manter a interface inalterada e testar durante o processo.
O documento discute conceitos de qualidade de código como sistemas legados, refatoração, bad smells, nomenclatura, comentários, métodos, testes e métricas. A palestrante Gisele Zomer Rossi fala sobre como melhorar a estrutura e legibilidade do código através de refatorações.
Combatendo o Código Procedural - TDC 2012 Florianópolis - Trilha PHPRodrigo Dos Santos
O documento discute princípios de programação procedural versus programação orientada a objetos. Ele enfatiza a importância de separar as responsabilidades do código através de modelagem, uso de padrões e testes para produzir software de melhor qualidade e mais fácil de manter.
TDC2016SP - Desenvolvendo uma linguagem maker inclusiva em Pythontdc-globalcode
O documento discute o desenvolvimento de uma linguagem maker inclusiva em Python chamada Linguagem Fazedores, que visa tornar a programação acessível para todos ensinando conceitos básicos de programação de uma maneira simples e passo a passo por meio de projetos práticos com dispositivos eletrônicos e placas como Intel Edison. A linguagem utiliza o framework Django e recursos básicos de Python como listas, dicionários e try/except para permitir que iniciantes programem dispositivos. Desafios e melhorias futuras também são discut
O documento apresenta os principais conceitos da programação funcional usando a linguagem F#, como imutabilidade, funções como valores, composição de funções, type providers e features como Option e unidades de medida. O objetivo é mostrar como F# oferece um paradigma diferente de programação e como seus recursos podem ser usados no desenvolvimento .NET.
O documento apresenta uma palestra sobre programação funcional e refatoração de código usando abordagens funcionais. A palestra discute como o paradigma funcional pode ajudar a resolver problemas comuns como null exceptions, apresenta conceitos como value containers e high order functions, e mostra como refatorar uma função de atualização de usuário usando esses conceitos para melhor tratar erros e encadear operações.
Lições aprendidas com a Re (escrita |design) de uma aplicação PHP Domingos Teruel
Um mergulho no mundo de feature-flipping, otimização de perfomanec, remoção de dívida técnica, lidando com o legado e reconstruido uma API sustentável.
TDC2018SP | Trilha .Net - Programacao Funcional com C#tdc-globalcode
O documento discute programação funcional usando C# e apresenta três tópicos principais: (1) Apresenta o conceito de programação funcional e como ele é diferente da programação orientada a objetos; (2) Discutem value containers como Option e Either e como eles podem ser usados para lidar com valores nulos de forma segura; (3) Apresenta um exemplo de refatoração de código usando value containers para lidar com erros de forma funcional.
O documento resume uma apresentação sobre programação funcional usando C#. Apresenta conceitos como value containers e como lidar com resultados e erros de forma funcional usando tipos como Option e Either. Demonstra como refatorar código imperativo para um estilo mais funcional com esses tipos.
TDC2018SP | Trilha Modern Web - Blazor - C# rodando no navegador padrao, sem ...tdc-globalcode
O documento resume o framework Blazor da Microsoft, que permite criar aplicações web interativas usando C# no lado do cliente, sem plugins. Explica que o Blazor compila C# para WebAssembly, permitindo que o código rode diretamente no navegador. Detalha alguns recursos e limitações atuais do Blazor, que é um projeto experimental da Microsoft.
O documento apresenta uma palestra sobre robótica e PHP. Apresenta conceitos de Arduino e computação física, como integrar sensores e dispositivos Arduino com PHP na web para aplicações de automação, robótica, arte e entretenimento. Demonstra como iniciar no assunto com cursos, comunidades e sites de apoio.
TDC2018SP | Trilha Kotlin - Kodando com Kotlin aplicacoes front-end.tdc-globalcode
Este documento apresenta o uso da linguagem Kotlin para desenvolvimento front-end. Apresenta como o Kotlin transpila para JavaScript através do Kotlin2JS e permite o uso de bibliotecas JavaScript populares como React e Redux através do framework Kodando. Demonstra exemplos de código Kotlin usando essas bibliotecas e discute os benefícios do Kotlin para desenvolvimento front-end.
TDC2016POA | Trilha PHP - Por que utilizar o Laravel?tdc-globalcode
O documento discute a história do PHP e as razões para usar o framework Laravel. Apresenta o histórico do PHP, as experiências do autor com frameworks PHP, e explica como o Laravel oferece boas práticas de programação, produtividade e suporte da comunidade.
Gerando aplicações Spring Boot e AngularJS com gerador de código JHipsterEdlaine Zamora
Palestra apresentada no TDC Florianópolis 2017.
Fazer o startup de aplicações Web com Java Stack tem custado muitas horas de engenheiros experientes. Quem nunca sofreu ou gastou muito tempo com configurações de frameworks, bibliotecas, gerenciador de dependências, entre outros ao criar um projeto Java web? Aprenda a gerar toda sua arquitetura com JHipster com apenas alguns comandos e economizar seu tempo.
#DNAD15 - Diminuindo sofrimento com código legado de linguagens não mainstreamsJacqueline Abreu
1. O documento discute como trabalhar com sistemas legados desenvolvidos em linguagens não mainstream como Perl, abordando conceitos como o que é legado e como melhorar a manutenção de códigos antigos.
2. É explicado que legado não significa necessariamente código ruim e que linguagens mais antigas podem ter boas práticas e comunidades ativas de desenvolvedores.
3. São dados conselhos como documentar tudo, escrever testes, usar frameworks existentes em vez de reinventar a roda, e manter uma mente aberta.
Computação Física com Arduino/Program-ME e a Plataforma JavaDr. Spock
O documento apresenta conceitos de computação física e hardware open source como Arduino e Program-ME. O palestrante discute como esses projetos começaram e características desses hardwares e como programá-los usando Java e novas aplicações para essa plataforma.
O documento apresenta os resultados de uma pesquisa sobre o mercado de trabalho para desenvolvedores PHP no Brasil. Fornece estatísticas sobre a formação, experiência, salários e preferências de colaboradores PHP, tanto empregados quanto empreendedores. A pesquisa também analisa as necessidades de contratação de empresas que buscam desenvolvedores PHP.
O documento discute as vantagens do Java Server Faces (JSF) para desenvolvimento de interfaces web. O JSF permite a divisão de responsabilidades entre modelo, visão e controle através do padrão MVC, facilitando a manutenção e organização do código. Ele também suporta integração com diversas tecnologias como CSS, JavaScript e Ajax, além de recursos como validação de dados, conversão e recuperação de objetos.
Desafios e glórias na implementação de infra as codeEduardo Rozario
Este documento discute os desafios e conquistas na implementação de infraestrutura como código. Resume três pontos principais: 1) O uso do controle de versão para gerenciar a infraestrutura como código; 2) A importância de componentes reutilizáveis; 3) A necessidade de testes para garantir a confiabilidade da infraestrutura.
Nesse palestra iremos explorar os recursos mais complexos do TypeScript, de forma didática vamos entender como não se sentir engessado pelos tipos, e mais que isso, ter toda ajuda que a tipagem estática provê.
Conheça ROP - Programação orientada e trilhosLucas Teles
O documento introduz o conceito de Programação Orientada a Trilhos (ROP), onde funções são modeladas como "trilhos" para lidar com erros de forma funcional. A analogia dos trilhos mostra como compor funções encapsulando sua lógica interna. Um adapter é criado para permitir a composição, representando funções como "TwoTrack" que podem retornar resultados ou erros. Exemplos demonstram como validações, mapeamentos e funções que lançam exceções podem ser implementadas dentro deste modelo.
Fabulous traz todo o poder do F# para o ecossistema Xamarin. F# é a linguagem funcional da Microsoft muito poderosa com foco em código seguro e expressivo. O Fabulous utiliza dessas vantagens da linguagem para implementar o modelo arquitetural Elmish (model-view-update). Basicamente um Redux para Xamarin. Isso na pratica significa ter um controle de estado de aplicação centralizado e previsível.
O documento apresenta as principais características do TypeScript como union types, intersection types, tuples, nullable types, literal types, enums, discriminated unions, polymorphic this types, index types, generics e mapped types. O objetivo é mostrar como o TypeScript vai além de JavaScript ao adicionar tipagem estática e outros recursos para melhorar a qualidade e manutenção de código.
Algoritmos genéticos aplicados no problema de roteirização de veículos com ja...Lucas Teles
Este documento discute a aplicação de algoritmos genéticos para resolver o problema de roteirização de veículos com janela de tempo, apresentando o problema, motivação, estado da arte, objetivos, solução proposta e metodologia. Os resultados obtidos ao aplicar algoritmos genéticos são comparados a soluções exatas e heurísticas, mostrando a viabilidade da abordagem.
Algoritmos genéticos aplicados em problemas de busca de caminhoLucas Teles
Este documento discute a aplicação de algoritmos genéticos em busca heurística de caminho para otimização de espaço. Descreve algoritmos como A* e BFS para busca de caminho e como algoritmos genéticos podem ser usados em uma abordagem metaheurística chamada PPGA para melhorar a eficiência espacial destes algoritmos em diferentes tipos de mapas.
O documento discute algoritmos genéticos, que são heurísticas inspiradas na evolução biológica. Eles representam soluções como cromossomos e aplicam operações como seleção, cruzamento e mutação para evoluir soluções ao longo de gerações. O documento explica os conceitos básicos dos algoritmos genéticos, incluindo representação, geração inicial, aptidão, seleção, reprodução e mutação.
Visual Studio 2019 was launched with new features for C#, .NET, and Blazor. Blazor is a new web framework using C# and .NET to build client-side web UI using Razor Components, allowing reuse of .NET code on the client side via WebAssembly. The framework supports building interactive web apps using SignalR for real-time functionality and can be hosted with ASP.NET Core.
Simplificando componentes com react hooksLucas Teles
React Hooks permitem simplificar componentes, trocando classes por funções e evitando problemas como Wrapper Hell e lógica não compartilhável em métodos de ciclo de vida. O documento apresenta como usar Hooks para melhorar o desempenho e compartilhamento de código em componentes React.
O documento discute as vantagens de usar Elm para desenvolvimento front-end, incluindo gerar JavaScript de alto desempenho sem exceções de tempo de execução. Também discute a arquitetura "Elmish" de fluxo de dados unidirecional e por que ela traz benefícios como testabilidade e estado centralizado.
C# 8 and beyond is discussed. The document mentions that C# 8 is still in beta and only works on .NET Core 3+. It introduces default interface methods, readonly instance methods, and simplifies parameter null validation code. Future versions may include features like readonly locals, pattern-based using statements, null-conditional await, dictionary literals, and records. The document promotes continued advancement of C# and .NET.
O documento fornece uma introdução ao F#, uma linguagem de programação funcional desenvolvida pela Microsoft. Resume as seguintes informações essenciais:
1) O F# foi desenvolvido pela Microsoft Research, é open source e funciona no Visual Studio e VS Code de forma cross-platform.
2) Apresenta as principais diferenças entre F# e C#, como a inferência de tipos, filosofia funcional-first e tipos algébricos.
3) Recomenda recursos como o site fsharp.org para aqueles interessados em aprender mais sobre a linguagem.
O documento apresenta os principais conceitos da tecnologia blockchain, incluindo seu surgimento em 1991 para criação de timestamps digitais, a criação da Bitcoin em 2009 e o conceito de ledger distribuído. Explica como as transações são agrupadas em blocos através de hashes e como o proof of work garante o consenso na rede.
Generalização prematura e complexidade acidental, a raiz do mal de todo softwareLucas Teles
Nessa apresentação iremos discutir um dos grandes males do desenvolvimento de software de mercado, a generalização prematura, como somos péssimos em prever o futuro e como isso afeta nossas decisões no código do dia a dia. Vamos olhar os males da generalização prematura, como talvez seja melhor deixar com que a duplicação de código apareça e cresça antes de tentarmos generalizar. Somos horríveis em prever o futuro, então a solução é não prever! Além de discutir o reflexo direto desse efeito, vamos abordar a complexidade acidental, desenvolvimento em camadas, frameworks corporativos, etc? E como é fácil focar nisso antes do que realmente importa, fazer o mínimo pra entregar valor!
O documento discute a arquitetura Elmish para aplicativos Xamarin.Forms. Elmish é uma arquitetura inspirada no Redux que usa um modelo imutável, mensagens e funções de atualização para manter o estado da aplicação. A arquitetura permite testes mais fáceis e controle de estado centralizado. O documento também discute como usar F# com Xamarin.Forms usando o framework Fabulous para implementar Elmish.
O documento discute programação concorrente em .NET, comparando processos e threads, e abordando vantagens e preocupações com multi-threading. Também explica primitivas de sincronização como monitores, mutexes, eventos e coleções concorrentes.
6. Globalcode – Open4education
Sobre
• Desenvolvido pela Microsoft Research
– Incluído junto com Visual Studio in 2010
• Open source
– GitHub
• Cross platform
– Funciona com VS Code (e outros)
7. Globalcode – Open4education
Sobre
• Desenvolvido pela Microsoft Research
– Incluído junto com Visual Studio in 2010
• Open source
– GitHub
• Cross platform
– Funciona com VS Code (e outros)
• Comunidade ativa
– fsharp.org
– F# Slack channel
11. Globalcode – Open4education
Sobre
• Roda em cima do CLR
• Interopera com outras linguagens .NET
• É turing completa
• É possível usufruir de qualquer bibliotecas escritas em/para
C# tal como EntityFramework, ASP.NET, Xamarin, etc.
17. Globalcode – Open4education
Índice
Diferenças entre C# e F#
– Sintaxe
– Inferência de tipos
– Diferentes defaults
– Diferente filosofia
Exclusivo do F#
– Functional-first
– Algebraic type system
18. Globalcode – Open4education
Índice
Diferenças entre C# e F#
– Sintaxe
– Inferência de tipos
– Diferentes defaults
– Diferente filosofia
Exclusivo do F#
– Functional-first
– Algebraic type system
19. Globalcode – Open4education
Índice
Diferenças entre C# e F#
– Sintaxe
– Inferência de tipos
– Diferentes defaults
– Diferente filosofia
Exclusivo do F#
– Functional-first
– Algebraic type system
86. Globalcode – Open4education
F# tem ‘defaults’ diferentes do C#
• Imutável por padrão
• Mutabilidade é caso especial
• Classes e tipos por padrão não nuláveis
• Permitir nulo é um caso especial
87. Globalcode – Open4education
F# tem ‘defaults’ diferentes do C#
• Imutável por padrão
• Mutabilidade é caso especial
• Classes e tipos por padrão não nuláveis
• Permitir nulo é um caso especial
• Igualdade estrutural por padrão
• Igualdade por referencia é caso especial
88. Globalcode – Open4education
F# tem ‘defaults’ diferentes do C#
• Imutável por padrão
• Mutabilidade é caso especial
• Classes e tipos por padrão não nuláveis
• Permitir nulo é um caso especial
• Igualdade estrutural por padrão
• Igualdade por referencia é caso especial
• Todos os valores devem ser sempre totalmente
inicializados
106. Globalcode – Open4education
Diferente filosofia
• C# historicamente é um derivado da linguagem C
• F# veio do ML, uma Meta Linguagem para
se provar coisas
109. Globalcode – Open4education
Objetivo:
Você consegue entender o código usando
apenas informações que você tem bem na sua
frente?
Sem olhar outras partes da base de código!
115. Globalcode – Open4education
C# é mais previsível que JavaScript!
Em C#, se você não corresponder os tipos
corretamente você obtém um erro de
compilação!
116. Globalcode – Open4education
C# é mais previsível que JavaScript!
Em C#, se você não corresponder os tipos
corretamente você obtém um erro de
compilação!
Isso é ótimo!
121. Globalcode – Open4education
Como fazer uma linguagem mais previsível?
• As variáveis não devem poder alterar seu tipo
• Objetos com os mesmos valores devem ser iguais por padrão
125. Globalcode – Open4education
Como fazer uma linguagem mais previsível?
• As variáveis não devem poder alterar seu tipo
• Objetos com os mesmos valores devem ser iguais por padrão
• Comparar tipos diferentes deve dar erro de compilação
130. Globalcode – Open4education
Como fazer uma linguagem mais previsível?
• As variáveis não devem poder alterar seu tipo
• Objetos com os mesmos valores devem ser iguais por padrão
• Comparar tipos diferentes deve dar erro de compilação
• Objetos sempre devem ser inicializados em um estado válido,
caso contrario erro de compilação
135. Globalcode – Open4education
Como fazer uma linguagem mais previsível?
• As variáveis não devem poder alterar seu tipo
• Objetos com os mesmos valores devem ser iguais por padrão
• Comparar objetos de diferentes deve dar erro de compilação
• Objetos sempre devem ser inicializados em um estado válido,
caso contrario erro de compilação
• Uma vez criados, objetos e coleções devem ser imutáveis.
140. Globalcode – Open4education
Como fazer uma linguagem mais previsível?
• As variáveis não devem poder alterar seu tipo
• Objetos com os mesmos valores devem ser iguais por padrão
• Comparar tipos diferentes deve dar erro de compilação
• Objetos sempre devem ser inicializados em um estado válido,
caso contrario erro de compilação
• Uma vez criados, objetos e coleções devem ser imutáveis.
• Dados ou erros ausentes devem ser explicitados. Sem
permitir nulos
141. Globalcode – Open4education
F# tenta ser uma linguagem previsível
• As variáveis não devem poder alterar seu tipo
• Objetos com os mesmos valores devem ser iguais por padrão
• Comparar tipos diferentes deve dar erro de compilação
• Objetos sempre devem ser inicializados em um estado válido,
caso contrario erro de compilação
• Uma vez criados, objetos e coleções (geralmente) são
imutáveis.
• Dados ou erros ausentes (geralmente) são explícitos. Sem
permitir nulos
142. Globalcode – Open4education
F# tenta ser uma linguagem previsível
• As variáveis não devem poder alterar seu tipo
• Objetos com os mesmos valores devem ser iguais por padrão
• Comparar tipos diferentes deve dar erro de compilação
• Objetos sempre devem ser inicializados em um estado válido,
caso contrario erro de compilação
• Uma vez criados, objetos e coleções (geralmente) são
imutáveis.
• Dados ou erros ausentes (geralmente) são explícitos. Sem
permitir nulos
207. Globalcode – Open4education
Exemplo de alguns requisitos:
Aceitamos três formas de pagamento: Dinheiro,
cheque ou cartão.
Para dinheiro, não precisamos de nenhuma
informação extra
208. Globalcode – Open4education
Exemplo de alguns requisitos:
Aceitamos três formas de pagamento: Dinheiro,
cheque ou cartão.
Para dinheiro, não precisamos de nenhuma
informação extra
Para cheques, precisamos do número do cheque
209. Globalcode – Open4education
Exemplo de alguns requisitos:
Aceitamos três formas de pagamento: Dinheiro,
cheque ou cartão.
Para dinheiro, não precisamos de nenhuma
informação extra
Para cheques, precisamos do número do cheque
Para cartões, precisamos do tipo de cartão e do
número do cartão