<?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>Forem: Reinan Br.</title>
    <description>The latest articles on Forem by Reinan Br. (@reinanbr).</description>
    <link>https://forem.com/reinanbr</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%2F680197%2Ff5f95d77-f3bf-44e8-8c8b-1d9f14133352.jpg</url>
      <title>Forem: Reinan Br.</title>
      <link>https://forem.com/reinanbr</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/reinanbr"/>
    <language>en</language>
    <item>
      <title>Criando um Docker Back End Pelo Celular</title>
      <dc:creator>Reinan Br.</dc:creator>
      <pubDate>Mon, 11 Aug 2025 14:57:07 +0000</pubDate>
      <link>https://forem.com/reinanbr/criando-um-docker-back-end-pelo-celular-3538</link>
      <guid>https://forem.com/reinanbr/criando-um-docker-back-end-pelo-celular-3538</guid>
      <description>&lt;p&gt;A quem diga, que só dá para programar usando um MacBook pro de 16k... Parafraseando o grande Toreto:&lt;br&gt;
&lt;em&gt;O importante não é o carro, mas sim quem o dirige.🏎️&lt;/em&gt;&lt;br&gt;
Para iniciar o desenvolvimento no termux do Android, é preciso antes, ter instalado pelo menos o &lt;a href="//HTTPS://Google.com"&gt;Ubuntu 24.04 no termux&lt;/a&gt;.&lt;br&gt;
Com isso, vamos começar 📦.&lt;/p&gt;

</description>
      <category>docker</category>
      <category>webdev</category>
      <category>rust</category>
      <category>testing</category>
    </item>
    <item>
      <title>Configurando Os Temas do Vim no Termux</title>
      <dc:creator>Reinan Br.</dc:creator>
      <pubDate>Thu, 17 Oct 2024 13:31:46 +0000</pubDate>
      <link>https://forem.com/reinanbr/configurando-os-temas-do-vim-no-termux-48cp</link>
      <guid>https://forem.com/reinanbr/configurando-os-temas-do-vim-no-termux-48cp</guid>
      <description>&lt;p&gt;Em certos casos, o &lt;code&gt;coc&lt;/code&gt; do vim, apresenta temas que deixam a imagem do código não muito agradável para leitura. Neste artigo, iremos desenrolar de como podemos melhorar o tema do vim no Termux, usando como base, o artigo de um colega dev, &lt;a href="https://phoenixnap.com/kb/vim-color-schemes" rel="noopener noreferrer"&gt;phoenixnap&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqcu5gyducz6ue9oamiyy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqcu5gyducz6ue9oamiyy.png" alt="*exemplo de como o coc pode ficar se não for configurado*" width="800" height="261"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Começamos primeiro, criando uma pasta no vim, que seja dedicado apenas para temas, com o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nb"&gt;mkdir&lt;/span&gt; &lt;span class="nt"&gt;-p&lt;/span&gt; ~/.vim/colors
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois disso, iremos instalar o modulo do &lt;code&gt;morhetz/gruvbox&lt;/code&gt;. Se você leu meu outro artigo de como instalar o autocomplete no vim, em que eu instalei o instalador de plugins no vim, já está pronto para seguir para o próximo passo.&lt;/p&gt;

&lt;p&gt;Abra o vim adicione &lt;code&gt;morhetz/gruvbox&lt;/code&gt; entre os módulos do seu vim, colocando no &lt;code&gt;~/.vimrc&lt;/code&gt;. Deve ficar algo parecido com isso:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzdcc395hqcevf7i2w641.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzdcc395hqcevf7i2w641.png" alt="exemplo plugin" width="800" height="144"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Depois disso, salve com &lt;code&gt;:wq&lt;/code&gt;, abra o &lt;code&gt;~/.vimrc&lt;/code&gt; e instale com &lt;code&gt;: PlugInstall&lt;/code&gt; no interpretador do vim. Depois disso, você pode configurar do jeito que você que quiser, seguindo os passos do artigo do nosso colega phoenixnap, mas irei deixar o que mais me agradou:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight viml"&gt;&lt;code&gt;&lt;span class="c"&gt;"theme&lt;/span&gt;
&lt;span class="k"&gt;hi&lt;/span&gt; Normal ctermfg&lt;span class="p"&gt;=&lt;/span&gt;Red ctermbg&lt;span class="p"&gt;=&lt;/span&gt;Black
&lt;span class="nb"&gt;syntax&lt;/span&gt; &lt;span class="k"&gt;on&lt;/span&gt; &lt;span class="k"&gt;colorscheme&lt;/span&gt; gruvbox
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feltcv2m0whll6vldnh58.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Feltcv2m0whll6vldnh58.png" alt="exemplo de tema" width="800" height="272"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ele deixa o terminal e o código assim:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk2htygp3h9kv3v8l8b63.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk2htygp3h9kv3v8l8b63.png" alt="exemplo código" width="800" height="300"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>vim</category>
      <category>linux</category>
    </item>
    <item>
      <title>Configurando o AutoComplete do Vim pelo Termux</title>
      <dc:creator>Reinan Br.</dc:creator>
      <pubDate>Wed, 16 Oct 2024 13:03:21 +0000</pubDate>
      <link>https://forem.com/reinanbr/configurando-o-autocomplete-do-vim-pelo-termux-1n66</link>
      <guid>https://forem.com/reinanbr/configurando-o-autocomplete-do-vim-pelo-termux-1n66</guid>
      <description>&lt;h2&gt;
  
  
  Um guia prático de como ativar o autocomplete do vim.
