Variáveis ​​101: Conhecendo Seu Computador

Infelizmente, tenho visto que muitos não querem aprender a programar este 2018 🙁 mas mesmo se eu tivesse apenas lido meu artigo anterior uma pessoa e depois de algum tempo conseguir enviar um commit para um projeto de software livre, ficaria satisfeito com o meu trabalho 🙂

Para aqueles que amam segurança, prometo a vocês que o seguinte será um post sobre segurança todos para que todos fiquem felizes, se alguém quiser aprender algo mais (como git, administração de servidor, ou não sei: p), ou para comentar sobre algum outro tópico que não pode ser respondido de forma simples na caixa de comentários, deixe-me saber e veremos como podemos resolver isso 😉

Bem, agora se formos para o nosso caso, anteriormente falamos sobre digitação, e que isso tinha a ver com a maneira como salvamos nossas variáveis ​​em um programa, agora vamos revisar um pouco do que acontece dentro e, com sorte, pode ser suficientemente claro.

Bits

Acho que é um assunto que sempre toco quando escrevo sobre programação, com certeza é algo que me fascina e que me ajudou a entender muitas coisas, agora vou tentar explicar um pouco como são, como são lidas e para que servem 🙂

Pense em um interruptor de luz, quando o circuito está fechado, temos um 0 na tela, quando mudamos a posição do interruptor, porque um 1🙂 simples, não é?

Agora um 0 e um 1 Eles podem significar muitas coisas, tudo depende da criatividade com que você os interpreta, suponha que eu queira saber se alguém está indo para o Norte ou para o Sul, 1 pode significar norte e 0, sur 🙂 digamos que eu queira saber se alguém é homem ou mulher, 1 pode ser um homem e 0, mulher 🙂. Agora eu quero saber se essa pessoa é jovem ou velha (> 22), 0 pode significar jovem e 1, superior. Vamos continuar imaginando ... Você tem algum animal de estimação? 1 Eu diria sim enquanto 0 Eu diria não Agora quero que você leia a seguinte linha comigo:

1001

Esta é a maneira resumida de dizer ...

Una jóven mujer de no más de 22 años se dirige al norte acompañada de su mascota.

que é muito diferente de:

0110 o Un hombre con más de 22 años de edad se dirige solo hacia el sur.

Bytes

Agora vamos dar um passo adiante, vamos aprender como ler bytes. Um byte é a sequência de 8 bits, que são lidos da direita para a esquerda e cada 1 representa um poder de 2 levantado para o n onde n é a posição do bit. Como parece chinês, vamos dar um pequeno exemplo 🙂

01001011 Temos este byte, agora vamos da direita para a esquerda (<-) vou colocá-los de cima para baixo para poder escrever o significado:

1: a broca quando em posição 0 indica que temos o seguinte 2 elevado a zero ou 2^0. Este poço que sabemos é equivalente a 1.

1: o segundo bit, agora a posição 12^1 que é o mesmo que dizer 2

0: terceiro bit ... isso deve ser 2^2, mas como não está ligado, vamos deixá-lo ligado 0

1: quarto bit, 2^3 u 8 🙂

0: o mesmo que 0

0: de outros 0

1: agora estamos em 2^6 o 64

e finalmente 0 , já sabemos o que significa 🙂 agora vamos adicionar nossos resultados e compará-los com a tabela a seguir 🙂 Temos um 75 então vamos procurar na coluna Decimal e veremos o que aparece em carbonizar

Resultado de imagem para mesa ascii

Temos uma K!! Parabéns, você já sabe ler em binário 🙂 Mas os mais sagazes devem ter percebido que também obtivemos um número decimal, e que ele tem um limite (quando todos os valores são 1) Esse limite é encontrado no número 255.

Word

