SlideShare ist ein Scribd-Unternehmen logo
1 von 97
Downloaden Sie, um offline zu lesen
Por qué Cervantes
   programaba mejor que tú

Javier Acero
 @jacegu
 http://javieracero.com
1999
Code
Quality!!
Code       Business
Quality!!    Value!!
2000
2001
2011
The Land That Scrum Forgot
               Robert C. Martin
                    NDC 2011
Por qué Cervantes
            Cervantes
programaba mejor que tú
Por qué Cervantes
            Cervantes
programaba mejor que tú
@author
escritura
“Comunicar a alguien por escrito algo”
lenguaje
“Conjunto de reglas y signos que
permiten la comunicación con un
           ordenador”
011000100110010101110011
011000010010000001101101
011010010010000001100010
011100100110100101101100
011011000110000101101110
011101000110010100100000
011000110111010101101100
011011110010000001101101
011001010111010011000011
101000010110110001101001
0110001101101111
011000100110010101110011
          011000010010000001101101
          011010010010000001100010
          011100100110100101101100
          011011000110000101101110
          011101000110010100100000
          011000110111010101101100
          011011110010000001101101
          011001010111010011000011
          101000010110110001101001
          0110001101101111




besa mi brillante culo metálico
evolución de los
   lenguajes
evolución de los
   lenguajes
evolución de los
      lenguajes



potencia
evolución de los
      lenguajes



potencia     legibilidad
segment .text
  global two_complement
two_complement:
  enter 0,0
  pusha
  mov eax, [ebp+12]
  neg eax
  mov [ebp+8], eax
  popa
  leave
  ret
private void updateComputer(Node n,
                             Map<String,Computer> byNameMap,
                             Set<Computer> used) {
   Computer c;
   c = byNameMap.get(n.getNodeName());
    if (c!=null) {
      c.setNode(n);
    } else {
      if(n.getNumExecutors()>0) {
         computers.put(n,c=n.createComputer());
         if (!n.holdOffLaunchUntilSave && AUTOMATIC_SLAVE_LAUNCH) {
            RetentionStrategy retentionStrategy =
               c.getRetentionStrategy();
            if (retentionStrategy != null) {
               retentionStrategy.start(c);
           } else {
               c.connect(true);
           }
         }
      }
   }
   used.add(c);
}
100% humanos
¿realmente
programamos para las
     máquinas?
W.T.F.
“aquel que agrada a la
 persona que lo lee”
wehrwirtschaftsführer
rindfleischetikettierun
gsüberwachungsaufgab
 enübertragungsgesetz
subjetiva
principios
Information hiding     Open Closed Principle
       Uniform Access          Duplication
   KISS      Single Responsibility Principle
  Simple Design
                    GRASP         Expresiveness
   Law of Demeter     Auto-documentation
Interface Segregation Principle   Design Patterns
      YAGNI     Liskov Substitution Principle
                         Naming
Dependencies DRY                     Simmetry
                      Least Surprise
 Dependency Inversion Principle     Cohesion
“aquel que cumple
todos los principios”
W.T.F.
private void updateComputer(Node n,
                             Map<String,Computer> byNameMap,
                             Set<Computer> used) {
   Computer c;
   c = byNameMap.get(n.getNodeName());
    if (c!=null) {
      c.setNode(n);
    } else {
      if(n.getNumExecutors()>0) {
         computers.put(n,c=n.createComputer());
         if (!n.holdOffLaunchUntilSave && AUTOMATIC_SLAVE_LAUNCH) {
            RetentionStrategy retentionStrategy =
               c.getRetentionStrategy();
            if (retentionStrategy != null) {
               retentionStrategy.start(c);
           } else {
               c.connect(true);
           }
         }
      }
   }
   used.add(c);
}
good code
You know you are working on good code when
each routine you read turns out to be pretty
much what you expected.
You can call it beautiful when the code also
makes it look like the language was made for
the problem.
Good code is simple and direct. Good code reads
like well-written prose.
Good code never obscures the designer’s intent
but rather is full of crisp abstractions and
straightforward lines of control.
legibilidad
la mejor forma de escribir
buen código es centrarse en la
         legibilidad*


*creencia personal
defectos
defectos
defectos

1. Acoplamiento
defectos

