Essa parte do curso é TODA sobre
softwares, vou tentar colocar tudo em um post só, mas não prometo nada, pois esse curso é bem louco.
Softwares são programas de computador. São um conjunto de instruções que vão ser usadas pelo PC pra executar um objetivo. Um conjunto de funções executadas na programação de um computador, que a CPU roda uma por uma. Sempre que vemos um PC ligado, estamos vendo um software sendo executado.
Instruções são mandadas pro PC por meio dos softwares, tem infinitos programas com infinitas finalidades. Os softwares são executados pelo processador (CPU). Não só o PC, na verdade, qualquer dispositivo eletrônico pode ter softwares, até geladeiras. Máquinas são burras, os softwares dão sentido ao PC, pois o ser humano está transmitindo sua inteligência pra máquina.
Uma boa analogia pra softwares é: um chef iniciante não sabe criar pratos, ele pode receber uma lista de instruções e ingredientes básicos, que ele vai seguir até ter um prato no final. O chef é o PC, as instruções são dados de entrada dado pelo programador e o prato é o objetivo final
Cada família de PCs tem um conjunto de instruções binárias (0 e 1). Como é difícil pro ser humano entender essa língua binária, foram criadas línguas de programação pro ser humano escrever a língua de uma forma mais fácil.
3 tipos de software
Prova de como o curso que eu tô fazendo é meio louco. Eu tava estudando HARDWARE e do nada teve uma informação de software muito pertinente que eu adorei e achei bom de anotar. Três terminologias de software.
- Software de sistema: sistemas operacionais.
- Software de aplicação: programas de computador
- Software de desenvolvimento: compiladores e editores de código
Representação e armazenamento das instruções em hardware
O software dá as instruções, né? Bem, vamos agora ver como o HARDWARE processa elas.
A CPU que roda as informações. A CPU roda trilhões de informações por segundo.
As instruções ficam armazenadas numa memória volátil (se você desligar o PC ela some), a memória RAM. Através do barramento (um circuito que conecta a CPU até a memória) a CPU busca cada instrução e executa uma por uma da forma mais rápida que consegue.
As instruções são super simples, tipo:
- Adicione 2 números.
- Compare e veja o maior.
Feitas só com 1 e 0 (binário) esse conjunto de instruções são instruções de baixo nível, ou código de máquina. O código de máquina tá conectado no hardware e não pode ser mudado a vontade. Cada família de CPUs compatíveis tem seu próprio código de máquina e não é compatível com o código de máquina de outras máquinas.
Os códigos que escrevemos são instruções de alto nível, PCs não entendem elas e o software traduz ela pras instruções de baixo nível pro PC fazer.
Se tiver um erro no seu código, você vai no código fonte, conserta e depois compila o código de novo pro PC compilar uma versão do código com os ajustes realizados no código fonte.
Softwares de código aberto e fechado
SOFTWARES DE CÓDIGO ABERTO: Open source! Tô ligado no que é. O software é disponibilizado e o código fonte também, pra qualquer um usar e editar. Você pode editar o código livremente como quiser. Tem várias licenças e termos, mas, na maioria das vezes, eles exigem que você compartilhe com a comunidade suas alterações.
SOFTWARES DE CÓDIGO FECHADO: Só o fornecedor tem o código e pode editar. Normalmente de cunho comercial.
O que é um programa
Na foto acima, a CPT tá executando várias instruções. Um programa é basicamente uma enorme sequência de instruções assim. Tudo no PC só ocorre porque a CPU tá rodando trilhões dessas instruções SUPER rápido! Essas instruções são totalmente triviais e simples, uma analogia pra elas é: cada uma dessas instruções é um grão de areia, inútil e pequeno. Mas, se você juntar o bastante, pode fazer estruturas complexas com ela.
Pra rodar esses códigos, a CPU usa um bagulho chamado ciclo busca-execução ou fetch execute cycle. Ela busca uma instrução, executa, vai buscar outra, executa, e assim por diante sequencialmente. Quando falamos que uma CPU opera a 4 GHz (gigahertz) ou 4 bilhões de operações por segundo, estamos falando dessas instruções.
Tem várias dessas instruções, mas abaixo, vamos falar de dois tipos dessas instruções:
- INSTRUÇÃO PRA ALTERAR A ORDEM DE EXECUÇÃO DE INSTRUÇÕES: Normalmente a CPU só desce a lista e faz a execução na ordem, mas, se usarmos goto podemos mandar ela voltar pra instruções passadas. É assim que loops são feitos na CPU! goto é uma instrução na linguagem que literalmente significa "vá para". Vá para a linha indicada e execute dela.
- INSTRUÇÃO QUE TESTA ALGUMA CONDIÇÃO: Declaração if. Se uma condição for verdadeira, ele faz algo, se for falsa, faz outro algo. Se for verdadeiro, ele manda o computador pular pra uma parte especifica do código, se for falsa, o PC continua normalmente pra próxima parte.
Como o programa vai parar na memória RAM?
Ao serem instalados, programas são colocados em um dispositivo de armazenamento persistente como HD, SSD ou pendrive. A CPU lê os dados do dispositivo de armazenamento e grava eles na memória RAM, isso se chama iniciar um programa.
Um programa é um arquivo com muitos bytes. Normalmente, esses bytes são apenas as instruções que compõem o programa, além de alguns ícones e fotos.
- Os bytes (instruções) vão do dispositivo de armazenamento pra memória RAM.
- A CPU busca pelas informações com o ciclo busca-execução.
- A CPU roda e executa as instruções.