domingo, 20 de octubre de 2013

-Paradigmas

¿Que es un paradigma?

Un paradigma de programación es una propuesta tecnológica que es adoptada por una comunidad de programadores cuyo núcleo central es incuestionable en cuanto a que únicamente trata de resolver uno o varios problemas claramente delimitados. 

Es un estilo de programación empleado. La resolución de estos problemas debe suponer consecuentemente un avance significativo en al menos un parámetro que afecte a la ingeniería de software.

 Tiene una estrecha relación con la formalización de determinados lenguajes en su momento de definición.


-Tipos de paradigmas de programación más comunes:




  • Programación Imperativa o por procedimientos:
La programación imperativa, en contraposición a la programación declarativa es un paradigma de programación que describe la programación en términos del estado del programa y sentencias que cambian dicho estado. Los programas imperativos son un conjunto de instrucciones que le indican al computador cómo realizar una tarea.

La implementación de hardware de la mayoría de computadores es imperativa; prácticamente todo el hardware de los computadores está diseñado para ejecutar código de máquina, que es nativo al computador, escrito en una forma imperativa.

Los lenguajes imperativos de alto nivel usan variables y sentencias más complejas, pero aún siguen el mismo paradigma. Las recetas y las listas de revisión de procesos, a pesar de no ser programas de computadora, son también conceptos familiares similares en estilo a la programación imperativa; donde cada paso es una instrucción.

Los lenguajes de paradigmas imperativos son los siguientes: 
PerlPhytonJavaEuphoriaFenix , ClipperPascal.




  • Programación Funcional:
En ciencias de la computación, la programación funcional es un paradigma de programación declarativa basado en la utilización de funciones aritméticas que no maneja datos mutables o de estado. 

Enfatiza la aplicación de funciones, en contraste con el estilo de programación imperativa, que enfatiza los cambios de estado. La programación funcional tiene sus raíces en el cálculo lambda, un sistema formal desarrollado en los 1930s para investigar la definición de función, la aplicación de las funciones y la recursión. 

Muchos lenguajes de programación funcionales pueden ser vistos como elaboraciones del cálculo lambda.

Los lenguajes de paradigmas funcional son los siguientes: Perl.



  • Programación Lógica:
La programación lógica es un tipo de paradigmas de programación dentro del paradigma de programación declarativa

El resto de los subparadigmas de programación dentro de la programación declarativa son: programación funcionalprogramación con restricciones, programas DSL (de dominio específico) e híbridos.

La programación funcional se basa en el concepto de función (que no es más que una evolución de los predicados), de corte más matemático. La programación lógica gira en torno al concepto de predicado, o relación entre elementos.

Los lenguajes de paradigmas lógicos son los siguientes: PrologPascal.



  • Programación Orientado a Objetos:
La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa los objetos en sus interacciones, para diseñar aplicaciones y programas informáticosEstá basado en varias técnicas, incluyendo herenciacohesiónabstracciónpolimorfismoacoplamiento y encapsulamiento

Su uso se popularizó a principios de la década de los años 1990. En la actualidad, existe una gran variedad de lenguajes de programación que soportan la orientación a objetos.

Los lenguajes de paradigmas orientado a objetos son los siguientes: PhytonLenguaje DJavaFenixSimula.











-Perl:


Historia:
Perl es un lenguaje de programación diseñado por Larry Wall en 1987. Perl toma características del lenguaje C, del lenguaje interpretado bourne shell (sh), AWK, sed, Lisp y, en un grado inferior, de muchos otros lenguajes de programación.
Estructuralmente, Perl está basado en un estilo de bloques como los del C o AWK, y fue ampliamente adoptado por su destreza en el procesado de texto y no tener ninguna de las limitaciones de los otros lenguajes de script.

