Compartir este blog

Buscar

Clasificacion de Interpretes

En lugar de producir un programa objeto como resultado de una traducción, un intérprete realiza las operaciones que implica el programa fuente.



  • Un intérprete no genera un programa equivalente, sino que toma una sentencia del programa fuente en un lenguaje de alto nivel, la traduce al código equivalente y al mismo tiempo la ejecuta.
  • Un intérprete es un programa que analiza y ejecuta simultáneamente el programa fuente, es decir no producen un código objeto, siendo su ejecución simultánea a la del programa fuente.
Comportamiento de un Interprete

Un intérprete es como un compilador, solo que la salida es una ejecución. El programa de entrada se reconoce y ejecuta a la vez. No se produce un resultado físico (código máquina) sino lógico (una ejecución).
Además de que la traducción optimiza el programa acercándolo a la máquina, los lenguajes interpretados tienen la característica de que permiten construir programas que se pueden modificar a sí mismos.

Ventajas de los Interpretes
  • Su principal ventaja es que permiten una fácil depuración. Permiten una mayor interactividad con el código en tiempo de desarrollo.
  • En algunos lenguajes (Smalltalk, Prolog, LISP) está permitido y es frecuente añadir código según se ejecuta otro código, y esta característica solamente es posible implementarla en un intérprete.
  • Puede ser interrumpido con facilidad.
  • Puede ser rápidamente modificado y ejecutado nuevamente.
  • Un Intérprete necesita menos memoria que un compilador.
  • Facilita la búsqueda de errores.
  • En algunos lenguajes está permitido añadir código según se ejecuta otro código.
  • Menor consumo de memoria.
Desventajas de los Interpretes

  • Lentitud de ejecución, ya que al ejecutar a la vez que se traduce no puede aplicarse un alto grado de optimización. Cada instrucción debe ser traducida a código máquina tantas veces como sea ejecutada
  • Durante la ejecución, el intérprete debe residir en memoria ya que no genera código objeto.
  • Tamaño del programa objeto, que exige añadir el intérprete al programa propiamente dicho.

Clasificación de Intérpretes
  • Intérpretes Puros
  • Interpretes Avanzados
  • Interpretes Incrementales
Intérpretes Puros

Los intérpretes puros son los que analizan una sentencia y la ejecutan, y así sucesivamente todo el programa fuente. Fueron los intérpretes desarrollados en la primera generación de ordenadores, pues permitían la ejecución de largos programas con ordenadores de memoria muy reducida, ya que sólo debían contener en memoria el intérprete y la sentencia a analizar y ejecutar. El principal problema de este tipo de intérpretes es que si a mitad del programa fuente se producen errores, se debe de reiniciar el proceso.

Explicación del Interprete Puro
  • En la figura se representa el esquema general de un intérprete puro, donde se puede observar que el lenguaje fuente se traduce a una representación interna (texto o binaria) que puede ser almacenada en memoria o en disco.
  • Esta representación interna tiene todas las instrucciones numeradas o colocadas consecutivamente en estructuras de tamaño fijo (por ejemplo un array o posiciones consecutivas de memoria, o un fichero binario de estructuras de tamaño fijo).
  • Mientras se realiza este paso se puede construir la tabla de etiquetas, que es una tablas que contiene una estructura donde están todas las etiquetas y su posición en el programa fuente (las etiquetas se utilizan tanto en las instrucciones de salto como en las llamadas a procedimientos y funciones).
  • Una vez que este proceso ha finalizado, comienza la ejecución por la primera instrucción del código, que se envía al evaluador de instrucciones, éste la ejecuta (recibiendo datos si es necesario o enviando un mensaje de error).
  • El evaluador de instrucciones también determina la instrucción siguiente a ejecutar, en algunos casos previa consulta a la tabla de etiquetas. En el caso de que no haya saltos (GOTO) o llamadas a procedimientos o funciones se ejecuta la siguiente instrucción a la instrucción en curso.
  • El evaluador de instrucciones puede utilizar dos métodos de evaluación. El método clásico es la evaluación voraz o ansiosa, donde se evalúan las expresiones completamente. Otro método es la evaluación perezosa, evaluándose sólo la parte necesaria de la expresión (el resto no se evalúa).

Interpretes Avanzados

Los intérpretes avanzados o normales incorporan un paso previo de análisis de todo el programa fuente. Generando posteriormente un lenguaje intermedio que es ejecutado por ellos mismos. De esta forma en caso de errores sintácticos no pasan de la fase de análisis.


