<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Elixir UTFPR (por Adolfo Neto)</title>
    <description>The latest articles on DEV Community by Elixir UTFPR (por Adolfo Neto) (@elixir_utfpr).</description>
    <link>https://dev.to/elixir_utfpr</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F504395%2F7c2fefd7-cedd-4edf-96d2-5aa279db062c.jpg</url>
      <title>DEV Community: Elixir UTFPR (por Adolfo Neto)</title>
      <link>https://dev.to/elixir_utfpr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/elixir_utfpr"/>
    <language>en</language>
    <item>
      <title>Meetup Elug CE 21/05/2024 19h00</title>
      <dc:creator>Elixir UTFPR (por Adolfo Neto)</dc:creator>
      <pubDate>Fri, 17 May 2024 13:10:31 +0000</pubDate>
      <link>https://dev.to/elixir_utfpr/meetup-elug-ce-21052024-19h00-57cg</link>
      <guid>https://dev.to/elixir_utfpr/meetup-elug-ce-21052024-19h00-57cg</guid>
      <description>&lt;p&gt;Informações em &lt;a href="https://threadreaderapp.com/thread/1787967344817385677.html"&gt;https://threadreaderapp.com/thread/1787967344817385677.html&lt;/a&gt;&lt;/p&gt;

</description>
      <category>elixir</category>
    </item>
    <item>
      <title>Conferências do Ecossistema de Erlang (e Elixir)</title>
      <dc:creator>Elixir UTFPR (por Adolfo Neto)</dc:creator>
      <pubDate>Thu, 16 May 2024 19:34:10 +0000</pubDate>
      <link>https://dev.to/elixir_utfpr/conferencias-do-ecossistema-de-erlang-e-elixir-1ki0</link>
      <guid>https://dev.to/elixir_utfpr/conferencias-do-ecossistema-de-erlang-e-elixir-1ki0</guid>
      <description>&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/Ui6pPukr5tk"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Olá pessoal,&lt;/p&gt;

&lt;p&gt;No  vídeo acima eu conmversei um pouco sobre a  comunidade do ecossistema de Erlang. Para quem está familiarizado, isso inclui Erlang, Elixir, Gleam, LFE e outras linguagens que rodam na BEAM (a máquina virtual de Erlang). Porém, reconheço que nem todos conhecem profundamente cada uma dessas linguagens. Então, vamos embarcar nessa jornada juntos.&lt;/p&gt;

&lt;h3&gt;
  
  
  Introdução às Linguagens do Ecossistema Erlang
&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Erlang&lt;/strong&gt; é a linguagem original, criada para suportar sistemas de telecomunicações robustos e distribuídos. &lt;strong&gt;Elixir&lt;/strong&gt; surgiu em 2011 e rapidamente se tornou uma das mais populares dentro desse ecossistema, especialmente após a primeira versão estável em 2012. &lt;strong&gt;Gleam&lt;/strong&gt; é uma linguagem funcional tipada estaticamente que vem ganhando destaque recentemente, e &lt;strong&gt;LFE (Lisp Flavored Erlang)&lt;/strong&gt; combina a simplicidade do Lisp com a robustez de Erlang.&lt;/p&gt;

&lt;h3&gt;
  
  
  Sobre Mim
&lt;/h3&gt;

&lt;p&gt;Sou Adolfo Neto, professor da UTFPR, coordenador e apresentador do podcast Elixir em Foco. Você pode me encontrar no Twitter (ou X) como &lt;a href="https://twitter.com/adolfont"&gt;@adolfont&lt;/a&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Conferências e Eventos da Comunidade Erlang
&lt;/h3&gt;

&lt;p&gt;Vamos falar sobre alguns dos eventos mais importantes que ocorrem no ecossistema Erlang:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Code BEAM America&lt;/strong&gt;: Realizada nos EUA, essa conferência aborda diversas linguagens da BEAM. Em 2022, apresentei um trabalho junto com meu aluno Lucas Tavano. Embora não tenha ocorrido em 2023, a expectativa é de retorno em 2024.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Code BEAM Europe&lt;/strong&gt;: Essa conferência ocorre anualmente na Europa e já foi conhecida como Erlang User Conference. Este ano, será em Berlim nos dias 14 e 15 de outubro, com sessões virtuais disponíveis.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Erlang Workshop&lt;/strong&gt;: Um evento acadêmico que ocorre desde 2001, voltado para a apresentação de artigos científicos. É uma parte da International Conference on Functional Programming, oferecendo uma plataforma para discussões profundas sobre desenvolvimento e pesquisa em Erlang.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ElixirConf&lt;/strong&gt;: A principal conferência dedicada ao Elixir, realizada desde 2014. A edição de 2024 acontecerá de 27 a 30 de agosto em Orlando, Flórida.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Eventos no Brasil
&lt;/h3&gt;

&lt;p&gt;Aqui no Brasil, temos eventos que mantêm viva a chama da comunidade:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Elixir Brasil&lt;/strong&gt;: Realizada em 2018 e 2019, foi uma conferência presencial que deixou saudades. Em 2020 e 2021, aconteceu de forma online devido à pandemia.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Elixir Days&lt;/strong&gt;: Acontecerá em São Paulo nos dias 25 e 26 de maio de 2024. É uma ótima oportunidade para nos encontrarmos e discutirmos as novidades do ecossistema. Para mais detalhes, visite &lt;a href="https://elixirdays.com/"&gt;Elixir Days&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Eventos Internacionais e Regionais
&lt;/h3&gt;

&lt;p&gt;Além dos grandes eventos, há várias conferências regionais que ocorrem esporadicamente:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Code BEAM Lite&lt;/strong&gt;: Edições menores e mais focadas, como as realizadas em Estocolmo e A Coruña.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ElixirConf África&lt;/strong&gt;: Um evento virtual que traz a vibrante comunidade africana para o centro das discussões sobre Elixir.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ElixirConf Latinoamérica&lt;/strong&gt;: Já teve uma edição na Colômbia. Seria uma excelente iniciativa termos mais uma edição para fortalecer a comunidade na América Latina.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Conclusão
&lt;/h3&gt;

