lunes, 22 de noviembre de 2010

Ruby (puntos Extra)

¿Que es Ruby?

Es un lenguaje de programación interpretado, reflexivo y orientado a objetos, creado por el programador japonés Yukihiro "Matz" Matsumoto, quien comenzó a trabajar en Ruby en 1993, y lo presentó públicamente en 1995. Combina una sintaxis inspirada en Python y Perl con características de programación orientada a objetos similares a Smalltalk.

El lenguaje fue creado por Yukihiro "Matz" Matsumoto, quien empezó a trabajar en Ruby el 24 de febrero de 1993, y lo presentó al público en el año 1995. En el círculo de amigos de Matsumoto se le puso el nombre de "Ruby" (en español rubí) como broma aludiendo al lenguaje de programación "Perl" (perla).

El creador de Ruby dice que está diseñado para la productividad y la diversión del desarrollador, siguiendo los principios de una buena interfaz de usuario. Sostiene que el diseño de sistemas necesita enfatizar las necesidades humanas más que las de la máquina.

Ruby es orientado a objetos y soporta:
  •  Todos los tipos de datos son un objeto, incluidas las clases y tipos que otros lenguajes definen como primitivas, (como enteros, booleanos, y "nil").
  • Las variables siempre son referencias a objetos, no los objetos mismos.
  • Soporta herencia con enlace dinámico, mixins y métodos singleton. 

La sintaxis procedural está soportada, pero todos los métodos definidos fuera del ámbito de un objeto son realmente métodos de la clase Object. Como esta clase es padre de todas las demás, los cambios son visibles para todas las clases y objetos.

Ejemplo

Ejemplo de hola mundo
 
$ irb
irb(main):001:0> puts "Hola mundo"
Hola mundo
=> nil
irb(main):002:0> 1+2
 => 3
Sintaxis
 
La sintaxis de Ruby es similar a la de Perl o Python. 
La definición de clases y métodos está definida por palabras clave. 
Sin embargo, en Perl, las variables no llevan prefijos. 
Cuando se usa, un prefijo indica el ámbito de las variables. 
 
La mayor diferencia con C y Perl es que las palabras clave son usadas para definir bloques de código sin llaves 
 
Aqui les dejo un tutorial de ruby ojala lo lean:
 
Tutorial Ruby

Lenguaje Oz(puntos extra)

¿Que es Oz?

Es un lenguaje de programacion multiparadigma, es decir, incluye paradigmas como programación lógica, funcional, imperativa, orientada a objetos, con restricciones, distribuida, concurrente. Es una buena herramienta para aquellos nuevos programadores que esten sedientos de aprendizaje.

Oz fue originalmente desarrollado en el laboratorio de Programación de Sistemas en la Universidad de Saarland por Gert Smolka y sus estudiantes a comienzos de 1990.

En 1996 el desarrollo de Oz continuó en cooperación con el grupo de investigación de Seif Haridi en el Instituto Sueco de Ciencias de la Computación
Como complemento a la programación multiparadigma, las principales ventajas de Oz radican en la programación con restricciones y la programación distribuida. Debido a su diseño, Oz implementa un modelo de programación distribuido que hace a la red transparente.

Este modelo hace fácil programar aplicaciones abiertas y tolerantes a fallas en el lenguaje. Para Programación con restricciones, Oz introduce la idea de espacios de computación, los cuales permiten búsquedas definidas por el usuario y estrategias de distribución que son ortogonales al dominio de restricciones.

El lenguaje de programación Oz es el interfaz de usuario del sistema de composición musical
Ejemplo

Un ejemplo de un miniprograma en oz el clasico hola mundo, que su sintaxsis seria asi:

declare
{Browse 'Hello World'}

