SlideShare una empresa de Scribd logo
1 de 25
Descargar para leer sin conexión
“Los	
  lenguajes	
  	
  
  de	
  la	
  web”;	
  
  Roberto Luis Bisbé - @rlbisbe
¿Qué hay en la web?
Frontend        Backend      Datos
  HTML            PHP          *SQL
  CSS             Java EE      Oracle
  Javascript      .NET         XML
  Flash           Python       JSON
  Silverlight     Ruby
  Applets…        Scala
                  Clojure…
¿De qué vamos a hablar?

Lenguajes de programación menos “serios”

Formatos de marcado

Formatos de datos
PROGRAMACIÓN
Características comunes

Dinámicos

Orientados a objetos

Licencias Open Source

Comunidad
Javascript

Nada que ver con Java

Frameworks (jQuery, Prototype, Mootools)

Implementación en los navegadores web



Usado por:
   –  Todo el mundo…
Client-side javascript:
                     Manejo del DOM

function	
  notEmpty(){	
  
	
  	
  	
  	
  var	
  myTextField	
  =	
  document.getElementById('myText');	
  
	
  	
  	
  	
  if(myTextField.value	
  ===	
  "")	
  
	
  	
  	
  	
  	
  	
  	
  	
  alert(“Introduzca	
  un	
  valor	
  en	
  el	
  campo”)	
  
}	
  



<input	
  type='text'	
  id='myText'	
  />	
  
<input	
  type=’button’	
  onclick=’notEmpty()’	
  value=Click’/>	
  
Server-side Javascript:

var	
  http	
  =	
  require('http');	
  
	
  	
  	
  	
  http.createServer(function	
  (request,	
  response)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  response.writeHead(	
  
         	
   	
   	
   	
   	
  200,	
  	
  
         	
   	
   	
   	
   	
  {'Content-­‐Type':	
  'text/plain'}	
  
         	
   	
   	
   	
  );	
  
	
  	
  	
  	
  	
  	
  	
  	
  response.end('Hello	
  Worldn');	
  
	
  	
  	
  	
  }).listen(8000);	
  
	
  