1. Acoplamiento
2. Duplicación
defectos

1. Acoplamiento
2. Duplicación
3. Ausencia de encapsulación
defectos

1. Acoplamiento
2. Duplicación
3. Ausencia de encapsulación
4. Complejidad innecesaria
for (final ConfiguracionCanal c : mensaje.
  getSolicitud().
  getServicio().
  getConfiguracionesCanal()) {
    if (mensaje.getCanal().equals(c.
        getCanal())) {
      configuracion = c;
    }
}
mensaje.configuracionDeCanal()
correspondiente a
Solicitud                         Mensaje


  de



                 a través de
Servicio                          Canal



            ConfiguracionCanal
subliminal slide

getters & setters
       are
       evil
las 4 cualidades del
   diseño simple
las 4 cualidades del
   diseño simple
1. Pasa todos los tests
2. Minimiza la duplicación
3. Maximiza la claridad
4. Tiene los mínimos elementos
oh wait...
¿y los tests?
def d(b)eval"def #{b}
end"end;d't(m,&a)puts"e[0;3#{a.call
? "2":"1"}m#{m}
e[0m"';d'a(e)e';d'ae(e,d)e==d';d'ai(
e,a)a.include? e'
def d(b)
  eval"def #{b} end"
end

d 't(m,&a)puts"e[0;3#{a.call ?
"2":"1"}m#{m}e[0m"'

d 'a(e)e'

d 'ae(e,d)e==d'

d 'ai(e,a)a.include? e'
t '(red):   testing that assert
equals fails' do
  ae(1,2)
end

t '(green): testing that assert
equals works' do
  ae(2,2)
end
twittest
the ruby test framework
  that fits in a tweet!!
las 4 cualidades del
   diseño simple
las 4 cualidades del
   diseño simple
1. Pasa todos los tests
las 4 cualidades del
   diseño simple
1. Pasa todos los tests
2. Minimiza la duplicación
las 4 cualidades del
   diseño simple
1. Pasa todos los tests
2. Minimiza la duplicación
3. Maximiza la claridad
las 4 cualidades del
   diseño simple
1. Pasa todos los tests
2. Minimiza la duplicación
3. Maximiza la claridad
4. Tiene los mínimos elementos
todo repercute en la
     legibilidad
def d(b)
  eval"def #{b} end"
end

d 't(m,&a)puts"e[0;3#{a.call ?
"2":"1"}m#{m}e[0m"'

d 'a(e)e'

d 'ae(e,d)e==d'

d 'ai(e,a)a.include? e'
def d(b)
  eval"def #{b} end"
end

d 't(m,&a)puts"e[0;3#{a.call ?
"2":"1"}m#{m}e[0m"'

d 'a(e)e'

d 'ae(e,d)e==d'

d 'ai(e,a)a.include? e'
def d(b)
  eval"def #{b} end"
end

d 't(m,&a)puts"e[0;3#{a.call ?
"2":"1"}m#{m}e[0m"'

d 'a(e)e'

d 'ae(e,d)e==d'

d 'ai(e,a)a.include? e'
d 'a(e)e'

d 'ae(e,d)e==d'

d 'ai(e,a)a.include? e'
def assert(value)
  return value == true
end

def assert_equal(value, expected)
  return value == expected
end

def assert_includes(value, container)
  return container.include? value
end
def d(b)
  eval"def #{b} end"
end


d 't(m,&a)puts"e[0;3#{a.call ?
"2":"1"}m#{m}e[0m"'


d 'a(e)e'

d 'ae(e,d)e==d'

d 'ai(e,a)a.include? e'
d 't(m,&a)puts"e[0;3#{a.call ?
"2":"1"}m#{m}e[0m"'
def test(message, &assert)
  puts "e[0;3#{assert.call ?
"2":"1"}m#{message}e[0m"
end
¿legible?
legibilidad sí,
    pero...
  ¿cuánta?
si el test pasa
  imprimir en verde el nombre del test
sino
  imprimir en rojo el nombre del test
def test(test_name, &test)

 if test.passes?
   print_in GREEN, test_name
 else
   print_in   RED, test_name
 end

end
el buen código es...
“aquel que hace obvio
 lo que está pasando”
