Conteúdo da aula 1 atualizado

This commit is contained in:
Blau Araujo 2025-03-13 08:49:06 -03:00
parent 2fc5d363b9
commit 6f44f3d103

View file

@ -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