Explicación del Interprete Avanzado

  • Un ejemplo de intérprete avanzado es el que utiliza el lenguaje Java. Así un programa en lenguaje java (con la extensión .java) se compila y produce uno o varios ficheros con la extensión .class, estos ficheros están en un formato binario denominado bytecode independiente de plataforma, que se interpreta posteriormente.
  • Esto permite que el bytecode se ejecute en cualquier sistema operativo que disponga de un intérprete de bytecode. Dado que la mayor parte de los navegadores de Internet llevan inmerso un intérprete de bytecode, esto ha permitido al lenguaje Java ser uno de los más utilizados en aplicaciones que usen Internet.

Interpretes Incrementales

Algunos lenguajes no se pueden compilar, debido a que entre sus características pueden manejar objetos o funciones que no son conocidos en tiempo de compilación, ya que son creados en ejecución. Para este tipo de lenguajes existen los intérpretes incrementales, que permiten compilar los módulos completamente definidos, y recompilar en tiempo de ejecución los nuevos módulos.

Explicación del Interprete Incremental

  • Los intérpretes incrementales tienen gran interés en los lenguajes que permiten no definir los problemas completamente en tiempo de compilación. En estos casos se utilizan evaluadores parciales que toman como entrada el programa fuente junto con algunos datos (pero no todos), realizándose los cálculos que se pueden hacer con dicho subconjunto de datos, y produciendo una salida que contiene un residuo del programa fuente que se ha introducido.
0

Clasificacion de Compiladores

El programa compilador traduce las instrucciones en un lenguaje de alto nivel a instrucciones que la computadora puede interpretar y ejecutar. Para cada lenguaje de programación se requiere un compilador separado. El compilador traduce todo el programa antes de ejecutarlo. Los compiladores son, pues, programas de traducción insertados en la memoria por el sistema operativo para convertir programas de cómputo en pulsaciones electrónicas ejecutables (lenguaje de máquina).

Tipos compiladores:
  • Una sola pasada: examina el código fuente una vez, generando el código o programa objeto
  • Pasadas múltiples: requieren pasos intermedios para producir un código en otro lenguaje, y una pasada final para producir y optimizar el código producido durante los pasos anteriores.
  • Optimación: lee un código fuente, lo analiza y descubre errores potenciales sin ejecutar el programa.
  • Compiladores incrementales: generan un código objeto instrucción por instrucción (en vez de hacerlo para todo el programa) cuando el usuario teclea cada orden individual. El otro tipo de compiladores requiere que todos los enunciados o instrucciones se compilen conjuntamente.
  • Ensamblador: el lenguaje fuente es lenguaje ensamblador y posee una estructura sencilla.
  • Compilador cruzado: se genera código en lenguaje objeto para una máquina diferente de la que se está utilizando para compilar. Es perfectamente normal construir un compilador de Pascal que genere código para MS-DOS y que el compilador funcione en Linux y se haya escrito en C++.
  • Compilador con montador: compilador que compila distintos módulos de forma independiente y después es capaz de enlazarlos.
  • Autocompilador: compilador que está escrito en el mismo lenguaje que va a compilar. Evidentemente, no se puede ejecutar la primera vez. Sirve para hacer ampliaciones al lenguaje, mejorar el código generado, etc.
  • Metacompilador: es sinónimo de compilador de compiladores y se refiere a un programa que recibe como entrada las especificaciones del lenguaje para el que se desea obtener un compilador y genera como salida el compilador para ese lenguaje. El desarrollo de los metacompiladores se encuentra con la dificultad de unir la generación de código con la parte de análisis.
  • Descompilador: es un programa que acepta como entrada código máquina y lo traduce a un lenguaje de alto nivel, realizando el proceso inverso a la compilación.
0

Introduccion a Compiladores e Interpretes


Contenido

  • Traductores
  • Definiciones
  • Ventajas y desventajas de compiladores
  • Ventajas y desventajas de Interpretes
  • Etapas del proceso de compilación
Traductor:

Un Traductor es un programa que toma como entrada un texto escrito en un lenguaje y da como salida otro texto en un lenguaje diferente.

Tipos de Traductores

  • Traductor
  • Traductor de Idioma
  • Compilador
  • Interprete
  • Preprocesador
  • Interprete de Comandos
  • Ensamblador
  • MacroEnsamblador
  • Conversor de Código
  • AutoCompilador
  • MetaCompilador
  • Descompilador
  • Autómata
  • Gramática
  • Ligador

Ensamblador: 

