Lenguajes de programación
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
Rick Cook
Texto
Tool online
Que lenguajes conoces?
1946
18.000 tubos al vacío, muchos cables y 170.000 watts de potencia y una habitacion de 457.2 metros
Raspberry Pi Zero, 2015
Los datos se introducían mediante tarjetas y cintas perforadas, se realizaban en lenguajes maquina.
flatpoll.com/live
¿Por qué se crearon/crean los lenguajes de programación?
Por que tantos?
- Evolucion
- Necesidades especiales*
- Gusto
- Expressive Power?
- Facilidad de uso/Implementacion: curva de aprendizaje*
- Estandarizacion
- Open source*
- Compilador
- Comunidad*
ASM one-to-one
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
Clasificación
Si fueran herramientas
Si fueran religión
- C : Judaism
- Java : Fundamentalist Christianity
- PHP : Cafeteria Christianity
- C++ : Islam
- C# : Mormonism
- Lisp : Zen Buddhism
- Haskell : Taoism
- Erlang : Hinduism
- Perl : Voodoo
- Lua : Wicca
- Ruby : NeoPaganism
- Python : Humanism
- COBOL : Ancient Paganism
- APL : Scientology
- LOLCODE: Pastafarianism
- Visual Basic : Satanism
Declarativos
Funcional: Lisp/Scheme, ML, Haskell
Data-flow: Id, Val
Logicos, constraint-based: Prolog, Spreadsheets
Template-based: XSLT
Imperativos
Von Neuman: C, Ada, Fortran
Scripting: Perl, Python, Fortran
Object-Oriented: Smalltalk, Eiffel, Java, C++
Por que estudia L.P.?
Estudiar L.P.?
- De hierro (carrera)
- Tomar una buena decision
- Entender caracteristicas obscuras*
- Diferentes formas de expresar las cosas*
- Hacer buen uso de Debuggers, Assemblers, Linkers, etc
- Utilizar mejor las nuevas tecnologias.
Compilación vrs Interpretación
src
compiler
target program*
input
output
src
interprete*
input
output
programa intermedio
virtual machine
input
output
src
translator*
Library routines
y Linking
src
compiler
Library routines
código
maquina incompleto
linker
código
maquina
src
compiler
asm lang
Post compilate asembly*
Machine Lang
Ensamblador
Preprocesador C*
src
Preprocessor
src modificado
asm lang
Compiler
C++ Lab bell*
src
Preprocessor
mod src
c code
Compiler
c compiler
asm lang
Como se hacen los compiladores*
Lenguajes de Programacion Intro
By Mijail Paz
Lenguajes de Programacion Intro
- 881