&lt;/h2&gt;

&lt;p&gt;O Vim pode parecer difícil para os que não o conhecem, devido ao meme de "como sair do Vim usando &lt;code&gt;:q&lt;/code&gt; e Esc?!".&lt;/p&gt;

&lt;p&gt;Embora existam várias lendas sobre o Vim, é preciso entender e aceitar que ele é realmente uma das melhores ferramentas para edição de código pelo terminal (se não a melhor).&lt;/p&gt;

&lt;p&gt;Vamos agora iniciar um tutorial de como configurar o Vim com autocompletar no Termux.&lt;/p&gt;

&lt;p&gt;Para instalar o Vim no Termux, precisamos primeiro executar o seguinte comando:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;pkg i vim
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora, instalar as configurações e linguagens nescessárias para um bom funcionamento dos plugins do vim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;pkg i git npm nodejs python3 golang php composer python3-jedi pylint
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Instalando o nodejs atualizado:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# Download and install nvm:&lt;/span&gt;
curl &lt;span class="nt"&gt;-o-&lt;/span&gt; https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.3/install.sh | bash

&lt;span class="c"&gt;# in lieu of restarting the shell&lt;/span&gt;
&lt;span class="se"&gt;\.&lt;/span&gt; &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="nv"&gt;$HOME&lt;/span&gt;&lt;span class="s2"&gt;/.nvm/nvm.sh"&lt;/span&gt;

&lt;span class="c"&gt;# Download and install Node.js:&lt;/span&gt;
nvm &lt;span class="nb"&gt;install &lt;/span&gt;22

&lt;span class="c"&gt;# Verify the Node.js version:&lt;/span&gt;
node &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="c"&gt;# Should print "v22.18.0".&lt;/span&gt;
nvm current &lt;span class="c"&gt;# Should print "v22.18.0".&lt;/span&gt;

&lt;span class="c"&gt;# Verify npm version:&lt;/span&gt;
npm &lt;span class="nt"&gt;-v&lt;/span&gt; &lt;span class="c"&gt;# Should print "10.9.3".&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Agora, o Rust:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;--proto&lt;/span&gt; &lt;span class="s1"&gt;'=https'&lt;/span&gt; &lt;span class="nt"&gt;--tlsv1&lt;/span&gt;.2 &lt;span class="nt"&gt;-sSf&lt;/span&gt; https://sh.rustup.rs | sh
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois, instale o &lt;code&gt;plug-vim&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;curl &lt;span class="nt"&gt;-fLo&lt;/span&gt; ~/.vim/autoload/plug.vim &lt;span class="nt"&gt;--create-dirs&lt;/span&gt; &lt;span class="se"&gt;\&lt;/span&gt;
https://raw.githubusercontent.com/junegunn/vim-plug/master/plug.vim
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois disso, vamos configurar o &lt;code&gt;.vimrc&lt;/code&gt; para aceitar plugins e instalar o Coc, que será responsável pelo autocompletar nos códigos.&lt;/p&gt;

&lt;p&gt;Usando o próprio Vim, insira o seguinte código no &lt;code&gt;.vimrc&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="nv"&gt;$ &lt;/span&gt;vim ~/.vimrc &lt;span class="c"&gt;# abrindo o código&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Cole:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;call plug#begin&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'~/.vim/plugged'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
Plug &lt;span class="s1"&gt;'neoclide/coc.nvim'&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt;&lt;span class="s1"&gt;'branch'&lt;/span&gt;: &lt;span class="s1"&gt;'release'&lt;/span&gt;&lt;span class="o"&gt;}&lt;/span&gt;
call plug#end&lt;span class="o"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois disso, salve, pressionando Esc e, logo em seguida, digitando &lt;code&gt;:wq&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Em seguida, abra novamente e execute, fora do modo &lt;code&gt;insert&lt;/code&gt;, o seguinte comando no Vim:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;:PlugInstall
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Após isso, saia do modo de instalação com &lt;code&gt;:q&lt;/code&gt;. No modo insert, adicione as seguintes linhas no &lt;code&gt;.vimrc&lt;/code&gt; para que ele funcione normalmente:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight viml"&gt;&lt;code&gt;&lt;span class="c"&gt;" Usar &amp;lt;Tab&amp;gt; para completar ou navegar nas sugestões&lt;/span&gt;
inoremap &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;silent&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;expr&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;TAB&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="se"&gt;      \&lt;/span&gt; &lt;span class="nb"&gt;pumvisible&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; ? &lt;span class="s2"&gt;"\&amp;lt;C-n&amp;gt;"&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"\&amp;lt;Tab&amp;gt;"&lt;/span&gt;
inoremap &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;silent&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;expr&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;S&lt;span class="p"&gt;-&lt;/span&gt;TAB&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;
&lt;span class="se"&gt;      \&lt;/span&gt; &lt;span class="nb"&gt;pumvisible&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; ? &lt;span class="s2"&gt;"\&amp;lt;C-p&amp;gt;"&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"\&amp;lt;C-h&amp;gt;"&lt;/span&gt;