Good code always looks like it was written
by someone who cares.
Good code is code left by someone who
cares deeply about the craft.
muchas gracias
credits
Kent Beck: http://www.flickr.com/photos/26420411@N02/3062930943/
Opposing Armies: http://www.flickr.com/photos/ahounslea/4873239128
Ward Cunningham: http://www.flickr.com/photos/joshb/2247556208/
Uncle Bob: http://www.flickr.com/photos/koss/3250213001/
Balance: http://www.flickr.com/photos/classblog/5136926303/
Futurama pictures and WTFs/minute draws were found on google
searches.
Hand drawings of Grady Booch, Ward Cunningham and Michael
Feathers were taken from the Clean Code ebook.

Weitere ähnliche Inhalte

Was ist angesagt?

Paper de Criptografía sobre Ataque a la clave por la paradoja del cumpleaños ...
Paper de Criptografía sobre Ataque a la clave por la paradoja del cumpleaños ...Paper de Criptografía sobre Ataque a la clave por la paradoja del cumpleaños ...
Paper de Criptografía sobre Ataque a la clave por la paradoja del cumpleaños ...Ameth1991
 
Ejemplos de algoritmos en C básicos (aprendiendo a programar)
Ejemplos de algoritmos en C básicos (aprendiendo a programar)Ejemplos de algoritmos en C básicos (aprendiendo a programar)
Ejemplos de algoritmos en C básicos (aprendiendo a programar)Kiim Kerrigan
 
Unidad2 programas while , do while y for
Unidad2 programas while , do while  y forUnidad2 programas while , do while  y for
Unidad2 programas while , do while y forMiguel Angel Peña
 
Estructuras de Lenguaje .NET
Estructuras de Lenguaje .NETEstructuras de Lenguaje .NET
Estructuras de Lenguaje .NETbrobelo
 
Codificaciones c++2011
Codificaciones c++2011Codificaciones c++2011
Codificaciones c++2011mario_10
 
Tema 2 - Programación básica en C (III)
Tema 2  - Programación básica en C (III)Tema 2  - Programación básica en C (III)
Tema 2 - Programación básica en C (III)Pablo Haya
 
MéTodos De EncriptacióN
MéTodos De EncriptacióNMéTodos De EncriptacióN
MéTodos De EncriptacióNDavid Puga
 
52 ejercicios resueltos en pseudocodigo
52 ejercicios resueltos en pseudocodigo52 ejercicios resueltos en pseudocodigo
52 ejercicios resueltos en pseudocodigoVictor Morales
 
Codificaciones c++2011
Codificaciones c++2011Codificaciones c++2011
Codificaciones c++2011mario_10
 
Codificaciones c++
Codificaciones c++Codificaciones c++
Codificaciones c++mario_10
 
08 strings o cadenas
08 strings o cadenas08 strings o cadenas
08 strings o cadenashorusblom
 
Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.jubacalo
 
Programa con for.if word
Programa con for.if wordPrograma con for.if word
Programa con for.if wordJhonnyGR1
 

Was ist angesagt? (17)

Algoritmos en c++
Algoritmos en c++Algoritmos en c++
Algoritmos en c++
 
Acmar trucos de visual basic(2)
Acmar   trucos de visual basic(2)Acmar   trucos de visual basic(2)
Acmar trucos de visual basic(2)
 
Java
JavaJava
Java
 
Paper de Criptografía sobre Ataque a la clave por la paradoja del cumpleaños ...
Paper de Criptografía sobre Ataque a la clave por la paradoja del cumpleaños ...Paper de Criptografía sobre Ataque a la clave por la paradoja del cumpleaños ...
Paper de Criptografía sobre Ataque a la clave por la paradoja del cumpleaños ...
 
Ejemplos de algoritmos en C básicos (aprendiendo a programar)
Ejemplos de algoritmos en C básicos (aprendiendo a programar)Ejemplos de algoritmos en C básicos (aprendiendo a programar)
Ejemplos de algoritmos en C básicos (aprendiendo a programar)
 
Unidad2 programas while , do while y for
Unidad2 programas while , do while  y forUnidad2 programas while , do while  y for
Unidad2 programas while , do while y for
 
Estructuras de Lenguaje .NET
Estructuras de Lenguaje .NETEstructuras de Lenguaje .NET
Estructuras de Lenguaje .NET
 