&lt;p&gt;A comunidade do ecossistema de Erlang é rica e diversificada, com eventos que promovem o compartilhamento de conhecimento e o fortalecimento dos laços entre desenvolvedores. Espero encontrar muitos de vocês nos próximos eventos e, claro, ouvir suas opiniões e experiências.&lt;/p&gt;

&lt;p&gt;Não se esqueçam de conferir nosso podcast &lt;a href="http://elixiremfoco.com"&gt;Elixir em Foco&lt;/a&gt; para mais informações e discussões sobre o ecossistema Elixir. Um abraço a todos e até a próxima!&lt;/p&gt;

&lt;p&gt;Adolfo Neto&lt;/p&gt;

&lt;p&gt;PS: O texto acima foi gerado com o prompt "Transforme num blog post: ", mais a transcrição do vídeo acima feita pelo YTScribe, pelo ChatGPT 4o.&lt;/p&gt;

</description>
      <category>elixir</category>
      <category>erlang</category>
      <category>gleam</category>
      <category>beam</category>
    </item>
    <item>
      <title>Meetup Online de Elixir no dia 21/05/2024</title>
      <dc:creator>Elixir UTFPR (por Adolfo Neto)</dc:creator>
      <pubDate>Fri, 03 May 2024 15:33:19 +0000</pubDate>
      <link>https://dev.to/elixir_utfpr/meetup-online-de-elixir-no-dia-21052024-51jk</link>
      <guid>https://dev.to/elixir_utfpr/meetup-online-de-elixir-no-dia-21052024-51jk</guid>
      <description>&lt;p&gt;Vamos realizar um Meetup Online no dia 21/05/2024, terça-feira, à noite (ou no fim da tarde). Este formulário é para consultar se você tem interesse em participar e para fazer uma enquete sobre o horário. A duração do encontro deverá ser entre 1 e 2 horas e será realizado na plataforma Google Meet (com gravação).&lt;/p&gt;

&lt;p&gt;Formulário: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://docs.google.com/forms/d/e/1FAIpQLSdDSImogMe0Jv4IJvYVy6oN5stu7Cx8ctJiASaHG4NMi_7CXw/viewform?usp=sf_link"&gt;https://docs.google.com/forms/d/e/1FAIpQLSdDSImogMe0Jv4IJvYVy6oN5stu7Cx8ctJiASaHG4NMi_7CXw/viewform?usp=sf_link&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos tentar trazer palestrantes da Elixir Days para uma Mesa Redonda.Para saber mais sobre a Elixir Days, acesse &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.elixirdays.com/"&gt;https://www.elixirdays.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; Para saber mais sobre o ELUG CE, acesse &lt;/p&gt;

&lt;p&gt;&lt;a href="https://elug-ce.github.io/"&gt;https://elug-ce.github.io/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; Aceitaremos respostas até 06/05/2024.&lt;/p&gt;

</description>
      <category>elixir</category>
    </item>
    <item>
      <title>Elixir Days - Evento presencial em São Paulo</title>
      <dc:creator>Elixir UTFPR (por Adolfo Neto)</dc:creator>
      <pubDate>Thu, 02 May 2024 18:46:40 +0000</pubDate>
      <link>https://dev.to/elixir_utfpr/elixir-days-evento-presencial-em-sao-paulo-3665</link>
      <guid>https://dev.to/elixir_utfpr/elixir-days-evento-presencial-em-sao-paulo-3665</guid>
      <description>&lt;p&gt;Vai acontecer nos dias 25 e 26 de maio de 2024, em São Paulo, a conferência Elixir Days. Serão dois dias para celebrar com a comunidade brasileira de Elixir reunindo palestrantes nacionais e internacionais!&lt;/p&gt;

&lt;p&gt;Clique no linl para saber mais &lt;a href="https://bit.ly/ElixirDays2024"&gt;https://bit.ly/ElixirDays2024&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;e clique em &lt;a href="https://bit.ly/ElixirDays"&gt;https://bit.ly/ElixirDays&lt;/a&gt; para comprar ingresso. Com o cupom ELIXIREMFOCO você consegue 15% de desconto. &lt;/p&gt;