&lt;span class="c"&gt;" Mapear Enter para selecionar a sugestão&lt;/span&gt;
inoremap &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;silent&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&amp;lt;&lt;/span&gt;expr&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;CR&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; coc#pum#visible&lt;span class="p"&gt;()&lt;/span&gt; ? coc#_select_confirm&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;"\&amp;lt;CR&amp;gt;"&lt;/span&gt;

&lt;span class="c"&gt;" Configuração de navegação usando setas&lt;/span&gt;
nmap &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;silent&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="k"&gt;g&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;Plug&lt;span class="p"&gt;&amp;gt;(&lt;/span&gt;coc&lt;span class="p"&gt;-&lt;/span&gt;diagnostic&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="k"&gt;prev&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
nmap &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;silent&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;]&lt;/span&gt;&lt;span class="k"&gt;g&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;Plug&lt;span class="p"&gt;&amp;gt;(&lt;/span&gt;coc&lt;span class="p"&gt;-&lt;/span&gt;diagnostic&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="k"&gt;next&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;" Mostrar informações de erro e diagnósticos&lt;/span&gt;
nmap &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;silent&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;leader&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;rn &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;Plug&lt;span class="p"&gt;&amp;gt;(&lt;/span&gt;coc&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="nb"&gt;rename&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;

&lt;span class="c"&gt;" Formatar o código&lt;/span&gt;
nmap &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;&lt;span class="k"&gt;silent&lt;/span&gt;&lt;span class="p"&gt;&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;leader&lt;span class="p"&gt;&amp;gt;&lt;/span&gt;&lt;span class="k"&gt;f&lt;/span&gt; &lt;span class="p"&gt;&amp;lt;&lt;/span&gt;Plug&lt;span class="p"&gt;&amp;gt;(&lt;/span&gt;coc&lt;span class="p"&gt;-&lt;/span&gt;format&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Depois disso, use comandos no Vim como:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight viml"&gt;&lt;code&gt;&lt;span class="p"&gt;:&lt;/span&gt;CocInstall coc&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="k"&gt;python&lt;/span&gt; coc&lt;span class="p"&gt;-&lt;/span&gt;java coc&lt;span class="p"&gt;-&lt;/span&gt;tsserver coc&lt;span class="p"&gt;-&lt;/span&gt;&lt;span class="k"&gt;go&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;para instalar algumas linguagens, como esse comando que instala o autocompletar para Python, Java, TypeScript e Golang.&lt;/p&gt;

&lt;p&gt;É preciso adaptar o Termux e o Vim para trabalhar com algumas linguagens.&lt;/p&gt;

&lt;p&gt;Por exemplo, para Python, é necessário instalar o &lt;code&gt;jedi&lt;/code&gt; antes, usando o &lt;code&gt;pip&lt;/code&gt;. Quando abrir o primeiro arquivo Python no Vim, ele solicitará a instalação do &lt;code&gt;pylint&lt;/code&gt; para poder ler as bibliotecas instaladas.&lt;/p&gt;

&lt;p&gt;Seguindo esses passos, o Vim deve funcionar parecido com isso:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fluuq6xgxyp4jgs15bqpo.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fluuq6xgxyp4jgs15bqpo.png" alt="Vim configurado com sucesso" width="800" height="417"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;O .vimrc mais ideal para mim (que eu uso) é esse aqui.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;call plug#begin&lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="s1"&gt;'~/.vim/plugged'&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
&lt;span class="s2"&gt;" Plugin para sintaxe de Elixir
Plug 'elixir-editors/vim-elixir'

Plug 'neoclide/coc.nvim', {'branch': 'release'}
"&lt;/span&gt;Plug &lt;span class="s1"&gt;'phpactor/phpactor'&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s1"&gt;'do'&lt;/span&gt;: &lt;span class="s1"&gt;'composer install --no-dev -o'&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
Plug &lt;span class="s1"&gt;'Shougo/deoplete.nvim'&lt;/span&gt;, &lt;span class="o"&gt;{&lt;/span&gt; &lt;span class="s1"&gt;'do'&lt;/span&gt;: &lt;span class="s1"&gt;':UpdateRemotePlugins'&lt;/span&gt; &lt;span class="o"&gt;}&lt;/span&gt;
Plug &lt;span class="s1"&gt;'othree/html5.vim'&lt;/span&gt;         &lt;span class="s2"&gt;" Suporte ao HTML5 (requisito)
Plug 'evanleck/vim-svelte', {'for': 'njk'} "&lt;/span&gt; Suporte básico a njk/nunjucks
Plug &lt;span class="s1"&gt;'morhetz/gruvbox'&lt;/span&gt;
call plug#end&lt;span class="o"&gt;()&lt;/span&gt;


autocmd BufNewFile,BufRead &lt;span class="k"&gt;*&lt;/span&gt;.njk &lt;span class="nb"&gt;set &lt;/span&gt;&lt;span class="nv"&gt;filetype&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;htmldjango


&lt;span class="s2"&gt;"theme
hi Normal ctermfg=Red ctermbg=Black
syntax on colorscheme gruvbox


"&lt;/span&gt; config coc
inoremap &amp;lt;silent&amp;gt;&amp;lt;&lt;span class="nb"&gt;expr&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &amp;lt;TAB&amp;gt;
      &lt;span class="se"&gt;\ &lt;/span&gt;pumvisible&lt;span class="o"&gt;()&lt;/span&gt; ? &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\&amp;lt;&lt;/span&gt;&lt;span class="s2"&gt;C-n&amp;gt;"&lt;/span&gt; : &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\&amp;lt;&lt;/span&gt;&lt;span class="s2"&gt;Tab&amp;gt;"&lt;/span&gt;
inoremap &amp;lt;silent&amp;gt;&amp;lt;&lt;span class="nb"&gt;expr&lt;/span&gt;&lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &amp;lt;S-TAB&amp;gt;
      &lt;span class="se"&gt;\ &lt;/span&gt;pumvisible&lt;span class="o"&gt;()&lt;/span&gt; ? &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\&amp;lt;&lt;/span&gt;&lt;span class="s2"&gt;C-p&amp;gt;"&lt;/span&gt; : &lt;span class="s2"&gt;"&lt;/span&gt;&lt;span class="se"&gt;\&amp;lt;&lt;/span&gt;&lt;span class="s2"&gt;C-h&amp;gt;"&lt;/span&gt;

&lt;span class="s2"&gt;" Mapear Enter para selecionar a sugestão
inoremap &amp;lt;silent&amp;gt;&amp;lt;expr&amp;gt; &amp;lt;CR&amp;gt; coc#pum#visible() ? coc#_select_confirm() : "&lt;/span&gt;&lt;span class="se"&gt;\&amp;lt;&lt;/span&gt;CR&amp;gt;&lt;span class="s2"&gt;"

"&lt;/span&gt; Configuração de navegação usando setas
nmap &amp;lt;silent&amp;gt; &lt;span class="o"&gt;[&lt;/span&gt;g &amp;lt;Plug&amp;gt;&lt;span class="o"&gt;(&lt;/span&gt;coc-diagnostic-prev&lt;span class="o"&gt;)&lt;/span&gt;
nmap &amp;lt;silent&amp;gt; &lt;span class="o"&gt;]&lt;/span&gt;g &amp;lt;Plug&amp;gt;&lt;span class="o"&gt;(&lt;/span&gt;coc-diagnostic-next&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="s2"&gt;" Mostrar informações de erro e diagnósticos
nmap &amp;lt;silent&amp;gt; &amp;lt;leader&amp;gt;rn &amp;lt;Plug&amp;gt;(coc-rename)

"&lt;/span&gt; Formatar o código
nmap &amp;lt;silent&amp;gt; &amp;lt;leader&amp;gt;f &amp;lt;Plug&amp;gt;&lt;span class="o"&gt;(&lt;/span&gt;coc-format&lt;span class="o"&gt;)&lt;/span&gt;

&lt;span class="s2"&gt;"teclas:wq





"&lt;/span&gt;theme
hi Normal &lt;span class="nv"&gt;ctermfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Red &lt;span class="nv"&gt;ctermbg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Black
syntax on colorscheme gruvbox
&lt;span class="s2"&gt;"

"&lt;/span&gt; Melhorando o destaque de sintaxe
&lt;span class="s2"&gt;"set termguicolors
"&lt;/span&gt;syntax on
&lt;span class="s2"&gt;"colorscheme gruvbox

"&lt;/span&gt;Fundo escuro e contraste adequado
&lt;span class="s2"&gt;"theme
hi Normal ctermfg=Red ctermbg=Black
syntax on colorscheme gruvbox
"&lt;/span&gt;

&lt;span class="s2"&gt;" Melhorando o destaque de sintaxe
"&lt;/span&gt;&lt;span class="nb"&gt;set &lt;/span&gt;termguicolors
&lt;span class="s2"&gt;"syntax on
"&lt;/span&gt;colorscheme gruvbox

&lt;span class="s2"&gt;"Fundo escuro e contraste adequado
set termguicolors
syntax on
colorscheme gruvbox

"&lt;/span&gt; Fundo escuro e texto claro
hi Normal &lt;span class="nv"&gt;ctermfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;White &lt;span class="nv"&gt;ctermbg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Black

&lt;span class="s2"&gt;" Comentários
hi Comment ctermfg=Gray cterm=italic

"&lt;/span&gt; Palavras-chave &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;if&lt;/span&gt;, &lt;span class="k"&gt;else&lt;/span&gt;, &lt;span class="k"&gt;return&lt;/span&gt;, etc.&lt;span class="o"&gt;)&lt;/span&gt;
hi Keyword &lt;span class="nv"&gt;ctermfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Yellow &lt;span class="nv"&gt;cterm&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;bold

&lt;span class="s2"&gt;" Funções definidas pelo usuário
hi Function ctermfg=Blue cterm=bold

"&lt;/span&gt; Funções embutidas &lt;span class="o"&gt;(&lt;/span&gt;ex: print, len, console.log&lt;span class="o"&gt;)&lt;/span&gt;
hi BuiltinFunction &lt;span class="nv"&gt;ctermfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;LightBlue &lt;span class="nv"&gt;cterm&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;bold

&lt;span class="s2"&gt;" Métodos de classes
hi Method ctermfg=LightCyan cterm=bold

"&lt;/span&gt; Classes e Structs
hi Class &lt;span class="nv"&gt;ctermfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Blue &lt;span class="nv"&gt;cterm&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;bold
hi Struct &lt;span class="nv"&gt;ctermfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Blue &lt;span class="nv"&gt;cterm&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;bold

&lt;span class="s2"&gt;" Variáveis
hi Identifier ctermfg=Cyan
hi Variable ctermfg=LightCyan

"&lt;/span&gt; Parâmetros de funções e métodos
hi Parameter &lt;span class="nv"&gt;ctermfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;LightYellow

&lt;span class="s2"&gt;" Constantes e valores imutáveis
hi Constant ctermfg=LightBlue cterm=bold
hi Boolean ctermfg=LightMagenta
hi Number ctermfg=LightMagenta
hi String ctermfg=LightGreen

"&lt;/span&gt; Operadores &lt;span class="o"&gt;(&lt;/span&gt;+, -, &lt;span class="k"&gt;*&lt;/span&gt;, /, &lt;span class="o"&gt;=&lt;/span&gt;, etc.&lt;span class="o"&gt;)&lt;/span&gt;
hi Operator &lt;span class="nv"&gt;ctermfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;White &lt;span class="nv"&gt;cterm&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;bold

&lt;span class="s2"&gt;" Tipos (int, string, float, etc.)
hi Type ctermfg=Green cterm=bold
hi StorageClass ctermfg=Green cterm=bold

"&lt;/span&gt; Pré-processadores e diretivas &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="c"&gt;#define, import, require, etc.)&lt;/span&gt;
hi PreProc &lt;span class="nv"&gt;ctermfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Magenta

&lt;span class="s2"&gt;" Caracteres especiais (como '&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s2"&gt;', '&lt;/span&gt;&lt;span class="se"&gt;\t&lt;/span&gt;&lt;span class="s2"&gt;')
hi Special ctermfg=Red

"&lt;/span&gt; Retorno de funções &lt;span class="o"&gt;(&lt;/span&gt;ex: &lt;span class="k"&gt;return&lt;/span&gt;, yield, etc.&lt;span class="o"&gt;)&lt;/span&gt;
hi Return &lt;span class="nv"&gt;ctermfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Yellow &lt;span class="nv"&gt;cterm&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;bold

&lt;span class="s2"&gt;" Exceções e erros (ex: throw, try, catch)
hi Exception ctermfg=Red cterm=bold

"&lt;/span&gt; Declarações de fluxo &lt;span class="o"&gt;(&lt;/span&gt;&lt;span class="k"&gt;for&lt;/span&gt;, &lt;span class="k"&gt;while&lt;/span&gt;, &lt;span class="nb"&gt;break&lt;/span&gt;, &lt;span class="k"&gt;continue&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt;
hi Loop &lt;span class="nv"&gt;ctermfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Yellow &lt;span class="nv"&gt;cterm&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;bold

&lt;span class="s2"&gt;" Erros e avisos
hi Error ctermfg=White ctermbg=DarkRed
hi Warning ctermfg=Black ctermbg=Yellow



hi MethodCall ctermfg=LightCyan cterm=bold

"&lt;/span&gt; Define cores para variáveis e chamadas de métodos separadamente
hi Variable &lt;span class="nv"&gt;ctermfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;Cyan
hi Method &lt;span class="nv"&gt;ctermfg&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;LightCyan &lt;span class="nv"&gt;cterm&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;bold
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>linux</category>
      <category>vim</category>
    </item>
    <item>
      <title>A História do Linux [0/7]: As Primeiras Linguagens de Programação e a Origem dos Primeiros Sistemas Operacionais</title>
      <dc:creator>Reinan Br.</dc:creator>
      <pubDate>Sun, 05 May 2024 02:21:27 +0000</pubDate>
      <link>https://forem.com/reinanbr/a-historia-do-linux-07-as-primeiras-linguagens-de-programacao-e-a-origem-dos-primeiros-sistemas-operacionais-32c8</link>
      <guid>https://forem.com/reinanbr/a-historia-do-linux-07-as-primeiras-linguagens-de-programacao-e-a-origem-dos-primeiros-sistemas-operacionais-32c8</guid>
      <description>&lt;p&gt;Com o advento dos primeiros sistemas complexos de interpretação de instruções mecânicas, surgiu a nescessidade de criar linhas de comandos que essas mesmas máquinas pudessem interpretar e reproduzir funções de acordo com o comando que foi dado e/ou que já foi pré guardado (armazenado ou programado) para a máquina fazer.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight c"&gt;&lt;code&gt;&lt;span class="cp"&gt;#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdio.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;stdlib.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
#include&lt;/span&gt; &lt;span class="cpf"&gt;&amp;lt;time.h&amp;gt;&lt;/span&gt;&lt;span class="cp"&gt;
&lt;/span&gt;
&lt;span class="c1"&gt;// Definição de estruturas para representar processos e memória&lt;/span&gt;
&lt;span class="k"&gt;typedef&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;Processo&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;tempo_execucao&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;tempo_restante&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="n"&gt;Processo&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="k"&gt;typedef&lt;/span&gt; &lt;span class="k"&gt;struct&lt;/span&gt; &lt;span class="n"&gt;Memoria&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;tamanho&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;espaco_livre&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;enderecos&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;];&lt;/span&gt; &lt;span class="c1"&gt;// Array para armazenar endereços de processos alocados&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="n"&gt;Memoria&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="c1"&gt;// Função para simular a alocação de memória para um processo&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;alocarMemoria&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Processo&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;processo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Memoria&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;memoria&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;memoria&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;espaco_livre&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="n"&gt;processo&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;tempo_execucao&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="c1"&gt;// Encontra um espaço livre na memória&lt;/span&gt;
    &lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;endereco&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;memoria&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;tamanho&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
      &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;memoria&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;enderecos&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="n"&gt;endereco&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
        &lt;span class="k"&gt;break&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
      &lt;span class="p"&gt;}&lt;/span&gt;
    &lt;span class="p"&gt;}&lt;/span&gt;

    &lt;span class="c1"&gt;// Atualiza as informações de processo e memória&lt;/span&gt;
    &lt;span class="n"&gt;processo&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;endereco&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;endereco&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;memoria&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;espaco_livre&lt;/span&gt; &lt;span class="o"&gt;-=&lt;/span&gt; &lt;span class="n"&gt;processo&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;tempo_execucao&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;memoria&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;enderecos&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;endereco&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;processo&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Processo %d alocado na memória no endereço %d.&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;processo&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;endereco&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;else&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Memória insuficiente para alocar o processo %d.&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;processo&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Função para simular a execução de um processo&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;executarProcesso&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Processo&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;processo&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Processo %d em execução...&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;processo&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;sleep&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;processo&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;tempo_execucao&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt; &lt;span class="c1"&gt;// Simula o tempo de execução&lt;/span&gt;
  &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Processo %d finalizado.&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;processo&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="c1"&gt;// Função para liberar memória alocada para um processo&lt;/span&gt;
&lt;span class="kt"&gt;void&lt;/span&gt; &lt;span class="nf"&gt;liberarMemoria&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;Processo&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;processo&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;Memoria&lt;/span&gt; &lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="n"&gt;memoria&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="n"&gt;memoria&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;espaco_livre&lt;/span&gt; &lt;span class="o"&gt;+=&lt;/span&gt; &lt;span class="n"&gt;processo&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;tempo_execucao&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="n"&gt;memoria&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;enderecos&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;processo&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;endereco&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="n"&gt;printf&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;"Memória liberada para o processo %d.&lt;/span&gt;&lt;span class="se"&gt;\n&lt;/span&gt;&lt;span class="s"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;processo&lt;/span&gt;&lt;span class="o"&gt;-&amp;gt;&lt;/span&gt;&lt;span class="n"&gt;id&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="nf"&gt;main&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="c1"&gt;// Inicialização da memória&lt;/span&gt;
  &lt;span class="n"&gt;Memoria&lt;/span&gt; &lt;span class="n"&gt;memoria&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="n"&gt;memoria&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tamanho&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;100&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="n"&gt;memoria&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;espaco_livre&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;memoria&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tamanho&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="kt"&gt;int&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="n"&gt;memoria&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;tamanho&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="o"&gt;++&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="n"&gt;memoria&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;enderecos&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
  &lt;span class="p"&gt;}&lt;/span&gt;

  &lt;span class="c1"&gt;// Criação de alguns processos de exemplo&lt;/span&gt;
  &lt;span class="n"&gt;Processo&lt;/span&gt; &lt;span class="n"&gt;processo1&lt;/span&gt; &lt;span class="o"&gt;=&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="mi"&gt;30&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="n"&gt;Processo&lt;/span&gt; &lt;span class="n"&gt;processo2&lt;/span&gt; &lt;span class="o"&gt;=&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="mi"&gt;20&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;
  &lt;span class="n"&gt;Processo&lt;/span&gt; &lt;span class="n"&gt;processo3&lt;/span&gt; &lt;span class="o"&gt;=&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="mi"&gt;15&lt;/span&gt;&lt;span class="p"&gt;};&lt;/span&gt;

  &lt;span class="c1"&gt;// Simulação da alocação e execução de processos&lt;/span&gt;
  &lt;span class="n"&gt;alocarMemoria&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;processo1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;memoria&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;executarProcesso&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;processo1&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;liberarMemoria&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;processo1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;memoria&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="n"&gt;alocarMemoria&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;processo2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;memoria&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;executarProcesso&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;processo2&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;liberarMemoria&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;processo2&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;memoria&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="n"&gt;alocarMemoria&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;processo3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;memoria&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;executarProcesso&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;processo3&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
  &lt;span class="n"&gt;liberarMemoria&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;processo3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="o"&gt;&amp;amp;&lt;/span&gt;&lt;span class="n"&gt;memoria&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;

  &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;span class="p"&gt;}&lt;/span&gt;

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



