6º generación de lenguajes de programacion
TRANSCRIPT
José Pablo Santiago Cabrera
sixth generation of programming languages
AÑOLENGUAJE DE
PROGRAMACIONDISEÑADOR O
COMPAÑIAPREDECESOR
EJEMPLO DE CODIGO FUENTE
VENTAJAS Y DESVENTAJAS
2000 Join JavaG Stewart von Itzstein
JavaEJEMPLO *
2000 Joy Von Thun FP, Fort * *
2000 DWalter Bright at Digital Mars
C, C++, C#, Java EJEMPLO *
2000 XLChristophe de Dinechin
Ada, C++, Lisp * *
2000 C#Anders Hejlsberg at Microsoft (ECMA)
C, C++, Java, Delphi, Modula-2
EJEMPLO *
2000 Ferite Chris RossC, C++, Java, PHP, Phyton,Ruby, Scheme
EJEMPLO *
2001 AspectJ Xerox PARC Java EJEMPLO Link
LINEA DEL TIEMPO DE LA SEXTA GENERACION
Simbología(*)no hay mucha información sobre el lenguaje de programación
AÑOLENGUAJE DE
PROGRAMACIONDISEÑADOR O
COMPAÑIAPREDECESOR
EJEMPLO DE CODIGO FUENTE
VENTAJAS Y DESVENTAJAS
2001 VisualBasic.Net Microsoft Visual Basic EJEMPLO LINK
2002 Io Steve Dekorte Self, Newton Script * *
2003 Nemerle University of Wroclaw C#, ML, MetaHaskell EJEMPLO *
2003 Factor Slava Pestov Joy, Forth, Lisp * *
2003 Scala Martin OderskySmalltalk, Java, Haskell, Standard ML, OCaml
EJEMPLO *
2003 Squirrel Alberto Demichelis Luna EJEMPLO *
2004 Subtext Jonathan Edwards * *
2004 Boo Rodrigo B. De Oliveira Python, C#, Java EJEMPLO *
2004 Groovy James Strachan Java EJEMPLO *
2005 F#Don Syme at Microsoft Research
Objective Calm, C#, Haskell
EJEMPLO *
Simbología(*)no hay mucha información sobre el lenguaje de programación
AÑOLENGUAJE DE
PROGRAMACIONDISEÑADOR O
COMPAÑIAPREDECESOR
EJEMPLO DE CODIGO FUENTE
VENTAJAS Y DESVENTAJAS
2006 LinksPhilip Wadler, University of Edinburgh
Haskell * *
2006 Kite Mooneer Salem * EJEMPLO *
2006 Windows PowerShell MicrosoftC#, ksh, Perl, CL, DCL, SQL
* *
2007 FanBrian Frank, Andy Frank
C#, Scala, Ruby, Erlang, C#
* *
2007 Vala GNOME C# EJEMPLO *
2007 Clojure Rich HickeyLisp, ML, Haskell, Erlang
* *
2007 Oberon-07 Wirth Oberón * *
Simbología(*)no hay mucha información sobre el lenguaje de programación
THANK YOU TO PAY ATTENTION
JOIN JAVA, DEVUELVE EL VALOR DE X EN EL FRAGMENTÓ 1
class JoinExample { int fragment1() & fragment2(int x) { //will return value of x //to caller of fragment1 return x; }}
back
“D”, DEVUELVE EL VALOR CUANDO SE CUMPLE
ulong factorial(ulong n){ if(n <= 1) return 1; else return n * factorial(n - 1);}
back
C# MUESTRA EN PANTALLA HOLA MUNDO¡¡
class ExampleClass{ static void Main() { System.Console.WriteLine("Hello, world!"); }}
back
FERITE, MUESTRA HOLA MUNDO
uses "console";Console.println( "Hello World" );
back
ASPECTJASPECTJ
Ejemplo. aspectpublic class Test {public void Say(String name) {System.out.println(name);}public static void main(String[] args) {Test test = new Test();test.Say("Hello");System.out.println("She say - ");test.Say("bye");}}public aspect Pensando {pointcut speak() : call(public void Say(String));before() : speak() { System.out.println("Before Say - Think"); }after() : speak() {System.out.println("After Say - Smile");}}
“Prueba o depuracion”
Resultado:Before Say - ThinkHelloAfter Say - SmileShe say -Before Say - ThinkbyeAfter Say - Smileback
VENTAJAS Y DESVENTAJAS
= +AspectJ
Entidades Dinámicas
Entidades Estáticas
Puntos de EnlacesCortesAvisos
Introducciones Y Declaraciones
LOA BASE ASPECTOS
VENTAJAS*Implementación modularizada : POA logra separar cada concepto con mínimo acoplamiento, resultando en implementaciones modularizadas aún en la presencia de conceptos que se entrecruzan. Esto lleva a un código más limpio, menos duplicado, más fácil de entender y de mantener.*Mayor evolucionabilidad: La separación de conceptos permite agregar nuevos aspectos, modificar y / o remover aspectos existentes fácilmente.
DESVENTAJAS*Posibles choques entre los aspectos. El ejemplo clásico es tener dos aspectos que trabajan perfectamente por separado pero al aplicarlos conjuntamente resultan en un comportamiento anormal.
back
VISUALBASIC.NET MUESTRA HOLA MUNDOPublic Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MsgBox("Hello, World") End SubEnd ClassPublic Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click MessageBox.Show("Hello, World") End SubEnd Class
back
VENTAJAS* Visual Basic es un lenguaje simple, por lo tanto es fácil de aprender* Se dibuja formularios mediante el arrastre de controles.* La sintaxis tiene semejanza al lenguaje natural humano.* Lenguaje compatible con Microsoft office.* Es un lenguaje RAD centrado en conseguir en el menor tiempo posible los resultados que se desea obtener.* Tiene una ligera implementación de la POO (La Programación Orientada a Objetos, la cual es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora).* Permite el tratamiento de mensajes de Windows.* Es excelente para cálculos intensivos del CPU como por ejemplo operaciones matemáticas.
DESVENTAJAS* Solo Microsoft puede decidir la evolución de este lenguaje.* Solo existe un compilador, llamado igual que el lenguaje.* Solo genera ejecutables para Windows.* La sintaxis es demasiado inflexible.* Los ejecutables generados son relativamente lentos.* No es adecuado para aplicaciones grandes, como por ejemplo: multimedia, oficina, videojuegos, editores gráficos, etc.* La ligera implementación de la POO no permite sacar el máximo provecho de este modelo de programación.
back
NEMERLE MUESTRA HOLA MUNDO
class Hello { static Main () : void { System.Console.WriteLine ("Hello, world!"); }}
back
SCALA MUESTRA HOLA MUNDO
object HelloWorld extends Application { println("Hello, world!") }
or
object HelloWorld { def main(args: Array[String]) { println("Hello, world!") } }
back
SQUIRREL MOSTRANDO CÓDIGO FUENTE DE UN FACTORIAL
function factorial(x) { if (x == 0) { return 1; } else { return x * factorial(x-1); } }
back
BOO, MOSTRANDO LA SERIE FIBONACCIdef fib(): a, b = 0L, 1L #The 'L's make the numbers 64-bit while true: yield b a, b = b, a + b # Print the first 5 numbers in the series:for index as int, element in zip(range(5), fib()): print("${index+1}: ${element}")
back
GROOVY
Groovy's syntax can be made far more compact than Java. For example, a declaration in Standard Java 5+ such as:
for (String it : new String[] {"Rod", "Carlos", "Chris"}) if (it.length() <= 4) System.out.println(it);
can be expressed in Groovy as:
["Rod", "Carlos", "Chris"].findAll{it.size() <= 4}.each{println it}
back
F# MOSTRANDO HOLA MUNDO¡¡(* This is commented *)(* Sample hello world program *)printfn "Hello World!"
back
KITE Inheritance
class a [ property m1, construct [ this.m1 = "foo"; ]];
class b from a [ property m2, construct [ this.m2 = "bar"; ], method message() [ (this.m1 + this.m2)|print; ]];
(make b)|message;
"Hello World" in Kite
Hello World is simply a single line (excluding comments and blank lines):
#!/usr/local/bin/kite
"Hello World"|print;
Language Features
Logic
decide [ condition1 [ ... ], condition2 [ ... ], true [ ... ]];
Loops
i = 0;
while (i < 10) [ i = i + 1;];
until (i == 0) [ i = i - 1;];
back
VALA MOSTRANDO HOLA MUNDOvoid main () { print ("Hello World\n");}
class Sample : Object { void run () { stdout.printf ("Hello World\n"); }
back