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*

Made with Slides.com