</description>
      <category>c</category>
      <category>unix</category>
      <category>linux</category>
    </item>
    <item>
      <title>A Vital Importância de Saber Trabalhar Com Mais de Uma Linguagem de Programação</title>
      <dc:creator>Reinan Br.</dc:creator>
      <pubDate>Sun, 22 Oct 2023 14:06:36 +0000</pubDate>
      <link>https://forem.com/reinanbr/a-vital-importancia-de-saber-trabalhar-com-mais-de-uma-linguagem-de-programacao-2ogn</link>
      <guid>https://forem.com/reinanbr/a-vital-importancia-de-saber-trabalhar-com-mais-de-uma-linguagem-de-programacao-2ogn</guid>
      <description>&lt;p&gt;No anime Naruto Shhippuden, existem diversos clans diferentes, cada um com um nivel de shakra (poder no anime) e habilidades diferentes. Cada um, com um jutsu bem diferenciado e mais forte do que outro.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ge59f22g0c08dd9jqmb.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1ge59f22g0c08dd9jqmb.png" alt="Image fonte: Nerd Sensei" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Junto com eles, temos os poderes oculares. Que são uma das maneiras mais primordiais do anime de concentrar chakra. &lt;br&gt;
O poder ocular mais famoso do anime, é sharingan.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk20vg7s0f0j67ozxvgzc.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fk20vg7s0f0j67ozxvgzc.png" alt="Image Sasuske com Mangekyô ativado" width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E todos eles, todo o chakra presente no anime, veio de uma fonte singular, que foi a Kaguya, mãe de todos os chakras e poderes oculares na Terra.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcep0go44zxh0cpvnrzd2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcep0go44zxh0cpvnrzd2.png" alt="Image Kaguya" width="600" height="315"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Ela obteve todo esse poder, ao comer do fruto da Arvore Divina.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7vz92q4pj44euap694q3.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7vz92q4pj44euap694q3.png" alt="Image Arvore Divina" width="686" height="386"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;E dessa linhagem dela, e de outro ser que veio junto com ela, surgiram as diferentes linhagens presentes no anime, cada um tipo de poder e dominação diferente.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6tel34qyohr6sm0m0373.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6tel34qyohr6sm0m0373.png" alt="Image linhagem de Naruto" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Mas por quê diabos começar o artigo falando da linhagem dos clãs de Naruto?&lt;br&gt;
É simples, pequeno gafanhoto. Para poder entender essa analogia, devemos recorrer na história da programação, o mesmo caminho que usamos para poder compreender a diferença entre os clãs em Naruto.&lt;br&gt;
&lt;br&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  A História das Linguagens de Programação
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://res.cloudinary.com/practicaldev/image/fetch/s--wJMLvbHm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.cdslab.org/matlab/notes/preliminary-foundations/programming-history/PLchart.png" class="article-body-image-wrapper"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--wJMLvbHm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://www.cdslab.org/matlab/notes/preliminary-foundations/programming-history/PLchart.png" alt="timeLine Languages" width="800" height="493"&gt;&lt;/a&gt;&lt;br&gt;
&lt;em&gt;Original -&amp;gt;&lt;/em&gt; &lt;a href="https://www.cdslab.org/matlab/notes/preliminary-foundations/programming-history/PLchart.png"&gt;timeline Language&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Podemos afirmar, que toda a história das liguagens de programação começou ainda na decada de 1940, em que a &lt;strong&gt;linguagem primordial&lt;/strong&gt; (a &lt;strong&gt;raiz&lt;/strong&gt; da &lt;strong&gt;Arvore Divina&lt;/strong&gt;) foi a famosa &lt;strong&gt;linguagem de máquina&lt;/strong&gt;, que nada mais eram do que os códigos binários, que eram diretamente programados e executados pelas máquinas na epóca. Programar nesse nível era extremamente complexo e propenso a erros.&lt;/p&gt;

