Introducción
“Actualmente programar es una carrera entre los ingenieros en software por hacer grandes y mejores programas a prueba de idiotas, contra el universo que se empeña en hacer mas grandes y mejores idiotas. Por ahora, el universo gana por lejos.”
Rick Cook
Los datos se introducían mediante tarjetas y cintas perforadas, se realizaban en lenguajes maquina.
section .text
global _start ;must be declared for linker (ld)
_start: ;tell linker entry point
mov edx,len ;message length
mov ecx,msg ;message to write
mov ebx,1 ;file descriptor (stdout)
mov eax,4 ;system call number (sys_write)
int 0x80 ;call kernel
mov eax,1 ;system call number (sys_exit)
int 0x80 ;call kernel
section .data
msg db 'Hello, world!',0xa ;our dear string
len equ $ - msg ;length of our dear string
Funcional: Lisp/Scheme, ML, Haskell
Data-flow: Id, Val
Logicos, constraint-based: Prolog, Spreadsheets
Template-based: XSLT
Von Neuman: C, Ada, Fortran
Scripting: Perl, Python, Fortran
Object-Oriented: Smalltalk, Eiffel, Java, C++
src
compiler
target program*
input
output
src
interprete*
input
output
programa intermedio
virtual machine
input
output
src
translator*
src
compiler
Library routines
código
maquina incompleto
linker
código
maquina
src
compiler
asm lang
Machine Lang
Ensamblador
src
Preprocessor
src modificado
asm lang
Compiler
src
Preprocessor
mod src
c code
Compiler
c compiler
asm lang