Codificaciones c++2011
Codificaciones c++2011Codificaciones c++2011
Codificaciones c++2011
 
Tema 2 - Programación básica en C (III)
Tema 2  - Programación básica en C (III)Tema 2  - Programación básica en C (III)
Tema 2 - Programación básica en C (III)
 
MéTodos De EncriptacióN
MéTodos De EncriptacióNMéTodos De EncriptacióN
MéTodos De EncriptacióN
 
52 ejercicios resueltos en pseudocodigo
52 ejercicios resueltos en pseudocodigo52 ejercicios resueltos en pseudocodigo
52 ejercicios resueltos en pseudocodigo
 
Codificaciones c++2011
Codificaciones c++2011Codificaciones c++2011
Codificaciones c++2011
 
Codificaciones c++
Codificaciones c++Codificaciones c++
Codificaciones c++
 
Programas en netbeans
Programas en netbeansProgramas en netbeans
Programas en netbeans
 
08 strings o cadenas
08 strings o cadenas08 strings o cadenas
08 strings o cadenas
 
Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.Java Applet:::Pelota que rebota en un recinto.
Java Applet:::Pelota que rebota en un recinto.
 
Programa con for.if word
Programa con for.if wordPrograma con for.if word
Programa con for.if word
 

Andere mochten auch

El proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open SourceEl proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open SourceJose Juan R. Zuñiga
 
Phpday - Automated acceptance testing with Behat and Mink
Phpday - Automated acceptance testing with Behat and MinkPhpday - Automated acceptance testing with Behat and Mink
Phpday - Automated acceptance testing with Behat and MinkRichard Tuin
 
Gestión de requisitos y su trazabilidad en la Gestión de Servicios TI
Gestión de requisitos y su trazabilidad en la Gestión de Servicios TIGestión de requisitos y su trazabilidad en la Gestión de Servicios TI
Gestión de requisitos y su trazabilidad en la Gestión de Servicios TIOVERTI
 
M1 tema 1 deteccion de incendios quimica del fuego
M1 tema 1   deteccion de incendios quimica del fuegoM1 tema 1   deteccion de incendios quimica del fuego
M1 tema 1 deteccion de incendios quimica del fuegojmsarmientom
 
BDD + PHP = behat!
BDD + PHP = behat!BDD + PHP = behat!
BDD + PHP = behat!Vitor Mattos
 
SEMINARIO WEB - El ABC del Test Automation: ¿Qué, por qué, cuando y cómo?
SEMINARIO WEB - El ABC del Test Automation: ¿Qué, por qué, cuando y cómo?SEMINARIO WEB - El ABC del Test Automation: ¿Qué, por qué, cuando y cómo?
SEMINARIO WEB - El ABC del Test Automation: ¿Qué, por qué, cuando y cómo?Belatrix Software
 