&lt;p&gt;Depois dela, na decáda de 1950 tivemos a linguagem como &lt;strong&gt;Assembly&lt;/strong&gt; (o &lt;strong&gt;fruto&lt;/strong&gt; da &lt;strong&gt;Arvore Divina&lt;/strong&gt;), que representava instruções de máquina com abreviações mnemônicas. Isso tornou a programação um pouco mais legível, mas ainda estava intimamente ligada à arquitetura do hardware.&lt;/p&gt;

&lt;p&gt;Logo em seguida, de grande impacto, na decáda de 1960, surgiu a linguagem de programação chamada &lt;strong&gt;Fortran&lt;/strong&gt; (&lt;strong&gt;Clã Otsukisuki&lt;/strong&gt; depois que comem os &lt;strong&gt;frutos&lt;/strong&gt; da &lt;strong&gt;Arvore Divina&lt;/strong&gt;), que viria a se tornar a principal linhagem de muitas das linguagens de programação que temos hoje, como, &lt;strong&gt;Perl&lt;/strong&gt;, &lt;strong&gt;Swift&lt;/strong&gt;, &lt;strong&gt;Go&lt;/strong&gt;, &lt;strong&gt;rust&lt;/strong&gt;, &lt;strong&gt;C&lt;/strong&gt; e &lt;strong&gt;C++&lt;/strong&gt; que é por sua vez mãe do &lt;strong&gt;Python&lt;/strong&gt;, &lt;strong&gt;Java&lt;/strong&gt; e que por sua vez deu linhagem a linguagens como &lt;strong&gt;Kotlin&lt;/strong&gt;, &lt;strong&gt;Dart&lt;/strong&gt; e &lt;strong&gt;C#&lt;/strong&gt;. O &lt;strong&gt;C&lt;/strong&gt; influenciou na construção e design de diversas linguagens modernas, com detalhes de sintaxe e semântica, modelo de programação imperativa, construção por modulos, bibliotecas e APIs, portabilidade de códigos, alocação de memória manual, desempenho e entre outros pontos que vieram a influenciar de maneira direta e indireta na construção de outras linguagens.&lt;/p&gt;