</description>
      <category>elixir</category>
      <category>erlang</category>
    </item>
    <item>
      <title>O Método GROWS: Uma Abordagem Holística para o Desenvolvimento de Software</title>
      <dc:creator>Elixir UTFPR (por Adolfo Neto)</dc:creator>
      <pubDate>Tue, 23 Apr 2024 20:00:00 +0000</pubDate>
      <link>https://dev.to/elixir_utfpr/o-metodo-grows-uma-abordagem-holistica-para-o-desenvolvimento-de-software-3b83</link>
      <guid>https://dev.to/elixir_utfpr/o-metodo-grows-uma-abordagem-holistica-para-o-desenvolvimento-de-software-3b83</guid>
      <description>&lt;p&gt;O Método GROWS, idealizado por Andy Hunt e Jared Richardson em 2015, se apresenta como uma alternativa inovadora para a gestão de projetos e desenvolvimento de software. Com foco no aprendizado contínuo e no crescimento holístico, o método se diferencia de frameworks ágeis tradicionais ao propor uma visão mais abrangente que engloba os aspectos técnicos, de projetos e de portfólio, unindo desenvolvedores, executivos e usuários.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fundamentos do Método GROWS:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O Método GROWS se sustenta em quatro pilares que orientam sua aplicação:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Paradigma Contínuo:&lt;/strong&gt; Enfatiza a natureza contínua do desenvolvimento de software, promovendo experimentos, orçamentos e aprendizado constantes, além da integração e entrega contínuas já consagradas.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Estágios de Habilidades:&lt;/strong&gt; Reconhece que as equipes evoluem em diferentes níveis de maturidade, necessitando de diferentes tipos de apoio e ferramentas ao longo do processo.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Desenvolvimento de Bala Traçante:&lt;/strong&gt; Propõe a criação de um protótipo funcional inicial que guie o desenvolvimento subsequente, permitindo aprendizados e ajustes contínuos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;Quatro "Sementes" Fundamentais:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Laços, não Linhas:&lt;/strong&gt; Prioriza a colaboração e a comunicação aberta em detrimento de hierarquias rígidas.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Orgânico, não Robótico:&lt;/strong&gt; Adapta-se às mudanças e se ajusta às necessidades do projeto, evitando processos inflexíveis.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Intencional, não Acidental:&lt;/strong&gt; Enfatiza o planejamento consciente e a tomada de decisões deliberadas, minimizando a improvisação.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Reais, não Proxys:&lt;/strong&gt; Baseia-se em dados concretos e feedback real, evitando métricas artificiais e irrelevantes.&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Hábitos para Implementação:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O Método GROWS apresenta uma série de hábitos para serem adotados por diferentes papéis e níveis de maturidade das equipes, buscando aprimorar o desenvolvimento de software em todos os níveis.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Aplicabilidade do Método GROWS:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Embora a forma de aplicação detalhada do Método GROWS ainda esteja em desenvolvimento, seus conceitos e princípios podem ser adaptados a diversos contextos, desde startups até grandes empresas. A ênfase no aprendizado contínuo e na colaboração torna o método acessível a equipes de diferentes portes e níveis de experiência.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Software para Adoção do Método GROWS:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O Método GROWS não exige ferramentas ou softwares específicos para sua implementação. O foco principal reside na mudança de mentalidade e na adoção de práticas que promovam o aprendizado contínuo e o crescimento holístico.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Diferenças em Relação ao Scrum:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O Método GROWS se diferencia do Scrum por não se prender a um framework rígido e prescritivo. Ao invés disso, oferece uma estrutura flexível e adaptável às necessidades de cada equipe, sem a necessidade de certificações formais.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusão:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;O Método GROWS se apresenta como uma abordagem promissora para o gerenciamento de projetos e desenvolvimento de software, com foco no aprendizado contínuo, na colaboração e no crescimento holístico das equipes. Sua flexibilidade e adaptabilidade o tornam uma opção interessante para empresas de diferentes portes e níveis de maturidade, buscando aprimorar seus processos de desenvolvimento de software.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Observações:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A página oficial do Método GROWS (&lt;a href="https://growsmethod.com/growsmethod_index.html"&gt;https://growsmethod.com/growsmethod_index.html&lt;/a&gt;) oferece mais informações sobre o método, seus fundamentos e sua aplicação.&lt;/li&gt;
&lt;li&gt;Treinamentos e workshops sobre o Método GROWS são oferecidos pelo Instituto do Método GROWS (mesmo link acima).&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;PS: O texto acima foi escrito pelo Gemini a partir &lt;a href="https://docs.google.com/document/d/e/2PACX-1vS3O6X-OT4hBniMkO2CAsOyJxmxTFHwv_RnRqIpmLuUiKWuZIoE7Xw1WRbF6luKgm6VVjfjk3fPwaEv/pub"&gt;deste texto que eu escrevi&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>agile</category>
      <category>ágil</category>
    </item>
    <item>
      <title>Eventos de Elixir, Erlang, BEAM e Engenharia de Software em 2024</title>
      <dc:creator>Elixir UTFPR (por Adolfo Neto)</dc:creator>
      <pubDate>Fri, 23 Feb 2024 17:02:55 +0000</pubDate>
      <link>https://dev.to/elixir_utfpr/eventos-de-elixirerlangbeam-e-engenharia-de-software-em-2024-4kij</link>
      <guid>https://dev.to/elixir_utfpr/eventos-de-elixirerlangbeam-e-engenharia-de-software-em-2024-4kij</guid>
      <description>&lt;p&gt;&lt;strong&gt;Em negrito, os eventos no Brasil.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Code BEAM America 2024&lt;br&gt;
March 7-8 2024 | San Francisco, CA &amp;amp; Virtual &lt;br&gt;
&lt;a href="https://codebeamamerica.com/"&gt;https://codebeamamerica.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Elixir Conf Europe&lt;br&gt;
18-19 Apr 2024&lt;br&gt;
Lisbon, Portugal&lt;br&gt;
&lt;a href="https://www.elixirconf.eu/"&gt;https://www.elixirconf.eu/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CIbSE 2024&lt;br&gt;
Mon 6 - Fri 10 May 2024 &lt;br&gt;
Curitiba, Brazil&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://conf.researchr.org/home/cibse-2024"&gt;https://conf.researchr.org/home/cibse-2024&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;GigCityElixir&lt;br&gt;
May 10-11, 2024&lt;br&gt;
Chattanooga, TN, USA&lt;br&gt;
&lt;a href="https://www.gigcityelixir.com/"&gt;https://www.gigcityelixir.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;NervesConf&lt;br&gt;
May 9&lt;br&gt;
Chattanooga, TN, USA&lt;br&gt;
&lt;a href="https://nervesconf.us/"&gt;https://nervesconf.us/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Code BEAM Lite Stockholm&lt;br&gt;
13 May 2024 (tutorials on 14 May)&lt;br&gt;
Stockholm, Sweden&lt;br&gt;
&lt;a href="https://codebeamstockholm.com/"&gt;https://codebeamstockholm.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Evento de Elixir (a confirmar)&lt;br&gt;
25 e 26 de maio de 2024&lt;br&gt;
São Paulo, Brasil&lt;/p&gt;

&lt;p&gt;&lt;del&gt;Elixir Safari&lt;/del&gt;&lt;br&gt;
&lt;del&gt;19-23 June&lt;/del&gt;&lt;br&gt;
&lt;del&gt;Kenya&lt;/del&gt;&lt;br&gt;
&lt;a href="https://elixirconf.africa/"&gt;https://elixirconf.africa/&lt;/a&gt;&lt;br&gt;
&lt;a href="https://twitter.com/adolfont/status/1765691786524234102"&gt;canceled&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;FSE 2024 in Porto de Galinhas, Brazil!&lt;br&gt;
July 15th to July 19th, 2024, in Porto de Galinhas, Pernambuco, Brazil&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://adolfon.substack.com/p/fse-2024-in-porto-de-galinhas-brazil"&gt;https://adolfon.substack.com/p/fse-2024-in-porto-de-galinhas-brazil&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;44o. Congresso da Sociedade Brasileira de Computação (CSBC 2024)&lt;br&gt;
21 a 25 de Julho de 2024, Brasília - Distrito Federal&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://csbc.sbc.org.br/2024/"&gt;https://csbc.sbc.org.br/2024/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;27th Workshop on Requirements Engineering (WER 2024)&lt;br&gt;
Buenos Aires, Argentina, August 7 - 9, 2024&lt;br&gt;
&lt;a href="http://www.wikicfp.com/cfp/servlet/event.showcfp?eventid=177460&amp;amp;copyownerid=184772"&gt;http://www.wikicfp.com/cfp/servlet/event.showcfp?eventid=177460&amp;amp;copyownerid=184772&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;ElixirConf US&lt;br&gt;
Orlando, Florida&lt;br&gt;
August 27-30, 2024&lt;br&gt;
&lt;a href="http://elixirconf.com"&gt;http://elixirconf.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;CBSoft&lt;br&gt;
30 de setembro a 04 de outubro de 2024&lt;br&gt;
Curitiba, Paraná&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://cbsoft.sbc.org.br/2024/cbsoft/?lang=pt"&gt;https://cbsoft.sbc.org.br/2024/cbsoft/?lang=pt&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Code BEAM Europe&lt;br&gt;
14-15 OCTOBER 2024&lt;br&gt;
BERLIN, Germany&lt;br&gt;
&lt;a href="https://codebeameurope.com/"&gt;https://codebeameurope.com/&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;ESEIW 2024&lt;/em&gt;&lt;br&gt;
&lt;em&gt;Sun 20 - Fri 25 October 2024&lt;/em&gt; &lt;br&gt;
&lt;em&gt;Barcelona, Spain&lt;/em&gt;&lt;br&gt;
&lt;a href="https://conf.researchr.org/home/esem-2024"&gt;https://conf.researchr.org/home/esem-2024&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SBQS&lt;br&gt;
5 a 8 de novembro de 2024&lt;br&gt;
Salvador, Bahia&lt;/strong&gt;&lt;br&gt;
&lt;a href="https://sbqs.sbc.org.br/2024/index.php/pt/"&gt;https://sbqs.sbc.org.br/2024/index.php/pt/&lt;/a&gt;&lt;/p&gt;

</description>
    </item>
    <item>
      <title>Como começar a programar em Elixir?</title>
      <dc:creator>Elixir UTFPR (por Adolfo Neto)</dc:creator>
      <pubDate>Mon, 09 Oct 2023 14:11:44 +0000</pubDate>
      <link>https://dev.to/elixir_utfpr/como-comecar-a-programar-em-elixir-17o9</link>
      <guid>https://dev.to/elixir_utfpr/como-comecar-a-programar-em-elixir-17o9</guid>
      <description>&lt;p&gt;Uma dúvida comum entre pessoas que descobrem a existência da linguagem de programação Elixir, criada pelo brasileiro &lt;a href="https://pt.wikipedia.org/wiki/Jos%C3%A9_Valim"&gt;José Valim&lt;/a&gt;, é: "Qual é o ponto de partida para aprender Elixir?" e "Como devo me preparar para conquistar meu primeiro estágio ou emprego na área de programação?"&lt;/p&gt;

&lt;p&gt;Iniciar no mundo da programação geralmente envolve o uso de um computador (desktop ou laptop) para desenvolver e testar programas. A prática desempenha um papel fundamental para consolidar o conhecimento adquirido por meio de diversos recursos, como livros, artigos em blogs, vídeos, podcasts e outros.&lt;/p&gt;

&lt;p&gt;Atualmente, para começar a aprender Elixir você não precisa instalar nada em seu computador. Você pode, por exemplo, usar uma instância de &lt;a href="https://livebook.dev/"&gt;Livebook&lt;/a&gt; rodando no Fly.io ou no HuggingFace. E, claro, você pode também instalar Livebook no seu computador. Se quer saber como, acesse a parte &lt;a href="https://github.com/Universidade-Livre/Learn4Elixir/#instalando-elixir-e-o-livebook"&gt;Instalando Elixir e Livebook&lt;/a&gt; do repositório &lt;a href="https://github.com/Universidade-Livre/Learn4Elixir/"&gt;Learn4Elixir&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Depois disso, é só seguir o material de aprendizado de sua escolha. Se você escolher o Learn4Elixir e tem alguma dúvida, assista a este vídeo sobre o Capítulo 1 do Learn4Elixir:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/xcYO5G0sthg"&gt;
&lt;/iframe&gt;
.&lt;/p&gt;

&lt;p&gt;Há também um vídeo sobre o Capítulo 2:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/ObTPNEbdvkM"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;E há o vídeo de lançamento do Learn4Elixir, uma iniciativa da &lt;a href="https://ulivre.dev/"&gt;Universidade Brasileira Livre (UBL)&lt;/a&gt;:&lt;/p&gt;

&lt;p&gt;&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/9DjlSB_RfPo"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

&lt;p&gt;Se  você ainda tiver alguma dúvida, entre no [Discord da &lt;a href="https://discord.com/invite/dsvMraVaca"&gt;UBL&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;E se quer saber como se preparar para conquistar seu primeiro estágio ou emprego na área de programação usando Elixir, entre na comunidade &lt;a href="https://t.me/elixirbr"&gt;Elixir Brasil no Telegram&lt;/a&gt;, sem esquecer de responder ao CAPTCHA!&lt;/p&gt;

&lt;p&gt;Inspirado no post &lt;a href="https://osprogramadores.com/blog/2019/03/12/por-onde-comecar/"&gt;Por onde começar, de Os Programadores&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Leia também este post anterior: &lt;a href="https://dev.to/elixir_utfpr/como-comecar-a-aprender-a-linguagem-de-programacao-elixir-26o5"&gt;Como começar a aprender a linguagem de programação Elixir?&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>elixir</category>
      <category>learn4elixir</category>
      <category>programacao</category>
    </item>
    <item>
      <title>O que é o ecossistema de Erlang?</title>
      <dc:creator>Elixir UTFPR (por Adolfo Neto)</dc:creator>
      <pubDate>Fri, 14 Jul 2023 16:34:27 +0000</pubDate>
      <link>https://dev.to/elixir_utfpr/o-que-e-o-ecossistema-de-erlang-3km</link>
      <guid>https://dev.to/elixir_utfpr/o-que-e-o-ecossistema-de-erlang-3km</guid>
      <description>&lt;p&gt;Perguntei ao ChatGPT e a resposta foi:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;O ecossistema de Erlang refere-se ao conjunto de tecnologias, ferramentas, bibliotecas e comunidades relacionadas à linguagem de programação Erlang. Erlang é uma linguagem de programação funcional, concorrente e tolerante a falhas, desenvolvida pela Ericsson no final dos anos 80.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Faz sentido. A calculadora continuou:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;O ecossistema de Erlang é conhecido por sua força em sistemas distribuídos e de tempo real, especialmente em aplicativos de telecomunicações e comunicações em larga escala. Ele oferece recursos poderosos para lidar com concorrência, escalabilidade e resiliência, tornando-o adequado para sistemas altamente disponíveis e que exigem baixa latência.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Também está certo. Faltou mencionar a BEAM, a &lt;a href="https://pt.wikipedia.org/wiki/M%C3%A1quina_virtual"&gt;máquina virtual&lt;/a&gt; de Erlang. Por que a máquina virtual de Erlang se chama BEAM e não EVM? Por motivos históricos explicados em &lt;a href="https://dl.acm.org/doi/abs/10.1145/1238844.1238850"&gt;A history of Erlang, de Joe Armstrong&lt;/a&gt;. Simplificando: por volta de 1990 havia a JAM, &lt;em&gt;Joe Abstract Machine,&lt;/em&gt; onde "Joe" refere-se a Joe Armstrong, um dos criadores da linguagem. Em 1993 a equipe do Erlang decidiu criar uma versão mais eficiente da máquina virtual de Erlang. Bogumil (Bogdan) Hausman foi o principal criador desta linguagem e o nome inicial dela era Turbo Erlang. Mas como Turbo era uma marca da empresa Borland, renomearam a máquina para BEAM: &lt;em&gt;Bogdan's Erlang Abstract Machine&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;O ChatGPT continua:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Dentro do ecossistema de Erlang, existem várias ferramentas e bibliotecas notáveis que complementam a linguagem. Alguns exemplos incluem:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;OTP (Open Telecom Platform): É um conjunto de bibliotecas e frameworks que fornecem abstrações e componentes reutilizáveis para o desenvolvimento de sistemas distribuídos robustos. O OTP inclui o "Supervisor", que gerencia a tolerância a falhas, e o "GenServer", que permite criar processos concorrentes.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Cowboy: É um servidor web assíncrono em Erlang, projetado para lidar com alto tráfego e requisitos de baixa latência. Ele fornece um ambiente para criar aplicativos web escaláveis e de alto desempenho.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;RabbitMQ: É um sistema de mensagens assíncronas baseado em Erlang. Ele fornece uma plataforma de mensagens robusta e escalável para integração de sistemas distribuídos.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Elixir: Embora tecnicamente não seja parte do ecossistema de Erlang, vale a pena mencionar o Elixir. Ele é uma linguagem de programação funcional construída em cima da máquina virtual Erlang (BEAM). Elixir aproveita os recursos do ecossistema de Erlang, mas oferece uma sintaxe mais moderna e uma abordagem mais amigável para a programação.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;

&lt;p&gt;Eu discordo do "tecnicamente não seja parte do ecossistema de Erlang". Por que não faz?&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Além disso, o ecossistema de Erlang é suportado por uma comunidade ativa de desenvolvedores, com conferências, fóruns online e recursos educacionais disponíveis para compartilhar conhecimento e promover a colaboração.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Faltou mencionar a Fundação do Ecossistema de Erlang (&lt;em&gt;Erlang Ecosystem Foundation&lt;/em&gt;). Associe-se em &lt;a href="https://erlef.org/"&gt;https://erlef.org/&lt;/a&gt;.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Em resumo, o ecossistema de Erlang é um conjunto de recursos, ferramentas e comunidades relacionadas à linguagem de programação Erlang, que enfatiza a construção de sistemas distribuídos, tolerantes a falhas e de alto desempenho.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;O link para a &lt;a href="https://chat.openai.com/share/90f01a72-43cd-4afc-bbb4-4fd36da6da56"&gt;resposta do chatGPT é este&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;OK, achei que ficou bom. Você concorda? &lt;/p&gt;

</description>
    </item>
    <item>
      <title>Tipos e mentalidades de programação, por David Heinemeier Hanson</title>
      <dc:creator>Elixir UTFPR (por Adolfo Neto)</dc:creator>
      <pubDate>Mon, 08 May 2023 22:23:32 +0000</pubDate>
      <link>https://dev.to/elixir_utfpr/tipos-e-mentalidades-de-programacao-por-david-heinemeier-hanson-2k1c</link>
      <guid>https://dev.to/elixir_utfpr/tipos-e-mentalidades-de-programacao-por-david-heinemeier-hanson-2k1c</guid>
      <description>&lt;p&gt;Gostei muito do texto &lt;a href="https://world.hey.com/dhh/programming-types-and-mindsets-5b8490bc"&gt;"Programming types and mindsets"&lt;/a&gt;, de David Heinemeier Hanson, o &lt;a href="https://world.hey.com/dhh"&gt;DHH&lt;/a&gt;, criador do Ruby on Rails (projeto em que José Valim, criador de Elixir, trabalhou por um bom tempo). Fiquei sabendo do texto através &lt;a href="https://twitter.com/osantana/status/1655371449056542720"&gt;deste tweet do Osvaldo Santana&lt;/a&gt;:&lt;/p&gt;


&lt;blockquote class="ltag__twitter-tweet"&gt;

  &lt;div class="ltag__twitter-tweet__main"&gt;
    &lt;div class="ltag__twitter-tweet__header"&gt;
      &lt;img class="ltag__twitter-tweet__profile-image" src="https://res.cloudinary.com/practicaldev/image/fetch/s--7gVJub6w--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://pbs.twimg.com/profile_images/1587221237570437126/KfZnFz1d_normal.jpg" alt="Osvaldo @osantana@mastodon.social profile image"&gt;
      &lt;div class="ltag__twitter-tweet__full-name"&gt;
        Osvaldo @osantana@mastodon.social
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__username"&gt;
        @osantana
      &lt;/div&gt;
      &lt;div class="ltag__twitter-tweet__twitter-logo"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--kDgU_xDI--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/twitter-f95605061196010f91e64806688390eb1a4dbc9e913682e043eb8b1e06ca484f.svg" alt="twitter logo"&gt;
      &lt;/div&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__body"&gt;
      Eu sou um "dynamic type" guy. E minha linguagem favorita sempre foi a favorita por esse motivo. Mas agora ela não quer mais ser minha linguagem favorita. &lt;a href="https://t.co/Zfeub1k0Ik"&gt;twitter.com/eminetto/statu…&lt;/a&gt;
    &lt;/div&gt;
    &lt;div class="ltag__twitter-tweet__date"&gt;
      00:38 AM - 08 May 2023
    &lt;/div&gt;

      &lt;div class="ltag__twitter-tweet__quote"&gt;
        &lt;div class="ltag__twitter-tweet__quote__header"&gt;
          &lt;span class="ltag__twitter-tweet__quote__header__name"&gt;
            eltonminetto.dev
          &lt;/span&gt;
          &lt;a class="mentioned-user" href="https://dev.to/eminetto"&gt;@eminetto&lt;/a&gt;
        &lt;/div&gt;
        Programming types and mindsets https://t.co/sFBdKoxY2U
      &lt;/div&gt;

    &lt;div class="ltag__twitter-tweet__actions"&gt;
      &lt;a href="https://twitter.com/intent/tweet?in_reply_to=1655371449056542720" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--OXOJJiQT--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/twitter-reply-action-238fe0a37991706a6880ed13941c3efd6b371e4aefe288fe8e0db85250708bc4.svg" alt="Twitter reply action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/retweet?tweet_id=1655371449056542720" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--foTp-unf--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/twitter-retweet-action-632c83532a4e7de573c5c08dbb090ee18b348b13e2793175fea914827bc42046.svg" alt="Twitter retweet action"&gt;
      &lt;/a&gt;
      &lt;a href="https://twitter.com/intent/like?tweet_id=1655371449056542720" class="ltag__twitter-tweet__actions__button"&gt;
        &lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--SFHqU4bF--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://dev.to/assets/twitter-like-action-1ea89f4b87c7d37465b0eb78d51fcb7fe6c03a089805d7ea014ba71365be5171.svg" alt="Twitter like action"&gt;
      &lt;/a&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/blockquote&gt;


&lt;p&gt;Por quê? Porque eu gosto de tipagem dinâmica e de programação funcional mas não me atrevo a dizer que:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Tipagem dinâmica é MELHOR que tipagem estática&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Programação Funcional é SUPERIOR a Programação Orientada a Objetos.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Não! É apenas meu gosto, minha personalidade.&lt;/p&gt;

&lt;p&gt;Então vamos ao texto traduzido:&lt;/p&gt;

&lt;h2&gt;
  
  
  Tipos e mentalidades de programação
&lt;/h2&gt;

&lt;p&gt;Uma das mais antigas divergências na programação é a da tipagem estática versus a dinâmica. Durante toda a minha carreira, ouvi milhões de argumentos de ambos os lados, mas vi muito poucos convencerem alguém de algo. Como racionalizações disfarçadas de razão raramente funcionam em questões de fé. O cavaleiro sempre justificará o caminho do elefante.&lt;/p&gt;

&lt;p&gt;Isso não quer dizer que não existam pessoas que mudaram de opinião. Na verdade, esses indivíduos geralmente são os que mais gritam racionalizações de todos os tipos. Frequentemente com o charme de um onívoro de longa data que de repente se tornou vegano ou de um banqueiro tradicional que teve sorte no mercado de criptomoedas. Quanto mais curta a fé, mais brilhante é a chama.&lt;/p&gt;

&lt;p&gt;Pessoalmente, sou um cara assumidamente a favor da tipagem dinâmica. É por isso que amo tanto Ruby. Ele tira proveito total da tipagem dinâmica para permitir uma sintaxe poética que resulta em um código tão bonito. Para mim, Ruby com tipagem estática explícita seria como uma salada com uma bola de sorvete. Simplesmente não combinam.&lt;/p&gt;

&lt;p&gt;Também devo confessar que já abracei a posição evangelizadora para a tipagem dinâmica no passado. Ao ponto de sofrer de uma aflição de Uma Única Proposição Verdadeira. Vendo a falta de entusiasmo pela tipagem dinâmica como um reflexo de falta de educação, experiência ou talvez até de competência.&lt;/p&gt;

&lt;p&gt;Oh, que tolice.&lt;/p&gt;

&lt;p&gt;É como tentar convencer um introvertido de que ele realmente gostaria de festas se apenas se soltasse um pouco. Que, na verdade, é muito divertido ficar em salas lotadas, por horas a fio, gritando para se comunicar, porque aquela VIBE!&lt;/p&gt;

&lt;p&gt;Hoje em dia, aprendi a apreciar a magnificência da multiplicidade. A programação seria uma empreitada terrível se todos fôssemos limitados ao mesmo paradigma. A natureza humana é muito variada para aceitar tal restrição em sua criatividade.&lt;/p&gt;

&lt;p&gt;Você consegue imaginar se toda a arte visual tivesse que ser renderizada no estilo do cubismo? Ou do realismo? Ou se todos os romances fossem escritos no estilo curto e direto de Hemmingway? Que chatice seria tudo isso rapidamente!&lt;/p&gt;

&lt;p&gt;Isso arruinaria a mágica da programação. Essa fusão única de arte e engenharia.&lt;/p&gt;

&lt;p&gt;Mas demorei um pouco para chegar a essas conclusões. Sou um solucionista em recuperação. Então, quando vejo pessoas cruzarem o coração em descrença de que alguém, em algum lugar, possa preferir JavaScript em vez de TypeScript, sorrio e lembro dos dias em que reconhecia o mesmo zelo no espelho.&lt;/p&gt;

&lt;p&gt;Isso não significa que todos os assuntos relacionados a abordagens de programação se resumam a mentalidades diferentes. Há limites para esse relativismo. Porém, a distinção entre tipagem dinâmica e estática é certa dentro de suas próprias características. O mesmo vale para a programação funcional versus orientada a objetos. Em ambos os eixos, há casos de excelentes softwares criados ao longo das décadas (e também de coisas horríveis!).&lt;/p&gt;

&lt;p&gt;Hoje em dia, as pessoas têm a capacidade de se expressar igualmente bem em ambas as extremidades. No entanto, essa habilidade ambidestra parece ser rara, como é evidenciado pela descrença tão frequentemente expressa por ambos os lados de que o outro possa ter uma posição razoável.&lt;/p&gt;

&lt;p&gt;Eu não sou ambidestro. Eu não gosto de tipagem estática, e objetos animam minha mente. Mas aprendi a apreciar o fato de que outras pessoas iluminam sua criatividade com tanta intensidade quanto eu, usando restrições de programação funcional e tipos especificamente definidos.&lt;/p&gt;

&lt;p&gt;Desde que eu nunca precise poluir o meu Ruby com sugestões de tipo ou escrever todo o código front-end em TypeScript, posso conviver felizmente com aqueles que adoram Go ou não suportam JavaScript. Vive la différence!&lt;/p&gt;

&lt;h2&gt;
  
  
  Fim
&lt;/h2&gt;

&lt;p&gt;E então, gostaram?&lt;/p&gt;

&lt;p&gt;Vou mudar um pouco mas faço dele as mainhas palavras:&lt;/p&gt;

&lt;p&gt;Eu não gosto de tipagem estática, e &lt;em&gt;funções&lt;/em&gt; animam minha mente. Mas aprendi a apreciar o fato de que outras pessoas iluminam sua criatividade com tanta intensidade quanto eu, usando restrições de &lt;em&gt;programação orientada a objetos&lt;/em&gt; e tipos especificamente definidos.&lt;/p&gt;

</description>
      <category>tipos</category>
    </item>
    <item>
      <title>Novo vídeo: Explicando e resolvendo City Office do Exercism em Elixir (usando docs e typespecs)</title>
      <dc:creator>Elixir UTFPR (por Adolfo Neto)</dc:creator>
      <pubDate>Tue, 04 Apr 2023 22:48:46 +0000</pubDate>
      <link>https://dev.to/elixir_utfpr/novo-video-explicando-e-resolvendo-city-office-do-exercism-em-elixir-usando-docs-e-typespecs-3pma</link>
      <guid>https://dev.to/elixir_utfpr/novo-video-explicando-e-resolvendo-city-office-do-exercism-em-elixir-usando-docs-e-typespecs-3pma</guid>
      <description>&lt;p&gt;Fazia tempo que eu não fazia um vídeo resolvendo exercícios do &lt;a href="https://exercism.org/"&gt;Exercism&lt;/a&gt; (ou do Advent of Code).&lt;/p&gt;

&lt;p&gt;Eu gostei deste pois o objetivo era escrever documentação em Elixir.&lt;/p&gt;

&lt;p&gt;Assista abaixo:&lt;br&gt;
 &lt;iframe width="710" height="399" src="https://www.youtube.com/embed/M5aYm0wPFKs"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>elixir</category>
      <category>exercism</category>
    </item>
    <item>
      <title>Aulas de Introdução a Elixir (2023)</title>
      <dc:creator>Elixir UTFPR (por Adolfo Neto)</dc:creator>
      <pubDate>Tue, 04 Apr 2023 22:44:02 +0000</pubDate>
      <link>https://dev.to/elixir_utfpr/aulas-de-introducao-a-elixir-2023-1pmh</link>
      <guid>https://dev.to/elixir_utfpr/aulas-de-introducao-a-elixir-2023-1pmh</guid>
      <description>&lt;p&gt;Ministrei 3 aulas ao vivo de Introdução a Elixir.&lt;br&gt;
Os vídeos estão abaixo.&lt;br&gt;
Gostei dos dois primeiros mas nem tanto do terceiro.&lt;br&gt;
Devo fazer uma quarta aula?&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/UC4cIIHry1I"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/KY839kctQnA"&gt;
&lt;/iframe&gt;
&lt;br&gt;
&lt;iframe width="710" height="399" src="https://www.youtube.com/embed/cPyW7uXNEPY"&gt;
&lt;/iframe&gt;
&lt;/p&gt;

</description>
      <category>elixir</category>
    </item>
    <item>
      <title>O que é um processo em Elixir?</title>
      <dc:creator>Elixir UTFPR (por Adolfo Neto)</dc:creator>
      <pubDate>Sat, 04 Mar 2023 15:15:36 +0000</pubDate>
      <link>https://dev.to/elixir_utfpr/o-que-e-um-processo-em-elixir-4j00</link>
      <guid>https://dev.to/elixir_utfpr/o-que-e-um-processo-em-elixir-4j00</guid>
      <description>&lt;p&gt;Para aprender o que é um processo em Elixir, antes você tem que saber o que é uma função.&lt;/p&gt;

&lt;p&gt;Por exemplo, &lt;code&gt;IO.puts/1&lt;/code&gt; é uma função que escreve algo na tela. A função se chama &lt;code&gt;puts&lt;/code&gt;, ela está no módulo &lt;code&gt;IO&lt;/code&gt; (de entrada I e saída O) e ela recebe um argumento:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight elixir"&gt;&lt;code&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;IO&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;puts&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Adolfo"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="no"&gt;Adolfo&lt;/span&gt;
&lt;span class="ss"&gt;:ok&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se tudo dá certo ela retorna o átomo &lt;code&gt;:ok&lt;/code&gt;.&lt;br&gt;
Uma função que te permite gerar (tradução talvez imprecisa de &lt;em&gt;spawn&lt;/em&gt;, em inglês) é &lt;code&gt;Kernel.spawn/1&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Novamente, o nome dela é &lt;code&gt;spawn&lt;/code&gt;, ela faz parte do módulo &lt;code&gt;Kernel&lt;/code&gt; e recebe um argumento.&lt;br&gt;
Eu consigo fazer&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight elixir"&gt;&lt;code&gt;&lt;span class="no"&gt;Kernel&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;spawn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;IO&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;puts&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Adolfo"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;?&lt;br&gt;
Não!&lt;/p&gt;

&lt;p&gt;Vamos começar simplificando: toda função que faz parte do módulo &lt;code&gt;Kernel&lt;/code&gt; não precisa do nome do módulo antes.&lt;br&gt;
Basta chamar&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight elixir"&gt;&lt;code&gt;&lt;span class="n"&gt;spawn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="no"&gt;IO&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;puts&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Adolfo"&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Vai continuar errado mas com menos letras. &lt;br&gt;
O que &lt;code&gt;Kernel.spawn/1&lt;/code&gt; recebe é uma função de aridade 0, ou seja, que não recebe nenhum argumento.&lt;br&gt;
Como fazemos isso?&lt;br&gt;
Assim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight elixir"&gt;&lt;code&gt;&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A função acima não tem nome (anônima) e retorna 1.&lt;/p&gt;

&lt;p&gt;Mas veja na imagem que se você dá um spawn nela, nada de interessante acontece: &lt;/p&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--ST7i64nD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nwr4okyxc0l7efxrlwhn.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--ST7i64nD--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/uploads/articles/nwr4okyxc0l7efxrlwhn.png" alt="Image description" width="418" height="78"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Em primeiro lugar, veja que&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight elixir"&gt;&lt;code&gt;&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;retornou uma espécie de "código" que identifica a função:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight elixir"&gt;&lt;code&gt;&lt;span class="c1"&gt;#Function&amp;lt;43.3316493/0 in :erl_eval.expr/6&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight elixir"&gt;&lt;code&gt;&lt;span class="n"&gt;spawn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;retornou um &lt;em&gt;PID&lt;/em&gt;, um &lt;em&gt;Process IDentifier&lt;/em&gt;, um identificador de processo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight elixir"&gt;&lt;code&gt;&lt;span class="c1"&gt;#PID&amp;lt;0.120.0&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Eu posso atribuir este PID a uma variável:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight elixir"&gt;&lt;code&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;pid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;spawn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;#PID&amp;lt;0.110.0&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;E depois perguntar se o processo que foi gerado está vivo:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight elixir"&gt;&lt;code&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;2&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;Process&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;alive?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pid&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="no"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Não está pois era uma função muito rápida, que só retornava 1.&lt;br&gt;
Eu posso, por exemplo, fazer o processo "dormir" por 10 segundos antes de retornar o 1.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight elixir"&gt;&lt;code&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;pid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;spawn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;Process&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;#PID&amp;lt;0.113.0&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se rapidamente eu pergunto se o processo, cujo identificador está na variável pid, está vivo, a resposta é sim.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight elixir"&gt;&lt;code&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;Process&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;alive?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pid&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="no"&gt;true&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Mas se pergunto novamente depois de 10 segundos, a resposta será não.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight elixir"&gt;&lt;code&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;5&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;Process&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;alive?&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;pid&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="no"&gt;false&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Se eu fizer isto aqui&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight elixir"&gt;&lt;code&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;6&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;pid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;spawn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;Process&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;10000&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="no"&gt;IO&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;puts&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Adolfo"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="c1"&gt;#PID&amp;lt;0.117.0&amp;gt;&lt;/span&gt;
&lt;span class="no"&gt;Adolfo&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;vai demorar 10 segundos para "Adolfo" ser escrito na tela. &lt;/p&gt;

&lt;p&gt;Já se eu fizer isto, será imediato para "Adolfo" aparecer na tela.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight elixir"&gt;&lt;code&gt;&lt;span class="n"&gt;iex&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="n"&gt;pid&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;spawn&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="k"&gt;fn&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="no"&gt;IO&lt;/span&gt;&lt;span class="o"&gt;.&lt;/span&gt;&lt;span class="n"&gt;puts&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;"Adolfo"&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="k"&gt;end&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;span class="no"&gt;Adolfo&lt;/span&gt;
&lt;span class="c1"&gt;#PID&amp;lt;0.119.0&amp;gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Enfim, isto é somente o básico do básico. Leia mais em&lt;br&gt;
&lt;a href="https://elixirschool.com/pt/lessons/intermediate/concurrency"&gt;https://elixirschool.com/pt/lessons/intermediate/concurrency&lt;/a&gt;&lt;br&gt;
Ou no Getting Started da linguagem Elixir&lt;br&gt;
&lt;a href="https://elixir-lang.org/getting-started/processes.html"&gt;https://elixir-lang.org/getting-started/processes.html&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Fiz tudo isso sem sequer mencionar &lt;code&gt;send&lt;/code&gt; e &lt;code&gt;receive&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Finalizando: um processo em Elixir é uma unidade de processamento que executa uma função. &lt;/p&gt;

</description>
      <category>elixir</category>
      <category>concorrência</category>
      <category>processos</category>
      <category>beam</category>
    </item>
  </channel>
</rss>