Agora, mais de um vai me dizer, mas e se eu precisar de um número maior que 255? ou onde posso encontrar outros personagens como os japoneses? Bem, a resposta é simples, vamos juntar 2 bytes. Agora que temos dois, o número possível de combinações que temos é 2^16 o 65536 resultados possíveis, como 0 é um daqueles, o máximo possível é 65535. Esse número toca uma campainha? Lembra do número máximo de portas em um sistema Linux? Eu deixo lição de casa para eles 😉

Palavra dupla e palavra quádrupla

Para os mais matemáticos, também existem formatos específicos, o palavra dupla conter, como muitos já devem ter imaginado 2 word o 4 bytes (o 32 bits) de informações, o mesmo que dizer:

11111111111111111111111111111111 ou 0 a 4 294 967 295

Nesse ponto muitos vão se perguntar o que acontece com os números negativos, ou seja, em algum lugar eles devem ser contemplados, certo? Para poder armazenar um número negativo, os desenvolvedores do processador escolheram ocupar o primeiro bit à esquerda como um valor de sinal. Isso significa que se o primeiro bit for 0 estamos falando de um número positivo, mas se for 1 temos um negativo. Agora veja por que os bits são tão especiais, eles podem ser o que você quiser 😀

Mas isso obviamente nos deixa com uma posição a menos para fazer a multiplicação! Então nosso0 a 4 294 967 295 se converte em:

-2,147,483,648 a +2,147,483,647

Agora, muitos de nós já temos 64 bits, e este é o valor de um palavra quad, podemos ter valores que variam de 0 a 18 446 744 073 709 551 615. Esse é um grande número 🙂

Por que 8 bits?

Isso é algo que mais de um pode estar se perguntando, e a resposta está no hardware. Desde o início, os processadores precisavam de dados para realizar as operações. Os dados são armazenados na memória do computador e toda vez que o processador exige, ele usa os barramentos de dados para obtê-los. Antigamente, esses barramentos podiam se comunicar no máximo 8 bits por ciclo, isso significa que a forma máxima e mais eficiente de mover os dados, era agrupar 8 bits e enviá-los ao processador.

Com o passar do tempo, até hoje, os processadores desenvolveram a capacidade de mover 16 bits, 32 bits e ... 64 bits.

O que isso tem a ver com digitação?

Agora estamos na parte em que tudo faz sentido 🙂 Digitar é uma propriedade que as linguagens de programação usam para nomear esses espaços de memória. Todas as variáveis ​​têm sua contrapartida em um desses tipos de dados, não importa como sejam chamadas. Estes são conhecidos como tipos de dados primitivosCada linguagem fortemente tipada tem sua concepção desses valores e da quantidade que eles representam. Por exemplo, em C, temos a biblioteca limits.h que nos mostra a quantidade máxima e mínima de valores primitivos.

Vamos ver o que acontece se tentarmos quebrar um dos valores:

Próprio. Christopher Diaz Riveros

À direita temos os valores do arquivo limits.h e à esquerda, pegamos um desses valores (unsigned short int) e atribuímos um número maior do que o correspondente. Como resultado, o compilador nos avisa que estamos fazendo mau uso da memória porque a forma binária de 66666 não pode caber na forma binária de 65535. Isso nos leva a uma lição em atuação quando programamos, se o seu valor não vai crescer muito com o tempo, ou se você não exige valores tão grandes como os de um duplo o palavra quadO uso do tipo correto reduz a quantidade de memória solicitada pela CPU, o que implica em uma maior velocidade de obtenção dos dados se bem calculado.

Do lado do intérprete, isso é mais fácil devido ao conversões implícitas. Cuando definimos uma variável em linguagens como javascript ou Python, o interpretador se encarrega de entender de que tipo ela é e alocar espaço de memória suficiente para realizar as operações. Vamos ver um exemplo simples 🙂

Próprio. Christopher Diaz Riveros

Como você pode ver, não temos que explicar ao interpretador python o tipo de nossa variável, porque ele se encarrega de atribuir um tipo e armazená-lo na memória 🙂

Conheça suas variáveis