&lt;p&gt;Entre as várias assimilações e brincadeiras que podemos fazer e criar comparando o anime com a linhagem das linguagens de programação, eu escolhi fazer essa aqui:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnuc4tjgkbdwjnjjdkjx0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnuc4tjgkbdwjnjjdkjx0.jpg" alt="meme" width="800" height="941"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Assim podemos ter uma compreensão bem mais didática (mesmo que pareça ser algo muito forçado como no meme acima) das origens e linhagem de cada linguagem de programação até aqui apresentadas (e de outras que nem iremos citar).&lt;/p&gt;

&lt;h2&gt;
  
  
  Diferentes linhagens, diferentes tipos de poderes.
&lt;/h2&gt;

&lt;p&gt;Como todo fã desse anime sabe e conhece muito bem, cada linhagem de clã diferente possui um tipo/conjunto de poderes diferentes, em que esses poderes foram herdados de acordo com a sua experiência de vida e/ou linhagem de seus antepassados.&lt;br&gt;
Por incrível que pareça, podemos fazer essa mesma analogia ao &lt;strong&gt;nível de produção e potência de cada linguagem&lt;/strong&gt; e é exatamente este o &lt;strong&gt;ponto primordial desse artigo&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;Como as linguagens possuem cada &lt;strong&gt;foco de produção diferentes&lt;/strong&gt; e &lt;strong&gt;linhagens diferentes&lt;/strong&gt;, sempre terá produções que uma irá conseguir fazer que outra ou não vai fazer de jeito nenhum ou não vai fazer no mesmo patamar de excelência de outra linguagem.&lt;/p&gt;