Caracteristicas:
La estructura completa de Perl deriva ampliamente del lenguaje C. Perl es un lenguaje imperativo, con variables, expresiones, asignaciones, bloques de código delimitados por llaves, estructuras de control y subrutinas.
Perl también toma características de la programación shell. Todas las variables son marcadas con un Sigilo precedente (Sigil, en inglés). Los sigilos identifican inequívocamente los nombres de las variables, permitiendo a Perl tener una rica sintaxis. Notablemente, los sigilos permiten interpolar variables directamente dentro de las cadenas de caracteres (strings). Como en los shell, Perl tiene muchas funciones integradas para tareas comunes y para acceder a los recursos del sistema.
Perl toma las listas del Lisp, hash (memoria asociativa) del AWK y expresiones regulares del sed. Todo esto simplifica y facilita todas las formas del análisis sintáctico, manejo de texto y tareas de gestión de datos.
En Perl 5, se añadieron características para soportar estructuras de datos complejas, funciones de primer orden (p. e. clausuras como valores) y un modelo de programación orientada a objetos. Éstos incluyen referencias, paquetes y una ejecución de métodos basada en clases y la introducción de variables de ámbito léxico, que hizo más fácil escribir código robusto (junto con el pragma strict). Una característica principal introducida en Perl 5 fue la habilidad de empaquetar código reutilizable como módulos. Larry Wall indicó más adelante que "la intención del sistema de módulos de Perl 5 era apoyar el crecimiento de la cultura Perl en vez del núcleo de Perl".
Todas las versiones de Perl hacen el tipificado automático de datos y la gestión de memoria. El intérprete conoce el tipo y requerimientos de almacenamiento de cada objeto en el programa; reserva y libera espacio para ellos según sea necesario. Las conversiones legales de tipo se hacen de forma automática en tiempo de ejecución; las conversiones ilegales son consideradas errores fatales.

Tipos de datos:
Perl tiene tres tipos de datos: escalares, listas y hashes:
  • Un escalar es un solo valor; puede ser un número, un string (cadena de caracteres) o una referencia
  • Una lista es una colección ordenada de escalares (una variable que almacena una lista se llama array)
  • Un hash, o memoria asociativa, es un mapeo de strings a escalares; los strings se llaman claves y los escalares valores.
Todas las variables están precedidas por un sigilo, que identifica el tipo de dato que es accedido (no el tipo de dato de la misma variable). Se puede usar el mismo nombre para variables de diferentes tipos, sin que tengan conflictos.
Paradigma:
Perl: Imperativo, orientado a objetos y funcional.


-Python:


Historia:
Python fue creado a finales de los ochenta por Guido van Rossum en el Centro para las Matemáticas y la Informática (CWI, Centrum Wiskunde & Informatica), en los Países Bajos, como un sucesor del lenguaje de programación ABC, capaz de manejar excepciones e interactuar con el sistema operativo Amoeba.
El nombre del lenguaje proviene de la afición de su creador por los humoristas británicos Monty Python.
Van Rossum es el principal autor de Python, y su continuo rol central en decidir la dirección de Python es reconocido, refiriéndose a él como Benevolente Dictador Vitalicio (en inglés: Benevolent Dictator for Life, BDFL).
En 1991, van Rossum publicó el código de la versión 0.9.0 en alt.sources. En esta etapa del desarrollo ya estaban presentes clases con herencia, manejo de excepciones, funciones y los tipos modulares, como: strlistdict, entre otros. Además en este lanzamiento inicial aparecía un sistema de módulos adoptado de Modula-3; van Rossum describe el módulo como “una de las mayores unidades de programación de Python”.El modelo de excepciones en Python es parecido al de Modula-3, con la adición de una cláusula else.3 En el año 1994 se formó comp.lang.python, el foro de discusión principal de Python, marcando un hito en el crecimiento del grupo de usuarios de este lenguaje.

Caracteristicas:
Python usa tipado dinámico y conteo de referencias para la administración de memoria.
Una característica importante de Python es la resolución dinámica de nombres; es decir, lo que enlaza un método y un nombre de variable durante la ejecución del programa (también llamado enlace dinámico de métodos).
Otro objetivo del diseño del lenguaje es la facilidad de extensión. Se pueden escribir nuevos módulos fácilmente en C o C++. Python puede incluirse en aplicaciones que necesitan una interfaz programable.
Aunque la programación en Python podría considerarse en algunas situaciones hostil a la programación funcional tradicional del Lisp, existen bastantes analogías entre Python y los lenguajes minimalistas de la familia Lisp como puede ser Scheme.