console.log('Server	
  running	
  at	
  http://localhost:8000/');	
  



                                                                            demo
Multiparadigma

Soporte para bibliotecas científicas



Usado por:
   –  Instagram
   –  SageMath
#!/usr/bin/env	
  python	
  
import	
  sys	
  
import	
  os	
  
	
  
def	
  main():	
  
	
  	
  	
  	
  i	
  =	
  open('in.txt')	
  
	
  	
  	
  	
  o	
  =	
  open('out.php','w')	
  
	
  	
  	
  	
  o.write("<?php	
  $data	
  =	
  array(n")	
  
	
  	
  	
  	
  counter	
  =	
  1	
  
	
  	
  	
  	
  for	
  line	
  in	
  i:	
  
	
  	
  	
  	
  	
  	
  	
  	
  data	
  =	
  line.split("n")	
  
	
  	
  	
  	
  	
  	
  	
  	
  o.write(	
  str(counter)	
  +	
  '=>	
  "'	
  +	
  data[0]	
  +	
  '",n')	
  
	
  	
  	
  	
  	
  	
  	
  	
  counter	
  +=1;	
  
	
  	
  	
  	
  o.write(");n?>")	
  
	
  
if	
  __name__	
  ==	
  '__main__':	
  
	
  	
  	
  	
  main()	
  
Alta abstracción y legibilidad
Multiples frameworks (Rails, Sinatra)
Sistema de paquetes (gemas)

Usado por:
  –  GitHub
class	
  Anfitrion	
  
	
  	
  	
  def	
  initialize(nombre	
  =	
  "Mundo")	
  
	
  	
  	
  	
  @nombre	
  =	
  nombre	
  
	
  	
  	
  end	
  
	
  
	
  	
  	
  def	
  decir_hola	
  
	
  	
  	
  	
  	
  puts	
  "Hola	
  #{@nombre}"	
  
	
  	
  	
  end	
  
	
  
	
  	
  	
  def	
  decir_adios	
  
	
  	
  	
  puts	
  "Adiós	
  #{@nombre},	
  vuelve	
  pronto."	
  
	
  	
  	
  end	
  
end	
  
                                                                      demo
Programación funcional
Rendimiento++
Compatible con bibliotecas java y C#

•  Quien lo usa?
  –  Twitter
  –  foursquare
def	
  qsort:	
  List[Int]	
  =>	
  List[Int]	
  =	
  {	
  
	
  	
  case	
  Nil	
  =>	
  Nil	
  
	
  	
  case	
  pivot	
  ::	
  tail	
  =>	
  
	
  	
  	
  	
  val	
  (smaller,	
  rest)	
  =	
  tail.partition(_	
  <	
  pivot)	
  
	
  	
  	
  	
  qsort(smaller)	
  :::	
  pivot	
  ::	
  qsort(rest)	
  
}	
  
	
  
Alternativa en Java
import	
  java.io.*;	
                                                     	
  	
  	
  	
  	
  	
  while	
  (f	
  <	
  l)	
  
import	
  java.util.*;	
                                                   	
  	
  	
  	
  	
  	
  {	
  
	
                                                                         	
  	
  	
  	
  	
  	
  	
  	
  	
  while	
  (A[f]	
  <	
  pivot)	
  f++;	
  
public	
  class	
  QuickSort	
                                             	
  	
  	
  	
  	
  	
  	
  	
  	
  while	
  (A[l]	
  >	
  pivot)	
  l-­‐-­‐;	
  
{	
                                                                        	
  	
  	
  	
  	
  	
  	
  	
  	
  swap	
  (A,	
  f,	
  l);	
  
	
  	
  	
  public	
  static	
  void	
  swap	
  (int	
  A[],	
  int	
  x,	
  
                                                                           	
  	
  	
  	
  	
  	
  }	
  
int	
  y)	
                                                                	
  	
  	
  	
  	
  	
  return	
  f;	
  
	
  	
  	
  {	
                                                            	
  	
  	
  }	
  
	
  	
  	
  	
  	
  	
  int	
  temp	
  =	
  A[x];	
                        	
  
	
  	
  	
  	
  	
  	
  A[x]	
  =	
  A[y];	
                               	
  	
  	
  public	
  static	
  void	
  Quicksort(int	
  A[],	
  
	
  	
  	
  	
  	
  	
  A[y]	
  =	
  temp;	
                               int	
  f,	
  int	
  l)	
  
	
  	
  	
  }	
                                                            	
  	
  	
  {	
  
	
                                                                         	
  	
  	
  	
  	
  	
  if	
  (f	
  >=	
  l)	
  return;	
  
public	
  static	
  int	
  partition(int	
  A[],	
  int	
  f,	
            	
  	
  	
  	
  	
  	
  int	
  pivot_index	
  =	
  partition(A,	
  f,	
  l);	
  
int	
  l)	
                                                                	
  	
  	
  	
  	
  	
  Quicksort(A,	
  f,	
  pivot_index);	
  
	
  	
  	
  {	
                                                            	
  	
  	
  	
  	
  	
  Quicksort(A,	
  pivot_index+1,	
  l);	
  
	
  	
  	
  	
  	
  	
  int	
  pivot	
  =	
  A[f];	
                       	
  	
  	
  }	
  
MARCADO
!!!	
  
%head	
  
	
  	
  	
  	
  %title	
  BoBlog	
  
	
  	
  	
  	
  %link{"rel"	
  =>	
  "stylesheet",	
  "href"	
  =>	
  "main.css",	
  "type"	
  =>	
  
"text/css"}	
  
	
  	
  %body	
  
	
  	
  	
  	
  #header	
  
	
  	
  	
  	
  	
  	
  %h1	
  BoBlog	
  
	
  	
  	
  	
  	
  	
  %h2	
  Blog	
  de	
  Bob	
  
	
  	
  	
  	
  #content	
  
	
  	
  	
  	
  	
  	
  -­‐	
  @entries.each	
  do	
  |entry|	
  
	
  	
  	
  	
  	
  	
  	
  	
  .entry	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  %h3.title=	
  entry.title	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  %p.date=	
  entry.posted.strftime("%A	
  %d	
  de	
  %B	
  de	
  %Y")	
  
	
  	
  	
  	
  	
  	
  	
  	
  	
  	
  %p.body=	
  entry.body	
  
	
  	
  	
  	
  #footer	
  
	
  	
  	
  	
  	
  	
  %p	
  
Razor
<ul>	
  	
  	
  	
  	
  
	
  	
  	
  	
  @for	
  (var	
  i	
  =	
  0;	
  i	
  <	
  5;	
  i++)	
  
	
  	
  	
  	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  <li>@i</li>	
  
	
  	
  	
  	
  }	
  	
  	
  	
  	
  
</ul>	
  
	
  
@{	
  
	
  	
  	
  var	
  name	
  =	
  “Gilberto	
  Salazar”;	
  
	
  	
  	
  <div>	
  
	
  	
  	
  	
  	
  Nombre:	
  @name	
  
	
  	
  	
  </div>	
  
}	
  
DATOS
JSON
	
  {"menu":	
  {	
  
	
  	
  	
  "id":	
  "file",	
  
	
  	
  	
  "value":	
  "File",	
  
	
  	
  	
  "popup":	
  {	
  
	
  	
  	
  	
  	
  "menuitem":	
  [	
  
	
  	
  	
  	
  	
  	
  	
  {"value":	
  "New",	
  "onclick":	
  "CreateNewDoc()"},	
  
	
  	
  	
  	
  	
  	
  	
  {"value":	
  "Open",	
  "onclick":	
  "OpenDoc()"},	
  
	
  	
  	
  	
  	
  	
  	
  {"value":	
  "Close",	
  "onclick":	
  "CloseDoc()"}	
  
	
  	
  	
  	
  	
  ]	
  
	
  	
  	
  }	
  
	
  }}	
  



                                                                                          demo
Alternativa en XML

<menu	
  id="file"	
  value="File">	
  
	
  	
  <popup>	
  
	
  	
  	
  	
  <menuitem	
  value="New"	
  onclick="CreateNewDoc()"	
  />	
  
	
  	
  	
  	
  <menuitem	
  value="Open"	
  onclick="OpenDoc()"	
  />	
  
	
  	
  	
  	
  <menuitem	
  value="Close"	
  onclick="CloseDoc()"	
  />	
  
	
  	
  </popup>	
  
</menu>	
  
Recursos de aprendizaje
•  Javascript
    –  http://www.codecademy.com/courses
    –  http://nodejs.org/

•  Python
    –  http://docs.python.org/tutorial/

•  Ruby
    –  http://www.ruby-lang.org/es/documentation/quickstart/

•  Scala
    –  http://www.scala-lang.org/docu/files/ScalaByExample.pdf
Gracias

http://rlbisbe.net

Más contenido relacionado

Destacado

Windows 8 Universidad de Valencia
Windows 8 Universidad de ValenciaWindows 8 Universidad de Valencia
Windows 8 Universidad de Valencia
Roberto Luis Bisbé
 

Destacado (8)

Windows phonesessions
Windows phonesessionsWindows phonesessions
Windows phonesessions
 
Windows 8 y Metro para desarrolladores .NET
Windows 8 y Metro para desarrolladores .NETWindows 8 y Metro para desarrolladores .NET
Windows 8 y Metro para desarrolladores .NET
 
Javascript vuela en primera clase con Firefox OS
Javascript vuela en primera clase con Firefox OSJavascript vuela en primera clase con Firefox OS
Javascript vuela en primera clase con Firefox OS
 
Windows 8 Universidad de Valencia
Windows 8 Universidad de ValenciaWindows 8 Universidad de Valencia
Windows 8 Universidad de Valencia
 
Tres tecnologías Microsoft que no se dan en la carrera
Tres tecnologías Microsoft que no se dan en la carreraTres tecnologías Microsoft que no se dan en la carrera
Tres tecnologías Microsoft que no se dan en la carrera
 
Comunicando nuestras apps con el mundo exterior
Comunicando nuestras apps con el mundo exteriorComunicando nuestras apps con el mundo exterior
Comunicando nuestras apps con el mundo exterior
 
Una visión multiplataforma con aspnet v next
Una visión multiplataforma con aspnet v nextUna visión multiplataforma con aspnet v next
Una visión multiplataforma con aspnet v next
 
Creando aplicaciones móviles con Windows 8 y Windows Phone 8
Creando aplicaciones móviles con Windows 8 y Windows Phone 8Creando aplicaciones móviles con Windows 8 y Windows Phone 8
Creando aplicaciones móviles con Windows 8 y Windows Phone 8
 

Similar a Los lenguajes de la web

ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++
die_dex
 
Programacion en python_1
Programacion en python_1Programacion en python_1
Programacion en python_1
wozgeass
 

Similar a Los lenguajes de la web (20)

Pensando funcionalmente
Pensando funcionalmentePensando funcionalmente
Pensando funcionalmente
 
Dart como alternativa a TypeScript (Codemotion 2016)
Dart como alternativa a TypeScript (Codemotion 2016)Dart como alternativa a TypeScript (Codemotion 2016)
Dart como alternativa a TypeScript (Codemotion 2016)
 
ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++ESTRUCTURAS DE CONTROL: BUCLES EN C++
ESTRUCTURAS DE CONTROL: BUCLES EN C++
 
Asp vNext Is Comming
Asp vNext Is CommingAsp vNext Is Comming
Asp vNext Is Comming
 
Introducción a Scala
Introducción a ScalaIntroducción a Scala
Introducción a Scala
 
TUTORIAL JAVA
TUTORIAL JAVATUTORIAL JAVA
TUTORIAL JAVA
 
JAVA.PPT
JAVA.PPTJAVA.PPT
JAVA.PPT
 
JAVA (1).PPT
JAVA (1).PPTJAVA (1).PPT
JAVA (1).PPT
 
JAVA (1).PPT
JAVA (1).PPTJAVA (1).PPT
JAVA (1).PPT
 
Programacion en python_1
Programacion en python_1Programacion en python_1
Programacion en python_1
 
C ++
C ++C ++
C ++
 
Jquery parte 1
Jquery parte 1Jquery parte 1
Jquery parte 1
 
Taller II Coreis Python 13112009
Taller II Coreis Python 13112009Taller II Coreis Python 13112009
Taller II Coreis Python 13112009
 
Introducción a Swift
Introducción a SwiftIntroducción a Swift
Introducción a Swift
 
Scala en proyectos de vinculación Ancap-UR - 2013-03
Scala en proyectos de vinculación Ancap-UR - 2013-03Scala en proyectos de vinculación Ancap-UR - 2013-03
Scala en proyectos de vinculación Ancap-UR - 2013-03
 
Arrays unidimensionales
Arrays unidimensionalesArrays unidimensionales
Arrays unidimensionales
 
INTRODUCCIÓN A LA PROGRAMACIÓN - PYTHON.pptx
INTRODUCCIÓN A LA PROGRAMACIÓN - PYTHON.pptxINTRODUCCIÓN A LA PROGRAMACIÓN - PYTHON.pptx
INTRODUCCIÓN A LA PROGRAMACIÓN - PYTHON.pptx
 
JavaScript no es Vietnam
JavaScript no es VietnamJavaScript no es Vietnam
JavaScript no es Vietnam
 
Mule Librerias en Java
Mule Librerias en JavaMule Librerias en Java
Mule Librerias en Java
 
03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery03. Introduccion a JavaScript y JQuery
03. Introduccion a JavaScript y JQuery
 

Más de Roberto Luis Bisbé

Desarrollo Metro con Windows 8 UPM
Desarrollo Metro con Windows 8 UPMDesarrollo Metro con Windows 8 UPM
Desarrollo Metro con Windows 8 UPM
Roberto Luis Bisbé
 
Aplicaciones Metro para Windows 8
Aplicaciones Metro para Windows 8Aplicaciones Metro para Windows 8
Aplicaciones Metro para Windows 8
Roberto Luis Bisbé
 

Más de Roberto Luis Bisbé (12)

Desarrollo Full Stack UAM.net
Desarrollo Full Stack UAM.netDesarrollo Full Stack UAM.net
Desarrollo Full Stack UAM.net
 
Scala desde c# y JavaScript
Scala desde c# y JavaScriptScala desde c# y JavaScript
Scala desde c# y JavaScript
 
DotNetSpain2015: Extendiendo Visual Studio Online a través de su API
DotNetSpain2015: Extendiendo Visual Studio Online a través de su APIDotNetSpain2015: Extendiendo Visual Studio Online a través de su API
DotNetSpain2015: Extendiendo Visual Studio Online a través de su API
 
De escritorio a Javascript, nuestra experiencia desde las trincheras
De escritorio a Javascript, nuestra experiencia desde las trincherasDe escritorio a Javascript, nuestra experiencia desde las trincheras
De escritorio a Javascript, nuestra experiencia desde las trincheras
 
APIs REST
APIs RESTAPIs REST
APIs REST
 
Desarrollo de aplicaciones para Windows 8 y Windows Phone
Desarrollo de aplicaciones para Windows 8 y Windows PhoneDesarrollo de aplicaciones para Windows 8 y Windows Phone
Desarrollo de aplicaciones para Windows 8 y Windows Phone
 
Desarrollo Metro con Windows 8 UPM
Desarrollo Metro con Windows 8 UPMDesarrollo Metro con Windows 8 UPM
Desarrollo Metro con Windows 8 UPM
 
Aplicaciones Metro para Windows 8
Aplicaciones Metro para Windows 8Aplicaciones Metro para Windows 8
Aplicaciones Metro para Windows 8
 
Hardcore PHP
Hardcore PHPHardcore PHP
Hardcore PHP
 
El patrón MVC
El patrón MVCEl patrón MVC
El patrón MVC
 
Social Media
Social MediaSocial Media
Social Media
 
Fundamentos de sitios web accesibles
Fundamentos de sitios web accesiblesFundamentos de sitios web accesibles
Fundamentos de sitios web accesibles
 

Último

EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 

Último (11)

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
 
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
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
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.
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
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
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
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...
 
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
 

Los lenguajes de la web

  • 1.
  • 2. “Los  lenguajes     de  la  web”;   Roberto Luis Bisbé - @rlbisbe
  • 3.
  • 4. ¿Qué hay en la web? Frontend Backend Datos HTML PHP *SQL CSS Java EE Oracle Javascript .NET XML Flash Python JSON Silverlight Ruby Applets… Scala Clojure…
  • 5. ¿De qué vamos a hablar? Lenguajes de programación menos “serios” Formatos de marcado Formatos de datos
  • 7. Características comunes Dinámicos Orientados a objetos Licencias Open Source Comunidad
  • 8. Javascript Nada que ver con Java Frameworks (jQuery, Prototype, Mootools) Implementación en los navegadores web Usado por: –  Todo el mundo…
  • 9. Client-side javascript: Manejo del DOM function  notEmpty(){          var  myTextField  =  document.getElementById('myText');          if(myTextField.value  ===  "")                  alert(“Introduzca  un  valor  en  el  campo”)   }   <input  type='text'  id='myText'  />   <input  type=’button’  onclick=’notEmpty()’  value=Click’/>  
  • 10. Server-side Javascript: var  http  =  require('http');          http.createServer(function  (request,  response)  {                  response.writeHead(            200,              {'Content-­‐Type':  'text/plain'}          );                  response.end('Hello  Worldn');          }).listen(8000);     console.log('Server  running  at  http://localhost:8000/');   demo
  • 11. Multiparadigma Soporte para bibliotecas científicas Usado por: –  Instagram –  SageMath
  • 12. #!/usr/bin/env  python   import  sys   import  os     def  main():          i  =  open('in.txt')          o  =  open('out.php','w')          o.write("<?php  $data  =  array(n")          counter  =  1          for  line  in  i:                  data  =  line.split("n")                  o.write(  str(counter)  +  '=>  "'  +  data[0]  +  '",n')                  counter  +=1;          o.write(");n?>")     if  __name__  ==  '__main__':          main()  
  • 13. Alta abstracción y legibilidad Multiples frameworks (Rails, Sinatra) Sistema de paquetes (gemas) Usado por: –  GitHub
  • 14. class  Anfitrion        def  initialize(nombre  =  "Mundo")          @nombre  =  nombre        end          def  decir_hola            puts  "Hola  #{@nombre}"        end          def  decir_adios        puts  "Adiós  #{@nombre},  vuelve  pronto."        end   end   demo
  • 15. Programación funcional Rendimiento++ Compatible con bibliotecas java y C# •  Quien lo usa? –  Twitter –  foursquare
  • 16. def  qsort:  List[Int]  =>  List[Int]  =  {      case  Nil  =>  Nil      case  pivot  ::  tail  =>          val  (smaller,  rest)  =  tail.partition(_  <  pivot)          qsort(smaller)  :::  pivot  ::  qsort(rest)   }    
  • 17. Alternativa en Java import  java.io.*;              while  (f  <  l)   import  java.util.*;              {                      while  (A[f]  <  pivot)  f++;   public  class  QuickSort                    while  (A[l]  >  pivot)  l-­‐-­‐;   {                    swap  (A,  f,  l);        public  static  void  swap  (int  A[],  int  x,              }   int  y)              return  f;        {        }              int  temp  =  A[x];                A[x]  =  A[y];        public  static  void  Quicksort(int  A[],              A[y]  =  temp;   int  f,  int  l)        }        {                if  (f  >=  l)  return;   public  static  int  partition(int  A[],  int  f,              int  pivot_index  =  partition(A,  f,  l);   int  l)              Quicksort(A,  f,  pivot_index);        {              Quicksort(A,  pivot_index+1,  l);              int  pivot  =  A[f];        }  
  • 19. !!!   %head          %title  BoBlog          %link{"rel"  =>  "stylesheet",  "href"  =>  "main.css",  "type"  =>   "text/css"}      %body          #header              %h1  BoBlog              %h2  Blog  de  Bob          #content              -­‐  @entries.each  do  |entry|                  .entry                      %h3.title=  entry.title                      %p.date=  entry.posted.strftime("%A  %d  de  %B  de  %Y")                      %p.body=  entry.body          #footer              %p  
  • 20. Razor <ul>                  @for  (var  i  =  0;  i  <  5;  i++)          {                  <li>@i</li>          }           </ul>     @{        var  name  =  “Gilberto  Salazar”;        <div>            Nombre:  @name        </div>   }  
  • 21. DATOS
  • 22. JSON  {"menu":  {        "id":  "file",        "value":  "File",        "popup":  {            "menuitem":  [                {"value":  "New",  "onclick":  "CreateNewDoc()"},                {"value":  "Open",  "onclick":  "OpenDoc()"},                {"value":  "Close",  "onclick":  "CloseDoc()"}            ]        }    }}   demo
  • 23. Alternativa en XML <menu  id="file"  value="File">      <popup>          <menuitem  value="New"  onclick="CreateNewDoc()"  />          <menuitem  value="Open"  onclick="OpenDoc()"  />          <menuitem  value="Close"  onclick="CloseDoc()"  />      </popup>   </menu>  
  • 24. Recursos de aprendizaje •  Javascript –  http://www.codecademy.com/courses –  http://nodejs.org/ •  Python –  http://docs.python.org/tutorial/ •  Ruby –  http://www.ruby-lang.org/es/documentation/quickstart/ •  Scala –  http://www.scala-lang.org/docu/files/ScalaByExample.pdf