&lt;p&gt;O que eu quero dizer com isso, &lt;em&gt;pequeno gafanhoto&lt;/em&gt;, eu quero dizer, que assim como em Naruto, o grandioso Uchiha Madara, &lt;strong&gt;usou o hack de juntar o poder das 9 biju, e a linhagem de sangue de uchiha com ninju e assim vencer&lt;/strong&gt; o time 7, (porque ele venceu mesmo, só foi traído pelo zetsu negro no final), você, como estudante iniciante de programação, &lt;strong&gt;tem que conhecer e saber produzir com mais de uma linguagem de programação diferente&lt;/strong&gt;, pois assim, bem como o Madara, &lt;strong&gt;você estará de hack comparado a concorrência média&lt;/strong&gt;. Para ser sincero, você estará de hack até só para você mesmo em suas produções pessoais no que lá for que você queira fazer. Pois, meu nobre, &lt;strong&gt;são muito poucos os que conseguem dominar diferentes linguagens com diferentes lógicas de sintese&lt;/strong&gt;. Como uma colega de área mesmo disse, os que conseguem fazer isso, &lt;strong&gt;podem ser chamados de deuses&lt;/strong&gt; (e eu consigo também, por isso que estou lhe escrevendo isso, para você ser também).&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbuffi18opimxkqocy9bp.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fbuffi18opimxkqocy9bp.png" alt="Madara com todas as linhagens de clã e poderes em suas costas" width="602" height="608"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Com Grandes Poderes, Vem Grandes Vantagens Naturais
&lt;/h2&gt;

&lt;p&gt;Ao passo que você tiver domínio sobre mais de 3 linguagens de kernel (linguagens propriamente ditas, como C/C++, Rust, GO, Python, Java ...) você vai conseguir ver de maneira nítida, a limitação de cada uma. Seja em sua sintaxe ou em sua produção. Você irá conseguir fluir facilmente de uma linguagem para outra, impedindo que qualquer das linguagens que você for usar atrapalhe sua produtividade. &lt;br&gt;
Para grandes Devs, isso é um poder único e muito surreal.&lt;/p&gt;

&lt;p&gt;Juntando esses poderes/linguagens então...&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnq7quf7ld3oyyr2qgxdf.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fnq7quf7ld3oyyr2qgxdf.jpg" alt="Narutin Dev" width="800" height="1271"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Quando começar este tipo de brincadeira, você talvez vai querer está que nem eu, &lt;strong&gt;escrevendo sobre a experiência e a importância desse tipo de poder&lt;/strong&gt;. &lt;/p&gt;

</description>
      <category>javascript</category>
      <category>python</category>
      <category>devops</category>
      <category>programming</category>
    </item>
  </channel>
</rss>
