Executando verificação de segurança...
3

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 ?

  1. 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.

  2. 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.

spirium

Carregando publicação patrocinada...
2

O computador é basicamente processador e memória.

https://pt.stackoverflow.com/q/189180/101

Processadores e memória são basicamente feitos de transistores na configuração digital.

https://pt.stackoverflow.com/q/142289/101

Dai a necessidade do famoso codigo binário (1 ou 0).

https://pt.quora.com/O-que-exatamente-%C3%A9-um-bit-Como-uma-sequ%C3%AAncia-de-bits-consegue-virar-uma-imagem-ou-um-v%C3%ADdeo/answer/Antonio-Maniero

Se a passagem de corrente elétrica é permitida normalmente é 1

Se for 0 a corrente elétrica ainda existe, mas em baixíssima voltagem, por isso é considerada 0. O importante é diferenciar a voltagem entre os dois.

Assembly

https://pt.stackoverflow.com/q/178804/101

A definição e algumas outras informações de funcionamento da postagem original pode dar uma ideia um pouco errada. Assembly não é bem o que está ali e não é assim que é feito "conversão" de outros códigos, pelo menos em boa parte dos casos.

sistema operacional

https://pt.quora.com/O-que-%C3%A9-sistema-operacional/answer/Antonio-Maniero

O SO não também não é o que está definido acima. Ele não tem nenhuma ligação com linguagem de programação, muito menos ele cria uma ou tem uma oficial (a não ser em algum casos muito específico, artificial e fora do comum).

O SO é um software, quase como outro qualquer, que ajuda a usar o computador. Ele não é absolutamente necessário, mas tão conveniente que é usado em quase qualquer caso. Ele ajuda controlar outros softwares e coordenar e facilitar o acesso ao hardware, principalmente quando roda vários softwares juntos, e por vários usuários, potencialmente.

Os softwares podem ser escritos em quaisquer linguagens e programação:

  • Binária - bem chata, trabalhosa e difícil em certa medida, a tal ponto que hoje não tem razão para fazê-lo.
  • Assembly - em algum dialeto de acordo com a arquitetura do processador e fornecedor de uma ferramenta montadora, que é trabalhosa e exige cuidar de muito detalhe de processamento e memória, além de acessar componentes externos de forma bem geral, e isso torna um pouco difícil porque é fácil errar no uso, mas não é difícil para aprender, ao contrário da crença popular.
  • Linguagens de alto nível - que é o que a maioria das pessoas usam e permite você escrever códigos de forma parecida com um texto matemático que um humano entene, e precisa ser "convertido" de alguma forma, por interpretação ou transformação para outra linguagem que pode ser Assembly, binária ou uma outra intermediária de baixo nível ou até fazendo transpilação para uma de alto nível.

O sistema operacional fornece funções prontas para acesso ao hardware onde ele controla o acesso. Isso é chamado de API. É comum a linguagem trazer uma biblioteca padrão que entrega algumas funções prontas, inclusive algumas que acessam a API do sistema operacional, e até de outros servidores dele ou de terceiros, como GUI, file system, de rede, banco de dados, web, e diversas outras coisas.

Acho que é isso em linhas gerais, está bem superficial. Não quero esgotar o assunto, eu poderia colocar bem mais links, mas eu acho que as pessoas curiosas vão fazer pesquisas para entender mais a fundo o assunto. Eu mesmo já respondi vários aspectos que podem ter despertado interesse, muito disso foi no Stack Overflow.

Faz sentido para você?

Espero ter ajudado.

Farei algo que muitos pedem para aprender a programar corretamente, gratuitamente. Para saber quando, me segue nas suas plataformas preferidas. Quase não as uso, não terá infindas notificações (links aqui).