Es un lenguaje de bajo nivel, donde cada sentencia del lenguaje fuente se traduce a una instrucción en código máquina.

Compilador:

Es un traductor que convierte un texto escrito en un lenguaje de alto nivel a un lenguaje de bajo nivel (código objeto o máquina).

 

Cómo saber si estamos ante un compilador:

Cuando el lenguaje fuente esta en un lenguaje de programación de alto nivel y el objeto generado sea de bajo nivel (ensamblador o código de maquina).


Ventajas de los Compiladores:

  • Produce un código optimizado.
  • La ejecución del programa objeto es mucho mas rápida que si se interpreta el programa fuente.
  • El compilador tiene una visión global del programa, por lo que la información de mensajes de error es más detallada.
  • Se debe ejecutar muchas veces el código fuente para ver los cambios en el resultado.
  • Mayor consumo de memoria.

Intérprete:

Un intérprete es un programa que analiza y ejecuta simultáneamente el programa fuente, es decir no producen un código objeto, siendo su ejecución simultánea a la del programa fuente.

No genera código objeto, analiza y ejecuta directamente cada proposición del código fuente.

Un intérprete es como un compilador, solo que la salida es una ejecución. El programa de entrada se reconoce y ejecuta a la vez. No se produce un resultado físico (código máquina) sino lógico (una ejecución).

Ventajas de los Interpretes

  • Su principal ventaja es que permiten una fácil depuración. Permiten una mayor interactividad con el código en tiempo de desarrollo.
  • En algunos lenguajes (Smalltalk, Prolog, LISP) está permitido y es frecuente añadir código según se ejecuta otro código, y esta característica solamente es posible implementarla en un intérprete.
  • Puede ser interrumpido con facilidad.
  • Puede ser rápidamente modificado y ejecutado nuevamente.
  • Un Intérprete necesita menos memoria que un compilador.
  • Facilita la búsqueda de errores.
  • En algunos lenguajes está permitido añadir código según se ejecuta otro código.
  • Menor consumo de memoria.
  • Lentitud de ejecución, ya que al ejecutar a la vez que se traduce no puede aplicarse un alto grado de optimización.
  • Cada instrucción debe ser traducida a código máquina tantas veces como sea ejecutada
  • Durante la ejecución, el intérprete debe residir en memoria ya que no genera código objeto.
0

Traductor, Compilador o Interprete?

Un traductor es cualquier programa que toma como entrada un texto escrito en un lenguaje, llamado fuente y da como salida otro texto en un lenguaje, denominado objeto.

En el caso de que el lenguaje fuente sea un lenguaje de programación de alto nivel y el objeto sea un lenguaje de bajo nivel (ensamblador o código de máquina), a dicho traductor se le denomina compilador.

Un ensamblador es un compilador cuyo lenguaje fuente es el lenguaje ensamblador. Un intérprete no genera un programa equivalente, sino que toma una sentencia del programa fuente en un lenguaje de alto nivel y la traduce al código equivalente y al mismo tiempo lo ejecuta. Históricamente, con la escasez de memoria de los primeros ordenadores, se puso de moda el uso de intérpretes frente a los compiladores, pues el programa fuente sin traducir y el intérprete juntos daban una ocupación de memoria menor que la resultante de los compiladores. Por ello los primeros ordenadores personales iban siempre acompañados de un intérprete de BASIC (Spectrum, Commodore VIC-20, PC XT de IBM, etc.).

La mejor información sobre los errores por parte del compilador así como una mayor velocidad de ejecución del código resultante hizo que poco a poco se impusieran los compiladores.

Hoy en día, y con el problema de la memoria prácticamente resuelto, se puede hablar de un gran predominio de los compiladores frente a los intérpretes, aunque intérpretes como los incluidos en los navegadores de Internet para interpretar el código JVM de Java son la gran excepción.
0

Resumen Historico de los Compiladores

En 1946 se desarrolló el primer ordenador digital. En un principio, estas máquinas ejecutaban instrucciones consistentes en códigos numéricos que señalan a los circuitos de la máquina los estados correspondientes a cada operación.

Esta expresión mediante códigos numéricos se llamó Lenguaje Máquina, interpretado por un secuenciador cableado o por un microprograma. Pero los códigos numéricos de las máquinas son engorrosos. Pronto los primeros usuarios de estos ordenadores descubrieron la ventaja de escribir sus programas mediante claves más fáciles de recordar que esos códigos numéricos; al final, todas esas claves juntas se traducían manualmente a Lenguaje Máquina. Estas claves constituyen los llamados lenguajes ensambladores, que se generalizaron en cuanto se dio el paso decisivo de hacer que las propias máquinas realizaran el proceso mecánico de la traducción. A este trabajo se le llama “ensamblar el programa”.