Living Documentation (NCrafts Paris 2015, DDDx London 2015, BDX.io 2015, Code...
Living Documentation (NCrafts Paris 2015, DDDx London 2015, BDX.io 2015, Code...Living Documentation (NCrafts Paris 2015, DDDx London 2015, BDX.io 2015, Code...
Living Documentation (NCrafts Paris 2015, DDDx London 2015, BDX.io 2015, Code...Cyrille Martraire
 
Mujer en el siglo XX
Mujer en el siglo XXMujer en el siglo XX
Mujer en el siglo XXkatesamc
 
Reporte Final De Investigación
Reporte Final De InvestigaciónReporte Final De Investigación
Reporte Final De InvestigaciónGerardo Corpus
 
Progreso de la armonizacion del dividendo digital
Progreso de la armonizacion del dividendo digitalProgreso de la armonizacion del dividendo digital
Progreso de la armonizacion del dividendo digitalMinisterio TIC Colombia
 
Polo A Tierra Sena
Polo A Tierra SenaPolo A Tierra Sena
Polo A Tierra Senatefadianis
 
MOTIVACION PERSONAL
MOTIVACION PERSONALMOTIVACION PERSONAL
MOTIVACION PERSONALUlises Celi
 

Andere mochten auch (20)

El proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open SourceEl proceso de desarrollo con herramientas Open Source
El proceso de desarrollo con herramientas Open Source
 
Phpday - Automated acceptance testing with Behat and Mink
Phpday - Automated acceptance testing with Behat and MinkPhpday - Automated acceptance testing with Behat and Mink
Phpday - Automated acceptance testing with Behat and Mink
 
Documentación
DocumentaciónDocumentación
Documentación
 
Gestión de requisitos y su trazabilidad en la Gestión de Servicios TI
Gestión de requisitos y su trazabilidad en la Gestión de Servicios TIGestión de requisitos y su trazabilidad en la Gestión de Servicios TI
Gestión de requisitos y su trazabilidad en la Gestión de Servicios TI
 
Introducción a Groovy
Introducción a GroovyIntroducción a Groovy
Introducción a Groovy
 
M1 tema 1 deteccion de incendios quimica del fuego
M1 tema 1   deteccion de incendios quimica del fuegoM1 tema 1   deteccion de incendios quimica del fuego
M1 tema 1 deteccion de incendios quimica del fuego
 
BDD + PHP = behat!
BDD + PHP = behat!BDD + PHP = behat!
BDD + PHP = behat!
 
Especificación medianteejemplos
Especificación medianteejemplosEspecificación medianteejemplos
Especificación medianteejemplos
 
SEMINARIO WEB - El ABC del Test Automation: ¿Qué, por qué, cuando y cómo?
SEMINARIO WEB - El ABC del Test Automation: ¿Qué, por qué, cuando y cómo?SEMINARIO WEB - El ABC del Test Automation: ¿Qué, por qué, cuando y cómo?
SEMINARIO WEB - El ABC del Test Automation: ¿Qué, por qué, cuando y cómo?
 
Living Documentation (NCrafts Paris 2015, DDDx London 2015, BDX.io 2015, Code...
Living Documentation (NCrafts Paris 2015, DDDx London 2015, BDX.io 2015, Code...Living Documentation (NCrafts Paris 2015, DDDx London 2015, BDX.io 2015, Code...
Living Documentation (NCrafts Paris 2015, DDDx London 2015, BDX.io 2015, Code...
 
FELIZ NAVIDAD
FELIZ NAVIDADFELIZ NAVIDAD
FELIZ NAVIDAD
 
Programa actividades etse
Programa actividades etsePrograma actividades etse
Programa actividades etse
 
Mujer en el siglo XX
Mujer en el siglo XXMujer en el siglo XX
Mujer en el siglo XX
 
Reporte Final De Investigación
Reporte Final De InvestigaciónReporte Final De Investigación
Reporte Final De Investigación
 
Progreso de la armonizacion del dividendo digital
Progreso de la armonizacion del dividendo digitalProgreso de la armonizacion del dividendo digital
Progreso de la armonizacion del dividendo digital
 
La brujula julio 2013
La brujula julio 2013La brujula julio 2013
La brujula julio 2013
 
Polo A Tierra Sena
Polo A Tierra SenaPolo A Tierra Sena
Polo A Tierra Sena
 
Practica 8
Practica 8Practica 8
Practica 8
 
MOTIVACION PERSONAL
MOTIVACION PERSONALMOTIVACION PERSONAL
MOTIVACION PERSONAL
 
Test proyectivos
Test proyectivosTest proyectivos
Test proyectivos
 

Ähnlich wie Por qué Cervantes programaba mejor que tú

Ejercicios introduccion a la programación en C
Ejercicios  introduccion a la programación en CEjercicios  introduccion a la programación en C
Ejercicios introduccion a la programación en Chack3 Org
 
7. operadores y estructura secuencial
7. operadores y estructura secuencial7. operadores y estructura secuencial
7. operadores y estructura secuencialrcarrerah
 
Fundamentosdeprogramacion 2
Fundamentosdeprogramacion 2Fundamentosdeprogramacion 2
Fundamentosdeprogramacion 2agustin rojas
 
Practica 9 Laboratorio de Computación para Ingenieros FI
Practica 9 Laboratorio de Computación para Ingenieros FIPractica 9 Laboratorio de Computación para Ingenieros FI
Practica 9 Laboratorio de Computación para Ingenieros FIJorge Iván Alba Hernández
 
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)Videoconferencias UTPL
 
Clean Code (EN ESPANOL)
Clean Code (EN ESPANOL)Clean Code (EN ESPANOL)
Clean Code (EN ESPANOL)Rodrigo Branas
 
Quiero hacer ágil, ¿y ahora qué: Java, Ruby o Scala?
Quiero hacer ágil, ¿y ahora qué: Java, Ruby o Scala?Quiero hacer ágil, ¿y ahora qué: Java, Ruby o Scala?
Quiero hacer ágil, ¿y ahora qué: Java, Ruby o Scala?Agile Spain
 
Por que java
Por que javaPor que java
Por que javareivax
 
[Lm]10 consejos-para-empezar-con-r-sin-morir-en-el-intento
[Lm]10 consejos-para-empezar-con-r-sin-morir-en-el-intento[Lm]10 consejos-para-empezar-con-r-sin-morir-en-el-intento
[Lm]10 consejos-para-empezar-con-r-sin-morir-en-el-intentoedwincarlos11
 
Java problems
Java problemsJava problems
Java problemsNoe Lopez
 

Ähnlich wie Por qué Cervantes programaba mejor que tú (20)

Lenguaje c neo
Lenguaje c neoLenguaje c neo
Lenguaje c neo
 
Cesar lenguaje c_
Cesar lenguaje c_Cesar lenguaje c_
Cesar lenguaje c_
 
Taller 3
Taller 3Taller 3
Taller 3
 
Ejercicios introduccion a la programación en C
Ejercicios  introduccion a la programación en CEjercicios  introduccion a la programación en C
Ejercicios introduccion a la programación en C
 
Ejercicios C
Ejercicios CEjercicios C
Ejercicios C
 
7. operadores y estructura secuencial
7. operadores y estructura secuencial7. operadores y estructura secuencial
7. operadores y estructura secuencial
 
Fundamentosdeprogramacion 2
Fundamentosdeprogramacion 2Fundamentosdeprogramacion 2
Fundamentosdeprogramacion 2
 
Practica 9 Laboratorio de Computación para Ingenieros FI
Practica 9 Laboratorio de Computación para Ingenieros FIPractica 9 Laboratorio de Computación para Ingenieros FI
Practica 9 Laboratorio de Computación para Ingenieros FI
 
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
UTPL-PROGRAMACIÓN AVANZADA-II-BIMESTRE-(OCTUBRE 2011-FEBRERO 2012)
 
Manual.es
Manual.esManual.es
Manual.es
 
6.funciones y recursividad en c++
6.funciones y recursividad en c++6.funciones y recursividad en c++
6.funciones y recursividad en c++
 
Clean Code (EN ESPANOL)
Clean Code (EN ESPANOL)Clean Code (EN ESPANOL)
Clean Code (EN ESPANOL)
 
Revista digital
Revista digitalRevista digital
Revista digital
 
Seguridad En Programación
Seguridad En ProgramaciónSeguridad En Programación
Seguridad En Programación
 
Secure txscalacsharp
Secure txscalacsharpSecure txscalacsharp
Secure txscalacsharp
 
Quiero hacer ágil, ¿y ahora qué: Java, Ruby o Scala?
Quiero hacer ágil, ¿y ahora qué: Java, Ruby o Scala?Quiero hacer ágil, ¿y ahora qué: Java, Ruby o Scala?
Quiero hacer ágil, ¿y ahora qué: Java, Ruby o Scala?
 
Por que java
Por que javaPor que java
Por que java
 
1 unidad metodos numericos
1 unidad metodos numericos1 unidad metodos numericos
1 unidad metodos numericos
 
[Lm]10 consejos-para-empezar-con-r-sin-morir-en-el-intento
[Lm]10 consejos-para-empezar-con-r-sin-morir-en-el-intento[Lm]10 consejos-para-empezar-con-r-sin-morir-en-el-intento
[Lm]10 consejos-para-empezar-con-r-sin-morir-en-el-intento
 
Java problems
Java problemsJava problems
Java problems
 

Kürzlich hochgeladen

Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxFederico Castellari
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxJorgeParada26
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21mariacbr99
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...JohnRamos830530
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIhmpuellon
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITMaricarmen Sánchez Ruiz
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxMiguelAtencio10
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxAlan779941
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanamcerpam
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.FlorenciaCattelani
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estossgonzalezp1
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativanicho110
 

Kürzlich hochgeladen (12)

Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 

Por qué Cervantes programaba mejor que tú