Tipo de paradigma:
Python es un lenguaje de programación multiparadigma. 
Esto significa que más que forzar a los programadores a adoptar un estilo particular de programación, permite varios estilos: programación orientada a objetos, programación imperativa y programación funcional. Otros paradigmas están soportados mediante el uso de extensiones.


File:Python logo and wordmark.svg

-D (Lenguaje de programación):


D es un lenguaje de programación de uso general desarrollado por Walter Bright cuya primera versión apareció en 1999. Se origina como un rediseño de C++, con un enfoque más pragmático, pero no es un lenguaje puramente derivado del anterior. D ha mantenido algunas características de C++ y también está influido por otros conceptos de otros lenguajes como JavaC# y Eiffel. Una versión estable fue lanzada el 2 de enero de 2007.


Características:
D está siendo diseñado con lecciones aprendidas del uso de C++ en vez de ser diseñado desde una perspectiva teórica. Aunque usa muchos de los conceptos de C/C++ también descarta algunos, y por lo tanto no es compatible con código escrito en C o C++. D retiene la habilidad de C++ de hacer código de bajo nivel, permitiendo incluir código en ensamblador. La herencia múltiple de C++ es reemplazada por herencia simple e interfaces y 'mixins'. La sintaxis de declaración y la sintaxis para las expresiones se parecen a las de C++.
El soporte del lenguaje ensamblador demuestra una de las diferencias entre D con respecto a otros lenguajes como Java y C#. Esto permite incluir código específico de la máquina con código D, una técnica comúnmente usada por programadores de software de sistema para acceder a características de bajo nivel necesarias para interactuar directamente con el hardware, permitiendo escribir software como sistemas operativos y drivers.
D incluye soporte para comentarios de documentación, pero hasta ahora sólo el compilador entregado por Digital Mars implementa un generador de documentación.

Orientado a objetos:
La programación orientada a objetos está basada en herencia simple, con todas las clases derivadas de la clase Object. D no soporta herencia múltiple; en vez de eso, usa interfaces parecidas a las de Java, que son comparables a las clases abstractas de C++.

Metaprogramación:
Metaprogramación es soportada por una combinación de plantillas, ejecución de funciones en tiempo de compilación, tuplas y 'mixins' de cadena. Soporta CTFE (evaluación de funciones en tiempo de compilación).

Implementacion:
Las implementaciones actuales de D compilan el código directamente a código máquina para lograr una ejecución eficiente.
Cambios al lenguaje no se hacen regularmente desde la versión 1.0. El diseño está virtualmente congelado, y nuevos lanzamientos se concentran en resolver bugs existentes. El compilador oficial de Walter Bright define el lenguaje.
  • DMD: El compilador de Digital Mars, el compilador oficial de D. El front end está bajo la licencia Artistic License y la licencia GNU GPL; las fuentes para el front end son distribuidas con los binarios del compilador. El back end es propietario, pero el código es abierto.
  • GDC: Un front end para el back end GCC, construido usando las fuentes del compilador DMD. Snapshots soportan la versión 2.0 del lenguaje.
  • LDC: Un compilador basado en DMD y usa LLVM como back end. El backend LLVM permite que LDC logre optimizar el código alcanzando rendimiento similar a C/C++ e incluso superándolo en ocasiones.