Dada su correspondencia estrecha con las operaciones elementales de las máquinas, las instrucciones de los lenguajes ensambladores obligan a programar cualquier función de una manera minuciosa e iterativa. De hecho, normalmente, cuanto menor es el nivel de expresión de un lenguaje de programación, mayor rendimiento se obtiene en el uso de los recursos físicos (hardware).

A pesar de todo, el lenguaje ensamblador seguía siendo el de una máquina, pero más fácil de manejar. Los trabajos de investigación se orientaron entonces hacia la creación de un lenguaje que expresara las distintas acciones a realizar de una manera lo más sencilla posible para el hombre. Así, en 1950, John Backus dirigió una investigación en I.B.M. en un lenguaje algebraico. En 1954 se empezó a desarrollar un lenguaje que permitía escribir fórmulas matemáticas de manera traducible por un ordenador.

Le llamaron FORTRAN (FORmulae TRANslator). Fue el primer lenguaje considerado de alto nivel. Se introdujo en 1957 para el uso de la computadora IBM modelo 704. Permitía una programación más cómoda y breve que lo existente hasta ese momento, lo que suponía un considerable ahorro de trabajo.

Surgió así por primera vez el concepto de un traductor, como un programa que traducía un lenguaje a otro lenguaje. En el caso particular de que el lenguaje a traducir es un lenguaje de alto nivel y el lenguaje traducido de bajo nivel, se emplea el término compilador.

La tarea de realizar un compilador no fue fácil. El primer compilador de FORTRAN tardó 18 años-persona en realizarse y era muy sencillo. Este desarrollo del FORTRAN estaba muy influenciado por la máquina objeto en la que iba a ser implementado. Como un ejemplo de ello tenemos el hecho de que los espacios en blanco fuesen ignorados, debido a que el periférico que se utilizaba como entrada de programas (una lectora de tarjetas perforadas) no contaba correctamente los espacios en blanco.

Paralelamente al desarrollo de FORTRAN en América, en Europa surgió una corriente más universitaria, que pretendía que la definición de un lenguaje fuese independiente de la máquina y en donde los algoritmos se pudieran expresar de forma más simple.

Esta corriente estuvo muy influida por los trabajos sobre gramáticas de contexto libre publicados por Chomsky dentro de su estudio de lenguajes naturales.Con estas ideas surgió un grupo europeo encabezado por el profesor F.L.Bauer (de la Universidad de Munich). Este grupo definió un lenguaje de usos múltiples independiente de una realización concreta sobre una máquina. Pidieron colaboración a la asociación americana A.C.M. (Association for Computing Machinery) y se formó un comité en el que participó J. Backus que colaboraba en esta investigación. De esa unión surgió un informe definiendo un International Algebraic Language (I.A.L.), publicado en Zurich en 1958.

Posteriormente este lenguaje se llamó ALGOL 58 (ALGOritmic Language). En 1969, el lenguaje fue revisado y llevó a una nueva versión que se llamó ALGOL 60. La versión actual es ALGOL 68, un lenguaje modular estructurado en bloques.

En el ALGOL aparecen por primera vez muchos de los conceptos de los nuevos lenguajes algorítmicos:

  • Definición de la sintaxis en notación BNF (Backus-Naur Form).
  • Formato libre.
  • Declaración explícita de tipo para todos los identificadores.
  • Estructuras iterativas más generales.
  • Recursividad.
  • Paso de parámetros por valor y por nombre.
  • Estructura de bloques, lo que determina la visibilidad de los identificadores.

De todas formas, y en contra de lo que quizá pueda pensarse, todavía se están llevando a cabo varias vías de investigación en este fascinante campo de la compilación. Por una parte, se están mejorando las diversas herramientas disponibles (por ejemplo, el generador de analizadores léxicos Aardvark para el lenguaje PASCAL).

El gran objetivo de esta exigencia es conseguir la máxima portabilidad de los programas escritos y compilados en Java, pues es únicamente la segunda fase del proceso la que depende de la máquina concreta en la que se ejecuta el intérprete.
0

Introduccion a Compiladores e Interpretes (PPTX)

La programación de computadoras se realiza en los llamados lenguajes de programación, éstos posibilitan la comunicación entre el programador y la computadora, a través de un conjunto de instrucciones u órdenes especificadas por el lenguaje.

 