No encontre ningun tutorial para Oz :(

domingo, 21 de noviembre de 2010

Lenguaje GO (puntos extra)

¿Que es GO?

Es un lenguaje de programacion multiparadigmico, GO proviene de la fusión de varios lenguajes de familias de donde desciende, entre ellos el famoso C. Aún asi incorpora elementos de Python así como de la familia de  Pascal/Modula/Oberon entre otros programas dinámicos.

Cabe mencionar que Francis McCabe creó Go! en el año 2003; sin embargo, aún no ha registrado el nombre

Según podemos ver en la web de Go, este proyecto combina el rendimiento y las prestaciones de seguridad propios de un lenguaje compilado como C++ con la velocidad de un lenguaje dinámico como Python.

El proyecto Go, concebido inicialmente para poder escribir de forma optimizada el software que Google utiliza internamente, esta siendo desarrollado, entre otras razones, para dar respuesta a las necesidades de programadores que se posicionan contra la complejidad de sistemas como Java y C++.

La sintaxis del lenguaje de programación Go es muy parecida a la de C.

Ejemplo

El tan famoso Hola mundo

package main
 
import "fmt"
 
func main()
{
  fmt.Printf("Hola, mundo\n")
}
Tutorial
 
Aqui les dejo un tutorial para el lenguaje Go:
 
Tutorial GO

Algol (puntos extra)

¿Que es Algol?

Se denomina Algol a un lenguaje de programación. La voz es un acrónimo de las palabras inglesas Algorithmic Language (lenguaje algorítmico).
 
Fue muy popular en las universidades durante los años 60s, pero no llegó a cuajar como lenguaje de utilización comercial. Sin embargo, Algol influyó profundamente en varios lenguajes posteriores
que sí alcanzaron gran difusión, como Pascal, C y Ada.

Hacia 1965 dos corrientes se distinguieron sobre el tema de un sucesor para Algol. Como resultado se definieron los lenguajes Algol W que es un lenguajeminimalista, rápidamente implementado y distribuido y, por otra parte,Algol 68 que para la época está en la frontera entre un lenguaje para programar en él y un lenguaje para investigar sobre él.

Existian 3 tipos de algol lo cuales eran:
  • Algol
  • Algol W
  • Algol 68


Algol W

Lenguaje elaborado diseñado por Niklaus Wirth y Tony Hoare a partir de los trabajos del grupo ALGOL de la IFIP. Se trata de un lenguaje conciso, simple de implementar, que evita todos los defectos conocidos del lenguaje Algol e incluye sus propias características adicionales.

Algol 68

La definición del lenguaje fue presentada en la reunión del comité ALGOL de la IFIP en 1965. Luego de varios años de revisión del diseño se llegó a una versión definitiva en 1968. Al principal autor es Adriaan van Wijngaarden.

Los objetivos principales de ALGOL 68 son el permitir comunicar algoritmos, el permitir una eficiente ejecución de los mismos en diferentes arquitecturas y el de servir como herramienta para la enseñanza.

Una característica interesante de ALGOL 68 es que su semántica fue definida formalmente antes de ser implementado en base al formalismo llamado gramáticas de dos niveles

Perl (punto Extra)

¿Que es Perl?

Es un lenguaje práctico de extracción y de informes. Es un lenguaje creado por Larry Wall con el objetivo principal de simplificar las tareas de administración de un sistema UNIX, en realidad hoy en día se ha convertido en un lenguaje de propósito general, y una de las principales herramientas de un buen internetero y de un buen webmaster.

Este lenguaje hereda ciertas estructuras de los intérpretes de comandos de UNIX, especialmente el csh, y de otras utilidades estándar, como awk y sed. Aparte de esto, está diseñado para hacer todo lo que hacen cualquiera de ellos y todos ellos juntos, y la mayoría de las veces de forma más simple, comprensible y fácil de depurar (aunque algunas veces no muy fácil de entender). Si alguna vez habeis tratado de escribir un script para el shell, sabéis lo que quiero decir.

Perl es un lenguaje interpretado, aunque en realidad, el intérprete de perl, como todos los intérpretes modernos, compila los programas antes de ejecutarlos. Por eso se habla de scripts, y no de programas, concepto referido principalmente a programas compilados al lenguaje máquina nativo del ordenador y sistema operativo en el que se ejecuta

Un compilador de perl muy utilizado es Active Perl les dejo el link para que los descargen(El que lo desee).

Compilador

Tambien les dejo un tutorial para que lo chequen no es en pdf:

Tutorial Perl

Fortran(Puntos Extra)

¿Que es Fortran?

Es un lenguaje de programación alto nivel de propósito general, imperativo, que está especialmente adaptado al cálculo numérico y a la computación científica

Es uno de los lenguajes más populares en el área de la computación de alto rendimiento y es el lenguaje usado para programas que evalúan el desempeño (benchmark) y el ranking de los supercomputadores más rápidos del mundo. 

Un poco de historiaEste lenguaje procedural fue el primero de alto nivel (1957), desarrollado por IBM para el IBM 704, el cual esta orientado a la eficiencia en la ejecución se creó la definición estándar del lenguaje en el 66.

Existen otras versiones como:
  • FORTRAN 77
  • FORTRAN 90
Tipos de datos soportados:
  • Numéricos (enteros, reales, complejos y doble precisión).
  • Booleanos (logical)
  • Arreglos
  • Cadenas de caracteres
  • Archivos
Fortran no es sensible a mayúsculas y minúsculas. Los nombre de variables tienen de 6 a 31 caracteres máximo y deben comenzar por una letra. Los blancos son significativos.

Aqui les dejo un tutorial de fortran para aque lo chequen:

Tutorial Fortran

Prolog (Puntos Extra)

¿Que es prolog?

Es un lenguaje de programación lógico e interpretado, bastante conocido en el medio de investigación en Inteligencia Artificial. Es un lenguaje de programación simple pero poderoso desarrollado en la Universidad de Marsella como una herramienta práctica para programación lógica.

Desde mi punto de vista, la ventaja principal es la facilidad para programar, ya que se pueden escribir rapidamente y con pocos errores, programas claramente leíbles.

El sistema Prolog es mantenido por el Departmento de Inteligencia Artificial

Un poco de historia

Se trata de un lenguaje de programación ideado a principios de los años 70 en la Universidad de Aix-Marseille (Marsella, Francia) por los profesores Alain Colmerauer y Philippe Roussel. Nació de un proyecto que no tenía como objetivo la implementación de un lenguaje de programación, sino el procesamiento de lenguajes naturales. Alain Colmerauer y Robert Pasero trabajaban en la parte del procesado del lenguaje natural y Jean Trudel y Philippe Roussel en la parte de deducción e inferencia del sistema. Interesado por el método de resolución SL, Trudel persuadió a Robert Kowalski para que se uniera al proyecto, dando lugar a una versión preliminar del lenguaje Prolog a finales de 1971 y apareciendo la versión definitiva en 1972

Prolog se enmarca en el paradigma de los lenguajes lógicos y declarativos, lo que lo diferencia enormemente de otros lenguajes más populares tales como Fortran, Pascal, C o Java.

Ya les habia dejado un tutorial mas abajo, pero les pongo otro para que lo checen ( ingles):

Tutorial Prolog 2

Godel (Puntos Extra)

Primero que nada Quien es "Kurt Godel"

Kurt Gödel ([kuɹtˈgøːdl]) (28 de abril de 1906 Brno (Brünn), Imperio austrohúngaro (ahora República Checa) – 14 de enero de 1978 Princeton, New Jersey) fue un lógico, matemático y filósofo austriaco-estadounidense.

Reconocido como uno de los más importantes lógicos de todos los tiempos, el trabajo de Gödel ha tenido un impacto inmenso en el pensamiento científico y filosófico del siglo XX. Gödel, al igual que otros pensadores como Bertrand Russell, A. N. Whitehead y David Hilbert intentó emplear la lógica y la teoría de conjuntos para comprender los fundamentos de la matemática. A Gödel se le conoce mejor por sus dos teoremas de la incompletitud, publicados en 1931 a los 25 años de edad, un año después de finalizar su doctorado en la Universidad de Viena.

Kurt Godel



¿Que es Godel?

Es un lenguaje de programación logico, de propósito general que adhiere al paradigma de la programación lógica.

Es un lenguaje fuertemente tipado, con un sistema de tipos basado en many-sorted logic con polimorfismo parametrizado. Se le dio ese nombre en honor al lógico Kurt Gödel.

Godel tiene un sistema de módulos; permite enteros y racionales de precisión arbitraria y números de punto flotante. Puede resolver restricciones sobre dominios finitos de enteros así como restricciones lineales racionales. Admite procesamiento de conjuntos finitos.

Tiene también una regla flexible de cómputo que admite el operador de poda, que es una generalización del operador commit de los lenguajes de programación concurrentes.

Mercury (puntos extra)

¿Que es Mercury?

Es un lenguaje logico-funcional, es decir, integra "soluciones puras" y computación con información parcial.

Está basado en la programación declarativa pura, un lenguaje de propósito general que fue diseñado para resolver aplicaciones del “mundo real” de forma robusta.

Fue desarrollado por Fergus Henderson, Thomas Conway y Zoltan Somogyi en la universidad de Melbourne el 8 de abril de 1995; la sintaxis es parecida a la de Prolog y soporta polimorfismo.

Usa un sistema estático de chaqueo de tipos similar al de Haskell , pero también soporta tipificación dinámica ya que dispone del tipo universal (UNIV), está definido en la librería estándar en el modulo std_util, con la ayuda de estos predicados type_to_univ/2 y univ_to_type/2 se puede convertir un tipo en universal y viceversa , este tipo universal es usado en situaciones en las que se necesita colecciones heterogéneas

Ventajas

Es un lenguaje puro , comparado con Prolog ,es más declarativo puesto que carece de declaraciones “extra-logicas" como “poda” y E/S imperativa .Permite una optimización mejor del programa .

Lenguaje C (Puntos Extra)


¿Que es el Lenguaje C?

Es un lenguaje de programación creado en 1972 por Dennis M. Ritchie en los Laboratorios Bell como evolución del anterior lenguaje B, a su vez basado en BCPL. Hasta ahora es uno de los lenguajes mas utilizados y de importancia.

El lenguaje C nació en los Laboratorios Bell de AT and T y ha sido asociado con el sistema operativo UNIX, ya que su desarrollo se realizó en este sistema y debido a que tanto UNIX como el propio compilador C y la casi totalidad de los programas y herramientas de UNIX, fueron escritos en C. Su eficacia y su claridad han hecho que el lenguaje ensamblador apenas haya sido utilizado en UNIX.  

Hasta hoy es uno de los lenguajes de programación mas aceptados por los programadores, por que hace una conjugación en lenguaje de alto nivel y lenguaje máquina.

Los tipos de datos basicos son:
  • "CHAR" (carácter)
  • "INT" (enteros)
  • "FLOAT" (Reales en simple presición) 
  •  "DOUBLE" (Reales en doble Presición)
  • "SHORT" (Enteros de longitud<=longitud de un int)
  • "LONG" (Enteros de longitud >= longitud de un entero)
  • "UNSIGNED" (Enteros sin signo)

Con la popularidad de las microcomputadoras muchas compañías comenzaron implementar su propio C por lo cual surgieron discusiones  entre sí. Por esta razón ANSI, estableció un comité en 1983 para crear una definición no buena del lenguaje C e independiente de la máquina que pudiera utilizarse en todos los tipos de C.

Algunos de las C existentes son:
  1.  
  2. -Quick C
  3. -C++
  4. -Turbo C
  5. -Turbo C ++
  6. -Borland C
  7. -Borland C++
  8. -Microsoft C
Librerias C

C, constas de librerias para que pueda liberar algunas palabras recervadas, tienes que ponerlas librerias al principio de cada programas para que pueda correr el programa dependiento de tus palabras recervadas, algunas librerias que hay son:

  
  • string.h

   
  • math.h

   
  • stdio.h

   
  • time.h

   
  • stdlib.h

   
  • ctype.h

   
  • locale.h

   
  • signal.h

   
  • setjmp.h



Cabe destacar que hay nombres que no se pueden utilizar pr ser palabras reservadas del lenguaje C, por ejemplo algunas podrian ser:

auto            do            goto           signed            break       case      char       const         defaul      for while            if               swith           doubl               else             enum    float       int             long          short union            void          struct           sizeof               typedef

cuenta con operadores aritmeticos como son los

+,-                 suma y resta
*,/,%             multiplicación, división, modulo

 If

Estructura de el if en lenguaje C es:

If(condicion)
operacion;

For

Estructura de un for en lenguaje C es:
For(i=v;i(rango); i(++,--))
{
Proceso;
}

Funciones

En lenguaje C también puedes declarar funciones, seria de la siguiente manera:

Tipo-de-resultado nombre-de-funcion(parametros)
{
Instrucciones;
}

Arreglos

Tambien en lenguaje C se pueden declarar arreglos, seria de la siguiente manera:
Main()
{
Int A[10]; /* declaración de arreglo entero de 10 elementos
Float[5];  /* declaración de arreglo real de 5 elementos
}

Esas y muchas mas instrucciones tiene el lenguaje C, puse esas por que son las mas importantes, pero pueden aver mucho mas, como las typedef, struct, swich etc.

Ejemplo

#include
/* declaracion de funciones */
void leer_datos();
void inciso_a();
void inciso_b();
void inciso_c();
void inciso_d();

/* declaracion de variables globales */
int I, J, FILA, COLUMNA, EXAMENES, ALUMNOS,MAYORES[10];
int CONTAR,POSICION;
float CAL[10][10], PROMEDIO[10],MAYOR,PROM_EX[10],SUMA;
float APROBADOS,REPROBADOS,PORC_APROBADOS, PORC_REPROBADOS;

main()
{

   /* llamada a las funciones */
   leer_datos();
   inciso_a();
   inciso_b();
   inciso_c();
   inciso_d();
} /* fin de la funcion main() */


/* ------------------------------------------- */
/* definicion de funciones */

void leer_datos()
{

  printf("¨Cuantos Alumnos son? \n");
  scanf("%d",&ALUMNOS);
  printf("¨Cuantos Examenes son? \n");
  scanf("%d",&EXAMENES);
  for(I=1;I<=ALUMNOS;I++)
  {
    
     printf("Dame las Calificaciones del Alumno # %d\n",I);
     for(J=1;J<=EXAMENES;J++)
     {
        do{
               printf("Dame la calififacion del Examen %d\n",J);
           scanf("%f",&CAL[I][J]);
               if(CAL[I][J]<0 || CAL[I][J]>100)
               {
                  printf("Calificacion Invalida,");
                  printf("favor de insertar otro numero\n");
               } /* fin del if */
             }while(CAL[I][J]<0 || CAL[I][J]>100);
     } /* fin del for(J=1;J<=EXAMENES;J++) */
  } /* fin del for(I=1;I<=ALUMNOS;I++) */
  printf("\n\nPulse cualquier tecla para continuar\n");
  getche();
  return;
} /* fin de la funcion leer_datos */

/* ------------------------------------------- */
void inciso_a()
{
 
   SUMA=0;
   for(I=1;I<=ALUMNOS;I++)
   {
     for(J=1;J<=EXAMENES;J++)
     {
             SUMA=SUMA+CAL[I][J];
     } /* fin del for(J=1;J<=EXAMENES;J++) */
     PROMEDIO[I]=SUMA/EXAMENES;
     SUMA=0;
   } /* fin del for(I=1;I<=ALUMNOS;I++) */

   FILA=4;
   COLUMNA=8;
   printf("Promedios por Alumno\n");
   for(J=1;J<=EXAMENES;J++)
   {
      printf("EX%d",J);
      COLUMNA=COLUMNA+10;
   } /* fin del for(J=1;J<=EXAMENES;J++)*/
   printf("Promedio");

   FILA=5;
   for(I=1;I<=ALUMNOS;I++)
   {
     COLUMNA=5;
     for(J=1;J<=EXAMENES;J++)
     {
            printf("%8.2f",CAL[I][J]);
            COLUMNA=COLUMNA+10;
     } /* fin del for(J=1;J<=EXAMENES;J++) */
     printf("Alumno #%d=%8.2f\n",I,PROMEDIO[I]);
     FILA=FILA+1;
  } /* fin del for(I=1;I<=ALUMNOS;I++) */
  printf("\n\nPulse cualquier tecla para continuar\n");
  getche();
  return;
} /* fin de la funcion inciso_a */

/* ------------------------------------------- */
void inciso_b()
{
   /* tercer examen */
   J=3;
   MAYOR=CAL[1][J];
   for(I=2;I<=ALUMNOS;I++)
   {
       if(CAL[I][J]>MAYOR)
       {
              MAYOR=CAL[I][J];
       } /* fin del if() */
   } /* fin del for(I=1;I<=ALUMNOS;I++) */

   for(I=1;I<=ALUMNOS;I++)
   {
       if(CAL[I][J]==MAYOR)
       {
               MAYOR=CAL[I][J];
               CONTAR=CONTAR+1;
               MAYORES[CONTAR]=I;
       } /* fin del if() */
   } /* fin del for(I=1;I<=ALUMNOS;I++) */

   printf("Alumnos con la calificacion mas Alta en el Tercer Examen\n");
   for(I=1;I<=CONTAR;I++)
   {
     printf("Alumno Numero %d\n",MAYORES[I]);
   } /* fin del for(I=1;I<=CONTAR;I++) */
   printf("\n\nPulse cualquier tecla para continuar\n");
   getche();
   return;
} /* fin de la funcion inciso_b */

/* ------------------------------------------- */
void inciso_c()
{
   SUMA=0;
   for(I=1;I<=ALUMNOS;I++)
   {
     for(J=1;J<=EXAMENES;J++)
     {
             PROM_EX[J]=PROM_EX[J]+CAL[I][J];
     } /* fin del for(J=1;J<=EXAMENES;J++) */
   } /* fin del for(I=1;I<=ALUMNOS;I++) */

   for(J=1;J<=EXAMENES;J++)
   {
      PROM_EX[J]=PROM_EX[J]/EXAMENES;
      printf("Promedio en el examen #%d = %8.2f\n",J,PROM_EX[J]);
   } /* fin del for for(J=1;J<=EXAMENES;J++) */

   MAYOR=PROM_EX[1];
   for(I=2;I<=ALUMNOS;I++)
   {
     if(PROM_EX[I]>MAYOR)
       {
              MAYOR=PROM_EX[I];
              POSICION=I;
       } /* fin del if() */
   } /* fin del for(I=2;I<=ALUMNOS;I++) */
   printf("El Examen del promedio mas alto es %d con %8.2f\n",POSICION,MAYOR);
   printf("\n\nPulse cualquier tecla para continuar\n");
   getche();
   return;
} /* fin de la funcion inciso_c */


/* ------------------------------------------- */
void inciso_d()
{
 
   for(I=1;I<=ALUMNOS;I++)
   {
      if(PROMEDIO[I]>=70)
      {
             APROBADOS=APROBADOS+1;
      }
      else
      {  REPROBADOS=REPROBADOS+1;

      } /* fin del if() */
   } /* fin del for(I=1;I<=ALUMNOS;I++) */

   PORC_APROBADOS=APROBADOS/ALUMNOS*100;
   PORC_REPROBADOS=REPROBADOS/ALUMNOS*100;
   printf("Aprobados  = %8.2f  Porcentaje Aprobados=%8.2f\n",APROBADOS,PORC_APROBADOS);
   printf("Reprobados = %8.2f  Porcentaje Reprobados=%8.2f\n",REPROBADOS,PORC_REPROBADOS);
   printf("\n\nPulse cualquier tecla para volver a la pantalla de edicion \n");
   getche();
   return;
} /* fin de la funcion inciso_d */

Ejecucion