<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Silvio Cesar Junior &#8211; Manual do Programador</title>
	<atom:link href="https://www.manualdoprogramador.com/author/silvio-cesar/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.manualdoprogramador.com</link>
	<description>Explore o Manual do Programador e encontre artigos detalhados e atualizados sobre linguagens de programação, frameworks, desenvolvimento web, mobile, inteligência artificial e muito mais. Nosso objetivo é fornecer um conteúdo de qualidade e prático para desenvolvedores de todos os níveis - desde iniciantes até profissionais experientes. Descubra dicas para melhorar a eficiência do seu código, tutoriais passo a passo para projetos práticos, novidades do mundo da programação e resenhas de ferramentas úteis</description>
	<lastBuildDate>Sun, 03 Aug 2025 17:58:38 +0000</lastBuildDate>
	<language>pt-BR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1</generator>

<image>
	<url>https://i0.wp.com/www.manualdoprogramador.com/wp-content/uploads/2023/06/Logo-redonda-1-1.png?fit=32%2C32&#038;ssl=1</url>
	<title>Silvio Cesar Junior &#8211; Manual do Programador</title>
	<link>https://www.manualdoprogramador.com</link>
	<width>32</width>
	<height>32</height>
</image> 
<site xmlns="com-wordpress:feed-additions:1">220693552</site>	<item>
		<title>Como formatar CNPJ, CPF e CEP com SQL Server</title>
		<link>https://www.manualdoprogramador.com/como-formatar-cnpj-cpf-e-cep-com-sql-server/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=como-formatar-cnpj-cpf-e-cep-com-sql-server</link>
					<comments>https://www.manualdoprogramador.com/como-formatar-cnpj-cpf-e-cep-com-sql-server/#respond</comments>
		
		<dc:creator><![CDATA[Silvio Cesar Junior]]></dc:creator>
		<pubDate>Sun, 03 Aug 2025 17:33:28 +0000</pubDate>
				<category><![CDATA[Back-end]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">https://www.manualdoprogramador.com/?p=1241</guid>

					<description><![CDATA[Você já se deparou com dados &#8220;crus&#8221; no banco, como um CNPJ sem pontos ou traços, e precisou formatá-los manualmente [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img data-recalc-dims="1" fetchpriority="high" decoding="async" width="1024" height="1024" src="https://i0.wp.com/www.manualdoprogramador.com/wp-content/uploads/2025/08/ChatGPT-Image-3-de-ago.-de-2025-14_30_40.png?resize=1024%2C1024&#038;ssl=1" alt="" class="wp-image-1242"/></figure>



<p class="wp-block-paragraph">Você já se deparou com dados &#8220;crus&#8221; no banco, como um CNPJ sem pontos ou traços, e precisou formatá-los manualmente no sistema? Ou talvez tenha precisado tratar essa visualização direto em um <code>SELECT</code> ou <code>PROCEDURE</code> para exibir os dados já formatados para o cliente? <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f62c.png" alt="😬" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph">Hoje vou te mostrar como formatar <strong>CNPJ</strong>, <strong>CPF</strong> e <strong>CEP</strong> diretamente no <strong>SQL Server</strong>, utilizando funções nativas como <code>SUBSTRING</code>, <code>LEFT</code>, <code>RIGHT</code> e <code>STUFF</code>. O processo é simples, limpo e extremamente útil — principalmente em procedures que geram relatórios, exibem dados em tela ou enviam mensagens automatizadas. Essa abordagem evita o retrabalho de formatar os dados no backend, o que pode gerar processamento desnecessário e quebrar a responsabilidade das camadas do sistema.</p>



<h2 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9e9.png" alt="🧩" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Por que formatar direto no SQL?</h2>



<p class="wp-block-paragraph">É comum e até recomendado que os dados armazenados no banco venham <strong>sem formatação</strong>, contendo apenas os números. Isso facilita operações, buscas e integrações. Mas, quando precisamos exibir os dados de forma legível — como em logs, templates ou mensagens automáticas — ter a formatação no SQL pode ser muito útil.</p>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Formatando CNPJ:  <code>12.345.678/0001-95</code></h3>



<pre class="wp-block-prismatic-blocks"><code class="language-sql">SELECT 
    -- Adiciona o primeiro ponto após os 2 primeiros dígitos
    STUFF(
        -- Adiciona o segundo ponto após os 5 primeiros dígitos (já contando o ponto anterior)
        STUFF(
            -- Adiciona a barra após os 8 primeiros dígitos (contando os dois pontos anteriores)
            STUFF(
                -- Adiciona o traço após os 12 primeiros dígitos (contando os separadores)
                STUFF(&#039;12345678000195&#039;, 3, 0, &#039;.&#039;),  -- Resultado: 12.345678000195
            7, 0, &#039;.&#039;),                             -- Resultado: 12.345.678000195
        11, 0, &#039;/&#039;),                                -- Resultado: 12.345.678/000195
    16, 0, &#039;-&#039;) AS CNPJ_Formatado                  -- Resultado final: 12.345.678/0001-95</code></pre>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Formatando CPF:  <code>&lt;em&gt;123.456.789-01&lt;/em&gt;</code></h3>



<pre class="wp-block-prismatic-blocks"><code class="language-sql">SELECT 
    -- Adiciona o primeiro ponto após os 3 primeiros dígitos
    STUFF(
        -- Adiciona o segundo ponto após os 6 primeiros dígitos (já contando o primeiro ponto)
        STUFF(
            -- Adiciona o traço após os 9 primeiros dígitos (já contando os pontos)
            STUFF(&#039;12345678901&#039;, 4, 0, &#039;.&#039;),     -- Resultado: 123.45678901
        8, 0, &#039;.&#039;),                              -- Resultado: 123.456.78901
    12, 0, &#039;-&#039;) AS CPF_Formatado                 -- Resultado final: 123.456.789-01</code></pre>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Formatando CEP: <code>12345-678</code></h3>



<pre class="wp-block-prismatic-blocks"><code class="language-sql">SELECT 
    -- Adiciona o traço após os 5 primeiros dígitos
    STUFF(&#039;12345678&#039;, 6, 0, &#039;-&#039;) AS CEP_Formatado
    -- Resultado final: 12345-678</code></pre>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Dica: Centralize a lógica em uma Procedure</h3>



<p class="wp-block-paragraph">Centralizar a formatação em uma procedure ajuda a organizar o código, evitar repetição e facilita a manutenção. Sempre que precisar dessas formatações, basta chamar a procedure.</p>



<pre class="wp-block-prismatic-blocks"><code class="language-sql">CREATE PROCEDURE dbo.SP_EXIBE_CLIENTE
    @CNPJ VARCHAR(14),
    @CPF  VARCHAR(11),
    @CEP  VARCHAR(8)
AS
BEGIN
    SET NOCOUNT ON;

    CREATE TABLE #CNPJ_Formatado (CNPJ VARCHAR(18));
    INSERT INTO #CNPJ_Formatado (CNPJ)
    SELECT STUFF(STUFF(STUFF(STUFF(@CNPJ, 3, 0, &#039;.&#039;), 7, 0, &#039;.&#039;), 11, 0, &#039;/&#039;), 16, 0, &#039;-&#039;);

    CREATE TABLE #CPF_Formatado (CPF VARCHAR(14));
    INSERT INTO #CPF_Formatado (CPF)
    SELECT STUFF(STUFF(STUFF(@CPF, 4, 0, &#039;.&#039;), 8, 0, &#039;.&#039;), 12, 0, &#039;-&#039;);

    CREATE TABLE #CEP_Formatado (CEP VARCHAR(9));
    INSERT INTO #CEP_Formatado (CEP)
    SELECT STUFF(@CEP, 6, 0, &#039;-&#039;);

    SELECT
        C.CNPJ,
        P.CPF,
        E.CEP
    FROM #CNPJ_Formatado C
    CROSS JOIN #CPF_Formatado P
    CROSS JOIN #CEP_Formatado E;

    DROP TABLE #CNPJ_Formatado;
    DROP TABLE #CPF_Formatado;
    DROP TABLE #CEP_Formatado;
END</code></pre>



<h4 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Como usar a Procedure:</h4>



<pre class="wp-block-prismatic-blocks"><code class="language-">EXEC dbo.sp_Formatar_Documentos
    @CNPJ = &#039;12345678000195&#039;,
    @CPF = &#039;12345678901&#039;,
    @CEP = &#039;12345678&#039;</code></pre>



<h4 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f9fe.png" alt="🧾" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Resultado esperado:</h4>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>CNPJ</th><th>CPF</th><th>CEP</th></tr></thead><tbody><tr><td>12.345.678/0001-95</td><td>123.456.789-01</td><td>12345-678</td></tr></tbody></table></figure>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/26a0.png" alt="⚠" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Atenção!</h3>



<p class="wp-block-paragraph">Essas formatações <strong>presumem que os dados estão completos e sem formatação</strong>. Caso os campos venham com caracteres inválidos ou estejam incompletos, é importante validar previamente usando <code>LEN</code>, <code>ISNUMERIC</code>, ou <code>TRY_CAST</code>/<code>TRY_CONVERT</code> (se estiver usando SQL Server 2012+).</p>



<h3 class="wp-block-heading"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/2705.png" alt="✅" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Conclusão</h3>



<p class="wp-block-paragraph">Saber formatar diretamente no SQL Server pode acelerar tarefas de testes, visualização de dados, geração de relatórios e mensagens automáticas. Se quiser ir além, você pode transformar essas lógicas em funções reutilizáveis para aplicar sempre que necessário.</p>



<p class="wp-block-paragraph">Curtiu a dica? Já precisou fazer esse tipo de formatação no SQL alguma vez? Comenta aí como você resolveu — ou que tipo de gambiarra já fez com CNPJ e CPF! <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f604.png" alt="😄" class="wp-smiley" style="height: 1em; max-height: 1em;" /></p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.manualdoprogramador.com/como-formatar-cnpj-cpf-e-cep-com-sql-server/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1241</post-id>	</item>
		<item>
		<title>CNPJ Alfanumérico Desafios e Impactos nos Sistemas Atuais</title>
		<link>https://www.manualdoprogramador.com/cnpj-alfanumerico-desafios-e-impactos-nos-sistemas-atuais/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=cnpj-alfanumerico-desafios-e-impactos-nos-sistemas-atuais</link>
					<comments>https://www.manualdoprogramador.com/cnpj-alfanumerico-desafios-e-impactos-nos-sistemas-atuais/#respond</comments>
		
		<dc:creator><![CDATA[Silvio Cesar Junior]]></dc:creator>
		<pubDate>Sun, 13 Jul 2025 20:58:31 +0000</pubDate>
				<category><![CDATA[Back-end]]></category>
		<category><![CDATA[Front-end]]></category>
		<category><![CDATA[Mobile]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">https://www.manualdoprogramador.com/?p=1213</guid>

					<description><![CDATA[Em julho de 2026, a Receita Federal passa a emitir CNPJs com 12 caracteres alfanuméricos seguidos de dois dígitos verificadores [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img data-recalc-dims="1" decoding="async" width="1024" height="1024" src="https://i0.wp.com/www.manualdoprogramador.com/wp-content/uploads/2025/07/ChatGPT-Image-13-de-jul.-de-2025-18_13_51.png?resize=1024%2C1024&#038;ssl=1" alt="" class="wp-image-1216"/></figure>



<p class="wp-block-paragraph">Em julho de 2026, a Receita Federal passa a emitir CNPJs com 12 caracteres alfanuméricos seguidos de dois dígitos verificadores numéricos. A mudança visa acomodar o contínuo crescimento do número de empresas no Brasil e evitar o esgotamento da numeração disponível. Porém, essa novidade trará uma série de desafios técnicos e exigirá adaptações em diversos pontos dos sistemas corporativos. Neste artigo, vamos explorar os principais impactos e sugerir estratégias para uma transição suave.</p>



<h3 class="wp-block-heading">1. Nova Regra de Cálculo dos Dígitos Verificadores</h3>



<p class="wp-block-paragraph">Até então, os doze primeiros dígitos do CNPJ eram exclusivamente numéricos, e os dois últimos resultavam de um cálculo baseado em módulo 11 e pesos de 2 a 9. Com a inclusão de letras, será necessário atribuir valores numéricos a cada caractere alfabético (A=17, B=18, …, Z=42) antes de aplicar o algoritmo tradicional de dígitos verificadores.</p>



<p class="wp-block-paragraph"><strong>Fluxo de cálculo resumido</strong>:</p>



<ol class="wp-block-list">
<li><strong>Mapeamento</strong>: converta cada caractere alfanumérico no seu valor segundo tabela (por exemplo, A→17, B→18, …) .</li>



<li><strong>Aplicação de pesos</strong>: aplique pesos de 2 a 9 da direita para a esquerda, reiniciando após o peso</li>



<li><strong>Somatório e módulo</strong>: calcule o somatório dos produtos valor×peso e obtenha o resto da divisão por 11.</li>



<li><strong>Definição do dígito</strong>: se o resto for 0 ou 1, o dígito é 0; caso contrário, é 11 menos o resto.</li>



<li><strong>Repetição</strong>: para o segundo dígito, inclua o primeiro DV ao final e repita o processo.</li>
</ol>



<h3 class="wp-block-heading">1.1 Primeiro Dígito Verificador</h3>



<p class="wp-block-paragraph">Para validar o CNPJ alfanumérico <strong><code>Y6.K55.XEN/0001-99</code></strong>, extraímos primeiro os 12 caracteres e depois calculamos os dois dígitos verificadores.</p>



<h4 class="wp-block-heading">1.1.1 Primeiro Dígito Verificador</h4>



<ul class="wp-block-list">
<li><strong>Base (12 chars):</strong> <code>Y 6 K 5 5 X E N 0 0 0 1</code></li>



<li><strong>Valor (ASCII–48):</strong>
<ul class="wp-block-list">
<li>Y → 41</li>



<li>6 → 6</li>



<li>K → 27</li>



<li>5 → 5</li>



<li>5 → 5</li>



<li>X → 40</li>



<li>E → 21</li>



<li>N → 30</li>



<li>0 → 0</li>



<li>0 → 0</li>



<li>0 → 0</li>



<li>1 → 1</li>
</ul>
</li>



<li><strong>Pesos:</strong> 5,&nbsp;4,&nbsp;3,&nbsp;2,&nbsp;9,&nbsp;8,&nbsp;7,&nbsp;6,&nbsp;5,&nbsp;4,&nbsp;3,&nbsp;2</li>
</ul>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Posição</th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th><th>10</th><th>11</th><th>12</th></tr></thead><tbody><tr><td>Caract.</td><td>Y</td><td>6</td><td>K</td><td>5</td><td>5</td><td>X</td><td>E</td><td>N</td><td>0</td><td>0</td><td>0</td><td>1</td></tr><tr><td>Valor</td><td>41</td><td>6</td><td>27</td><td>5</td><td>5</td><td>40</td><td>21</td><td>30</td><td>0</td><td>0</td><td>0</td><td>1</td></tr><tr><td>Peso</td><td>5</td><td>4</td><td>3</td><td>2</td><td>9</td><td>8</td><td>7</td><td>6</td><td>5</td><td>4</td><td>3</td><td>2</td></tr></tbody></table></figure>



<ol class="wp-block-list">
<li>Soma dos produtos</li>
</ol>



<pre class="wp-block-code"><code>41×5 + 6×4 + 27×3 + 5×2 + 5×9 + 40×8 + 21×7 + 30×6 + 0 + 0 + 0 + 1×2 = 1 014</code></pre>



<ol start="2" class="wp-block-list">
<li>Resto da divisão por 11</li>
</ol>



<pre class="wp-block-code"><code>1 014 mod 11 = 2</code></pre>



<ol start="3" class="wp-block-list">
<li>Cálculo do primeiro dígito (DV₁)
<ul class="wp-block-list">
<li>Resto ≥ 2 → 11&nbsp;–&nbsp;2 = <strong>9</strong></li>
</ul>
</li>
</ol>



<h4 class="wp-block-heading">1.1.2 Segundo Dígito Verificador</h4>



<pre class="wp-block-code"><code>Y 6 K 5 5 X E N 0 0 0 1 9</code></pre>



<ul class="wp-block-list">
<li><strong>Valores:</strong> mesmos 12 anteriores + 9</li>



<li><strong>Pesos:</strong> 6,&nbsp;5,&nbsp;4,&nbsp;3,&nbsp;2,&nbsp;9,&nbsp;8,&nbsp;7,&nbsp;6,&nbsp;5,&nbsp;4,&nbsp;3,&nbsp;2</li>
</ul>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Posição</th><th>1</th><th>2</th><th>3</th><th>4</th><th>5</th><th>6</th><th>7</th><th>8</th><th>9</th><th>10</th><th>11</th><th>12</th><th>13</th></tr></thead><tbody><tr><td>Caract.</td><td>Y</td><td>6</td><td>K</td><td>5</td><td>5</td><td>X</td><td>E</td><td>N</td><td>0</td><td>0</td><td>0</td><td>1</td><td>9</td></tr><tr><td>Valor</td><td>41</td><td>6</td><td>27</td><td>5</td><td>5</td><td>40</td><td>21</td><td>30</td><td>0</td><td>0</td><td>0</td><td>1</td><td>9</td></tr><tr><td>Peso</td><td>6</td><td>5</td><td>4</td><td>3</td><td>2</td><td>9</td><td>8</td><td>7</td><td>6</td><td>5</td><td>4</td><td>3</td><td>2</td></tr></tbody></table></figure>



<p class="wp-block-paragraph"><strong>Soma dos produtos</strong></p>



<pre class="wp-block-code"><code>41×6 + 6×5 + 27×4 + 5×3 + 5×2 + 40×9 + 21×8 + 30×7 + 0 + 0 + 0 + 1×3 + 9×2 = 1 168</code></pre>



<p class="wp-block-paragraph">Resto da divisão por 11</p>



<pre class="wp-block-code"><code>1 168 mod 11 = 2</code></pre>



<p class="wp-block-paragraph">Cálculo do segundo dígito (DV₂)</p>



<p class="wp-block-paragraph">Resto ≥ 2 → 11&nbsp;–&nbsp;2 = <strong>9</strong></p>



<p class="wp-block-paragraph">Portanto, os dígitos verificadores são <strong>9</strong> e <strong>9</strong>, conferindo com o CNPJ completo:</p>



<pre class="wp-block-code"><code>Y6.K55.XEN/0001-99</code></pre>



<h3 class="wp-block-heading">1.2 Algoritmo JS para validar se um CNPJ é valido</h3>



<p class="wp-block-paragraph">Será necessário alterar no front-end do sistema, lugares onde tem validação de CNPJ valído, para isso, segue um algoritmo atualizado para fazer essa validação nos inputs informados do sistema:</p>



<pre class="wp-block-code"><code>/**
 * Valida CNPJ alfanumérico (12 caracteres + 2 dígitos)
 * @param {string} input CNPJ formatado ou não (aceita letras e números)
 * @returns {boolean} true se válido, false caso contrário
 */
function validaCnpjAlpha(input) {
  // Remove tudo que não for letra ou dígito
  const cnpj = input.replace(/&#091;^0-9A-Za-z]/g, &#039;&#039;).toUpperCase();
  if (!/^&#091;0-9A-Z]{14}$/.test(cnpj)) return false;

  // Converte caractere para valor: código ASCII - 48
  const toValue = ch =&gt; ch.charCodeAt(0) - 48;

  // Função que calcula um DV (1 ou 2)
  function calcDv(len) {
    let peso = len + 1; // para len=12, peso inicial é 5; para len=13, peso=6
    const soma = cnpj
      .slice(0, len)
      .split(&#039;&#039;)
      .map(toValue)
      .reduce((acc, val) =&gt; {
        acc += val * peso;
        peso = peso &gt; 2 ? peso - 1 : 9;
        return acc;
      }, 0);
    const resto = soma % 11;
    return resto &lt; 2 ? 0 : 11 - resto;
  }

  // Calcula os dois dígitos verificadores
  const dv1 = calcDv(12);
  const dv2 = calcDv(13);

  // Compara com os dois últimos dígitos do input
  return dv1 === toValue(cnpj&#091;12]) &amp;&amp; dv2 === toValue(cnpj&#091;13]);
}

// Exemplo de uso:
console.log(validaCnpjAlpha(&#039;12.ABC.345/01DE-35&#039;)); // true ou false</code></pre>



<h3 class="wp-block-heading">2. Mudança nas mascaras de input</h3>



<p class="wp-block-paragraph">Com a entrada de letras, as máscaras de campos de CNPJ em formulários e aplicativos precisam ser revisadas:</p>



<ul class="wp-block-list">
<li><strong>Bibliotecas JavaScript/Vue/Angular</strong>: atualize plugins como <em>mask.js</em> para aceitar <code>[0-9A-Za-z]</code> em todas as posições – não apenas dígitos.</li>



<li><strong>React (IMask)</strong>: configure o <em>pattern</em> para alfanumérico e garanta a conversão automática para maiúsculas, evitando inconsistências de case.</li>



<li><strong>UX/UI</strong>: ofereça feedback claro ao usuário sobre o formato (ex.: <code>XX.XXX.XXX/YYYY-00</code>). Considere usar placeholders dinâmicos que exibam letras e números.</li>
</ul>



<p class="wp-block-paragraph">Essas mudanças exigem testes end‑to‑end (Selenium, Cypress) para garantir que fluxos de cadastro e edição continuem funcionando sem erros.</p>



<h3 class="wp-block-heading">3. Banco de Dados com VARCHAR</h3>



<p class="wp-block-paragraph">Sistemas que atualmente definem o campo de CNPJ como <code>INT</code> ou <code>BIGINT</code> devem migrar para tipos de texto:</p>



<ul class="wp-block-list">
<li><strong>VARCHAR(14)</strong> ou <strong>CHAR(14)</strong> (12 alfanuméricos + 2 numéricos): garante espaço exato e evita desperdício.</li>



<li><strong>Índices</strong>: recrie índices baseados em strings e avalie o desempenho em consultas que utilizam <code>LIKE</code>, <code>=</code>, ou ordenação. Em bancos muito volumosos, pode ser necessário particionamento ou índices parciais.</li>
</ul>



<p class="wp-block-paragraph">Planeje a migração de dados com scripts SQL que convertam registros antigos para o novo padrão, incluindo rotinas de validação de integridade.</p>



<h3 class="wp-block-heading">4. Regex e Validações em Código</h3>



<p class="wp-block-paragraph">Muitos sistemas usam expressões regulares para extrair ou validar CNPJ em strings (logs, relatórios, integrações). Atualize-as para algo que vai validar se oque foi digitado é um CNPJ valído com:</p>



<pre class="wp-block-code"><code>/^&#091;A-Za-z0-9]{2}\.&#091;A-Za-z0-9]{3}\.&#091;A-Za-z0-9]{3}\/&#091;A-Za-z0-9]{4}-\d{2}$/</code></pre>



<p class="wp-block-paragraph">Localize todos os artefatos de regex (busca em repositórios, IDEs) e adeque-os para evitar falhas silenciosas em processos automáticos.</p>



<h2 class="wp-block-heading">Conclusão e Boas Práticas</h2>



<p class="wp-block-paragraph">A adoção do CNPJ alfanumérico é inevitável diante do crescimento das empresas no país. Para mitigar riscos:</p>



<ol class="wp-block-list">
<li><strong>Planeje versões</strong>: use feature flags para alternar validações.</li>



<li><strong>Crie ambientes de homologação</strong>: inclua casos de teste com letras em processos críticos.</li>



<li><strong>Documente mudanças</strong>: atualize guias de estilo e manuais de API.</li>



<li><strong>Automatize migrações</strong>: scripts SQL e pipelines de dados devem rodar sem intervenção manual.</li>



<li><strong>Comunique stakeholders</strong>: informe times de desenvolvimento, QA, operação e parceiros externos.</li>
</ol>



<p class="wp-block-paragraph">Com esses cuidados, seu sistema estará preparado para lidar com o novo padrão de CNPJ, garantindo integridade, performance e compatibilidade.</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.manualdoprogramador.com/cnpj-alfanumerico-desafios-e-impactos-nos-sistemas-atuais/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1213</post-id>	</item>
		<item>
		<title>AS INTELIGÊNCIAS ARTIFICIAIS SÃO REALMENTE INTELIGENTES?</title>
		<link>https://www.manualdoprogramador.com/as-inteligencias-artificiais-sao-realmente-inteligentes/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=as-inteligencias-artificiais-sao-realmente-inteligentes</link>
					<comments>https://www.manualdoprogramador.com/as-inteligencias-artificiais-sao-realmente-inteligentes/#respond</comments>
		
		<dc:creator><![CDATA[Silvio Cesar Junior]]></dc:creator>
		<pubDate>Sat, 10 Aug 2024 20:08:35 +0000</pubDate>
				<category><![CDATA[Programação]]></category>
		<category><![CDATA[aprendizado de maquina]]></category>
		<category><![CDATA[Aristóteles]]></category>
		<category><![CDATA[autocosciência]]></category>
		<category><![CDATA[comparação IA e humano]]></category>
		<category><![CDATA[consicência]]></category>
		<category><![CDATA[filosofia da inteligência]]></category>
		<category><![CDATA[futuro da IA]]></category>
		<category><![CDATA[IA]]></category>
		<category><![CDATA[inteiligência artificial]]></category>
		<category><![CDATA[inteligência artificial e ética]]></category>
		<category><![CDATA[inteligência humana]]></category>
		<category><![CDATA[machine learning]]></category>
		<category><![CDATA[raciocínio]]></category>
		<category><![CDATA[Teste de Turing]]></category>
		<guid isPermaLink="false">https://www.manualdoprogramador.com/?p=1151</guid>

					<description><![CDATA[Este post explora a complexa questão de se as máquinas podem realmente pensar, partindo da ideia de inteligência artificial proposta por Alan Turing até a comparação entre a inteligência humana e a inteligência artificial sob a perspectiva filosófica de Aristóteles. O texto detalha como a IA imita funções humanas, como aprendizado, raciocínio e tomada de decisões, através de machine learning, mas destaca as limitações da IA em comparação com a cognição humana, especialmente em aspectos como consciência, compreensão das essências e raciocínio independente. Conclui que, embora a IA possa realizar tarefas complexas, a verdadeira inteligência reside na capacidade humana de criar, entender e raciocinar com propósito.]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full is-resized"><img data-recalc-dims="1" decoding="async" width="1024" height="1024" src="https://i0.wp.com/www.manualdoprogramador.com/wp-content/uploads/2024/08/DALL%C2%B7E-2024-08-10-17.07.19-A-visually-striking-image-that-explores-the-concept-of-artificial-intelligences-intelligence.-The-image-should-depict-a-futuristic-digital-brain-wit.webp?resize=1024%2C1024&#038;ssl=1" alt="" class="wp-image-1155" style="width:651px;height:auto" srcset="https://i0.wp.com/www.manualdoprogramador.com/wp-content/uploads/2024/08/DALL%C2%B7E-2024-08-10-17.07.19-A-visually-striking-image-that-explores-the-concept-of-artificial-intelligences-intelligence.-The-image-should-depict-a-futuristic-digital-brain-wit.webp?w=1024&amp;ssl=1 1024w, https://i0.wp.com/www.manualdoprogramador.com/wp-content/uploads/2024/08/DALL%C2%B7E-2024-08-10-17.07.19-A-visually-striking-image-that-explores-the-concept-of-artificial-intelligences-intelligence.-The-image-should-depict-a-futuristic-digital-brain-wit.webp?resize=300%2C300&amp;ssl=1 300w, https://i0.wp.com/www.manualdoprogramador.com/wp-content/uploads/2024/08/DALL%C2%B7E-2024-08-10-17.07.19-A-visually-striking-image-that-explores-the-concept-of-artificial-intelligences-intelligence.-The-image-should-depict-a-futuristic-digital-brain-wit.webp?resize=150%2C150&amp;ssl=1 150w, https://i0.wp.com/www.manualdoprogramador.com/wp-content/uploads/2024/08/DALL%C2%B7E-2024-08-10-17.07.19-A-visually-striking-image-that-explores-the-concept-of-artificial-intelligences-intelligence.-The-image-should-depict-a-futuristic-digital-brain-wit.webp?resize=768%2C768&amp;ssl=1 768w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<p class="wp-block-paragraph"><span data-token-index="0" class="notion-enable-hover" style="font-weight:600">Será que as máquinas podem pensar?</span> Essa pergunta nos leva a refletir sobre a verdadeira natureza da inteligência artificial. O que realmente significa ser &#8220;inteligente&#8221;? Podemos realmente chamar, por exemplo, o ChatGPT de inteligente, ou ele é apenas uma ferramenta avançada para realizar tarefas específicas?</p>



<h3 class="wp-block-heading">Como funciona uma Inteligência Artificial</h3>



<p class="wp-block-paragraph">Para começarmos, precisamos entender: <strong>Como funciona uma Inteligência Artificial?</strong></p>



<p class="wp-block-paragraph">A ideia de inteligência artificial remonta a Alan Turing, que se questionou: <em>As máquinas podem pensar?</em> Essa questão foi o ponto de partida para o desenvolvimento do que hoje chamamos de IA.</p>



<p class="wp-block-paragraph">Ele formulou essa questão em seu artigo de 1950, &#8220;Computing Machinery and Intelligence&#8221;, onde introduziu o que agora conhecemos como o Teste de Turing. Esse teste oferece um critério para determinar se uma máquina é capaz de exibir inteligência equivalente ou indistinguível da humana. No Teste de Turing, um interrogador humano interage com um participante oculto (que pode ser uma máquina ou outro humano) através de uma interface baseada em texto. Se o interrogador não consegue consistentemente distinguir a máquina do humano, a máquina é considerada &#8220;pensante&#8221; segundo o critério de Turing.</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow">
<p class="wp-block-paragraph"><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" /> Em essência, a inteligência artificial é a capacidade de um computador imitar funções humanas, como raciocinar, aprender, prever, resolver problemas e tomar decisões.</p>
</blockquote>



<p class="wp-block-paragraph">Para imitar a inteligência humana, as máquinas precisam aprender como nós aprendemos. Vamos explorar isso com um exemplo simples.</p>



<p class="wp-block-paragraph">Imagine uma criança brincando com um brinquedo. Ela o solta várias vezes e aprende que ele sempre cai no chão. Esse processo de aprendizado é semelhante ao aprendizado de máquina, ou machine learning, que é uma parte essencial da IA.</p>



<p class="wp-block-paragraph"><strong>Machine Learning: Como as Máquinas Aprendem a Pensar</strong></p>



<p class="wp-block-paragraph">Machine Learning, ou Aprendizado de Máquina, é uma técnica fascinante onde as máquinas aprendem a reconhecer padrões e fazer previsões, quase como se estivessem pensando. Imagine ensinar um computador a identificar um cachorro em uma foto; com Machine Learning, isso não só é possível, mas algo que já acontece todos os dias em nossos smartphones e redes sociais!</p>



<p class="wp-block-paragraph">Por exemplo, quando você mostra a uma máquina várias fotos, algumas com cachorros e outras sem, ela aprende a reconhecer características comuns aos cachorros. Depois de aprender o suficiente, ela pode olhar para uma nova foto e dizer com confiança se há ou não um cachorro nela.</p>



<p class="wp-block-paragraph">Mas não para por aí! Machine Learning também é usado para fazer previsões mais complexas, como:</p>



<ul class="wp-block-list">
<li><strong>Previsão do Tempo</strong>: Ao analisar dados históricos do clima, a máquina pode prever se vai chover amanhã em sua cidade.</li>



<li><strong>Reconhecimento de Voz</strong>: Quando você fala com assistentes virtuais, como Siri ou Alexa, é Machine Learning que ajuda esses dispositivos a entenderem sua voz.</li>



<li><strong>Detecção de Fraudes</strong>: Bancos usam essas tecnologias para identificar atividades suspeitas e prevenir fraudes em suas contas.</li>
</ul>



<p class="wp-block-paragraph">Essa tecnologia não é apenas incrível; ela está transformando a maneira como vivemos, aprendemos e trabalhamos, tornando os dispositivos mais inteligentes e nossas vidas mais fáceis e segura</p>



<h3 class="wp-block-heading">O que é Inteligência?</h3>



<p class="wp-block-paragraph">Definir inteligência é uma tarefa surpreendentemente complexa, pois varia amplamente dependendo de quem você pergunta e em qual campo estão falando. No entanto, se mergulharmos nas ideias dos filósofos, podemos descobrir nuances fascinantes sobre esse conceito.</p>



<p class="wp-block-paragraph">Segundo a filosofia, especialmente nas reflexões de Aristóteles, a inteligência vai muito além de simplesmente &#8220;ser esperto&#8221;. Para ele, inteligência, ou &#8220;nous&#8221;, é uma manifestação profunda da alma racional, capaz de entender não apenas o que as coisas são, mas sua essência mais profunda. Vejamos como Aristóteles descreve algumas características dessa habilidade:</p>



<ul class="wp-block-list">
<li><strong>Apreensão das Essências</strong>: Não é apenas sobre ver ou tocar; é sobre compreender o que faz uma coisa ser verdadeiramente o que é.
<ul class="wp-block-list">
<li>Imagine tentar descrever o que é um gato para alguém que nunca viu um. Você não se limitaria a falar sobre pelos e bigodes; você explicaria que gatos são ágeis, independentes e caçadores por natureza. Essa capacidade de capturar a &#8220;essência&#8221; de algo vai muito além da aparência superficial.</li>
</ul>
</li>



<li><strong>Intelecto Ativo e Passivo</strong>: É a capacidade de receber informações (passivo) e sua habilidade de realmente entender e usar essas informações (ativo).
<ul class="wp-block-list">
<li>Pense no intelecto passivo como um aluno em uma aula, recebendo informações do professor. O intelecto ativo é quando esse aluno vai além, fazendo perguntas e relacionando as informações com o que já sabe, tornando o aprendizado mais profundo e significativo.</li>
</ul>
</li>



<li><strong>Conhecimento dos Primeiros Princípios</strong>: Não se limita apenas a como sabemos coisas, mas por que essas coisas são verdadeiras.
<ul class="wp-block-list">
<li>É similar a aprender a jogar xadrez. Os primeiros princípios são as regras básicas (como cada peça se move). Compreendendo essas regras, você pode começar a desenvolver estratégias e entender jogadas mais complexas, construindo todo o seu conhecimento do jogo a partir dessa base.</li>
</ul>
</li>



<li><strong>Consciência e Autoconsciência</strong>: Mais do que perceber o mundo, é entender seu lugar nele.
<ul class="wp-block-list">
<li>Isso pode ser visto quando você está em uma situação social desconfortável e reconhece seus próprios sentimentos de ansiedade. Essa autoconsciência permite que você ajuste seu comportamento, talvez tentando relaxar ou se envolver mais na conversa.</li>
</ul>
</li>



<li><strong>Raciocínio e Contemplação</strong>: A habilidade de mergulhar profundamente em pensamentos complexos e meditar sobre as grandes questões da vida.
<ul class="wp-block-list">
<li>Imagine um filósofo ponderando sobre &#8220;o que é a felicidade?&#8221;. Essa não é uma questão prática do dia a dia, mas uma profunda contemplação que requer raciocínio lógico para explorar diferentes ideias e perspectivas, buscando uma compreensão mais profunda sobre como viver uma vida plena.</li>
</ul>
</li>
</ul>



<p class="wp-block-paragraph">Em resumo, inteligência é a incrível capacidade de adquirir e aplicar conhecimentos e habilidades, explorando e compreendendo o mundo ao nosso redor e dentro de nós. É o motor por trás de cada descoberta, cada insight criativo e cada decisão sábia que tomamos.</p>



<h3 class="wp-block-heading">Diferenças entre IA e Inteligência Humana</h3>



<p class="wp-block-paragraph">A questão de se as Inteligências Artificiais (IA) são realmente &#8220;inteligentes&#8221; depende da definição de inteligência que adotamos e da perspectiva sob a qual analisamos.</p>



<h3 class="wp-block-heading">Comparando com a Inteligência Humana:</h3>



<p class="wp-block-paragraph">E com as característica da inteligência definida por Aristóteles com nous.</p>



<ol class="wp-block-list">
<li><strong>Apreensão das Essências</strong>: Enquanto seres humanos entendem a essência das coisas de maneira intuitiva e profunda, a IA trabalha principalmente com dados e padrões que foram programados ou aprendidos através de grandes quantidades de exemplos. Ela pode identificar um gato em imagens com alta precisão, mas não necessariamente &#8220;compreende&#8221; o que faz um gato ser um gato além de suas características visuais.</li>



<li><strong>Intelecto Ativo e Passivo</strong>: A IA pode ser vista como tendo um intelecto passivo altamente desenvolvido, capaz de processar e armazenar mais informações do que os humanos. No entanto, seu intelecto ativo, a capacidade de gerar novas ideias ou conceitos de forma independente, ainda é limitado em comparação com a cognição humana.</li>



<li><strong>Conhecimento dos Primeiros Princípios</strong>: A IA pode utilizar princípios básicos programados para tomar decisões em jogos ou resolver problemas específicos, mas sua capacidade de generalizar esses princípios em contextos não familiares é limitada sem intervenção humana ou ajustes no seu treinamento.</li>



<li><strong>Consciência e Autoconsciência</strong>: Atualmente, as IAs não possuem consciência ou autoconsciência. Elas não têm experiências subjetivas e não podem refletir sobre si mesmas de maneira consciente como os seres humanos.</li>



<li><strong>Raciocínio e Contemplação</strong>: As IAs podem simular formas de raciocínio, especialmente em áreas estruturadas como matemática ou lógica. Contudo, elas não &#8220;contemplam&#8221; no sentido humano de ponderar significados mais profundos ou questões existenciais.</li>
</ol>



<h3 class="wp-block-heading">Conclusão</h3>



<p class="wp-block-paragraph">Então, <strong>as IAs são realmente inteligentes?</strong> A resposta curta é: <strong>não exatamente</strong>. Embora as IAs possam processar enormes quantidades de dados e gerar respostas que parecem inteligentes, elas não têm entendimento real ou consciência.</p>



<p class="wp-block-paragraph">As IAs baseiam suas respostas nas verdades universais fornecidas pela inteligência humana. Se 90% dos humanos acreditam que ovos fazem mal para a saúde, e apenas 10% dizem o contrário, a IA pode concluir que ovos são prejudiciais com base na quantidade de informações. Isso reflete um processo de análise de dados, não de raciocínio independente.</p>



<p class="wp-block-paragraph">A inteligência artificial é uma ferramenta poderosa, mas é a inteligência humana que a guia, instrui e interpreta seus resultados. A verdadeira inteligência reside na nossa capacidade de entender, raciocinar e criar com propósito e intenção.</p>



<p class="wp-block-paragraph">Muito obrigado pela leitura, e não se esqueça de curtir o post, se inscrever na newsletter e deixar um comentário abaixo. Até a próxima!</p>



<p class="wp-block-paragraph"></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.manualdoprogramador.com/as-inteligencias-artificiais-sao-realmente-inteligentes/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">1151</post-id>	</item>
		<item>
		<title>CSS Timing Function &#8211; Dê vida as animações</title>
		<link>https://www.manualdoprogramador.com/css-timing-function/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=css-timing-function</link>
					<comments>https://www.manualdoprogramador.com/css-timing-function/#respond</comments>
		
		<dc:creator><![CDATA[Silvio Cesar Junior]]></dc:creator>
		<pubDate>Sun, 23 Jul 2023 18:11:23 +0000</pubDate>
				<category><![CDATA[Front-end]]></category>
		<category><![CDATA[Programação]]></category>
		<guid isPermaLink="false">https://www.manualdoprogramador.com/?p=922</guid>

					<description><![CDATA[Hoje, vamos explorar uma poderosa ferramenta do CSS que pode elevar o nível de suas animações em páginas da web: [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="600" height="125" src="https://i0.wp.com/www.manualdoprogramador.com/wp-content/uploads/2023/07/linear.png?resize=600%2C125&#038;ssl=1" alt="Exemplos de utilização do CSS Timing Function" class="wp-image-925" srcset="https://i0.wp.com/www.manualdoprogramador.com/wp-content/uploads/2023/07/linear.png?w=600&amp;ssl=1 600w, https://i0.wp.com/www.manualdoprogramador.com/wp-content/uploads/2023/07/linear.png?resize=300%2C63&amp;ssl=1 300w" sizes="(max-width: 600px) 100vw, 600px" /></figure>



<p class="wp-block-paragraph">Hoje, vamos explorar uma poderosa ferramenta do CSS que pode elevar o nível de suas animações em páginas da web: o <em>CSS Timing Function.</em> Se você deseja criar transições suaves, efeitos envolventes e tornar a experiência do usuário ainda mais agradável, este é o lugar certo para aprender tudo sobre essa propriedade. Vamos mergulhar no mundo das animações e descobrir como utilizar o CSS Timing Function para encantar seus visitantes.</p>



<h3 class="wp-block-heading"><strong>O que é o CSS Timing Function?</strong></h3>



<p class="wp-block-paragraph">O CSS Timing Function é um tipo de propriedade que controla o ritmo e a velocidade de animações e transições em páginas da web. Em outras palavras, ele define como a animação progride ao longo do tempo. Essa propriedade trabalha em conjunto com outras, como <code>animation-duration</code> e <code>animation-timing-function</code>, para criar efeitos visuais atraentes e fluidos.</p>



<h3 class="wp-block-heading"><strong>Diferentes Formas do CSS Timing Function</strong></h3>



<p class="wp-block-paragraph">Essa propriedade oferece diversas formas para personalizar o comportamento das suas animações. Cada forma possui características únicas e pode se adequar melhor a diferentes contextos. Vamos explorar algumas delas:</p>



<p class="wp-block-paragraph"><strong>ease:</strong> Essa é forma padrão. Inicia a animação lentamente, acelera no meio e desacelera no final. Perfeito para criar transições naturais e suaves.</p>



<p class="wp-block-paragraph"><strong>ease-in:</strong> A animação começa lentamente e acelera à medida que progride. Ideal para destacar elementos no início de uma transição.</p>



<p class="wp-block-paragraph"><strong>ease-out:</strong> Ao contrário do ease-in, a animação inicia rapidamente e desacelera no final. Ótimo para focar na saída dos elementos.</p>



<p class="wp-block-paragraph"><strong>ease-in-out: </strong>Combinação das funções ease-in e ease-out. A animação começa lentamente, acelera no meio e desacelera novamente no final.</p>



<p class="wp-block-paragraph"><strong>linear: </strong>A animação avança de forma constante e uniforme ao longo do tempo. Ideal para criar movimentos diretos e previsíveis.</p>



<p class="wp-block-paragraph"><strong>cubic-bezier: </strong>Oferece a possibilidade de criar uma curva de velocidade personalizada usando pontos de controle. Permite controle total sobre a animação.</p>



<h3 class="wp-block-heading">Exemplo:</h3>



<iframe width="100%" height="900" src="//jsfiddle.net/juniorcoding/utperx6f/3/embedded/html,css,result/" allowfullscreen="allowfullscreen" allowpaymentrequest frameborder="0"></iframe>



<p class="wp-block-paragraph"></p>



<h3 class="wp-block-heading">Conclusão</h3>



<p class="wp-block-paragraph">O CSS Timing Function é uma ferramenta valiosa para criar animações cativantes e proporcionar uma experiência de usuário memorável em suas páginas da web. Ao dominar as diversas formas dessa propriedade, você terá o poder de criar transições suaves e envolventes, encantando seus visitantes e tornando o seu site ainda mais atrativo.</p>



<p class="wp-block-paragraph">Espero que tenham gostado do artigo e que aproveitem ao máximo essa poderosa propriedade do CSS. Até a próxima!</p>



<p class="wp-block-paragraph">Aproveite e confira os posts no Instagram do <a href="https://www.instagram.com/junior.coding/">@junior.coding</a> e <a href="https://www.instagram.com/blogmdp/">@blogmdp</a>.</p>



<p class="wp-block-paragraph"><a href="https://www.manualdoprogramador.com/display-grid-vs-display-flexbox/">CSS Grid vs Flexbox: Qual escolher para seu layout?</a></p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.manualdoprogramador.com/css-timing-function/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">922</post-id>	</item>
		<item>
		<title>6 linguagens de programação populares para aprender em 2024</title>
		<link>https://www.manualdoprogramador.com/6-linguagens-de-programacao-populares-para-aprender-em-2023/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=6-linguagens-de-programacao-populares-para-aprender-em-2023</link>
					<comments>https://www.manualdoprogramador.com/6-linguagens-de-programacao-populares-para-aprender-em-2023/#respond</comments>
		
		<dc:creator><![CDATA[Silvio Cesar Junior]]></dc:creator>
		<pubDate>Sat, 15 Jul 2023 13:16:24 +0000</pubDate>
				<category><![CDATA[Carreira]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[dart]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[linguagemdeprogramação]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[typescript]]></category>
		<guid isPermaLink="false">https://www.manualdoprogramador.com/?p=882</guid>

					<description><![CDATA[A área da programação está em constante evolução, e novas linguagens de programação surgem regularmente. No entanto, algumas linguagens já estabelecidas continuam a ser altamente populares e amplamente adotadas. Se você está pensando em aprender uma nova linguagem de programação em 2023, este artigo é para você. Apresentaremos cinco linguagens que estão em alta e oferecem ótimas oportunidades para os programadores]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-large is-resized"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1024" height="563" src="https://i0.wp.com/www.manualdoprogramador.com/wp-content/uploads/2023/07/programming-g81489d9d5_1280.png?resize=1024%2C563&#038;ssl=1" alt="" class="wp-image-884" style="width:1399px;height:769px" srcset="https://i0.wp.com/www.manualdoprogramador.com/wp-content/uploads/2023/07/programming-g81489d9d5_1280.png?resize=1024%2C563&amp;ssl=1 1024w, https://i0.wp.com/www.manualdoprogramador.com/wp-content/uploads/2023/07/programming-g81489d9d5_1280.png?resize=300%2C165&amp;ssl=1 300w, https://i0.wp.com/www.manualdoprogramador.com/wp-content/uploads/2023/07/programming-g81489d9d5_1280.png?resize=768%2C422&amp;ssl=1 768w, https://i0.wp.com/www.manualdoprogramador.com/wp-content/uploads/2023/07/programming-g81489d9d5_1280.png?w=600&amp;ssl=1 600w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<h3 class="wp-block-heading">Introdução</h3>



<p class="wp-block-paragraph">A área da programação está em constante evolução, e novas linguagens de programação surgem regularmente. No entanto, algumas linguagens já estabelecidas continuam a ser altamente populares e amplamente adotadas. Se você está pensando em aprender uma nova linguagem de programação em 2024, este artigo é para você. Apresentaremos cinco linguagens que estão em alta e oferecem ótimas oportunidades para os programadores</p>



<h3 class="wp-block-heading">1. JavaScript/Typescript:</h3>



<p class="wp-block-paragraph">Javascript (JS) é uma linguagem de programação essencial para o desenvolvimento web. Com a crescente demanda por aplicações web interativas e ricas em recursos, o JavaScript se tornou imprescindível. Ele permite a criação de funcionalidades dinâmicas e interativas do lado do cliente/servidor, além de oferecer suporte ao desenvolvimento de aplicativos móveis e até mesmo de desktop, graças a frameworks como o Node.js e o Electron. Ou seja, você consegue utilizar JavaScript em todas as principais stacks do mercado. O Typescript (TS) também é um linguagem de programação, criada pela Microsoft, que vem para complementar o Javascript. Ele adiciona tipagem estática opcional à linguagem e flexibilidade para definir suas regras.</p>



<ul class="wp-block-list">
<li><strong>Importância:</strong> 
<ul class="wp-block-list">
<li><strong>Interatividade do lado do cliente:</strong> O JavaScript é uma linguagem de programação que roda diretamente no navegador do cliente (cliente-side), permitindo que os desenvolvedores criem páginas web interativas e dinâmicas. Com JavaScript, é possível responder a ações do usuário em tempo real, como cliques em botões, envio de formulários e interações com elementos da página, melhorando significativamente a experiência do usuário.</li>



<li><strong>Ampla compatibilidade:</strong> JavaScript é suportado por todos os principais navegadores modernos, como Google Chrome, Mozilla Firefox, Microsoft Edge, Safari, entre outros. Isso significa que os aplicativos e recursos desenvolvidos em JavaScript são executados em praticamente qualquer dispositivo, independentemente do sistema operacional ou plataforma, tornando-o uma escolha universal para o desenvolvimento web.</li>



<li><strong>Ecossistema de bibliotecas e frameworks:</strong> O ecossistema de bibliotecas e frameworks JavaScript é extremamente robusto e diversificado. Existem várias bibliotecas que simplifica a manipulação do DOM (Document Object Model) e oferece recursos úteis para interação com a página. Além disso, há frameworks avançados, como React, Angular e Vue.js, que facilitam a criação de aplicativos web complexos e bem estruturados, com componentes reutilizáveis e gerenciamento de estado eficiente.</li>
</ul>
</li>



<li><strong>Tipos de Dados (Typescript):</strong>
<ul class="wp-block-list">
<li><em>Number:</em> Numérico;</li>



<li><em>String:</em> Texto;</li>



<li><em>Boolean:</em> True ou False;</li>



<li><em>Void:</em> é usado sempre que uma função não retorna nada explicitamente;</li>



<li><em>Null:</em> Vazio;</li>



<li><em>Undefined:</em> Indefinido;</li>



<li><em>Any:</em> Atributo coringa, pode ser qualquer coisa;</li>



<li><em>Array:</em> Lista;</li>
</ul>
</li>
</ul>



<p class="wp-block-paragraph"><strong>Hello, Word!</strong></p>



<pre class="wp-block-code"><code>console.log(&quot;hello, World!&quot;)</code></pre>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<h3 class="wp-block-heading">2. Python</h3>



<p class="wp-block-paragraph">Python tem se destacado como uma das linguagens mais populares e versáteis nos últimos anos. Sua sintaxe clara e concisa torna a programação em Python bastante intuitiva. Além disso, sua ampla adoção em áreas como ciência de dados, aprendizado de máquina e desenvolvimento web torna Python uma escolha valiosa. A biblioteca padrão abrangente e a vasta comunidade de desenvolvedores também contribuem para a popularidade contínua do Python.</p>



<ul class="wp-block-list">
<li><strong>Importância:</strong>
<ul class="wp-block-list">
<li>Python é uma linguagem muito fácil de aprender com sua sintaxe bastante simples;</li>



<li>A praticidade contribui para que seja bastante intuitivo programar nessa linguagem e garante um aumento na produtividade;</li>



<li>Comunidade ampla e popularidade;</li>



<li>Ser a principal stack na área da inteligência artificial, já que existem bibliotecas como a Keras, que permite testar redes neurais artificiais, elemento do&nbsp;<strong>Machine Learning</strong>&nbsp;que simula o sistema nervoso central dos seres vivos, permitindo que a máquina reconheça padrões e aprenda.</li>
</ul>
</li>



<li><strong>Tipos de dados:</strong>
<ul class="wp-block-list">
<li><em>Int:</em> Inteiro;</li>



<li><em>Float:</em> Ponto Flutuante ou Decimal;</li>



<li>Complex: Tipo&nbsp;Complexo;</li>



<li>String (str)</li>



<li>Boolean (bool)</li>



<li>List (list)</li>



<li>Tuple.</li>



<li>Dictionary (dic)</li>
</ul>
</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<pre class="wp-block-code"><code>print(&quot;Hello, World!&quot;)</code></pre>



<h3 class="wp-block-heading">3. Kotlin</h3>



<p class="wp-block-paragraph">Kotlin é uma linguagem moderna e concisa que foi projetada para rodar na máquina virtual Java (JVM). Desde que se tornou a linguagem oficial para desenvolvimento Android em 2017, a popularidade do Kotlin tem crescido significativamente. A linguagem oferece recursos avançados, como nulidade segura e suporte a extensões de função, o que a torna mais segura e produtiva. A compatibilidade com bibliotecas Java existentes e sua curva de aprendizado suave também são fatores que atraem desenvolvedores.</p>



<ul class="wp-block-list">
<li><strong>Importância:</strong>
<ul class="wp-block-list">
<li><strong>Sintaxe concisa e expressiva:</strong> O Kotlin possui uma sintaxe concisa e expressiva que minimiza o código boilerplate, tornando o código mais legível. A linguagem enfatiza a clareza do código, oferecendo recursos como classes de dados, funções de extensão e funções infixas. Essas construções úteis permitem que os desenvolvedores escrevam código limpo e de fácil manutenção, reduzindo o risco de defeitos.</li>



<li><strong>Interoperabilidade com Java:</strong> Kotlin é totalmente compatível com Java, o que significa que o código Kotlin pode ser usado sem problemas com bibliotecas, estruturas e ferramentas Java.</li>



<li><strong>Recursos de segurança:</strong> Kotlin enfatiza a segurança através de características como a segurança nula, que ajuda a reduzir erros de programação comuns que podem levar a excepções em tempo de execução, tais como NullPointerExceptions. Além disso, a inferência de tipos e os smart casts de Kotlin ajudam os programadores a detectar potenciais erros em tempo de compilação, tornando o código mais seguro e fiável.</li>
</ul>
</li>



<li><strong>Tipos de dados:</strong>
<ul class="wp-block-list">
<li><em>String</em>: Texto;</li>



<li><em>Int</em>: Número inteiro;</li>



<li><em>Double</em>: ****Número decimal</li>



<li><em>Float</em>: Número decimal, que é menos preciso que um&nbsp;<code>Double</code>&nbsp;e tem&nbsp;<code>f</code>&nbsp;ou&nbsp;<code>F</code>&nbsp;no fim do número:
<ul class="wp-block-list">
<li>5.0f</li>



<li>-1630.209f</li>



<li>1.2940278F</li>
</ul>
</li>



<li><em>Boolean</em>**:** True ou False;</li>
</ul>
</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<pre class="wp-block-code"><code>fun main() {
    println(&quot;Hello, World!&quot;)
}</code></pre>



<h3 class="wp-block-heading">4. Rust</h3>



<p class="wp-block-paragraph">Rust é uma linguagem de programação relativamente nova, que se destaca pela sua segurança e desempenho. Ela foi projetada para fornecer controle de memória semântico seguro e evitar problemas comuns, como falhas de segmentação e vazamentos de memória. Com a crescente preocupação com a segurança de software, a linguagem Rust tem atraído a atenção da comunidade de desenvolvedores. Além disso, seu ecossistema em rápido crescimento e sua capacidade de criação de aplicações de alto desempenho a tornam uma opção promissora.</p>



<ul class="wp-block-list">
<li><strong>Importância:</strong>
<ul class="wp-block-list">
<li><strong>Confiança ao desenvolver em nível de sistema:</strong> Desenvolvendo em nível de sistema, a linguagem de programação Rust oferece confiança aos veteranos, permitindo que gastem menos tempo e atenção para evitar armadilhas, o que possibilita o alcance de metas mais ambiciosas. Além disso, para novos desenvolvedores, Rust representa um caminho mais fácil para começar a escrever códigos de programação com segurança e eficiência.</li>



<li><strong>Estratégica para iniciantes:</strong> Iniciar com a linguagem Rust é uma boa opção para iniciantes no mundo da programação, considerando o tempo necessário para dominar cada linguagem e os riscos de segurança do código. A confiança na segurança que Rust oferece está mudando a visão de investidores, que agora não dependem tanto de veteranos experientes para encomendar sistemas produtivos. A tecnologia permite que os desenvolvedores enviem seus códigos ao ambiente produtivo com segurança, mesmo com menos experiência na disciplina.</li>



<li><strong>Variedade na estrutura de dados e otimização da memória:</strong> Como mostrado abaixo os tipos de dados da linguagem Rust é muito diversificada e a preocupação com o tipo de variável que precisa ser declarado, permite a linguagem tenha um excelente tempo de execução e baixo utilização da memória do servidor. Além de outras otimizações que a linguagem já faz internamente.</li>
</ul>
</li>



<li><strong>Tipos de dados &#8211; Primitivos:</strong>
<ul class="wp-block-list">
<li><em>Integer:</em> Representa números inteiros, como i8, i16, i32, i64, i128 e seus equivalentes sem sinal u8, u16, u32, u64, u128.</li>



<li><em>Float:</em> Representa números de ponto flutuante, como f32 e f64.</li>



<li><em>Boolean:</em> Representa valores verdadeiro (true) ou falso (false).</li>



<li><em>Char:</em> Representa um único caractere Unicode, declarado usando aspas simples.</li>



<li><em>Tuple:</em> Uma sequência fixa de elementos com tipos diferentes, declarada entre parênteses, como (valor1, valor2, &#8230;).</li>



<li><em>Array:</em> Uma sequência fixa de elementos com o mesmo tipo, declarada com tamanho fixo, como [valor1, valor2, &#8230;; tamanho].</li>



<li><em>Slice:</em> Uma referência a uma parte de um array ou a uma sequência de dados, representada por &amp;[valor].</li>
</ul>
</li>



<li><strong>Tipos de dados &#8211; Compostos:</strong>
<ul class="wp-block-list">
<li><em>Struct (estrutura):</em> Um tipo de dado personalizado que permite agrupar vários campos com diferentes tipos em uma única entidade.</li>



<li><em>Enum</em> (enumeração): Um tipo que permite representar diferentes valores em um único tipo, cada valor conhecido como um &#8220;variant&#8221;.</li>



<li><em>Array Slice:</em> Uma referência a uma parte de um array, denotado por &amp;[valor].</li>



<li><em>String Slice:</em> Uma referência a uma parte de uma string, denotado por &amp;str.</li>



<li><em>Tuple Slice:</em> Uma referência a uma parte de uma tupla, denotado por &amp;(valor1, valor2, &#8230;).</li>
</ul>
</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<pre class="wp-block-code"><code>fn main() {
    println!(&quot;Hello, World!&quot;);
}</code></pre>



<h3 class="wp-block-heading">5. Dart</h3>



<p class="wp-block-paragraph">Dart é uma linguagem de programação desenvolvida pelo Google, projetada para ser simples, eficiente e adequada para o desenvolvimento de aplicações web, móveis e de servidor. É uma linguagem de tipagem estática e oferece recursos modernos, como suporte a orientação a objetos, sintaxe concisa, coleta de lixo automatizada e compilação just-in-time (JIT) ou ahead-of-time (AOT).</p>



<p class="wp-block-paragraph">Dart é a linguagem principal usada no desenvolvimento de aplicativos móveis com o framework <strong>Flutter</strong>, que permite a criação de interfaces de usuário bonitas e altamente responsivas para iOS, Android e web a partir de um único código-base. Além disso, Dart também pode ser utilizado para desenvolver aplicações web por meio do pacote &#8220;dart:html&#8221; e outras bibliotecas.</p>



<ul class="wp-block-list">
<li><strong>Importância:</strong>
<ul class="wp-block-list">
<li><strong>Desenvolvimento multiplataforma com Flutter:</strong> Uma das principais vantagens de usar a linguagem Dart é a capacidade de desenvolver aplicativos multiplataforma com o framework Flutter. Com Flutter, é possível criar aplicativos nativos para iOS, Android e web a partir de um único código-base. Isso reduz significativamente o tempo e os esforços necessários para desenvolver, testar e manter aplicativos em várias plataformas, resultando em maior eficiência no desenvolvimento.</li>



<li><strong>Sintaxe concisa e fácil de aprender:</strong> **Dart possui uma sintaxe clara, concisa e fácil de aprender, o que a torna acessível a desenvolvedores de diferentes níveis de habilidade. Sua estrutura de código limpo e legível contribui para o desenvolvimento mais rápido e a manutenção simplificada do software. Além disso, a linguagem suporta recursos modernos, como tipagem estática e inferência de tipos, o que auxilia na detecção precoce de erros e melhora a segurança do código.</li>



<li><strong>Performance e eficiência:</strong> **Dart é projetada para oferecer desempenho e eficiência. Com a opção de compilação just-in-time (JIT) ou ahead-of-time (AOT), a linguagem permite que os desenvolvedores escolham a melhor abordagem de acordo com o cenário de uso do aplicativo. Além disso, o uso do framework Flutter, que usa o mecanismo de renderização próprio, contribui para a construção de interfaces de usuário altamente responsivas e fluidas, proporcionando uma experiência de usuário de alta qualidade.</li>
</ul>
</li>



<li><strong>Tipos Primitivos:</strong>
<ul class="wp-block-list">
<li><em>int:</em> Inteiro;</li>



<li><em>double:</em> Representa números de ponto flutuante;</li>



<li><em>bool:</em> True ou False;</li>



<li><em>String:</em> Texto;</li>



<li><em>dynamic:</em> Um tipo que permite armazenar qualquer tipo de valor e permite mudar seu tipo durante o tempo de execução. É usado quando o tipo de dado não é conhecido em tempo de compilação.</li>
</ul>
</li>



<li><strong>Tipos Compostos:</strong>
<ul class="wp-block-list">
<li><em>List:</em> Representa uma lista ordenada de elementos do mesmo tipo, como [1, 2, 3].</li>



<li><em>Set:</em> Representa um conjunto não ordenado e sem elementos duplicados, como {1, 2, 3}.</li>



<li><em>Map:</em> Representa uma coleção de pares chave-valor, como {&#8220;nome&#8221;: &#8220;João&#8221;, &#8220;idade&#8221;: 30}.</li>



<li><em>Runes:</em> Representa uma sequência de pontos de código Unicode, que são usados para trabalhar com caracteres não ASCII.</li>



<li><em>Symbol:</em> Representa um símbolo que é usado principalmente para trabalhar com reflexão.</li>
</ul>
</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<pre class="wp-block-code"><code>void main() {
  print(&quot;Hello, World!&quot;);
}</code></pre>



<h3 class="wp-block-heading">6. PHP</h3>



<p class="wp-block-paragraph">PHP é uma linguagem de programação de código aberto, amplamente usada para desenvolvimento web. Ela foi projetada para ser incorporada diretamente em páginas HTML, permitindo a criação de conteúdo dinâmico em sites e aplicativos. A linguagem é muito popular para o desenvolvimento de sites e sistemas web, com suporte a bancos de dados, manipulação de formulários e interação com servidores.</p>



<ul class="wp-block-list">
<li><strong>Importância e principais vantagens:</strong>
<ul class="wp-block-list">
<li><strong>Facilidade de uso:</strong> PHP é conhecido por sua sintaxe simples e fácil de aprender, tornando-o acessível para desenvolvedores iniciantes.</li>



<li><strong>Ampla comunidade e documentação:</strong> PHP possui uma comunidade ativa e uma grande quantidade de recursos de aprendizado disponíveis online.</li>



<li><strong>Integração com bancos de dados:</strong> Oferece suporte nativo para conexão com diversos bancos de dados, permitindo a criação de aplicações com funcionalidades robustas.</li>



<li><strong>Utilizada no WordPress:</strong> que é um sistema livre e aberto de gestão de conteúdo para internet, principalmente para a criação de páginas eletrônicas e blogs online. ela é utilizada por aproximadamente <strong>35%</strong> de todos os sites do mundo.</li>
</ul>
</li>



<li><strong>Tipos de dados:</strong>
<ul class="wp-block-list">
<li><em>Inteiro (integer);</em></li>



<li>Ponto flutuante (<em>float</em>);</li>



<li><em>String</em>: Texto;</li>



<li>Booleano (<em>boolean</em>): True ou False;</li>



<li><em>Array</em>: Representa uma coleção de elementos;</li>



<li>Objeto (<em>object</em>): Representa instâncias de classes, que são usadas para criar tipos de dados personalizados.</li>



<li>Recurso (<em>resource</em>): Representa recursos externos, como conexões de banco de dados, arquivos abertos, etc.</li>



<li>Nulo (<em>null</em>): Representa a ausência de valor ou a variável sem valor atribuído.</li>



<li><em>Closure</em> (função anônima): Representa funções anônimas que podem ser atribuídas a variáveis ou passadas como argumentos para outras funções.</li>



<li><em>Callable</em>: Representa uma função ou método que pode ser chamado usando a notação de chamada de função.</li>
</ul>
</li>
</ul>



<hr class="wp-block-separator has-alpha-channel-opacity"/>



<pre class="wp-block-code"><code>&lt;?php
  echo &quot;Hello, World!&quot;;
?&gt;</code></pre>



<h3 class="wp-block-heading">Conclusão</h3>



<p class="wp-block-paragraph">Ao considerar a aprendizagem de uma nova linguagem de programação em 2024, é importante escolher aquelas que têm um forte respaldo da comunidade, são amplamente adotadas e oferecem oportunidades de trabalho significativas. Python, JavaScript, Dart, Kotlin, PHP e Rust são exemplos de linguagens populares que se destacam em diferentes domínios e setores. Cada uma delas oferece vantagens únicas e pode abrir portas para oportunidades emocionantes na área de programação. Escolha uma linguagem que se alinhe aos seus interesses e metas profissionais e embarque em uma jornada de aprendizado empolgante!</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.manualdoprogramador.com/6-linguagens-de-programacao-populares-para-aprender-em-2023/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">882</post-id>	</item>
		<item>
		<title>CSS Grid vs Flexbox: Qual escolher para seu layout?</title>
		<link>https://www.manualdoprogramador.com/display-grid-vs-display-flexbox/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=display-grid-vs-display-flexbox</link>
					<comments>https://www.manualdoprogramador.com/display-grid-vs-display-flexbox/#respond</comments>
		
		<dc:creator><![CDATA[Silvio Cesar Junior]]></dc:creator>
		<pubDate>Sun, 09 Jul 2023 17:23:25 +0000</pubDate>
				<category><![CDATA[Front-end]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[comparação de layout]]></category>
		<category><![CDATA[display flexbox]]></category>
		<category><![CDATA[display grid]]></category>
		<category><![CDATA[escolher layout]]></category>
		<category><![CDATA[layout]]></category>
		<guid isPermaLink="false">https://www.manualdoprogramador.com/?p=772</guid>

					<description><![CDATA[CSS Grid é uma poderosa ferramenta de layout disponível no CSS, e dominar suas capacidades pode fazer uma enorme diferença [&#8230;]]]></description>
										<content:encoded><![CDATA[
<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="1400" height="1050" src="https://i0.wp.com/www.manualdoprogramador.com/wp-content/uploads/2023/07/pexels-kevin-ku-577585-1.jpg?resize=1400%2C1050&#038;ssl=1" alt="" class="wp-image-860"/></figure>



<p class="wp-block-paragraph">CSS Grid é uma poderosa ferramenta de layout disponível no CSS, e dominar suas capacidades pode fazer uma enorme diferença na forma como você cria e organiza o conteúdo em suas páginas. Se você está cansado de lutar com layouts complicados e tabelas desajeitadas, chegou a hora de aprender CSS Grid de uma vez por todas!</p>



<p class="wp-block-paragraph">O CSS Grid é um sistema de grade bidimensional que permite criar layouts complexos e responsivos de maneira intuitiva. Ao contrário de métodos anteriores de posicionamento, como o uso de floats ou frameworks de grid, o CSS Grid oferece um alto nível de controle e flexibilidade. Além disso, ele permite a criação de layouts personalizados sem a necessidade de nenhum hack.</p>



<h4 class="wp-block-heading">Flexbox X CSS Grid</h4>



<p class="wp-block-paragraph">O Flexbox sempre foi o mais utilizado e o mais queridinho pelos desenvolvedores, e é um pouco mais fácil de aprender, visto que os nomes das propriedades são mais fácil de decorar. Já o CSS Grid é uma solução mais recente e apresenta uma complexidade maior, porém uma leck de possibilidades infinitas.</p>



<p class="wp-block-paragraph">Não acredito ambos servem para finalidades diferentes, pense o seguinte:</p>



<ul class="wp-block-list">
<li>Flexbox faz coisas que o CSS Grid não pode fazer;</li>



<li>CSS Grid faz coisas que o Flexbox não pode;</li>
</ul>



<p class="wp-block-paragraph">Embora o <strong>flexbox</strong> possa ser usado para trabalhar com elementos em duas dimensões, é mais eficiente desenvolve-lo quando estamos lidando com elementos em apenas uma dimensão, seja linha ou coluna.</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="841" height="60" src="https://i0.wp.com/www.manualdoprogramador.com/wp-content/uploads/2023/07/image.png?resize=841%2C60&#038;ssl=1" alt="" class="wp-image-797"/></figure>



<p class="wp-block-paragraph">Já o <strong>Grid</strong> é ótimo quando estamos trabalhando com elementos em duas dimensões, principalmente para definir a estrutura de uma página, o que seria muito mais difícil com FlexBox. Ou seja, se precisarmos utilizar vários elementos em modelo de grade, CSS Grid é a opção.</p>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="841" height="355" src="https://i0.wp.com/www.manualdoprogramador.com/wp-content/uploads/2023/07/image-1.png?resize=841%2C355&#038;ssl=1" alt="" class="wp-image-798"/></figure>



<h4 class="wp-block-heading">Vamos para a pratica!</h4>



<iframe width="100%" height="300" src="//jsfiddle.net/juniorcoding/0teqpfx3/1/embedded/" allowfullscreen="allowfullscreen" allowpaymentrequest frameborder="0"></iframe>



<ul class="wp-block-list">
<li>Percebe que a estrutura das grades, foi definida pelo <code>display: grid</code>.</li>



<li>Utilizamos o grid-template-columns para definir o tamanho da largura de cada coluna.</li>



<li>Utilizamos o grid-template-rows para definir o tamanho a altura de cada linha.</li>



<li>Utilizamos o grid-template-areas para definir quais elementos eu devo considerar nos cálculos, como será a sua divisão entre as colunas e a sua respectiva ordem:
<ul class="wp-block-list">
<li><code>&lt;kbd&gt;&quot;header header&quot; &quot;aside main&quot; &quot;footer footer&quot;&lt;/kbd&gt;</code></li>
</ul>
</li>



<li>O Flexbox é utilizado no <code>header &gt; ul</code> para definir os 4 itens do menu em uma linha e para deixar justificado no eixo X e centralizado no Y;</li>
</ul>



<figure class="wp-block-image size-full"><img data-recalc-dims="1" loading="lazy" decoding="async" width="331" height="163" src="https://i0.wp.com/www.manualdoprogramador.com/wp-content/uploads/2023/07/image-2.png?resize=331%2C163&#038;ssl=1" alt="" class="wp-image-800"/></figure>
]]></content:encoded>
					
					<wfw:commentRss>https://www.manualdoprogramador.com/display-grid-vs-display-flexbox/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
		<post-id xmlns="com-wordpress:feed-additions:1">772</post-id>	</item>
	</channel>
</rss>
