A base da computação !
O computador é basicamente processador e memória.
Processadores e memória são basicamente feitos de transistores na configuração digital.
Transistor digital funciona ora bloqueando a passagem de corrente elétrica ora permitindo a passagem.
Dai a necessidade do famoso codigo binário (1 ou 0).
Se a passagem de corrente elétrica é permitida normalmente é 1
Se não é então é 0.
A memória, que pode ser feita de outras coisa além do transistor, armazena os dados.
A ideia independente do material usado é ter 2 estados distintos representando o 1 e 0.
Tudo que entra dentro de um computador vira um monte de 1 e 0.
O processador é feito para executar instruções definidas pelo fabricante e que são armazenadas em sua mémoria interna. Para cada instrução o fabricante determina um codigo binário exclusivo para ela. Então tudo que o processador pode fazer é feito com essas instruções.
Então se tiver uma instrução que some 2 valores e você quiser somar 2 valores, terá que armazenar o codigo binário dessa instrução na memória do processador.
Assembly
Para programar o processador, normalmente terá que usar um programador
(algo parecido com uma fonte de notebook que conecta no pc e na placa onde o processador está) específico do fabricante e um editor de codigo chamado de IDE.
Nesse editor, em vez de digitar o codigo binário de cada instrução é usado siglas que representam cada codigo binário de cada instrução, essas siglas formam o assembly que é a linguagem de programação que está o mais perto possível do que realmente existe.
Programar em assembly é muito difícil e requer conhecimento do circuito onde o processador está e dos componentes que estão conectados a ele. Por exemplo, para acender os pixel de um display em azul será necessário saber quais pinos do processador estão conectados nos pinos do display e quais são os codigos binários que devem ser enviados para ligar o display, acender os pixels, o binário da cor azul, a frequência de operação do display, etc.
Então o que pode ser feito para facilitar a programação ?
-
Em vez do assembly, armazenado na memória do processador, executar um aplicativo
ele executa uma outra linguagem de programação fictícia armazenada em uma memória fora do processador. Nesse caso para cada instrução dessa linguagem fictícia será necessário funções em assembly que vão fazer o que as intruções fictícias dizem que o computador faz.
Dessa forma você pode simplesmente inventar uma instrução dessa linguagem
que diz que após a sua execução toda a tela do pc fica em rosa, porém alguém que consiga programar em assembly terá que fazer isso acontecer de fato. -
A mesma coisa de cima, inventar uma linguagem fictícia com instruções fictícias
desde que se tenha funções em assembly que façam acontecer. Porém ao invés de estar em uma memória externa esse programa é convertido em assembly e enviado para a memória do processador.
Essa tarefa de criar uma linguagem de programação fictícia para facilitar o desenvolvimento de aplicativos e o assembly que dará suporte a essa linguagem
normalmente é trabalho do sistema operacional.
Então o sistema operacional tem bastante controle sobre o computador além de criar uma linguagem de programação.
Logo o SO do dispositivo dita as regras sobre o que pode fazer, quando fazer e como fazer.
Ainda mais fácil !
Em vez de um programa feito com a linguagem oficial do SO executar um aplicativo, ele pode executar uma outra linguagem de programação com instruções mais prontas, facilitando ainda mais o desenvolvimento de aplicativos.
Bom é isso !
Fiquem a vontade para me corigir se falei alguma besteira, mas acredito que o grosso do que eu falei é isso mesmo.
RESUMO
Você tem um circuito com processadores e memória que funcionam em 2 estados distintos (1 e 0)
necessitando que todos os dados que possam ser processados e armazenados estejam em binário (por causa do transistor).
A programaçao em binário ou até mesmo em assembly é estremamente difícil além de exigir informações muito técnicas sobre os componentes e coisas conectadas no circuito.
Um sistema operacional que consegue criar um assembly que
executa interações do usuário e até mesmo uma outra linguagem de programação muito mais fácil
Controla todo o computador ditando as regras, que nós tentamos entender para se tornar um programador melhor.
Aqui uma aplicação que fiz para colecionar explicações sobre palavras estranhas no mundo da educação.