Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Por qué no debemos aprender
  “Lo que las empresas piden”
      Welcome to siglo XXI




       Svet Ivantchev, eFaber
   ...
Plan

• Los informáticos, el futuro y nuestra
  preparación
• Tecnologías interesantes
• El marcado de trabajo y Lifelong ...
¡Decidido!
Primero voy e Uni EE
Informáticos

• Ingeniería?
• Arte? Artesanía?
• O son albañiles (aka picateclas)?
• Y si fuera poco ... ¡hay intrusos!
• ...
“Preparar para el
        futuro”
• 1992 (DOS, Clipper, HTM-qué? ...)
• 1996 (Windows 95, HTML, PH-qué?)
• 1999 (Java)
• 2...
Así que ...


• Todo lo que podemos estudiar no vale?
• Líderes vs seguidores
(+ (* 3 (+ (* 2 4) (+ 3 5))) (+ (- 10 7) 6))
¿De quién depende?
¿Qué hacer?


Innovar (con perdón)
Innovación
La aviación civil y el DC-3




•   Hélice de inclinación variable
•   Tren de aterizaje retráctil
•   Tipo de ...
La fotografía




1521    1609           1826
EC2
Ideas

1. Rendimiento “humano”
2. Pensar “al revés”, RPN
3. Erlang y variables que no cambian
4. Paralelización, CUDA
1) Rendimiento “humano”
          La motivación de los agentes: € y :-)

                      1990              2009     ...
Ruby


Python, Perl, PHP...
Ejemplo: Ruby OSA
Ej: Ruby OSA




it = OSA.app('iTunes')
OSA.app('iChat').status_message = it.current_track.name
Ej: detalles



• 20.minutes.ago
• 1.gigabyte
• 15.times { ... }
2. HP y RPN
RPN
           1+2=3
    1 + 2 * 5 = 11 ← 1+(2*5)
    1 + 2 * 5 = 15 ← (1+2)*5



    1                          3
1   2  ...
RPN
            (42 + 16) * (87 - 31)
            ---------------------------------
                          12