Isso depende da linguagem e do tipo de implementação que você vai usar, mas o primeiro passo para ser capaz de programar é aprender as variáveis ​​que você pode usar 🙂 Depois de entender as variáveis, você estará em uma posição para poder usá-las de forma eficiente e lógica para armazenar informações (desde que por um usuário ou pelo sistema). Este é o primeiro passo na escada da programação e, com sorte, depois de ler este artigo, você terá um melhor entendimento de como o computador funciona e como armazena informações. Ficará comigo até o próximo artigo, lembre-se de deixar seus comentários para ver se tem que reforçar ou comentar algum ponto específico. Felicidades


41 comentários, deixe o seu

Deixe um comentário

Seu endereço de email não será publicado. Campos obrigatórios são marcados com *

*

*

  1. Responsável pelos dados: Miguel Ángel Gatón
  2. Finalidade dos dados: Controle de SPAM, gerenciamento de comentários.
  3. Legitimação: Seu consentimento
  4. Comunicação de dados: Os dados não serão comunicados a terceiros, exceto por obrigação legal.
  5. Armazenamento de dados: banco de dados hospedado pela Occentus Networks (UE)
  6. Direitos: A qualquer momento você pode limitar, recuperar e excluir suas informações.

  1.   Luis dito

    Bem escrito, sucinto e claro, ao mesmo tempo interessante para todos os públicos. Bom trabalho.

    1.    Chris ADR dito

      Muito obrigado, saudações 🙂

  2.   Joao jesus dito

    Ótima explicação. Você é uma máquina.

    1.    Chris ADR dito

      Obrigado

  3.   Ruben dito

    Muito bem explicado obrigado

    1.    Chris ADR dito

      Obrigado por ler isso na

  4.   Diego dito

    Excelente, obrigado pela contribuição. E aproveitando o problema binário, existe a possibilidade de você nos dar uma classe de IP, sub-rede, etc. Eu entendo que não é um problema de programação, mas uma boa explicação desse problema sempre esteve pendente.
    Mais uma vez, obrigado pela sua explicação

    1.    Chris ADR dito

      Olá Diego, dá para fazer 🙂 para falar a verdade também não tenho falado muito sobre o assunto, mas não há melhor maneira de investigar do que procurar algo para compartilhar sobre isso em um artigo 🙂 Vamos deixar para a lista porque o próximo post já tem assunto e vai tratar de endurecimento. Saudações 🙂

  5.   Peter dito

    Você é um excelente professor e muito generoso por ensinar o que sabe. Parabéns e obrigada.

    1.    Chris ADR dito

      Muito obrigado Pedro 🙂 Ainda procuro lugares para lecionar, infelizmente aqui no Peru é difícil quando você só tem um diploma profissional técnico, então agora procuro a possibilidade de continuar meus estudos universitários aqui ou onde posso ou mesmo me candidatar a um mestrado em o estrangeiro, quem sabe, talvez em breve algo assim possa ser dado 🙂 mas definitivamente ensinar é algo que faz o meu dia 🙂 Saudações

  6.   algo dito

    Eu não tinha lido uma explicação melhor do assunto, o primeiro exemplo é brilhante

    embora eu não tenha ouvido essa palavra (como variáveis ​​de 16 bits), palavra dupla ou palavra quádrupla

    Independentemente de "já estar programando", os posts são interessantes. Se houver algum problema, o post é usar C (limites.h) como exemplo dos tamanhos das variáveis, C tem a especificação menos específica que existe

    1.    Chris ADR dito

      Olá alguma coisa 🙂 muito obrigado, eu vim com o exemplo no caminho 😛 porque certamente são dados conhecidos por quem leu um pouco de Assembly, e é isso que o processador entende 🙂 hahaha certamente C não é muito específico, mas eu acho que isso se deve ao fato de que a portabilidade e as diferentes arquiteturas que ela suporta são tão variadas que o C precisa acomodar cada tipo de processador para ser verdadeiramente portátil 🙂
      Saudações e obrigado por compartilhar.

  7.   Sergio dito

    Unnn seria interessante se essa série de tutoriais fosse baseada em ferrugem, acho que é uma das linguagens mais interessantes que estão sendo desenvolvidas hoje.
    Estou atrás dele, mas reconheço que é uma linguagem difícil, mas com um grande futuro ...
    Estou ansioso para seus próximos artigos, eles são realmente interessantes.
    Saudações.

    1.    Chris ADR dito

      Olá Sergio, certamente seria interessante, ouvi dizer que o GNOME está planejando implementar o Rust dentro de seu pacote de programas, ainda não vi todo o escopo que eles pretendem, mas uma migração está chegando.
      Quanto aos idiomas, pessoalmente ainda estou aprendendo C, quero ser capaz de começar a desenvolver no kernel nos próximos meses e prefiro aprender alguns idiomas em profundidade antes de começar a revisar os novos, mas posso definitivamente procure por algo interessante e faça alguns exemplos no Rust, já que sua documentação parece muito boa por si só.
      Saudações e obrigado por compartilhar 🙂

  8.   David dito

    Explicações muito boas, tanto neste artigo como no anterior. Espero que continuem com esse tema que acho muito interessante.

    1.    Chris ADR dito

      Olá David, Eu também espero continuar escrevendo e especialmente motivando as pessoas a participarem com software livre, existem tantos projetos e necessidades agora que ter algumas mãos extras para desenvolver seria ótimo 🙂
      lembranças

  9.   Mercado dito

    Você poderia fazer um post sobre a máquina de Turing?

    1.    Chris ADR dito

      Hello Mart 🙂 Acho que em algum comentário já tocamos antes, certo? Tenho certeza que consigo juntar algo interessante sobre o assunto 🙂 vamos ver o que pode sair. Saudações e obrigado por ler todos os meus artigos, desde o primeiro dia até hoje sempre vi vocês bastante interessados ​​🙂

  10.   ALLAN LARA dito

    Nossa, muito obrigado que boa explicação.

    lembranças

    1.    Chris ADR dito

      Muito obrigado Allan 🙂 saudações

  11.   Ramón Hidalgo dito

    Eu li seu post anterior! Muito obrigado pela explicação, embora ache que nunca vou terminar de entender a palavra.

    1.    Chris ADR dito

      Olá Ramon, muito obrigado por ler os dois. Se tiver alguma utilidade, a «palavra» é a evolução de um byte, é como os processadores, antes eram 8 bits, depois 16 bits, etc ... isto porque cada vez que necessitamos de mais espaço para processar e melhor velocidade ou potência ... a 'palavra' nasceu porque o espaço do 'byte' ficou curto, e o mesmo com a palavra 'duplo' e 'quádruplo' 🙂 é a evolução natural que nos faz adicionar potência e espaço para continuar a desenvolver 🙂

      lembranças

  12.   anônimo dito

    Neste 2018 aprendo a programar sim ou sim, obrigado

    1.    Chris ADR dito

      Estou feliz por tentar muito !! Felicidades

  13.   Projeto de lei dito

    Muito obrigado, continue assim. Já sei programar mas aguardo seus ensinamentos, que minha programação autodidata é cheia de más práticas.

    1.    Chris ADR dito

      Obrigado Guillermo 🙂 Bem, espero que você encontre coisas interessantes também nos seguintes posts 🙂 Saudações

  14.   Edgar dito

    Uma explicação simples é sempre melhor .. excelente ..
    Eu proporia git ... para programadores é básico quando você quer trabalhar em equipe e colocar seu trabalho em ordem .. as versões ..

    1.    Chris ADR dito

      Muito verdadeiro Edgar, vou tentar postar conteúdo sobre isso, embora seja bastante difícil dizer algo novo porque a documentação do git já é abundante e várias coisas já estão traduzidas em vários idiomas. Vou ver o que posso fazer, saudações e obrigado por compartilhar

  15.   tiriiri dito

    Olá, o número de 0 a 18 446 744 073 709 551 615 corresponde ao valor decimal de 64 bits ou se refere a outro valor? Bem, calculando a potência de 2 ^ 64, o resultado que obtenho é: 18 446 744 073 709 552.

    1.    Chris ADR dito

      Oi Tiririri, Acho que você está tendo um problema de arredondamento, pode tentar usar o comando bc? é uma linguagem de programação desenhada para ser o mais precisa possível, uma vez dentro dela só é necessário fazer 2^64, talvez isso resolva, me diga como foi, saudações

      . O valor real é 18 446 744 073 709 551 616, mas estamos subtraindo 1 porque 0 conta como um valor possível 🙂

      1.    tiriiri dito

        Obrigado, calculei isso com uma calculadora de potência que encontrei na rede (https://es.calcuworld.com/calculadoras-matematicas/potencias/) e foi esse o resultado que me deu.
        E sim, eu já tentei o comando bc, e ele efetivamente me dá o valor que você anotou.

  16.   tiriiri dito

    Olá novamente, a imagem onde você se refere à biblioteca limits.h é muito pequena e não pode ser lida (pelo menos não consegui ler, porque vejo que todo mundo lia, ao que parece), e como não entendo Eu não continuo lendo. Não sei se você poderia mudar isso, espero não ter incomodado você com isso.

    1.    Chris ADR dito

      Você pode tentar a versão móvel, que parece um pouco mais clara, é um tema wordpress: / por outro lado, todos os cabeçalhos C podem ser encontrados em / usr / include /, neste caso você pode escolher ler diretamente se você é mais fácil 🙂 Vou tentar fazer upload de uma imagem maior para ver se ajuda 🙂

      1.    tiriiri dito

        Obrigado, acho que devo ser paciente com isso, heh heh.

  17.   Katekyo dito

    Obrigado pelo artigo, pois agora entendi um pouco melhor as variáveis ​​e a amplitude de representação de uma linguagem e, mas agora acho que devo começar a usar a biblioteca "stdint.h", pois eles a recomendam para usar ao programar em c, pois um aprendeu a velha escola, pois a memória era preciosa e era preciso ter cuidado com o que era usado

    1.    Chris ADR dito

      Não há razão para o Katekyo, certamente é melhor usar a biblioteca padrão, mas posso assegurar-lhe que é melhor saber o que distingue um uint_least8_t de um uint_fast8_t e isso é conseguido conhecendo os tipos de dados primitivos, que era o objetivo da postagem 🙂 Muito obrigado pelo comentário e pela leitura do artigo, saudações

  18.   vencedor dito

    : Ou uma explicação magistral! Eu conhecia parte dos conceitos, mas obtive muitos novos conhecimentos com este post

    1.    Chris ADR dito

      Muito obrigado Victor 🙂 que bom que o artigo pode ajudar, saudações

  19.   Guille dito

    Eu realmente gostei de Python para tornar a programação mais fácil, vi um curso em http://zetcode.com/gui/pyqt4/ Eu amei o tetris final sobre: http://zetcode.com/gui/pyqt4/thetetrisgame/
    Retoquei esse tetris durante um verão para colocar pontos, multiplayer e música, aos poucos, mas muito divertido.

    1.    Chris ADR dito

      Olá Guille, com certeza é muito divertido ver o software em que você está trabalhando crescer aos poucos 🙂 é uma experiência incomparável, ainda mais quando alguém acha útil o que você está desenvolvendo, que é de outro mundo 😀 muito obrigado para compartilhar 🙂

      1.    Guille dito

        O que fiz carreguei (30 MB para a música) para http://guillermo.molleda.com/Tetris9.7z
        Você tem que configurar uma velocidade inicial diferente para cada jogador ou se você reiniciar pontos após um novo jogo, ..., e há três jogadores para minhas duas filhas jogarem comigo. É até viciante.