En la preentación se describen los conceptos generales sobre los lenguajes compiladores e interpretes, clasificaciones, ventajas y desventajas.

Como siempre si te gustó el contenido de ésta entrada deja tu comentario o dale clic en mis iconos de redes sociales.


Autor:
Pedro Antononio Villalta (Sujeto)


0

Software Utilizado para Construccion de Compiladores





Software de uso General para Interpretación o Generación de Código.

  • Microsoft Assembler_6.11

  • C estándar y C++

  • Dev C++

  • Free Pascal

  • Java

  • Visual C++ de Visual Studio 2010


Autómatas y Gramáticas

  • JFlap

  • Thoth

  • Chalchalero

  • SDGLL1 Sistema Detector de Gramáticas LL(1).


Análisis Léxico


Análisis Sintáctico

  • Bison Generador de Analizadores Sintácticos Ascendentes tipo YACC.

  • YACC Generador de Analizadores Sintácticos Ascendentes LR(1).


Análisis Semántico y Tablas de Símbolos

  • TS 2006

  • TS

  • TS-OO


Generación de Código Intermedio y Final

  • ENS 2001 (Entorno Consola Windows) Lenguaje ensamblador basado en el estándar IEEE 694.

  • W-ENS 2001 (Entorno gráfico Windows) Lenguaje ensamblador basado en el estándar IEEE 694.

  • L-ENS 2001 (Linux) Lenguaje ensamblador basado en el estándar IEEE 694.

  • ASS 1.3 (Linux) Lenguaje ensamblador sencillo.

  • TASM

  • TLINK

  • GCC. GNU Compiler Colection

0

Contenido Tematico Compiladores

Una pequeña muestra como puede estructurarse un contenido temático para la enseñanza de Compiladores.

Introducción a Los Traductores

Conceptos Generales

Clasificación de los Traductores

Metalenguajes

Estructura de un Compilador


Análisis Léxico

Definición – Implementación

Conceptos de Token, patrones, lexema y atributo

Especificaciones de un Token. Expresiones regulares

El Autómata Finito

La Tabla de Transición

Tratamiento de Errores

Tabla de Símbolos


Unidad 03: Análisis Sintáctico

Gramáticas Libres de Contexto

Derivación. Ambigüedad

Analizador Sintáctico. Tipos

Analizador Sintáctico descendente determinista LL(1)

Comprobación si una gramática es LL(1). Iniciales y seguidores autómatas de pilas

Tabla de Análisis

Tratamiento de errores.


Análisis Semántico

Introducción

Especificación formal

Fases en el Análisis Semántico

Determinación de los tipos de Comprobaciones Semánticas a Realizar

Implementación de acciones Semánticas


Lenguajes Intermedios y Generación de Código

Lenguajes Intermedios, Definición y Tipos

Optimización Independiente de la Máquina

Generador de Código Intermedio y Final

Optimización Dependiente de la Máquina


Proyecto

Proceso para Diseñar un Lenguaje de Programación

Implementación del Analizador Léxico

Implementación del Analizador Sintáctico

Implementación del Analizador Semántico

Obtención de código Intermedio


0

Bibliografía Compiladores








Titulos principales:

  • Alfred V. Aho, Monica Lam, Ravi SEIT y Jeffrey Ullman. Compiladores: Principios, Técnicas y herramientas; 2ª Edición.
  • Jacinto Ruiz Catalán. Compiladores: Teoría e Implementación; 1ª Edición México Junio2010 Alfahomega.
  • Kennetc C. Louden. Construcción de Compiladores, Teoría y Práctica. 2ª Edición México: Thomson Editores.
  • Sergio Gálvez Rojas. Miguel Ángel Mora Mata. Traductores y Compiladores con Lex/Yacc, JFlex/CUP y JavaCC. Edición Electrónica, Universidad de Málaga. No disponible en las bibliotecas.

Títulos de apoyo:
  • JOYANES AGUILAR, Luis. Zahonero Martínez, Ignacio. Estructuras de Datos en Java. 1a.ed Madrid: McGraw-Hill Interamericana de España 2008.
  • RAMIREZ, Felipe. Introducción a la Programación: algoritmos y su implementación en VB.NET, C#, JAVA Y C++. 2a.ed. México D.F.: Alfaomega grupo editor 2007.
  • ARNOW, David M. Weiss, Gerald. Introducción a la programación con JAVA TM: un enfoque orientado a objeto. 1a. ed. Madrid: Pearson Educación 2001.
  • BECERRIL C., José Francisco. Java a su alcance. 1a. ed. México: McGraw-Hill 1998