• ((42 ...
Quicksort
                      42 16 23 8 15 4
                      4 8 15 16 23 42


function quicksort(array)
     var...
Ref: http://es.wikipedia.org/wiki/Quicksort
void quicksort(int* izq, int* der)
/*Se llama con: quicksort(&vector[0],&vector[n-1]);*/
{
! if(der<izq) return;
! int piv...
Erlang

qsort([]) -> [];

qsort([Pivot|Rest]) ->
  qsort([ X || X <- Rest, X < Pivot])
  ++ [Pivot] ++
  qsort([ Y || Y <-...
Erlang 101
Erlang (BEAM) emulator version 5.6.5...
Eshell V5.6.5 (abort with ^G)

1> 1+6.
7
2> X=3.
3
3> Y=12.
12
4> {P, Q...
Erlang (BEAM) emulator version 5.6.5 [source] [smp:2] ...
Eshell V5.6.5 (abort with ^G)

1> L = [ 7, 65, 5, 9, 11 ].
[7,65...
tienda.erl:
  -module(tienda).
  -export([precio/1]).

 precio(manzanas)    ->   2.90;
 precio(fresas)      ->   3.50;
 pr...
Erlang (BEAM) emulator version 5.6.5 [source] [smp:2]
Eshell V5.6.5 (abort with ^G)

1> c(tienda1).
{ok,tienda1}

2> c(tie...
Permutaciones
123    ->    123    132    213   231    312    321

1234 ->

["1234","1243","1324","1342","1423","1432","213...
p.erl:
  -module(p).
  -export([perms/1]).

  perms([]) -> [[]];
  perms(L) -> [[H|T] || H <- L, T <- perms(L--[H])].




...
“Yo lo que quiero es trabajo”
http://blogs.oreilly.com/iphone/2008/11/turning-ideas-into-application.html
Mike Vanier:
         LFM and FLSP


• languages designed for smart people
• languages designed for the masses
  http://ww...
Java

• "We wanted to build a system that could
  be programmed easily without a lot of
  esoteric training and which leve...
Craig McClanahan                 James Duncan
                                        Davidson




   servlet 2.2, 2.3 y J...
¿Así que aprendo Ruby,
  y Erlang y ya esta?
Q &A
Lo que las empresas piden
Lo que las empresas piden
Lo que las empresas piden
Lo que las empresas piden
Lo que las empresas piden
Lo que las empresas piden
Lo que las empresas piden
Lo que las empresas piden
Lo que las empresas piden
Lo que las empresas piden
Lo que las empresas piden
Lo que las empresas piden
Lo que las empresas piden
Upcoming SlideShare
Loading in …5
×

Lo que las empresas piden

521 views

Published on

Published in: Education
  • Be the first to comment

  • Be the first to like this

Lo que las empresas piden

  1. 1. Por qué no debemos aprender “Lo que las empresas piden” Welcome to siglo XXI Svet Ivantchev, eFaber svet@efaber.net 1 de abril de 2009, Uni Encounter V
  2. 2. Plan • Los informáticos, el futuro y nuestra preparación • Tecnologías interesantes • El marcado de trabajo y Lifelong Learning
  3. 3. ¡Decidido! Primero voy e Uni EE
  4. 4. Informáticos • Ingeniería? • Arte? Artesanía? • O son albañiles (aka picateclas)? • Y si fuera poco ... ¡hay intrusos! • En realidad ... hay de todo
  5. 5. “Preparar para el futuro” • 1992 (DOS, Clipper, HTM-qué? ...) • 1996 (Windows 95, HTML, PH-qué?) • 1999 (Java) • 2004 (PHP, J2EE, J2ME) • 2007 (PHP, mySQL, Ruby on-qué?)
  6. 6. Así que ... • Todo lo que podemos estudiar no vale? • Líderes vs seguidores
  7. 7. (+ (* 3 (+ (* 2 4) (+ 3 5))) (+ (- 10 7) 6))
  8. 8. ¿De quién depende?
  9. 9. ¿Qué hacer? Innovar (con perdón)
  10. 10. Innovación La aviación civil y el DC-3 • Hélice de inclinación variable • Tren de aterizaje retráctil • Tipo de construcción monocoque • Motor radial enfriado por aire • Alerones
  11. 11. La fotografía 1521 1609 1826
  12. 12. EC2
  13. 13. Ideas 1. Rendimiento “humano” 2. Pensar “al revés”, RPN 3. Erlang y variables que no cambian 4. Paralelización, CUDA
  14. 14. 1) Rendimiento “humano” La motivación de los agentes: € y :-) 1990 2009 $$$ CPU 80286, 6 MHz Xeon, 3 GHz 1/5.000 RAM 128 Kb 4 Gb 1/40.000 Disco 360 Kb 1T 1/3.000.000 yo / hora 2€ 50 € 25 x Un tarea que lleva: 10 h de programación y 10 h de cálculo? Una herramienta que me hace 10x mas productivo pero es 20x mas lenta?
  15. 15. Ruby Python, Perl, PHP...
  16. 16. Ejemplo: Ruby OSA
  17. 17. Ej: Ruby OSA it = OSA.app('iTunes') OSA.app('iChat').status_message = it.current_track.name
  18. 18. Ej: detalles • 20.minutes.ago • 1.gigabyte • 15.times { ... }
  19. 19. 2. HP y RPN
  20. 20. RPN 1+2=3 1 + 2 * 5 = 11 ← 1+(2*5) 1 + 2 * 5 = 15 ← (1+2)*5 1 3 1 2 3 5 15 1 2 + 5 *
  21. 21. RPN (42 + 16) * (87 - 31) --------------------------------- 12 • ((42 + 16) * (87 - 31)) / 12 = • 42 ↵ 16 + 87 ↵ 31 - * 12 /
  22. 22. Quicksort 42 16 23 8 15 4 4 8 15 16 23 42 function quicksort(array) var list less, greater if length(array) ≤ 1 return array select and remove a pivot value pivot from array for each x in array if x ≤ pivot then append x to less else append x to greater return concatenate(quicksort(less), pivot, quicksort(greater))
  23. 23. Ref: http://es.wikipedia.org/wiki/Quicksort
  24. 24. void quicksort(int* izq, int* der) /*Se llama con: quicksort(&vector[0],&vector[n-1]);*/ { ! if(der<izq) return; ! int pivot=*izq; ! int* ult=der; ! int* pri=izq; ! while(izq<der) ! { ! ! while(*izq<=pivot && izq<der+1) izq++; ! ! while(*der>pivot && der>izq-1) der--; ! ! if(izq<der) swap(izq,der); ! } ! swap(pri,der); ! quicksort(pri,der-1); ! quicksort(der+1,ult); } void swap(int* a, int* b) { ! int temp=*a; ! *a=*b; ! *b=temp; }
  25. 25. Erlang qsort([]) -> []; qsort([Pivot|Rest]) -> qsort([ X || X <- Rest, X < Pivot]) ++ [Pivot] ++ qsort([ Y || Y <- Rest, Y >= Pivot]).
  26. 26. Erlang 101 Erlang (BEAM) emulator version 5.6.5... Eshell V5.6.5 (abort with ^G) 1> 1+6. 7 2> X=3. 3 3> Y=12. 12 4> {P, Q} = {11, 12}. {11,12} 5> P. 11 6> Y=Q. 12 7> Y=13. ** exception error: no match of right hand side value 13
  27. 27. Erlang (BEAM) emulator version 5.6.5 [source] [smp:2] ... Eshell V5.6.5 (abort with ^G) 1> L = [ 7, 65, 5, 9, 11 ]. [7,65,5,9,11] 2> [ C | R ] = L. [7,65,5,9,11] 3> C. 7 4> R. [65,5,9,11]
  28. 28. tienda.erl: -module(tienda). -export([precio/1]). precio(manzanas) -> 2.90; precio(fresas) -> 3.50; precio(leche) -> 1.50; precio(ordenador) -> 199. tienda1.erl: -module(tienda1). -export([total/1]). total([{Que, N}|T]) -> tienda:precio(Que) * N + total(T); total([]) -> 0.
  29. 29. Erlang (BEAM) emulator version 5.6.5 [source] [smp:2] Eshell V5.6.5 (abort with ^G) 1> c(tienda1). {ok,tienda1} 2> c(tienda1). {ok,tienda1} 3> L=[{ordenador,1},{manzanas,2},{fresas,3},{leche,1}]. [{ordenador,1},{manzanas,2},{fresas,3},{leche,1}] 4> tienda1:total(L). 216.8
  30. 30. Permutaciones 123 -> 123 132 213 231 312 321 1234 -> ["1234","1243","1324","1342","1423","1432","2134","2143", "2314","2341","2413","2431","3124","3142","3214","3241", "3412","3421","4123","4132","4213","4231","4312","4321"] Para ver todas las permutaciones de X123: 1- calcular las de de 123: 123, 132, 213, 231, 312, 321 2- Intercalar X: X123, 1X23, 12X3, 123X, ..., ...
  31. 31. p.erl: -module(p). -export([perms/1]). perms([]) -> [[]]; perms(L) -> [[H|T] || H <- L, T <- perms(L--[H])]. Erlang (BEAM) emulator version 5.6.5 [source] [smp:2] ... Eshell V5.6.5 (abort with ^G) 1> c(p). {ok,p} 2> p:perms("12"). ["12","21"] 3> p:perms("123"). ["123","132","213","231","312","321"]
  32. 32. “Yo lo que quiero es trabajo”
  33. 33. http://blogs.oreilly.com/iphone/2008/11/turning-ideas-into-application.html
  34. 34. Mike Vanier: LFM and FLSP • languages designed for smart people • languages designed for the masses http://www.paulgraham.com/vanlfsp.html
  35. 35. Java • "We wanted to build a system that could be programmed easily without a lot of esoteric training and which leveraged today's standard practice." http://java.sun.com/docs/overviews/java/java-overview-1.html
  36. 36. Craig McClanahan James Duncan Davidson servlet 2.2, 2.3 y JSP 1.1, 1.2 specifications, JavaServer Faces 1.0 Tomcat, Ant
  37. 37. ¿Así que aprendo Ruby, y Erlang y ya esta?
  38. 38. Q &A

×