Herramientas del desarrollo:
D todavía no está soportado en muchos entornos de desarrollo, lo cual es un problema esencial para muchos usuarios. Editores que pueden ser usados incluyen a Entice Designer, emacs, vim, SciTE y Zeus entre otros. Vim soporta el resaltado de sintaxis y completado de código (a través de ctags parcheados). Code::Blocks incluye soporte parcial del lenguaje.
Hay dos plu-gins en desarrollo para Eclipse, Descent y Mmrnmhrm.
Adicionalmente, hay IDEs escritas en el propio D como Poseidon, que incluye completado de código, resaltado de sintaxis y depurador.
Aplicaciones escritas en D pueden ser depuradas con cualquier depurador de C o C++, como GDB o WinDbg, aunque soporte para varias características fundamentales de D es limitado. Un depurador con soporte explícito para D es Ddbg para Windows. El depurador comercial ZeroBUGS para Linux tiene soporte experimental para D. Ddbg puede ser usado con varios IDEs o desde la línea de comandos, ZeroBUGS tiene su propia interfaz gráfica.


viernes, 18 de octubre de 2013

-Java:


El lenguaje de programación Java fue originalmente desarrollado por James Gosling de Sun Microsystems (la cual fue adquirida por la compañía Oracle) y publicado en el 1995 como un componente fundamental de la plataforma Java de Sun Microsystems. su sintaxis deriva mucho de C y C++, pero tiene menos facilidades de bajo nivel que cualquiera de ellos. 

Las aplicaciones de Java son generalmente compiladas a bytecode (clase Java) que puede ejecutarse en cualquier máquina virtual Java (JVM) sin importar la arquitectura de la computadora subyacente.

Independencia de la plataforma: 

La segunda característica, la independencia de la plataforma, significa que programas escritos en el lenguaje Java pueden ejecutarse igualmente en cualquier tipo de hardware. Este es el significado de ser capaz de escribir un programa una vez y que pueda ejecutarse en cualquier dispositivo, tal como reza el axioma de Java, ‘’’write once, run anywhere’’’.

Componentes:


  • Bibliotecas de Java, que son el resultado de compilar el código fuente desarrollado por quien implementa la JRE, y que ofrecen apoyo para el desarrollo en Java. Algunos ejemplos de estas bibliotecas son:
    • Las bibliotecas centrales, que incluyen:
      • Una colección de bibliotecas para implementar estructuras de datos como listas, arrays, árboles y conjuntos.
      • Bibliotecas para análisis de XML.
      • Seguridad.
      • Bibliotecas de internacionalización y localización.
    • Bibliotecas de integración, que permiten la comunicación con sistemas externos. Estas bibliotecas incluyen:
      • La API para acceso a bases de datos JDBC (Java DataBase Conectivity).
      • La interfaz JNDI (Java Naming and Directory Interface) para servicios de directorio.
      • RMI (Remote Method Invocation) y CORBA para el desarrollo de aplicaciones distribuidas.
    • Bibliotecas para la interfaz de usuario, que incluyen:
      • El conjunto de herramientas nativas AWT (Abstract Windowing Toolkit), que ofrece componentes GUI (Graphical User Interface), mecanismos para usarlos y manejar sus eventos asociados.
      • Las Bibliotecas de Swing, construidas sobre AWT pero ofrecen implementaciones no nativas de los componentes de AWT.
      • APIs para la captura, procesamiento y reproducción de audio.
  • Una implementación dependiente de la plataforma en que se ejecuta de la máquina virtual de Java (JVM), que es la encargada de la ejecución del código de las bibliotecas y las aplicaciones externas.
  • Plugins o conectores que permiten ejecutar applets en los navegadores Web.
  • Java Web Start, para la distribución de aplicaciones Java a través de Internet.
  • Documentación y licencia. 

Java se enmarca en el paradigma  imperativo y orientado a objetos.

Es un lenguaje de programación de propósito generalconcurrenteorientado a objetos basado en clases que fue diseñado específicamente para tener tan pocas dependencias de implementación como fuera posible.

-Prolog:


-Introducción:

En Octubre de 1981, el gobierno japonés y más concretamente el Ministerio Japonés de Comercio Internacional e Industria (MITI), anuncia la puesta en marcha de un proyecto revolucionario equiparable a la carrera del espacio norteamericana.
Están dispuestos a ofrecer al mundo la siguiente generación, la Quinta Generación de Ordenadores. Unas máquinas de Inteligencia Artificial que pueden pensar, sacar conclusiones, emitir juicios e incluso comprender las palabras escritas y habladas.
Con este fin se crea el ICOT (Institute for New Generation Computer Technology) constituido por cuarenta brillantes investigadores de las más importantes empresas, y se les dota con todos los medios necesarios para construir la nueva clase de supercomputadoras.

El papel del PROLOG:

La Quinta Generación prevé máquinas diseñadas para el tratamiento lógico, de capacidades análogas a las capacidades de anteriores generaciones de ordenadores para tratar operaciones aritméticas. Se trata de ordenadores que tienen el PROLOG como lenguaje nativo (lenguaje máquina), con capacidad para procesar millones de inferencias lógicas por segundo (LIPS).

Programación Lógica:

La programación lógica es un paradigma de los lenguajes de programación en el cual los programas se consideran como una serie de aserciones lógicas.
De esta forma, el conocimiento se representa mediante reglas, tratándose de sistemas declarativos.
Una representación declarativa es aquélla en la que el conocimiento está especificado, pero en la que la manera en que dicho conocimiento debe ser usado no viene dado. El más popular de los sistemas de programación lógica es el PROLOG.

Historia:

Se trata de un lenguaje de programación ideado a principios de los años 70 en la Universidad de Aix-Marseille I (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. Esta primera versión de Prolog fue programada en ALGOL W.

Inicialmente se trataba de un lenguaje totalmente interpretado hasta que, en 1983, David H.D. Warren desarrolló un compilador capaz de traducir Prolog en un conjunto de instrucciones de una máquina abstracta denominada Warren Abstract Machine, o abreviadamente, WAM. Desde entonces Prolog es un lenguaje semi-interpretado.


-Fortran:


 Fortran (previamente FORTRAN) (contracción del inglés Formula Translating System) es un lenguaje de programación alto nivel de propósito general, procedimental e imperativo, que está especialmente adaptado al cálculo numérico y a la computación científica.

Historia:

A finales de 1953, John W. Backus sometió una propuesta a sus superiores en IBM para desarrollar una alternativa más práctica al lenguaje ensamblador para programar el computador central IBM 704. El histórico equipo FORTRAN de Backus consistió en los programadores Richard Goldberg, Sheldon F. Best, Harlan Herrick, Peter Sheridan, Roy Nutt, Robert Nelson, Irving Ziller, Lois Haibt y David Sayre.

A mediados de 1954 fue terminada una especificación del borrador para The IBM Mathematical Formula Translating System.

El primer manual para el FORTRAN apareció en octubre de 1956, porque los clientes eran reacios a usar un lenguaje de programación de alto nivel a menos que su compilador pudiera generar código cuyo desempeño fuera comparable al de un código hecho a mano en lenguaje ensamblador.

Principales caracteristicas:

El lenguaje fue diseñado teniendo en cuenta que los programas serían escritos en tarjetas perforadas de 80 columnas. Así por ejemplo, las líneas debían ser numeradas y la única alteración posible en el orden de ejecución era producida con la instrucción goto. Estas características han evolucionado de versión en versión. Las actuales contienen subprogramas, recursión y una variada gama de estructuras de control.

 Los tipos de datos basicos en fortran son los siguientes:


1-Character: cadena de uno o varios caracteres.
2-Integer: numero enteros, que puedan tomar todo los valores positivos o negativos entre limites que dependen de la computadora y el copilador.
3-Logical: valores logicos o booleanos, que toman solamente unos de  los dos valores .false.(falso) o .true. (verdad).
4-Real: numeros reales que puedan tomar valores positivos o negativos entre limites que dependen de la computadora y el compilador.
5-Complex: numero complejos compuestos de una parte real y una parte imaginaria,  ambas partes de tipo real.

 Plataforma:


A mediados de los años setenta se proporcionaron virtualmente cada computadora, mini o mainframe, con un sistema FORTRAN 66 normal. Era por consiguiente posible escribir programas en Fortran en cualquier sistema y estar bastante seguro que éstos pudieran moverse para trabajar en cualquier otro sistema bastante fácil. Esto, y el hecho que pudieran procesarse programas de Fortran muy eficazmente. 

Fortran se enmarca en el paradigma Imperativo, lo que lo diferencia enormemente de otros lenguajes más populares tales como  Pascal, C o Java.

-EUPHORIA:

EUPHORIA (acrónimo del inglés: "End User Programming with Hierarchical Objects for Robust Interpreted Applications"), es un lenguaje de programación interpretado, de alto nivel, estructurado, imperativo, y motor de juego, simultáneamente, creado por Robert Craig en 1993 como su tesis doctoral, y luego comercializado por la firma RDS (Rapid Deployment Software). Euphoria es de dominio público y de código abierto. El código fuente del intérprete Euphoria está escrito completamente en lenguaje Euphoria.

Historia:

La primera versión de EUPHORIA fue publicada en julio de 1993, siendo un proyecto de código cerrado. A partir de la versión 3.0.0, lanzada el 19 de septiembre de 2006, pasó a ser totalmente código abierto (algunas partes del paquete ya estaban en dominio público, desde la versión 2.5 Alpha). Su última versión la 3.1.1 fue lanzada el 22 de agosto de 2007.
Desarrollado inicialmente como un proyecto personal, para inventar un lenguaje de programación desde cero, Euphoria tuvo su primera versión real para un Atari ST  . La versión original para Atari ST, nunca fue lanzada. La primera aparición mundialmente visible del lenguaje, fue para el sistema DOS de 32 bits. 

Versiones actuales, además del DOS de 32 bits, soportan Microsoft Windows, Linux y FreeBSD. Los programadores involucrados en el proyecto (GNU)están actualmente trabajando para el desarrollo de versiones de 64 bits. Con el lanzamiento de la versión 2.5 Alpha, lanzada el 15 de noviembre de 2004, el intérprete de Euphoria, fue dividido en tres partes: un analizador sintáctico, un front-end, y un back-end, las primeras dos partes escritas en Euphoria y liberadas al dominio público y la tercera escrita en C se mantuvo secreta y solo se vendía bajo una licencia bastante restrictiva.

 

Características:

Euphoria fue desarrollado para que cumpliera con las siguientes premisas:
  • Simplicidad: facilidad para su aprendizaje y uso rápidos.
  • Poder: capacidades de programación en bajo nivel necesarias para acceder a rutinas del sistema operativo, memoria RAM, dispositivos, puertos y BIOS. Enlace simple con rutinas C.
  • Seguridad: extenso soporte de depuración, chequeo de tipo de datos y gestión de memoria automática.
  • Flexibilidad: soporte para tipos implícitos sencillos, potentes, dinámicos y también otros definidos por el usuario.
  • Velocidad: velocidad suficiente para rivalizar con los lenguajes compilados puros.
  • Eficiencia: desarrollo rápido de aplicaciones eficientes y robustas, con muy escaso consumo de recursos hardware.
  • Gestión de Memoria: Gestión automática de memoria virtual, independientemente del sistema operativo.
 Tipos de datos:
Euphoria tiene un tipo de dato básico:
  • object: Un tipo de dato genérico que puede contener cualquier tipo de elemento, y puede ser cambiado durante la ejecución. Eso significa que si el programador tiene un objeto llamado X que posee el valor 3.172, después el programador puede darle a X el valor "ABC".
-Adicionalmente, Euphoria tiene tres tipos de dato "especializados":
  • atom: números implementados como enteros o fracionários de 32 bit o 64 bit, dependiendo del valor actual. Almacena los valores enteros en 4 bytes.
  • integer: una forma especial de atom, restricta a valores enteros de 31 bits. Ese tipo de dato es más eficiente que el atom, pero no puede contener la misma extensión. Los caracteres son almacenados como enteros.
  • sequence: Vector que puede contener cero o más elementos; cada elemento es un objeto. La cantidad de elementos a contener no es fija; el codificador puede agregar o quitar elementos cuando es requerido durante la ejecución.


-Proyecto Fenix:


Fenix, o el proyecto Fenix, es el nombre de un proyecto multiplataforma de software libre para crear un compilador alternativo al lenguaje DIV parte fundamental de la suite para el desarrollo de videojuegos Div Games Studio

Sin embargo, con el paso del tiempo se han ido añadiendo nuevas características que entre otras cosas, ha derivado en una versión hasta cierto punto incompatible con el lenguaje DIV original y en un nuevo proyecto más ambicioso.

Historia:

En la década de los 90 Daniel Navarro Medrano creó una herramienta orientada a la creación de videojuegos de 32 bits bajo MS-DOS. El nuevo lenguaje, de nombre DIV Games Studio, combinaba características de C y Pascal con un entorno completo que permitía la creación y edición de todos los aspectos de los proyectos: programación, edición gráfica y sonora y un largo etc.

Fenix, inicialmente bajo el nombre DIVC y de naturaleza GNU, apareció de la mano de José Luis Cebrián como una herramienta capaz de compilar y ejecutar esos juegos en Linux. El nombre fue cambiado en la versión 0.6 del compilador, que además introducía otras mejoras, como la aparición de un fichero intermedio entre el entorno de compilación y el entorno de ejecución. Ya no era necesario distribuir el código fuente de un juego para poder jugarlo. 

La ventaja principal de esa práctica (similar en concepto a Java) era clara, compilar en una plataforma y ejecutar en muchas.
En la versión 0.71 el proyecto quedó parado, lo que dio lugar a múltiples versiones derivadas que corregían fallos o añadían nuevas características.

La versión oficial de Fenix fue retomada por Slàinte en el año 2002, viejo conocido de la comunidad DIV por ser el webmaster de una de las páginas web más importantes para la comunidad, quien continuó el proyecto bajo el nombre de Fenix - Proyecto 1.0 al que pronto se reincorporaría su creador y cuyo primer objetivo era limpiar el compilador de errores y estabilizarlo. Desde entonces el compilador ha sufrido numerosos cambios y mejoras, dejando de lado la compatibilidad con el lenguaje DIV.

En el actualidad, tras un largo tiempo sin modificaciones, en el año 2006, Fenix ha sido retomado por SplinterGU, el mismo que implemento el primer sistema de dlls. Fenix se encuentra actualmente en la versión 0.92, la cual ya posee mejoras importantes en cuanto a rendimiento, estabilidad, prestaciones, etc.

Debido a la base del proyecto, la biblioteca SDL, ha sido posible portar Fenix a un gran número de plataformas, como el propio Linux, Windows, Mac OS X, BSD, BeOS, PlayStation, GP32, GP2X, Dreamcast y otras, aunque las únicas oficialmente soportadas hoy día son Linux, Windows, Mac OS X y BSD. Otras, como GP32 y GP2X gozan de gran aceptación de sus respectivas comunidades y se mantienen gracias a la dedicación de sus usuarios.


 

Características:

  • Lenguaje interpretado, mezcla de C y Pascal: muy sencillo y potente.
  • Multiplataforma extrema: El intérprete funciona en todas las versiones de 32 bits de Windows, GNU/Linux, Mac OS X, BeOS, BSD, GP32, Dreamcast, PSP, GP2X y, en general, en casi cualquier plataforma que soporte SDL y GCC. Los programas compilados pueden ser intercambiados entre cualquiera de esas plataformas sin necesidad de recompilación.
  • Procesos (programación multihilo).
  • Motor de render 2D por software.
  • Modos gráficos 8 y 16 bits, entre otras cosas permite rotación de sprites, escalado, alpha blending, blendops, blit aditivo y sustractivo, etc.
  • Soporte (incompleto) para Modo 7.
  • Reproducción de sonidos en formato WAV, PCM y Ogg Vorbis.
  • Reproducción de módulos de música en formato IT, MOD y XM.
  • Soporte de librerías DLL en las plataformas que así lo permiten.