Recursos en Internet.
0

Libros sobre Compiladores


Una pequeña recopilación de libros que podemos utilizar para la enseñanza de Compiladores, en sus diferentes ediciones.

Algunos de éstos libros podemos encontrarlos en la biblioteca de la UCA.


Título:
Construcción de compiladores: principios y práctica

Autor(es):
Kenneth C. Louden ; [tr. Efrén Alatorre Miguel].

Clasificación:
QA76.76.C65 L886

Materias vinculadas al contenido:
Compiladores (Programas para computadoras)
Programación (Computadoras)
Computación
Lenguajes de programación

Datos de Publicación: México, D.F.: Thomson Learning, c1997.
Edición: [No definido]
ISBN: 9706862994
Idioma: spa
Descripción Física: x, 528 p. ; 25 cm.






Titulo: 
Compiladores: principios, técnicas y herramientas

Autor(es):
Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman

Fuenlabrada Velázquez.

Clasificación:
QA76.76.C65 C737

Materias vinculadas al contenido:
Compiladores (Programas de ordenador)
Lenguajes de programación
Análisis sintáctico (Gramática computacional)
Computación
Informática
Tecnología
Innovaciones tecnológicas

Datos de Publicación: México, D.F. Pearson Educación, c2008.
Edición: 2ª ed.
ISBN: 9702611334 9789702611332
Idioma: spa
Descripción Física: xxiv, 1009 p. ; 24 cm.




Título:
Compiladores: principios, técnicas y herramientas /

Autor(es):
Alfred V. Aho, Ravi Sethi, Jeffrey D. Ullman ; versión en español de Pedro Flores Suárez

Clasificación:
QA76.76.C65 A286 1998

Materias vinculadas al contenido:
Compiladores (Programa para computador)

Datos de Publicación: México: Addison Wesley Longman, 1998.
Edición: 1. reimpr.
ISBN: 9684443331
Idioma: spa
Descripción Física: xii, 820 p. ; 23 cm.


Título: Compiladores:
Principios, técnicas y herramientas versión en español de Pedro Flores Suárez, Pere Botella i López.

Autor(es):
Aho, Alfred V. Sethi, Ravi Ullman, Jeffrey D.

Clasificación:
QA76.76.C65 A286

Materias vinculadas al contenido:
Compiladores (Programa para computador)

Datos de Publicación: Argentina: Addison-Wesley, c1990.
Edición: [No definido]
ISBN: 0201629038
Idioma: spa
Descripción Física: xii, 820 p. ; 23 cm.


Título:
onstrucción de compiladores / David Gries ; tr. F.J. Sanchis Llorca.

Autor(es):
Gries, David

Clasificación:
QA76.6 G848c

Materias vinculadas al contenido:
Programación (Computadores electrónicos)

Datos de Publicación: Madrid: Paraninfo, 1975.
Edición: [No definido]
ISBN: 8428305846
Idioma: spa
Descripción Física: 560 p.



Espero sea de mucha ayuda.
0
Derechos Reservados. Pedro Antonio Villalta. Con tecnología de Blogger.

Quieres crear un dominio y hosting, te recomendamos

Hostgator, NeoThek, Hostinger y GoDaddy Proveedores de Hosting y Dominios

Hosting Gratis Let's Get Back to Business. Start with a $1.99 .COM from GoDaddy.

Namecheap.com, el mejor proveedor que recomendamos.

Namecheap.com

Directorio Para Promocionar tu Web

Incrementa las visitas registrándote en estos directorios

directorio de blogs Blogazos.com. Directorio de Blogs en Español Directorio Web de enlaces mexicanos Directorio de paginas webs 360dir

Actividad en Twitter

Registrate para recibir en tu e-mail todo lo nuevo que se publica en este blog. Contenido exclusivo

Seguinos en

Síguenos en Google+ Síguenos en Facebook Seguir en Twitter Sígueme en Youtube Sígueme en Likedin Sígueme en Pinterest Rss feed Sígueme en Slideshare

Translate / Traducir

Visitas

Comunidad Ingeniería en Sistemas

Aumenta Visitas

Aumenta tus visitas con TxtFull.com y TotalPing.com

Mi Ping en TotalPing.com Protected by Copyscape Plagiarism Software

Entradas Populares

Formulario de contacto

Nombre

Correo electrónico *

Mensaje *

Visitantes Online

Estos usuarios tambien nos han visitado.

Seguidores