From 6f44f3d103dd75c237b3446393981f36f6734194 Mon Sep 17 00:00:00 2001 From: Blau Araujo Date: Thu, 13 Mar 2025 08:49:06 -0300 Subject: [PATCH] =?UTF-8?q?Conte=C3=BAdo=20da=20aula=201=20atualizado?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- aulas/01-historia/README.org | 88 +++++++++++++++++++++++++++++++++++- 1 file changed, 87 insertions(+), 1 deletion(-) diff --git a/aulas/01-historia/README.org b/aulas/01-historia/README.org index 7832bc9..7b79879 100644 --- a/aulas/01-historia/README.org +++ b/aulas/01-historia/README.org @@ -8,7 +8,7 @@ [[https://youtu.be/wqJQL5W9FIw][Vídeo desta aula]] -** Principais momentos... +** Resumo do vídeo... - Ken Thompson cria a linguagem B (1969) para ter uma linguagem de alto nível para reescrever o UNIX. @@ -26,6 +26,92 @@ - Os racunhos de 1987 (C87) são utilizados para escrever a segunda edição do livro, com o nome de /The ANSI C Programming Language/. +** Conceitos abordados na aula... + +*** O que é um programa de computador? + +Um programa pode ser entendido como uma forma de manipular dados através de +instruções para a realização de alguma tarefa. + +*** O que é linguagem de máquina? + +A linguagem de máquina (ou /código de máquina/) é o conjunto de códigos numéricos +binários (numeração de base 2) que, transformados em sinais elétricos, irão +acionar as operações implementadas na CPU do computador (/OpCodes/). + +*** O que é uma linguagem de programação? + +Uma linguagem de programação é um conjunto de especificações e regras que +definem uma forma de escrever programas sem recorrer à escrita direta em /código +de máquina/. + +*** O que são linguagens de baixo e alto nível? + +Toda linguagem de programação oferece algum grau de /abstração/ (redução de +complexidades) em relação à escrita do /código de máquina/ (que é a única +linguagem que a CPU do computador é capaz de interpretar). + +A linguagem Assembly, uma linguagem de baixo nível, oferece basicamente um +conjunto de /mnemônicos/ para facilitar a escrita de instruções da CPU (/OpCodes/) e +algumas macros e pseudo-instruções para orientar a /montagem/ do arquivo binário +do programa. + +Exemplo de programa em Assembly (NASM x86_64) que não faz nada e sai com estado +de término =42=. + +#+begin_src asm +section .text + global _start ; Ponto de entrada do programa + +_start: + ; Convenção da chamada de sistema 'exit' + mov rax, 60 ; Passar o número da chamada de sistema (60 = exit) para RAX. + mov rdi, 42 ; Passar o valor do estado de término (42) para RDI + syscall ; Chamar o kernel +#+end_src + +A linguagem C, por sua vez, abstrai procedimentos completos (rotinas) na forma +de palavras-chave, funções da biblioteca padrão, estruturas e construções de +linguagem, o que faz dela uma linguagem de alto nível. + +Exemplo de programa em C que não faz nada e sai com estado de término =42=. + +#+begin_src c +// Ponto de entrada do programa (função 'main')... +int main(void) { + return 42; // Terminar a função retornando o valor 42... +} +#+end_src + +*** O que é compilação? + +Compilação é o processo de traduzir um código escrito em uma linguagem de alto +nível (por exemplo, C) para uma linguagem de montagem (por exemplo, Assembly). + +*** O que são implementações? + +Toda linguagem de programação precisa ser implementada conforme suas +especificações. + +Linguagens compiladas, por exemplo, são implementadas através dos seus +/compiladores/, enquanto as linguagens interpretadas são implementadas nos seus +/interpretadores/. + +No caso da linguagem C, as especificações são implementadas na forma de um +/compilador/ (=cc=, nos Unix, e =gcc=, no Projeto GNU) e de uma /biblioteca padrão/ +(=libc=, nos Unix, e =glibc=, no Projeto GNU). + +*** O que são arquiteturas orientadas a palavras? + +São sistemas computacionais que utilizam quantidades arbitrárias de bits como +unidade de tamanho de dados. Exemplo: o PDP-7 utilizava palavras de 18 bits. + +*** O que são arquiteturas orientadas a bytes? + +São sistemas computacionais que utilizam múltiplos de bytes (8 bits) para +definir tamanhos de dados. Exemplo: a arquitetura x86_64 utiliza palavras de +2 bytes, o que corresponde ao tipo =short int= na linguagem C. + ** Características da linguagem C... - Linguagem compilada