Tecnología informática aplicada a medios audiovisuales
y sistemas multimedia

Aurelio del Portillo

LENGUAJES INFORMÁTICOS

Apuntes elaborados a partir de la información contenida en WIKIPEDIA 

ÍNDICE							PÁGINA

Definición y clasificación 					 1

Lenguajes de programación					 2

SQL (Structured Query Language)				 4

MySQL							 8

HTTP (Hypertext Transfer Protocol)				13

W3C (World Wide Web Consortium)				18

Web semántica						20

Metadatos							22

WYSIWYG (What You See Is What You Get)		28

Lenguajes de descripción 					29

SGML (Standard Generalized Markup Language)		30

HTML (HyperText Markup Language)			31

XHTML (eXtensible Hypertext Markup Language)		35

Diferencias entre HTML y XHTML				37

XML (eXtensible Markup Language)				39

CSS (Cascading Style Sheets)				45

MathML (Mathematical Markup Language)			48

Sistemas de tipografía (TeX, LaTeX)			50

PDL (Page Description Language); PostScript		59

SMIL (Synchronized Multimedia Integration Language)	60

SVG (Scalable Vector Graphics)				63

Contenedores Multimedia					66

AVI (Audio Video Interleave)				67

MPEG (Moving Picture Experts Group)		69

QT (QuickTime) 					70

WMV (Windows Media Video)			71

Ogg (no es un acrónimo)				72

OGM (Ogg Media)					75

Matroska						76

Codificador-Descodificador (codec)				77

	DivX							78

	XviD							79

	Codec de audio					81

Lenguajes interpretados					84

	ActionScript						85

	JavaScript						87

	PHP (Hypertext PreProcessor, inicialmente
	Personal Home Page Tools)				90

LAMP (Linux, Apache, MySQL, PHP)			94

Scripts del servidor						95

ASP (Active Server Pages)					96

JSP (Java Server Pages)					99

Redes P2P (Peer to Peer)				          101

Lenguajes informáticos
Un lenguaje informático es un lenguaje usado por, o asociado con, ordenadores. Muchas veces, este término es usado como sinónimo de lenguaje de programación, pero un lenguaje informático no tiene por que ser un lenguaje de programación.
Como ejemplo un lenguaje de marcas como el HTML no es un lenguaje de programación, pero sí es un lenguaje informático.
En general, como cualquier otro lenguaje, un lenguaje de ordenador es creado cuando hay que transmitir una información de algo a alguien basado en computadora.
El lenguaje de programación es el medio que utilizan los programadores de crear un programa de ordenador; un lenguaje de marcas es el medio para describir a un ordenador el formato o la estructura de un documento; etc.
Ejemplos
Los Lenguajes informáticos pueden se clasificado en varias clase, entre las que se incluyen las siguientes.
•	Lenguaje de programación 
•	Lenguaje de especificación 
•	Lenguaje de consultas, como SQL o XQuery 
•	Lenguaje de marcas, como XML y otros más ligeros 
•	Lenguaje de transformación, como XSLT 
•	Protocolo de comunicaciones, como http,ftp 
•	Lenguaje de sonido, para crear sonidos, 
•	Lenguaje gráficos, para crear figuras y dibujos. Metapost, 
•	Pseudocódigo 

Lenguaje de programación
Un lenguaje de programación es una técnica estándar de comunicación que permite expresar las instrucciones que han de ser ejecutadas en una computadora. Consiste en un conjunto de reglas sintácticas y semánticas que definen un lenguaje informático.
Aunque muchas veces se usa lenguaje de programación y lenguaje informático como si fuesen sinónimos, no tiene por qué ser así, ya que los lenguajes informáticos engloban a los lenguajes de programación y a otros más, como, por ejemplo, el HTML.
Un lenguaje de programación permite a un programador especificar de manera precisa: sobre qué datos una computadora debe operar, cómo deben ser estos almacenados y transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural, tal como sucede con el lenguaje Lexico.
Un programa escrito en un lenguaje de programación necesita pasar por un proceso de compilación, es decir, ser traducido al lenguaje de máquina, o ser interpretado para que pueda ser ejecutado por el ordenador. También existen lenguajes de scripting que son ejecutados a través de un intérprete y no necesitan compilación.

Algunos lenguajes de programación:
•	ABAP 
•	ABC 
•	Ada 
•	ActionScript 
•	Afnix 
•	ALGOL 
•	APL 
•	ASP 
•	ASP.NET 
•	AWK 
•	B 
•	BASIC 
•	BCPL 
•	Befunge 
•	Boo 
•	C 
•	C++ 
•	C# 
•	Caml 
•	Clipper 
•	CLIPS 
•	CLU 
•	COBOL 
•	CORAL D 
•	Delphi 
•	DIV 
•	Dylan
•	Eiffel 
•	Erlang 
•	Ensamblador 
•	Extended ML 
•	Euphoria 
•	Fénix 
•	Flow-Matic 
•	Forth 
•	FORTRAN 
	•	Gambas 
•	GML 
•	GRAFCET 
•	FP 
•	Haskell 
•	Icon 
•	Inform 
•	INTERCAL 
•	ISWIM
•	J 
•	Java 
•	KWC 
•	JavaScript 
•	Joy 
•	LADDER 
•	Lexico 
•	Lingo 
•	Lisp 
•	Logo 
•	Lua 
•	MAGIC 
•	Mainsail 
•	Mesa 
•	Miranda 
•	ML 
•	Modula 
•	Modula-2 
•	Modula-3 
•	Natural 
•	NetREXXOcaml 
•	Occam 
•	Oz 
•	Pascal	•	Parlog 
•	Perl 
•	PHP 
•	PL/1 
•	Plankalkül 
•	PostScript 
•	PowerBuilder 
•	Prolog 
•	Python 
•	Rapid 
•	REXX 
•	RPN 
•	RPG 
•	Ruby 
•	Sail 
•	Sather 
•	Scheme 
•	ScriptolSeed7 
•	Self 
•	Sh 
•	Simula 
•	Smalltalk 
•	Snobol 
•	SPARK 
•	Squeak 
•	SR 
•	Standard ML 
•	TI-Basic 
•	TCL 
•	VBA 
•	Visual Basic 
•	Visual DialogScript 
•	Visual Foxpro 
•	Yurix 
•	ZPL  	

SQL
El Lenguaje de Consulta Estructurado (Structured Query Language) es un lenguaje declarativo de acceso a bases de datos relacionales que permite especificar diversos tipos de operaciones sobre las mismas. Aúna características del álgebra y el cálculo relacional permitiendo lanzar consultas con el fin de recuperar información de interés de una base de datos, de una forma sencilla.
Orígenes y evolución
Los orígenes del SQL están ligados a los de las bases de datos relacionales. En 1970 Codd propone el modelo relacional y asociado a este un sublenguaje de acceso a los datos basado en el cálculo de predicados. Basándose en estas ideas los laboratorios de IBM definen el lenguaje SEQUEL (Structured English QUEry Language) que más tarde sería ampliamente implementado por el SGBD experimental System R, desarrollado en 1977 también por IBM. Sin embargo, fue Oracle quien lo introdujo por primera vez en 1979 en un programa comercial.
El SEQUEL terminaría siendo el predecesor de SQL, siendo éste una versión evolucionada del primero. El SQL pasa a ser el lenguaje por excelencia de los diversos SGBD relacionales surgidos en los años siguientes y es por fin estandarizado en 1986 por el ANSI, dando lugar a la primera versión estándar de este lenguaje, el SQL-86 o SQL1. Al año siguiente este estándar es también adoptado por la ISO.
Sin embargo este primer estándar no cubre todas las necesidades de los desarrolladores e incluye funcionalidades de definición de almacenamiento que se consideraron suprimir. Así que en 1992 se lanza un nuevo estándar ampliado y revisado del SQL llamado SQL-92 o SQL2.
En la actualidad el SQL es el estándar de facto de la inmensa mayoría de los SGBD comerciales. Y, aunque la diversidad de añadidos particulares que incluyen las distintas implementaciones comerciales del lenguaje es amplia, el soporte al estándar SQL-92 es general y muy amplio.
El ANSI SQL sufrió varias revisiones y agregados a lo largo del tiempo:
Año	Nombre	Alias	Comentarios	
1986	SQL-86	SQL-87	Primera publicación hecha por ANSI. Confirmada por ISO en 1987.	
1989	SQL-89		Revisión menor.	
1992	SQL-92	SQL2	Revisión mayor.	
1999	SQL:1999	SQL3	Se agregaron expresiones regulares, consultas recursivas (para relaciones jerárquicas), triggers y algunas características orientadas a objetos.	
2003	SQL:2003	 	Introduce algunas características de XML, cambios en las funciones, estandarización del objeto sequence y de las columnas autonumericas. 	
Características generales
El SQL es un lenguaje de acceso a bases de datos que explota la flexibilidad y potencia de los sistemas relacionales permitiendo gran variedad de operaciones sobre los mismos. Es un lenguaje declarativo de alto nivel o de no procedimiento, que gracias a su fuerte base teórica y su orientación al manejo de conjuntos de registros, y no a registros individuales, permite una alta productividad en codificación. De esta forma una sola sentencia puede equivaler a uno o más programas que utilizasen un lenguaje de bajo nivel orientado a registro.
Funcionalidad
El SQL proporciona una rica funcionalidad más allá de la simple consulta (o recuperación) de datos. Asume el papel de lenguaje de definición de datos (LDD), lenguaje de definición de vistas (LDV) y lenguaje de manipulación de datos (LMD). Además permite la concesión y denegación de permisos, la implementación de restricciones de integridad y controles de transacción, y la alteración de esquemas. Las primeras versiones del SQL incluían funciones propias de lenguaje de definición de almacenamiento (LDA) pero fueron suprimidas en los estándares más recientes con el fin de mantener el lenguaje sólo a nivel conceptual y externo.
Modos de uso
El SQL permite fundamentalmente dos modos de uso:
•	Un uso interactivo, destinado principalmente a los usuarios finales avanzados u ocasionales, en el que las diversas sentencias SQL se escriben y ejecutan en línea de comandos, o un entorno semejante. 
•	Un uso integrado, destinado al uso por parte de los programadores dentro de programas escritos en cualquier lenguaje de programación anfitrión. En este caso el SQL asume el papel de sublenguaje de datos. 

En el caso de hacer un uso embebido del lenguaje podemos utilizar dos técnicas alternativas de programación. En una de ellas, en la que el lenguaje se denomina SQL estático, las sentencias utilizadas no cambian durante la ejecución del programa. En la otra, donde el lenguaje recibe el nombre de SQL dinámico, se produce una modificación total o parcial de las sentencias en el transcurso de la ejecución del programa. La utilización de SQL dinámico permite mayor flexibilidad y mayor complejidad en las sentencias, pero como contra punto obtenemos una eficiencia menor y el uso de técnicas de programación más complejas en el manejo de memoria y variables.
Optimización
Como ya se dijo arriba, y como suele ser común en los lenguajes de acceso a bases de datos de alto nivel, el SQL es un lenguaje declarativo. O sea, que especifica qué es lo que se quiere y no cómo conseguirlo, por lo que una sentencia no establece explícitamente un orden de ejecución.. El orden de ejecución interno de una sentencia puede afectar gravemente a la eficiencia del SGBD, por lo que se hace necesario que éste lleve a cabo una optimización antes de la ejecución de la misma. Muchas veces, el uso de índices acelera una instrucción de consulta, pero ralentiza la actualización de los datos, dependiendo del uso de la aplicación, se priorizará el acceso indexado o una rápida actualización de la información. La optimización difiere sensiblemente en cada motor de base de datos y depende de muchos factores. Existe una ampliación de SQL conocida como FSQL (Fuzzy SQL, SQL difuso) que permite el acceso a bases de datos difusas, usando la lógica difusa. Este lenguaje ha sido implementado a nivel experimental y está evolucionando rápidamente.

Lenguaje de Definición de datos
El lenguaje de Definición de datos, en inglés Data Definition Language (DDL), es el que se encarga de la modificación de la estructura de los objetos de la base de datos. Existen cuatro operaciones básicas: CREATE, ALTER, DROP y TRUNCATE.
CREATE
Este comando crea un objeto dentro de la base de datos. Puede ser una tabla, vista, índice, trigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte.
Ejemplo 1 (creación de una tabla):

CREATE TABLE TABLA_NOMBRE (
 my_field1   INT          UNSIGNED,
 my_field2   VARCHAR (50),
 my_field3   DATE         NOT NULL,
 PRIMARY KEY (my_field1, my_field2) 
)

ALTER
Este comando permite modificar la estructura de un objeto. Se pueden agregar/quitar campos a una tabla, modificar el tipo de un campo, agregar/quitar índices a una tabla, modificar un trigger, etc.
Ejemplo 1 (agregar columna a una tabla):

ALTER TABLE TABLA_NOMBRE (
 ADD NUEVO_CAMPO INT UNSIGNED
)
DROP
Este comando elimina un objeto de la base de datos.Puede ser una tabla, vista, índice, trigger, función, procedimiento o cualquier otro objeto que el motor de la base de datos soporte. Se puede combinar con la sentencia ALTER.
Ejemplo 1:
DROP TABLE TABLA_NOMBRE

Ejemplo 2:
ALTER TABLE TABLA_NOMBRE
(
   DROP COLUMN CAMPO_NOMBRE1
)
TRUNCATE
Este comando trunca todo el contenido de una tabla. La ventaja sobre el comando DELETE, es que si se quiere borrar todo el contenido de la tabla, es mucho más rápido, especialmente si la tabla es muy grande, la desventaja es que TRUNCATE solo sirve cuando se quiere eliminar absolutamente todos los registros, ya que no se permite la cláusula WHERE. Si bien, en un principio, esta sentencia parecería ser DML (Lenguaje de Manipulación de Datos), es en realidad una DDL, ya que internamente, el comando truncate borra la tabla y la vuelve a crear y no ejecuta ninguna transacción.
Ejemplo 1:
TRUNCATE TABLE TABLA_NOMBRE
Sistemas de gestión de base de datos (con soporte SQL):
•	DB2 
•	Oracle 
•	SQL Server 
•	Sybase ASE 
•	MySQL 
•	PostgreSQL 
•	Firebird 

MySQL
  MySQL	
Desarrollador:	MySQL AB	
Última versión:	5.0.22 / 28 de Mayo de 2006	
S.O.:	Multiplataforma	
Género:	RDBMS	
Licencia:	GPL o Uso comercial	
En castellano:	-	
Sitio Web:	www.mysql.com	
MySQL es un sistema de gestión de base de datos, multihilo y multiusuario con más de seis millones de instalaciones[1]. MySQL AB desarrolla MySQL como software libre en un esquema de licenciamiento dual. Por un lado lo ofrece bajo la GNU GPL, pero, empresas que quieran incorporarlo en productos propietarios puede comprar a la empresa una licencia más permisiva que les permita ese uso.
Está desarrollado en su mayor parte en ANSI C.
Al contrario de proyectos como el Apache, donde el software es desarrollado por una comunidad pública, y el copyright del código está en poder del autor individual, MySQL está poseído y patrocinado por una empresa privada, que posee el copyright de la mayor parte del código. Esto es lo que posibilita el esquema de licenciamiento anteriormente mencionado. Además de la venta de licencias propietarias, la compañía ofrece soporte y servicios. Para sus operaciones contratan trabajadores alrededor del mundo que colaboran vía Internet. MySQL AB fue fundado por David Axmark, Allan Larsson, y Michael Widenius.
Lenguajes de programación
Existen varias APIs que permiten, a aplicaciones escritas en diversos lenguajes de programación, acceder a las bases de datos MySQL, incluyendo C, C++, C#, Pascal, Delphi (via dbExpress), Eiffel, Smalltalk, Java (con una implementación nativa del driver de Java), Lisp, Perl, PHP, Python, Ruby, REALbasic (Mac), FreeBASIC, y Tcl; cada uno de estos utiliza una API específica. También existe un interfaz ODBC, llamado MyODBC que permite a cualquier lenguaje de programación que soporte ODBC comunicarse con las bases de datos MySQL.
Aplicaciones
MySQL es muy utilizado en aplicaciones web como MediaWiki o Drupal, en plataformas (Linux/Windows-Apache-MySQL-PHP/Perl/Python), y por herramientas de seguimiento de errores como Bugzilla. Su popularidad como aplicación web está muy ligada a PHP, que a menudo aparece en combinación con MySQL. 
MySQL es una base de datos muy rápida en la lectura cuando utiliza el motor no transaccional MyISAM, pero puede provocar problemas de integridad en entornos de alta concurrencia en la modificación. En aplicaciones web hay baja concurrencia en la modificación de datos y en cambio el entorno es intensivo en lectura de datos, lo que hace a MySQL ideal para este tipo de aplicaciones.
Especificaciones
Plataformas
MySQL funciona sobre múltiples plataformas, incluyendo AIX, BSD, FreeBSD, HP-UX, GNU/Linux, Mac OS X, NetBSD, Novell Netware, OpenBSD, OS/2 Warp, QNX, SGI IRIX, Solaris, SunOS, SCO OpenServer, SCO UnixWare, Tru64, Windows 95, Windows 98, Windows NT, Windows 2000, Windows XP, Windows Vista y otras versiones de Windows. También existe MySQL para OpenVMS en http://www.pi-net.dyndns.org/anonymous/kits/.
Características de la versión 5.0.22
•	Un amplio subconjunto de ANSI SQL 99, y varias extensiones. 
•	Soporte a multiplataforma 
•	Procedimientos almacenados 
•	Triggers 
•	Cursors 
•	Vistas actualizables 
•	Soporte a VARCHAR 
•	INFORMATION_SCHEMA 
•	Modo Strict 
•	Soporte X/Open XA de transacciones distribuidas; transacción en dos fases como parte de esto, utilizando el motor InnoDB de Oracle 
•	Motores de almacenamiento independientes (MyISAM para lecturas rápidas, InnoDB para transacciones e integridad referencial) 
•	Transactions with the InnoDB, BDB and Cluster storage engines; savepoints with InnoDB 
•	SSL support 
•	Query caching 
•	Sub-SELECTs (or nested SELECTs) 
•	Replication with one master per slave, many slaves per master, no automatic support for multiple masters per slave. 
•	Full-text indexing and searching using MyISAM engine 
•	Embedded database library 
•	Full Unicode support 
•	ACID compliance using the InnoDB, BDB and Cluster engines 
•	Shared-nothing clustering through MySQL Cluster 

Características (versión 4.0)
Inicialmente, MySQL carecía de elementos considerados esenciales en las bases de datos relacionales, tales como integridad referencial y transacciones. A pesar de ello, atrajo a los desarrolladores de páginas web con contenido dinámico, justamente por su simplicidad; aquellos elementos faltantes fueron llenados por la vía de las aplicaciones que la utilizan.
Poco a poco los elementos de los que carecía MySQL están siendo incorporados tanto por desarrollos internos, como por desarrolladores de software libre. Entre las características disponibles en las últimas versiones se puede destacar:
•	Amplio subconjunto del lenguaje SQL. Algunas extensiones son incluidas igualmente. 
•	Disponibilidad en gran cantidad de plataformas y sistemas. 
•	Diferentes opciones de almacenamiento según si se desea velocidad en las operaciones o el mayor número de operaciones disponibles. 
•	Transacciones y claves foráneas. 
•	Conectividad segura. 
•	Replicación. 
•	Búsqueda e indexación de campos de texto. 
MySQL es un sistema de administración de bases de datos. Una base de datos es una colección estructurada de datos. Esta puede ser desde una simple lista de compras a una galería de pinturas o el vasto volumen de información en un red corporativa. Para agregar, acceder a y procesar datos guardados en un computador, usted necesita un administrador como MySQL Server. Dado que los computadores son muy buenos manejando grandes cantidades de información, los administradores de bases de datos juegan un papel central en computación, como aplicaciones independientes o como parte de otras aplicaciones.
MySQL es un sistema de administración relacional de bases de datos. Una base de datos relacional archiva datos en tablas separadas en vez de colocar todos los datos en un gran archivo. Esto permite velocidad y flexibilidad. Las tablas están conectadas por relaciones definidas que hacen posible combinar datos de diferentes tablas sobre pedido.
MySQL es software de fuente abierta. Fuente abierta significa que es posible para cualquier persona usarlo y modificarlo. Cualquier persona puede bajar el código fuente de MySQL y usarlo sin pagar. Cualquier interesado puede estudiar el código fuente y ajustarlo a sus necesidades. MySQL usa el GPL (GNU General Public License) para definir que puede hacer y que no puede hacer con el software en diferentes situaciones. Si usted no se ajusta al GLP o requiere introducir código MySQL en aplicaciones comerciales, usted pude comprar una versión comercial licenciada.

Mejoras futuras
El mapa de ruta de MySQL 5.1 indica soporte para:
•	Particionado de la base de datos 
•	Backup en línea para todos los motores de almacenamiento 
•	Replicación segura 
•	Restricciones a nivel de columna 
•	Planificación de eventos 
•	Funciones XML 
Características distintivas
Las siguientes características son implementadas únicamente por MySQL:
•	Múltiples motores de almacenamiento (MyISAM, Merge, InnoDB, BDB, Memory/heap, MySQL Cluster, Federated, Archive, CSV, Blackhole y Example en 5.x), permitiendo al usuario escoger la que sea más adecuada para cada tabla de la base de datos. 
•	Agrupación de transacciones, reuniendo múltiples transacciones de varias conexiones para incrementar el número de transacciones por segundo. 
Tipos de compilación del servidor
Hay tres tipos de compilación del servidor MySQL:
•	Estándar: Los binarios estándar de MySQL son los recomendados para la mayoría de los usuarios, e incluyen el motor de almacenamiento InnoDB. 
•	Max (No se trata de MaxDB, que es una cooperación con SAP): Los binarios incluyen características adicionales que no han sido lo bastante probadas o que normalmente no son necesarias. 
•	MySQL-Debug: Son binarios que han sido compilados con información de depuración extra. No debe ser usada en sistemas en producción porqué el código de depuración puede reducir el rendimiento. 
Especificaciones del código fuente
MySQL está escrito en una mezcla de C y C++. Hay un documento que describe algunas de sus estructuras internas en http://dev.mysql.com/doc/internals/en/ (en inglés).
Soporte
Vía MySQL Network, MySQL AB ofrece soporte, con un equipo de soporte con acceso directo a los desarrolladores. MySQL AB también mantiene foros y listas de correo donde los usuarios pueden ayudarse entre sí.

MySQL en cifras
•	Según las cifras del fabricante, existirían más de seis millones de copias de MySQL funcionando en la actualidad, lo que supera la base instalada de cualquier otra herramienta de bases de datos. 
•	El tráfico del sitio web de MySQL AB superó en 2004 al del sitio de IBM. 
Qué licencia utilizar
La licencia GNU GPL de MySQL obliga a distribuir cualquier producto derivado (aplicación) bajo esa misma licencia. Si un desarrollador desea incorporar MySQL en su producto pero no desea distribuirlo bajo licencia GNU GPL, puede adquirir la licencia comercial de MySQL que le permite hacer justamente eso.
Usuarios destacados
•	Amazon.com 
•	Cox Communications - La cuarta televisión por cable más importante de EEUU, tienen más de 3.600 tablas y aproximadamente dos millones de inserciones cada hora. 
•	Craigslist 
•	Digg - Sitio de noticias. 
•	Google - Para el motor de búsqueda de la aplicación AdWords 
•	LiveJournal - Cerca de 300 millones de páginas servidas cada día. 
•	NASA 
•	Omniture 
•	RightNow 
•	Sabre, y su sistema de reserva de viajes Travelocity 
•	Slashdot - con cerca de 50 millones de páginas servidas cada día. 
•	Yahoo! - para muchas aplicaciones críticas 
•	Nokia, usa un cluster MySQL para mantener información en tiempo real sobre usuarios de redes de móviles. 
•	flickr, usa MySQL para gestionar millones de fotos y usuarios. 
•	NetQOS, usa MySQL para la gestión de algunas de las redes más grandes del mundo como las de Chevron, American Express y Boeing. 
•	Universidad de Piura | Campus Lima, para su sistema académico denomidado SIAD. 
•	CNET Networks 
•	Friendster, sirve más de 85 millones de páginas dinámicas cada día. 
•	Wikipedia, sirve más de 200 millones de consultas y 1,2 millones de actualizaciones cada día, con picos de 11.000 consultas por segundo. 

Hypertext Transfer Protocol
Tecnologías y protocolos de red*	
Nivel de aplicación	DNS, FTP, HTTP, IMAP, IRC, NFS, NNTP, NTP, POP3, SMB/CIFS, SMTP, SNMP, SSH, Telnet, SIP, ver más	
Nivel de presentación	ASN.1, MIME, SSL/TLS, XML, ver más	
Nivel de sesión	NetBIOS, ver más	
Nivel de transporte	SCTP, SPX, TCP, UDP, ver más	
Nivel de red	AppleTalk, IP, IPX, NetBEUI, X.25, ver más	
Nivel de enlace	ATM, Ethernet, Frame Relay, HDLC, PPP, Token Ring, Wi-Fi, ver más	
Nivel físico	Cable coaxial, Cable de fibra óptica, Cable de par trenzado, Microondas, Radio, RS-232, ver más	
* según el Modelo OSI	
El protocolo de transferencia de hipertexto (HTTP, HyperText Transfer Protocol) es el protocolo usado en cada transacción de la Web (WWW). El hipertexto es el contenido de las páginas web, y el protocolo de transferencia es el sistema mediante el cual se envían las peticiones de acceder a una página web, y la respuesta de esa web, remitiendo la información que se verá en pantalla. También sirve el protocolo para enviar información adicional en ambos sentidos, como formularios con mensajes y otros similares.
HTTP es un protocolo sin estado, es decir, que no guarda ninguna información sobre conexiones anteriores. Al finalizar la transacción todos los datos se pierden. Por esto se popularizaron las cookies, que son pequeños ficheros guardados en el propio ordenador que puede leer un sitio web al establecer conexión con él, y de esta forma reconocer a un visitante que ya estuvo en ese sitio anteriormente. Gracias a esta identificación, el sitio web puede almacenar gran número de información sobre cada visitante, ofreciéndole así un mejor servicio.
La versión actual de HTTP es la 1.1, y su especificación está en el documento RFC-2616.
HTTP dispone de una variante cifrada mediante SSL llamada HTTPS.
Transacciones HTTP
El protocolo HTTP es un protocolo sin estado; está basado en el modelo cliente-servidor: Un cliente HTTP abre una conexión y realiza su solicitud al servidor, el cual responde generalmente el recurso solicitado y la conexión se cierra.

El formato tanto del mensaje como de la respuesta es como sigue:
 <Línea inicial>
 Header-1: value-1
 ...
 Header-n: value-n

 <Cuerpo del mensaje (Opcional)>
La línea inicial es diferente en las solicitudes y en las respuestas. En las solicitudes van tres campos separados por un espacio en blanco: "Método recurso versiónDelProtocolo". Por ejemplo: "GET /path/to/file/index.html HTTP/1.0". La línea inicial de una respuesta tiene tres campos separados por un espacio: "versiónDelProtocolo códigoRespuesta Mensaje". Por ejemplo: "HTTP/1.0 200 OK" o bien "HTTP/1.0 404 Not Found".
Los encabezados están normados en el protocolo, e incluyen, en el caso de una solicitud, información del navegador y eventualmente del usuario cliente; En el caso de una respuesta, información sobre el servidor y sobre el recurso. El cuerpo del mensaje contiene el recurso a transferir o el texto de un error en el caso de una respuesta. En el caso de una solicitud, puede contener parámetros de la llamada archivos enviados al servidor. Actualmente viene remplazando al FTP en la transferencia de archivos.
Ejemplo de un diálogo HTTP
Para obtener un recurso con el URL http://www.tuhost.example/index.html
1.	Se abre un socket con el host www.tuHost.example, puerto 80 que es el puerto por defecto para HTTP. 
2.	Se envía un mensaje en el estilo siguiente: 
 GET /index.html HTTP/1.0
 From: yo@miHost.example
 User-Agent: HTTPTool/1.0
 [Línea en blanco]
La respuesta del servidor está formada por encabezados seguidos del recurso solicitado, en el caso de una página web:
HTTP/1.0 200 OK
Date: Fri, 31 Dec 2003 23:59:59 GMT
Content-Type: text/html
Content-Length: 1221

<html>
<body>
<h1>Página principal de tuHost</h1>
(Contenido)
  .
  .
</body>
</html>
Al recibirse la respuesta, el servidor cierra la comunicación. Cabe señalar que los principales navegadores web no muestran al usuario los encabezados HTTP del recurso. Para visualizar tales encabezados pueden utilizarse herramientas conocidas genéricamente como "visores HTTP". Son especialmente cómodos de utilizar los visores HTTP on-line. Se puede acceder a gran variedad de estas herramientas buscando "http viewer" en cualquier buscador automático. En español no existe tanta abundancia de visores HTTP on line: podemos señalar, por ejemplo, el visor sencillo que ofrece www.cibernetia.com.
Herramientas de Software libre
•	Apache httpd server Apache ha sido el servidor web más difundido desde 1996. La encuesta de Netcraft de abril de 2005, muestra que alrededor del 70% de los servidores web utilizan Apache, y la parte de mercado crece de año en año. 
•	Jigsaw - W3C's Server 
•	Roxen 
•	Zope : Un poderoso servidor web implementado en python con soporte para conexiones a bases de datos, extensibilidad sencilla y administración vía web. 
Primeros Servidores
•	CERN httpd Server 
•	NCSA httpd server 
Glosario
Sockets
Debe entenderse como punto de conexión en español. Son puntos de comunicación de datos que se clasifican en físicos (asociados a un recurso) o lógicos (manejados por el sistema operativo). Hay tres elementos que caracterizan a un socket: El nombre del servicio (telnet, ftp, etc.), el protocolo (TCP, UDP, etc.) y el número de puerto. En Linux, el archivo /etc/protocols contiene la lista de protocolos disponibles y /etc/services contiene la lista de servicios disponibles. Por ejemplo, en la configuración inicial de la mayoría de los sistemas Linux se tiene que:
•	el servicio telnet utiliza el protocolo TCP/IP y se comunica por el puerto 23 
•	el servicio ftp utiliza el protocolo TCP/IP y se comunica por los puertos 20 y 21 
•	el servicio WWW utiliza el protocolo HTTP y se comunica por el puerto 80. 
•	el servicio WebDAV para desarrollo en colaboración utiliza el protocolo HTTP como transporte. 
•	CORBA, el marco para compartir objetos y servicios en la red puede utilizar el protocolo HTTP como transporte. 

Recursos
HTTP se utiliza para transmitir recursos, que incluyen además de archivos, el resultado de la ejecución de un programa, una consulta a una base de datos, la traducción automática de un documento, etc. Para un servidor HTTP, los recursos son o bien archivos, o bien el resultado de la ejecución de un programa.
Códigos de respuesta
Son códigos de tres dígitos:
•	1xx Mensajes de información 
N°	Descripción	
100	Continúa	
101	Cambio de protocolo	

•	2xx Operación exitosa 
N°	Descripción	
200	OK	
201	Creado	
202	Aceptado	
203	Información no oficial	
204	Sin Contenido	
205	Contenido para recargar	
206	Contenido parcial	

•	3xx Redirección hacia otro URL 
N°	Descripción	
300	Múltiples posibilidades	
301	Mudado permanentemente	
302	Encontrado	
303	Vea otros	
304	No modificado	
305	Utilice un proxy	
307	Redirección temporal	

•	4xx Error por parte del cliente 
N°	Descripción	
400	Solicitud incorrecta	
401	No autorizado	
402	Pago requerido	
403	Prohibido	
404	No encontrado	
405	Método no permitido	
406	No aceptable	
407	Proxy requerido	
408	Tiempo de espera agotado	
409	Conflicto	
410	Ya no disponible	
411	Requiere longitud	
412	Falló precondición	
413	Entidad de solicitud demasiado larga	
414	URL de solicitud demasiado largo	
415	Tipo de medio no soportado	
416	Rango solicitado no disponible	
417	Falló expectativa	

•	5xx Error por parte del servidor 
N°	Descripción	
500	Error interno	
501	No implementado	
502	Pasarela incorrecta	
503	Servicio no disponible	
504	Tiempo de espera de la pasarela agotado	
505	Versión de HTTP no soportada	

World Wide Web Consortium
El World Wide Web Consortium, abreviado W3C, es un consorcio internacional que produce estándares para la World Wide Web (o Telaraña Mundial). Está dirigida por Tim Berners-Lee, el creador original de URL (Uniform Resource Locator, Localizador Uniforme de Recursos), HTTP (HyperText Transfer Protocol, Protocolo de Transferencia de HiperTexto) y HTML (Lenguaje de Marcado de HiperTexto) que son las principales tecnologías sobre el que se basa la Web.
Un estándar pasa por los siguientes estados:
•	Working Draft (Borrador de trabajo) 
•	Last Call (Última convocatoria) 
•	Proposed Recommendation (Propuesta de recomendación) y 
•	Candidate Recommendation (Recomendación candidata) 
Finaliza con la aprobación de la "Recomendación", lo que equivale a una homologación de la propuesta, es decir, un nuevo estándar público y abierto para la Web. La mayoría de estas recomendaciones son secundadas por los fabricantes de herramientas (navegadores, editores, buscadores) y tecnologías (servicios Web, directorios, registros). Esta competencia en exclusiva del W3C para crear estándares abiertos es crucial, pues de ella depende que ningún fabricante alcance nunca el monopolio de explotación de la Web.
Algunas importantes Recomendaciones son:
•	HTML Recomendación HTML. 
•	Hojas de Estilo en Cascada o Cascading Style Sheets (CSS) 
•	DOM Recomendación DOM. 
•	RDF Marco de Descripción de Recursos 
•	SOAP Simple Object Access Protocol 
•	SVG Recomendación SVG. 
•	XForms Recomendación XForms. 
•	XML Recomendación XML. 
•	WSDL Web Services Description Language 

Organización de la W3C
Creada el 1 de octubre de 1994 por Tim Berners-Lee en el MIT, actual sede central del consorcio. Uniendose posteriormente en abril de 1995 INRIA en Francia, reemplazado por el ERCIM en el 2003 como el huésped europeo del consorocio y Universidad de Keio (Shonan Fujisawa Campus) en Japón en septiembre de 1996 como huésped asiatico. Estos organismo adminstran el consorcio el cual esta integrado por:

•	Miembros del W3C. A septiembre de 2006 contaba con 417 miembros (lista completa) 
•	Equipo W3C (W3C Team) 65 investigadores y expertos a través del mundo (Directorio) 
•	Oficinas W3C (W3C Offices). Centros regionales establecidos en Alemania y Austria (oficina cojunta), Australia, Benelux (oficina conjunta), China, Corea del Sur, España, Finlandia, Grecia, Hong Kong, Hungría, India, Israel, Italia, Marruecos, Suecia y Reino Unido e Irlanda (oficina conjunta) (Oficinas W3C) 
La oficina española del W3C, establecida en el 2003, esta albergada por la Fundación CTIC en el Parque Científico Tecnológico de Gijón (Principado de Asturias).

Web semántica
La Web semántica (del inglés semantic web) es la idea de añadir metadatos semánticos a la World Wide Web. Esas informaciones adicionales —describiendo el contenido, el significado y la relación de los datos— deben ser dadas en forma formal, así que es posible evaluarlas automáticamente por máquinas. El destino es mejorar la World Wide Web por ampliar la interoperabilidad entre los sistemas informáticos y reducir la mediación de operadores humanos necesaria.
El precursor de la idea, Tim Berners-Lee, intentó desde el principio incluir informaciones semánticas en su creación, la World Wide Web, pero por «causas diferentes» no fue posible[1]. Introdujo la Web semántica para recuperar esta omisión.
Relación con la World Wide Web
En la actualidad, la World Wide Web está basada principalmente en documentos escritos en HTML, un lenguaje de marcas que sirve para crear hipertexto en Internet. HTML es válido para adecuar el aspecto visual del documento e incluir objetos multimedia en el texto (imágenes, esquemas de diálogo, etc.). Pero da pocas posibilidades para categorizar los elementos que configuran el texto más allá de las típicas funciones estructurales, como sucede con otros lenguajes de maquetación (tipo LaTeX).
HTML permite mediante una herramienta de visualización (como un navegador o un agente de usuario) mostrar por ejemplo un catálogo de objetos en venta. El código HTML de este catálogo puede explicitar aspectos como "el título del documento" es Ferretería Acme; pero no hay forma de precisar dentro del código HTML si el producto M270660 es una "batería Acme", con un "precio de venta al público" de 200 €, o si es otro tipo de producto de consumo (es decir, es una batería eléctrica y no un instrumento musical, o un puchero). Lo único que HTML permite es alinear el precio en la misma fila que el nombre del producto. No hay forma de indicar "esto es un catálogo", "batería Acme" es una batería eléctrica, o "200 €" es el precio. Tampoco hay forma de relacionar ambos datos para describir un elemento específico en oposición a otros similares en el mismo catálogo.
La Web Semántica se ocupará de resolver estas deficiencias. Para ello dispone de tecnologías de descripción de los contenidos, como RDF y OWL, además de XML, el lenguaje de marcas diseñado para describir los datos. Estas tecnologías se combinan para aportar descripciones explícitas de los recursos de la Web (ya sean estos catálogos, formularios, mapas u otro tipo de objeto documental). De esta forma el contenido queda desvelado, como los datos de una base de datos accesibles por Web, o las etiquetas inmersas en el documento (normalmente en XHTML, o directamente en XML, y las instrucciones de visualización definidas en una hoja de estilos aparte). Estas etiquetas hacen posible a los gestores de contenidos interpretar los documentos y realizar procesos inteligentes de captura y tratamiento de información

Componentes de la Web Semántica
Los principales componentes de la Web Semántica son los metalenguajes y estándares de representación XML, XML Schema, RDF, RDF Schema y OWL. La OWL Web Ontology Language Overview describe la función y relación de cada uno de estos componentes de la Web Semántica:
•	XML aporta la sintaxis superficial para los documentos estructurados, pero sin dotarles de ninguna restricción sobre el significado. 
•	XML Schema es un lenguaje para definir la estructura de los documentos XML. 
•	RDF es un modelo de datos para los recursos y las relaciones que se puedan establecer entre ellos. Aporta una semántica básica para este modelo de datos que puede representarse mediante XML. 
•	RDF Schema es un vocabulario para describir las propiedades y las clases de los recursos RDF, con una semántica para establecer jerarquías de generalización entre dichas propiedades y clases 
•	OWL añade más vocabulario para describir propiedades y clases: tales como relaciones entre clases (p.ej. disyunción), cardinalidad (por ejemplo "únicamente uno"), igualdad, tipologías de propiedades más complejas, caracterización de propiedades (por ejemplo simetría) o clases enumeradas. 
La usabilidad y aprovechamiento de la Web y sus recursos interconectados aumentará gracias a:
•	Los documentos etiquetados con información semántica (compárese esta con la etiqueta <meta> de HTML, usada para facilitar el trabajo de los robots). Se pretende que esta información sea interpretada por el ordenador con una capacidad comparable a la del lector humano. El etiquetado puede incluir metadatos descriptivos de otros aspectos documentales o protocolarios. 
•	Vocabularios comunes de metadatos (ontologías) y mapas entre vocabularios que permitan a quienes elaboran los documentos disponer de nociones claras de cómo deben etiquetarlos para que los agentes automáticos puedan usar la información contenida en los metadatos (p.ej. el metadato author tenga el significado de "autor de la página" y no el del "autor del objeto descrito en la página"). 
•	Agentes automáticos que realicen tareas para los usuarios de estos metadatos de la Web Semántica 
•	Servicios Web (a menudo con agentes propios) que provean de información a los agentes (por ejemplo un servicio de garantías a quien un agente pudiera consultar sobre si un comercio electrónico tiene un historial de mal servicio o de generar correo basura). 
Los proveedores primarios de esta tecnología son las URIs que identifican los recursos junto con XML y los namespaces. Si a esto se añade un poco de lógica, mediante una RDF, u otras tecnologías como los mapas temáticos y algo de razonamiento basado en técnicas de inteligencia artificial, la Web estará lista para alcanzar las aspiraciones de su inventor Tim Berners-Lee.

Metadato
Metadatos (del griego μετα, meta, «después de»[1] y latín datum, «lo que se da», «dato»[2]), literalmente «sobre datos», son datos que describen otros datos. En general, un grupo de metadatos se refiere a un grupo de datos, llamado recurso.
El concepto de metadatos es análogo al uso de índices para localizar objetos en vez de datos. Por ejemplo, en una biblioteca se usan fichas que especifican autores, títulos, casas editoriales y lugares para buscar libros. Así, los metadatos ayudan a ubicar datos. [3]
Para varios campos de la informática como la recuperación de información o la web semántica, los metadatos son un enfoque importante para construir un puente sobre el intervalo semántico.
Definiciones
El término «metadatos» no tiene una definición única. Según la definición más difundida metadatos son «datos sobre datos». Debido a que la mayoría de los informáticos no se preocupa con la diferencia entre datos e informaciones también hay muchas declaraciones como «informaciones sobre datos»[4], «datos sobre informaciones»[5] y «informaciones sobre informaciones»[6].
Otra clase de definiciones trata de precisar el término como «descripciones estructuradas y opcionales que están disponibles de forma pública para ayudar a localizar objetos»[7] o «datos estructurados y codificadas que describen características de instancias conteniendo informaciones para ayudar a identificar, descubrir, valorar y administrar las instancias descritas»[8]. Esta clase surgió de la crítica de que las declaraciones más simples son tan difusas y generales que dificultarán la tarea de acordarse de estándares, pero estas definiciones no son muy comunes.
Distinción entre datos y metadatos
La mayoría de las veces no es posible diferenciar entre datos y metadatos. Por ejemplo, un poema es un grupo de datos, pero también puede ser un grupo de metadatos si está adjuntado a una canción que lo usa como texto.
Muchas veces, los datos son tanto "datos" como "metadatos". Por ejemplo, el título de un texto es parte del texto como a la vez es un dato referente al texto(Dato como Metadato).

Metadatos sobre metadatos
Debido a que los metadatos son datos en sí mismos, es posible crear metadatos sobre metadatos. Aunque, a primera vista, parece absurdo, los metadatos sobre metadatos pueden ser muy útiles. Por ejemplo, fusionando dos imágenes y sus metadatos distintos puede ser muy importante deducir cual es el origen de un grupo de metadatos.
Objetivos
El uso de los metadatos mencionado más frecuentemente es la refinación de consultas a buscadores. Usando informaciones adicionales los resultados son más precisos, y el usuario se ahorra filtraciones manuales complementarias.
El intervalo semántico plantea el problema de que el usuario y el ordenador no se entiendan porque este último no comprenda el significado de los datos. Es posible que los metadatos posibiliten la comunicación declarando cómo están relacionados los datos. Por eso la representación del conocimiento usa metadatos para categorizar informaciones. La misma idea facilita la inteligencia artificial al deducir conclusiones automáticamente.
Los metadatos facilitan el flujo de trabajo convirtiendo datos automáticamente de un formato a otro. Para eso es necesario que los metadatos describan contenido y estructura de los datos. [9]
Algunos metadatos hacen posible una compresión de datos más eficaz. Por ejemplo, si en un vídeo el software sabe distinguir el primer plano del fondo puede usar algoritmos de compresión diferentes y así mejorar la cuota de compresión. [10]
Otra idea de aplicación es la presentación variable de datos. Si hay metadatos señalando los detalles más importantes, un programa puede seleccionar la forma de presentación más adecuada. Por ejemplo, si un teléfono móvil sabe dónde está localizada una persona en una imagen, tiene la posibilidad de reducirlo a las dimensiones de su pantalla. Del mismo modo un navegador puede decidir presentar un diagrama a su usuario ciego en forma táctil o leída [11].
Clasificación
•	Contenido. Subdividir metadatos por su contenido es lo más común. Se puede separar los metadatos que describen el recurso mismo de los que describen el contenido del recurso. Es posible subdivir estos dos grupos más veces, por ejemplo para separar los metadatos que describen el sentido del contenido de los que describen la estructura del contenido o los que describen el recurso mismo de los que describen el ciclo vital del recurso. 
•	Variabilidad. Según la variabilidad se puede distinguir metadatos mutables y inmutables. Los inmutables no cambian, no importa qué parte del recurso se vea, por ejemplo el nombre de un fichero. Los mutables difieren de parte a parte, por ejemplo el contenido de un vídeo. [12] 
•	Función. Los datos pueden ser parte de una de las tres capas de funciones: subsimbólicos, simbólicos o lógicos. Los datos subsimbólicos no contienen información sobre su significado. Los simbólicos describen datos subsimbólicos, es decir añaden sentido. Los datos lógicos describen cómo los datos simbólicos pueden ser usados para deducir conclusiones lógicas, es decir añaden comprensión. [13] 
Ciclo de vida
El ciclo de vida de los metadatos comprende los fases creación, manipulación y destrucción. El análisis minucioso de cada una de las etapas saca a la luz asuntos significativos.
Creación
Se pueden crear metadatos manualmente, semiautomáticamente o automáticamente. El proceso manual puede ser muy laborioso, dependiente del formato usado y del volumen deseado, hasta un grado en el que los seres humanos no puedan superarlo. Por eso, el desarrollo de utillaje semiautomático o automático es más que deseable.
En la producción automática el software adquiere las informaciones que necesita sin ayuda externa. Aunque el desarrollo de algoritmos tan avanzados está siendo objeto de investigación actualmente, no es probable que la computadora vaya a ser capaz de extraer todos los metadatos automáticamente. En vez de ello, se considera la producción semiautomática más realista; aquí un servidor humano sostiene algoritmos autónomos con la aclaración de inseguridades o la proposición de informaciones que el software no puede extraer sin ayuda.
Hay muchos expertos que se encargan del diseño de herramientas para la creación de metadatos pero que ignoran cuestionar este proceso. Según los que no evitan el asunto la generación no debe comenzar después de la terminación de un recurso si no que debe hacerse durante la fabricación: hay que archivar los metadatos tan pronto como se originan, con los conocimientos especiales del productor, para evitar una laboriosa reconstrucción posterior. Por eso, se tiene que integrar la producción de metadatos en el procedimiento de fabricación del recurso. [12]
Manipulación
Si los datos cambian, los metadatos tienen que cambiar también. Aquí se hace la pregunta quien va a adaptar los metadatos. Hay modificaciones que pueden ser manejadás sencilla y automáticamente, pero hay otras donde la intervención de un servidor humano es indispensable.
La metaproducción, el reciclaje de partes de recursos para crear otros recursos, demanda atención particular. La fusión de los metadatos afiliados no es trivial, especialmente si se trata de información con relevancia jurídica, como por ejemplo la gestión de derechos digitales.

Destrucción
Además hay que investigar la destrucción de metadatos. En algunos casos es conveniente eliminar los metadatos juntos con sus recursos, en otros es razonable conservar los metadatos, por ejemplo para supervisar cambios en un documento de texto.
Almacenamiento
Hay dos posibilidades para almacenar metadatos: depositarlos internamente, en el mismo documento que los datos, o despositarlos externamente, en su mismo recurso. Inicialmente, los metadatos se almacenaban internamente para facilitar la administración.
Hoy, por lo general, se considera mejor opción la localización externa porque hace posible la concentración de metadatos para optimizar operaciones de busca. Por contra, existe el problema de cómo se liga un recurso con sus metadatos. La mayoría de los estándares usa URIs, la técnica de localizar documentos en la World Wide Web, pero este método propone otras preguntas, por ejemplo qué hacer con documentos que no tienen URI.
Codificación
Los primeros y más simples formatos de los metadatos usaron texto no cifrado o la codificación binaria para almacenar metadatos en ficheros.
Hoy, es común codificar metadatos usando XML. Así, son legibles tanto por seres humanos como por computadoras. Además este lenguaje tiene muchas características a su favor, por ejemplo es muy simple integrarlo en la World Wide Web. Pero también hay inconvenientes: los datos necesitan más espacio de memoria que en formato binario y no está claro cómo convertir la estructura de árbol en un corriente de datos.
Por eso, muchos estándares incluyen utilidades para convertir XML en codificación binaria y viceversa, de forma que se aúnen las ventajas de los dos.
Vocabularios controlados y ontologías
Para garantizar la uniformidad y la compatibilidad de los metadatos, muchos sugieren el uso de un vocabulario controlado fijando los términos de un campo. Por ejemplo, en caso de sinónimos o interlenguaje hay que hay que acordarse qué palabras se usan para evitar que el buscador localice «español» pero no «española».
Una ontología además define las relaciones de los términos del vocabulario para que la computadora puede evaluarlas automáticamente. Así es posible presentar una página web sobre «Vincent van Gogh» aunque el usuario tecleó «pintores neerlandeses»; usando una ontología adecuada el buscador comprende que van Gogh fue un pintor neerlandés.
Un concepto muy similar a las ontologías son las folksonomías. Las ontologías son definidas por expertos del campo que ordenan los términos, pero las folksonomías son definidas por los mismos usuarios.
Crítica
Algunos expertos critican fuertemente el uso de metadatos. Sus argumentos más sustanciosos son:
•	Los metadatos son costosos y necesitan demasiado tiempo. Las empresas no van a producir metadatos porque no hay demanda y los usuarios privados no van a invertir tanto tiempo. 
•	Los metadatos son demasiado complicados. La gente no acepta los estándares porque no los comprende y no quiere aprenderlos. 
•	Los metadatos dependen del punto de vista y del contexto. No hay dos personas que añadan los mismos metadatos. Además, los mismos datos pueden ser interpretados de manera totalmente diferente, dependiendo del contexto. 
•	Los metadatos son ilimitados. Es posible adherir más y más metadatos útiles y no hay fin. 
•	Los metadatos son superfluos. Ya hay buscadores potentes para textos, y en el futuro la técnica query by example («busqueda basada en un ejemplo») va a mejorarse, tanto para localizar imágenes como para música y vídeo. 
Algunos estándares de metadatos están disponibles pero no se aplican: los críticos lo consideran una prueba de las carencias del concepto de metadatos. Hay que anotar que este efecto también puede ser causado por insuficiente compatibilidad de los formatos o por la enorme diversidad que amedrenta a las empresas. Fuera de eso hay fomatos de metadatos muy populares. [7]

Formatos y estándares
Hay dos grupos que impulsan el desarrollo de formatos de metadatos: la técnica multimedia y la web semántica. El destino de la técnica multimedia es describir un singular recurso de multimedia, el de la web semántica la descripción de recursos de cada tipo y además el encadenamiento de los conocimientos. Los formatos más populares y grandes son:
•	ID3 hace posible la notación de metadatos muy sencillos, tales como título e intérprete, en ficheros de audio MP3. El formato es muy popular y demuestra que los metadatos pueden ser útiles. 
•	MPEG-7. 
•	MPEG-21. 
•	TV-Anytime. 
•	Dublin Core. 
•	LOM. 
•	Marco de descripción de recursos (RDF). 
•	RDF Schema. 
•	OWL. 
•	NewsML y SportsML. 

WYSIWYG

El programa de la izquierda usa un editor WYSIWYG para producir un documento. El programa de la derecha contiene el código LaTeX, que cuando se compile producirá un documento que se verá muy similar al documento de la izquierda. Compilar código de formato no es un proceso WYSIWYG.
WYSIWYG es un acrónimo de What You See Is What You Get (en inglés, "lo que ves es lo que obtienes"). Se aplica a los procesadores de texto y otros editores de texto con formato (como los editores de HTML) que permiten escribir un documento viendo directamente el resultado final, frecuentemente el resultado impreso. Se dice en contraposición a otros procesadores de texto, hoy en día poco frecuentes, en los que se escribía sobre una vista que no mostraba el formato del texto, hasta la impresión del documento. En el caso de editores de HTML este concepto se aplica a los que permiten escribir la página sobre una vista preliminar similar a la de un procesador de textos, ocupándose en este caso el programa de generar el código fuente en HTML.
Ejemplos de editores HTML tipo WYSIWYG son: Dreamweaver, Quanta Plus, NVU, Amaya, Adobe Golive, Writer (de OpenOffice.org), y las versiones de Composer de Netscape y Mozilla.
Ejemplo de formateador de textos que no es WYSIWYG: LaTeX.

Lenguajes de descripción
Los lenguajes de descripción son lenguajes cuya función principal no es hacer programas, si no describir cómo se representan los datos, como por ejemplo, páginas web (HTML), ecuaciones (MathML, LaTeX, CML), representaciones geográficas (GML), puntos geográficos (waypoints), subtítulos (VobSub, OGM), animaciones (SMIL), imágenes vectoriales (SVG), representaciones 3D (X3D), etc.

Subcategorías
Se listan 2 subcategorías de esta categoría. 
H
•	[+] HTML
X
	[+] XML
Artículos en la categoría «Lenguajes de descripción»
Se listan 26 artículos de esta categoría. 
A
	Atom
B
	BPEL
C
	Carácter ruby
D
	DTD 
	DVI (TeX)
H
	Hojas de estilo en cascada
L
	LaTeX 
	Lenguaje de marcado	L cont.
	Lenguaje de marcas ligero
M
	Marco de descripción de recursos
O
	OPML 
	OpenDocument
P
	PostScript 
	Printer Command Language
R
	RTF 
	ReStructuredText
S
	SGML	S cont.
	Structured Text
V
	VRML
W
	WML 
	WSDL 
	WebDAV 
	Webml 
	Wikitexto
X
	XBL 
	XBRL	

SGML
SGML son las siglas de "Standard Generalized Markup Language" o "Lenguaje de Marcación Generalizado". Consiste en un sistema para la organización y etiquetado de documentos. La Organización Internacional de Estándares (ISO) ha normalizado este lenguaje en 1986.
El lenguaje SGML sirve para especificar las reglas de etiquetado de documentos y no impone en sí ningún conjunto de etiquetas en especial.
El lenguaje HTML esta definido en términos del SGML. XML es un nuevo estándar con una funcionalidad similar a la del SGML aunque más sencillo, y de creación posterior.
La industria de la publicación de documentos constituye uno de los principales usuarios del lenguaje SGML. Empleando este lenguaje, se crean y mantienen documentos que luego son llevados a otros formatos finales como HTML, Postscript, RTF, etc.

HTML

Un ejemplo de código HTML con coloreado de sintaxis
El HTML, acrónimo inglés de HyperText Markup Language (lenguaje de marcas hipertextuales), lenguaje de marcación diseñado para estructurar textos y presentarlos en forma de hipertexto, que es el formato estándar de las páginas web. Gracias a Internet y a los navegadores del tipo Internet Explorer, Opera, Firefox o Netscape, el HTML se ha convertido en uno de los formatos más populares que existen para la construcción de documentos y también de los más fáciles de aprender.
HTML es una aplicación de SGML conforme al estándar internacional ISO 8879. XHTML es una reformulación de HTML 4 como aplicación XML 1.0, y que supone la base para la evolución estable de este lenguaje. Además XHTML permite la compatibilidad con los agentes de usuario que ya admitían HTML 4 siguiendo un conjunto de reglas.

Algunas etiquetas básicas de HTML
Las etiquetas básicas de HTML, de obligada presencia en todo documento son:
•	<HTML>: Es la etiqueta que define el inicio del documento html, le indica al navegador que todo lo que viene a continuación debe tratarlo como una serie de códigos html. 
•	<HEAD>: Define la cabecera del documento html, esta cabecera suele contener información sobre el documento que no se muestra directamente en el navegador. Como por ejemplo el título de la ventana de su navegador. Dentro de la cabecera <HEAD> podemos encontrar: 
•	<TITLE>: Define el título de la página. Por lo general, el título aparece en la barra de título encima de la ventana 
•	<LINK>: para definir algunas características avanzadas, como por ejemplo las hojas de estilo usadas para el diseño de la página, ejemplo :<link rel="stylesheet" href="/style.css" type="text/css"> 
•	<BODY>: Define el contenido principal o cuerpo del documento, esta es la parte del documento html que se muestra en el navegador, dentro de esta etiqueta pueden definirse propiedades comunes a toda la página, como color de fondo y márgenes. Dentro del cuerpo <BODY> podemos encontrar numerosísimas etiquetas. A continuación se indican algunas a modo de ejemplo: 
•	<H1>, <H2>,... <H6>: encabezados o títulos del documento en diferentes tamaños de fuente 
•	<P>: párrafo nuevo 
•	<BR>: salto de línea forzado 
•	<TABLE>: comienzo de una tabla (las filas se identifican con <TR> y las celdas dentro de las filas con <TD>) 
•	<A>: indica la existencia de un hipervínculo o enlace, dentro o fuera la página web. Debe definirse el parámetro de pasada por medio del atributo href (ejemplo: <a href="http://www.google.com">Google</a> se representa como Google) 
•	<DIV>: comienzo de un área especial en la página 
•	<IMG>: indica la existencia de una imagen para mostrarse en el navegador 
•	<font color="#xxxxxx">:Para cambiar el color de la letra, donde las x son un número hexadecimal. 
•	<LI><OL><UL>:Es uno de los más utilizados para el manejo de listas. 
Nota: Vale decir que cada etiqueta debe cerrarse tal cual se abrió pero con un pequeño cambio: un "/" tal como se muestra en el siguiente ejemplo:
o	<script> </script> 

Nociones básicas de HTML
El lenguaje HTML puede ser creado y editado con cualquier editor de textos básico, como puede ser el Bloc de Notas de Windows (o Notepad), o cualquier otro editor que admita texto sin formato como GNU Emacs, Microsoft Wordpad, TextPad etc. Existen además, otros programas para la realización de sitios Web o edición de código HTML, como por ejemplo Microsoft FrontPage, el cual tiene un formato básico parecido al resto de los programas de Office. También existe el famoso software de Adobe(quién adquirió la empresa Macromedia) llamado Dreamweaver, siendo uno de los más utilizados en el ámbito de diseño y programación Web. Estos programas se les conoce como editores WYSIWYG o What You See Is What You Get (en español: “lo que ves es lo que obtienes”). Esto significa que son editores los cuales van mostrando el resultado de lo que se esta editando en tiempo real a medida que se va desarrollando el documento. Ahora bien, esto no significa una manera distinta de realizar sitios web, sino que una forma un tanto más simple ya que estos programas, además de tener la opción de trabajar con la vista preliminar, tiene su propia sección HTML la cual va generando todo el código a medida que se va trabajando. Combinar estos dos métodos resulta muy interesante, ya que de alguna manera se ayudan entre sí. Por ejemplo; si estoy editando todo en HTML y de pronto olvido algún código o etiqueta, simplemente me dirijo al editor visual o WYSIWYG y continuo ahí la edición, o viceversa, ya que hay casos en que sale más rápido y fácil escribir directamente el código de alguna característica que queramos adherirle al sitio, que buscar la opción en el programa mismo.
HTML utiliza etiquetas o marcas, que consisten en breves instrucciones de comienzo y final, mediante las cuales se determinan la forma en la que debe aparecer en su navegador el texto, así como también las imágenes y los demás elementos, en la pantalla del ordenador. Toda etiqueta se identifica porque está encerrada entre los signos menor que y mayor que (<>), y algunas tienen atributos que pueden tomar algún valor. En general las etiquetas se aplicarán de dos formas especiales:
•	Se abren y se cierran, como por ejemplo: <b>negrilla</b> que se vería en su navegador como negrilla. 
•	No pueden abrirse y cerrarse, como <hr> que se vería en su navegador como una línea horizontal. 
•	Otras que pueden abrirse y cerrarse, como por ejemplo <p>. 
•	Las etiquetas básicas o mínimas son: 
 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> 
 <html lang="es">
   <head>
     <title>Ejemplo</title>
   </head>
   <body>
     <p>ejemplo</p>
   </body>
 </html>
Conocer más
Pruebe a elegir Ver código fuente en su navegador favorito: verá realmente la información que está recibiendo su navegador y cómo la está interpretando. Por ejemplo: en Internet Explorer o en Firefox simplemente presione ver en el menú principal, luego presione código fuente y listo, ya puede ver el código fuente de la página que esta viendo en su explorador.
Historia del estándar
En 1989 existían dos técnicas que permitían vincular documentos electrónicos, por un lado los hipervínculos (links) y por otro lado un poderoso lenguaje de etiquetas denominado SGML. Por entonces un usuario conocedor de ambas opciones, Tim Berners-Lee físico nuclear del Centro Europeo de Investigaciones Nucleares da a conocer a la prensa que estaba trabajando en un sistema que permitirá acceder a ficheros en línea, funcionando sobre redes de computadoras o máquinas electrónicas basadas en el protocolo TCP/IP.
Principios de 1990, Tim Berners-Lee define por fin el HTML como un subconjunto del conocido SGML y crea algo más valioso aun, el World Wide Web. En 1991, Tim Berners-Lee crea el primer navegador de HTML que funcionaría en modo texto y para UNIX.
Los trabajos para crear un sucesor del HTML, posteriormente llamado 'HTML+', comenzaron a finales de 1993. El HTML+ se diseñó originalmente para ser un superconjunto del HTML que permitiera evolucionar gradualmente desde el formato HTML anterior. A la primera especificación formal de HTML+ se le dio, por lo tanto, el número de versión 2.0 para distinguirla de esos "estándares no oficiales" previos. Los trabajos sobre HTML+ continuaron, pero nunca se convirtió en un estándar.
El borrador del estándar HTML 3.0 fue propuesto por el recién formado W3C en marzo de 1995. Con él se introdujeron muchas nuevas capacidades, tales como facilidades para crear tablas, hacer que el texto fluyese alrededor de las figuras y mostrar elementos matemáticos complejos. Aunque se diseñó para ser compatible con HTML 2.0, era demasiado complejo para ser implementado con la tecnología de la época y, cuando el borrador del estándar expiró en septiembre de 1995, se abandonó debido a la carencia de apoyos de los fabricantes de navegadores web. El HTML 3.1 nunca llegó a ser propuesto oficialmente, y el estándar siguiente fue el HTML 3.2, que abandonaba la mayoría de las nuevas características del HTML 3.0 y, a cambio, adoptaba muchos elementos desarrollados inicialmente por los navegadores web Netscape y Mosaic. La posibilidad de trabajar con fórmulas matemáticas que se había propuesto en el HTML 3.0 pasó a quedar integrada en un estándar distinto llamado MathML.
El HTML 4.0 también adoptó muchos elementos específicos desarrollados inicialmente para un navegador web concreto, pero al mismo tiempo comenzó a limpiar el HTML señalando algunos de ellos como 'desaprobados'.
Ya no va a haber nuevas versiones del HTML. Sin embargo, la herencia del HTML se mantiene en XHTML, que se basa en XML.

XHTML
XHTML, acrónimo inglés de eXtensible Hypertext Markup Language (lenguaje extensible de marcado de hipertexto), es el lenguaje de marcado pensado para sustituir a HTML como estándar para las páginas web. XHTML es la versión XML de HTML, por lo que tiene, básicamente, las mismas funcionalidades, pero cumple las especificaciones, más estrictas, de XML. Su objetivo es avanzar en el proyecto del World Wide Web Consortium de lograr una web semántica, donde la información, y la forma de presentarla estén claramente separadas. En este sentido, XHTML serviría únicamente para transmitir la información que contiene un documento, dejando para hojas de estilo (como las hojas de estilo en cascada) y JavaScript su aspecto y diseño en distintos medios (ordenadores, PDAs, teléfonos móviles, impresoras...).
Vista general
XHTML es el sucesor de HTML. Es por eso que muchos lo consideran la “versión actual” del HTML, pero es una recomendación aparte y a la vez paralela; la W3C continúa recomendando el uso de XHTML 1.1, XHTML 1.0, y HTML 4.01 para publicar en la web.
La necesidad de una versión más estricta de HTML se sintió principalmente porque el contenido de la World Wide Web ahora puede visualizarse desde numerosos dispositivos (como móviles) a parte de los ordenadores tradicionales, donde no pueden dedicarse recursos suplementarios para afrontar la complejidad añadida de la sintaxis del HTML.
La mayoría de las versiones recientes de los navegadores web más populares soportan XHTML adecuadamente, pero algunas versiones más antiguas solo pueden leer el XHTML como si se tratara de HTML. Asimismo casi todos los navegadores que son compatibles con XHTML también leen HTML correctamente. Algunos argumentan que esta compatibilidad ralentiza el cambio de HTML a XHTML. En octubre de 2005 aproximadamente el 10% de los internautas utilizaban un navegador compatible con el estandar XHTML [1]. El Internet Explorer de Microsoft es incompatible con XHTML, a pesar de que esta empresa sea miembro de la W3C [2]. Por tanto, gran parte de los autores de sitios web se ven forzados a elegir entre la escritura de documentos válidos, respetuosos con los estándares u ofrecer contenido que se visualice correctamente en la mayor parte de los navegadores.
Una característica especialmente útil del XHTML es que elementos de distintos espacios de nombres XML (como MathML y Scalable Vector Graphics) pueden ser incorporados.
Los cambios de HTML a la primera generación de XHTML (es decir, XHTML 1.x) son menores; ya que, principalmente, están destinados a conseguir la conformidad con XML. El cambio más importante es el requerimiento que el documento esté bien formado y que todas las etiquetas estén explícitamente cerradas, como se requiere en XML. Como las etiquetas en XML distinguen entre mayúsculas y minúsculas (case-sensitive), la recomendación XHTML ha definido todos los nombres de etiqueta en minúsuclas. Lo cual está en contraste directo a las tradiciones extendidas en el tiempo de HTML 2.0, cuando mucha gente prefería las mayúsculas para estos casos, normalmente para mostrar más fácilmente el contraste de éstas con el contenido. En XHTML, los valores de los atributos deben encerrarse entre comillas ('simples' o "dobles", es indiferente). Al contrario ocurría en SGML y por consecuencia en HTML, donde las comillas podían omitirse en algunos casos. Todos los elementos han de ser explícitamente cerrados, incluyendo elementos vacíos como pueden ser img o br. Esto puede hacerse añadiendo una barra a la etiqueta: <img … /> y <br />. La minimización de atributos (como <option selected>) está también prohibida, ya que el atributo “selected” no contiene ningún valor explícito; en lugar de eso, se usa <option selected="selected">. Hay más diferencias detalladas en la recomendación XHTML 1.0 de la W3C.
Ventajas
Las principales ventajas del XHTML sobre otros formatos son:
	Compatibilidad parcial con navegadores antiguos: la información se visualiza, aunque sin formato. Apuntar que el XHTML 1.0 fue diseñado expresamente para ser mostrado en navegadores que soportan HTML de base. 
	Un mismo documento puede adoptar diseños radicalmente distintos en diferentes aparatos, pudiendo incluso escogerse entre varios diseños para un mismo medio. 
	Facilidad de edición directa del código y de mantenimiento. 
	Formato abierto, compatible con los nuevos estándares que actualmente está desarrollando el W3C como recomendación para futuros agentes de usuario o navegadores. 
	Los documentos escritos conforme a XHTML 1.0 pueden potencialmente presentar mejor rendimiento en las actuales herramientas web que aquellos escritos conforme a HTML. 
Inconvenientes
	Algunos navegadores antiguos no son totalmente compatibles con los estándares, lo que hace que las páginas no siempre se muestren correctamente. Esto cada vez es menos problemático, al ir cayendo en desuso. 
	Muchas herramientas de diseño web aún no producen código XHTML correcto. 

Diferencias entre HTML y XHTML
La siguiente lista muestra algunas reglas de XHTML 1.0 que lo diferencian de HTML 4.01. Muchas de estas diferencias vienen con el cambio de ser una aplicación SGML a ser una aplicación del más estricto XML:
	Los elementos vacíos deben cerrarse siempre: 
	Incorrecto: <br> 
	Correcto: <br></br> o <br/> o <br />
Nota: Cualquiera de las tres formas es válida en XHTML. Se recomienda el cierre <br /> por razones de compatibilidad. 
	Los elementos no vacíos también deben cerrarse siempre: 
	Incorrecto: <p>Primer párrafo<p>Segundo párrafo 
	Correcto: <p>Primer párrafo</p><p>Segundo párrafo</p> 
	Los elementos anidados deben tener un correcto orden de apertura/cierre (el que se abre último, debe cerrarse primero). 
	Incorrecto: <em><strong>Texto</em></strong> 
	Correcto: <em><strong>Texto</strong></em> 
	Se debe siempre especificar un texto alternativo para imágenes (atributo "alt" para la etiqueta "img"). 
	Incorrecto: <img src="http://upload.wikimedia.org/wikipedia/es/b/bc/Wiki.png" /> 
	Correcto: <img src="http://upload.wikimedia.org/wikipedia/es/b/bc/Wiki.png" alt="Logo: Wikipedia, la enciclopedia libre" /> 
	Insertar elementos de bloque dentro de elementos de línea. 
	Incorrecto: <em><h2>Título</h2></em> 
	Correcto: <h2><em>Título</em></h2> 
	Los valores de los atributos deben siempre ir encerrados entre comillas (simples o dobles). 
	Incorrecto: <td rowspan=3> 
	Correcto: <td rowspan="3"> 
	Correcto: <td rowspan='3'> 
	El símbolo & (ampersand) debe ser usado únicamente como parte de una entidad. 
	Incorrecto: Cars & houses 
	Correcto: Cars &amp; houses 
	Incorrecto: <a src="http://www.domname.com/index.php?id=1&cat=2">Category 2</a> 
	Correcto: <a src="http://www.domname.com/index.php?id=1&amp;cat=2">Category 2</a> 
	Los nombres de elementos y atributos deben ir en minúsculas. 
	Incorrecto: <A HREF="http://www.domname.com">Domname</A> 
	Correcto: <a href="http://www.domname.com">Domname</a> 
	No está permitida la minimización de atributos (se usa el nombre del atributo como valor). 
	Incorrecto: <textarea readonly>Solo-lectura</textarea> 
	Correcto: <textarea readonly="readonly">Solo-lectura</textarea> 
	Los atributos desaprobados en HTML 4.01 no forman parte de XHTML. 
	Incorrecto: <font color="#0000FF">Blue text</font> 
	Correcto: <span style="color: #0000FF;">Blue text</span> 
Reglas para DTDs estrictos
	El texto no debe ser insertado directamente en el cuerpo (dentro de la etiqueta "body"). 
	Incorrecto: <body>Texto plano</body> 
	Correcto: <body><span>Texto plano</span></body> 

XML
XML (acrónimo en inglés de eXtensible Markup Language, (‘lenguaje de marcas extensible’) es un metalenguaje extensible de etiquetas desarrollado por el World Wide Web Consortium (W3C). Es una simplificación y adaptación del SGML y permite definir la gramática de lenguajes específicos (de la misma manera que HTML es a su vez un lenguaje definido por SGML). Por lo tanto XML no es realmente un lenguaje en particular, sino una manera de definir lenguajes para diferentes necesidades. Algunos de estos lenguajes que usan XML para su definición son XHTML, SVG, MathML.
XML no ha nacido sólo para su aplicación en Internet, sino que se propone como un estándar para el intercambio de información estructurada entre diferentes plataformas. Se puede usar en bases de datos, editores de texto, hojas de cálculo y casi cualquier cosa imaginable.
XML es una tecnología sencilla que tiene a su alrededor otras que la complementan y la hacen mucho más grande y con unas posibilidades mucho mayores. Tiene un papel muy importante en la actualidad ya que permite la compatibilidad entre sistemas para compartir la información de una manera segura, fiable y fácil.
Historia
XML proviene de un lenguaje inventado por IBM en los años '70, llamado GML (General Markup Language), que surgió por la necesidad que tenía la empresa de almacenar grandes cantidades de información. Este lenguaje gustó a la ISO, por lo que en 1986 trabajaron para normalizarlo, creando SGML (Standard General Markup Language), capaz de adaptarse a un gran abanico de problemas. A partir de él se han creado otros sistemas para almacenar información. En el año 1989 se creó el lenguaje HTML que fue utilizado para la WWW. HTML ha ido creciendo de una manera descontrolada, no cumpliendo todos los requisitos que pedía la sociedad global de Internet, a pesar de los esfuerzos del W3C de poner orden y establecer reglas y etiquetas para su estandarización. Esta entidad empezó en 1998 el desarrollo de XML, en el que aún continúa.
Objetivos y usos de XML
El XML se creó para que cumpliera varios objetivos:
	Que fuera idéntico a la hora de servir, recibir, y procesar la información del HTML para aprovechar toda la tecnología implantada de este. 
	Que fuera normal y conciso desde el punto de vista de los datos y la manera de guardarlos. 
	Que fuera extensible, para que lo puedan utilizar en todos los campos del conocimiento. 
	Que fuese fácil de leer y editar. 
	Que fuese fácil de implantar, programar y aplicar a los distintos sistemas. 
Ventajas del XML
	Comunicación de datos. Si la información se transfiere en XML cualquier aplicación podría escribir un documento de texto plano con los datos que estaba manejando en formato XML y otra aplicación recibir esta información y trabajar con ella. 
	Migración de datos. Si trabajamos en formato XML sería muy sencillo mover datos de una base de datos a otra. 
	Aplicaciones Web. Con XML hay una sola aplicación que maneja los datos y para cada navegador podemos tener una hoja de estilo o similar para aplicarle el estilo adecuado. 
Estructura de un documento XML
A primera vista, un documento XML es similar a los documentos HTML, pero realmente no son iguales, hay una diferencia principal: un documento XML contiene datos que se autodefinen exclusivamente, mientras que un documento HTML contiene datos mal definidos, mezclados con elementos de formato. En XML se separa el contenido de la presentación de forma total.
Al igual que el HTML, se basa en documentos de texto plano en los que se utilizan etiquetas para delimitar los elementos de un documento. Sin embargo, XML define estas etiquetas en función del tipo de datos que está describiendo y no de la apariencia final que tendrán en pantalla o en la copia impresa; además de permitir definir nuevas etiquetas y ampliar las existentes.
A continuación se muestra un ejemplo para entender la estructura de un documento XML:
<?xml version=”1.0”?>
<!DOCTYPE MENSAJE SYSTEM “mensaje.dtd”>
<mensaje>
        <remitente>
                <nombre>Alfredo Reino</nombre>
                <mail>alf@ibium.com</mail>
        </remitente>
        <destinatario>
                <nombre>Bill Clinton</nombre>
                <mail>president@WhiteHouse.gov</mail>
        </destinatario>
        <asunto>Hola Bill</asunto>
        <texto>
                <parrafo>¿Hola que tal? Hace <enfasis>mucho</enfasis> que
                no escribes. A ver si llamas y quedamos para tomar algo. </parrafo>
        </texto>
</mensaje>

Documentos XML bien formados
Se llama documentos "bien formados" (del inglés well formed) a los documentos que cumplen con todas las definiciones básicas de formato y pueden, por lo tanto, ser analizados correctamente por cualquier "parser" que cumpla con la norma. Se separa esto del concepto de validez, que implica que no sólo el documento es bien formado sino que también su estructura se corresponde con la definida en un documento externo (expresada como DTD o como XSchema).
	Los documentos han de seguir una estructura estrictamente jerárquica con lo que respecta a las etiquetas que delimitan sus elementos. Una etiqueta debe estar correctamente incluida en otra, es decir, las etiquetas deben estar correctamente anidadas. Los elementos con contenido deben estar correctamente cerrados. 
	XML permite elementos sin contenido pero la etiqueta debe ser: <elemento_sin_contenido /> 
	Los documentos XML sólo permiten un elemento raíz del que todos los demás sean parte, es decir, sólo puede tener un elemento inicial. 
	Los valores atributos en XML siempre deben estar encerrados entre comillas simples o dobles. 
	El XML es sensible a mayúsculas y minúsculas. Existe un conjunto de caracteres llamados espacios en blanco (espacios, tabuladores, retornos de carro, saltos de línea) que los procesadores XML tratan de forma diferente en el marcado XML. 
	Es necesario asignar nombres a las estructuras, tipos de elementos, entidades, elementos particulares, etc. En XML los nombres tienen alguna característica en común. 
	Las construcciones como etiquetas, referencias de entidad y declaraciones se denominan marcas; son partes del documento que el procesador XML espera entender. El resto del documento entre marcas son los datos entendibles por las personas. 
Prólogo
Aunque no es obligatorio, los documentos XML pueden empezar con unas líneas que describen la versión XML, el tipo de documento y otras cosas.
El prólogo contiene:
	una declaración XML. Es la sentencia que declara al documento como un documento XML. 
	una declaración de tipo de documento. Enlaza el documento con su DTD, o el DTD puede estar incluido en la propia declaración o ambas cosas al mismo tiempo. 
	uno o más comentarios e instrucciones de procesamiento. 
Elementos
Los elementos XML pueden tener contenido (más elementos, caracteres o ambos), o bien ser elementos vacíos.
Atributos
Los elementos pueden tener atributos, que son una manera de incorporar características o propiedades a los elementos de un documento.
Entidades predefinidas
Entidades para representar caracteres espaciales para que no sean interpretados como marcado en el procesador XML.
Secciones CDATA
Es una construcción en XML para especificar datos utilizando cualquier carácter sin que se interprete como marcado XML
Comentarios
Comentarios a modo informativo para el programador que han de ser ignorados por el procesador.
Lista de tecnologías XML
	Schemas: 
	DTD 
	Schema 
	Relax-NG 
	Hojas de estilos 
	XSL-FO 
	XSLT 
	XLink 
	XPointer 
	hojas de estilo en cascada (CSS) 
	Programación 
	DOM 
	JDOM 
	SAX 
	STAX 
Hay quien opina que XML es demasiado pesado para algunas aplicaciones y difícil de editar con un editor de texto simple. Por ello merece la pena mencionar algunas alternativas más ligeras y simples. Los lenguajes de marcas ligeros:
	Simple Outline XML: es un XML simplificado que se puede convertir sin problemas en XML completo. 
	YAML y OGDL. Estos dos son ficheros de solo texto que no están emparentados con XML como el SOX, antes comentado. Más Información 
	BBCode. Éste tiene un uso muy restringido para dar formato nada más. 
	Slip 
También hay por lo menos un lenguaje basado en XML en formato binario, llamado EBML.
Document type definition (DTDs)
Crear una definición DTD es como crear nuestro propio lenguaje de marcado, para una aplicación específica. La DTD define los tipos de elementos, atributos y entidades permitidas, y puede expresar algunas limitaciones para combinarlos. Los documentos XML que se ajustan a su DTD se denominan válidos. Que un documento sea bien formado no quiere decir que sea válido, un documento bien formado simplemente es aquel que respeta la estructura y sintaxis definidas por la especificación de XML. Un documento bien formado puede ser válido si cumple las reglas de una DTD determinada.
Declaraciones tipo elemento
Los elementos deben ajustarse a un tipo de documento declarado en una DTD para que el documento sea considerado como válido.
Modelos de contenido
Un modelo de contenido es un patrón que establece los subelementos aceptados, y el orden en que se aceptan.
Declaraciones de lista de atributos
Los atributos se usan para añadir información adicional a los elementos de un documento.
Tipos de atributos
	Atributos CDATA y NMTOKEN 
	Atributos enumerados y notaciones 
	Atributos ID e IDREF 
Declaración de entidades
XML hace referencia a objetos que no deben ser analizados sintácticamente según las reglas XML, mediante el uso de entidades. Las entidades pueden ser:
	Internas o externas 
	Analizadas o no analizadas 
	Generales o parámetro 
XML Schemas (XSD)
Un Schema es algo similar a un DTD, define que elementos puede contener un documento XML, como están organizados y que atributos y de que tipo pueden tener sus elementos.
Ventajas de los Schemas frente a los DTDs
	Usan sintaxis de XML, al contrario que los DTDs. 
	Permiten especificar los tipos de datos. 
	Son extensibles. 
Extended Stylesheet Language (XSL)
EL Lenguage de Hoja de Estilo Extensible (eXtensible Stylesheet Language, XSL) es una familia de lenguajes que permiten describir como los archivos codificados en xml serán formateados(para mostrarlos) o transformados. Hay tres lenguajes en esta familia: XSL Transformations (XSLT), XSL Formatting Objects (XSL-FO)y XML Path Language.
XML Document Object Model
El empleo de la tecnología XML, al ser un estándar internacional y público, no nos ata a una plataforma o sistema de desarrollo concreto; por ello Java y Visual Basic pueden ser opciones interesantes para desarrollar aplicaciones XML.
Lenguaje de enlace XML (XLINK)
Xlink es una aplicación XML que intenta superar las limitaciones que tienen los enlaces de hipertexto en HTML. Es una especificación que todavía está en desarrollo.
Herramientas para trabajar con documentos XML
De hecho cualquier procesador de texto, que sea capaz de producir archivos txt es capaz de generar, aunque en los ambientes de desarrollo como el de visual estudio se facilita mucho ya que reconoce los formatos y ayuda a generar un XML bien formado.

Hojas de estilo en cascada
Las hojas de estilo en cascada (Cascading Style Sheets, CSS) son un lenguaje formal usado para definir la presentación de un documento estructurado escrito en HTML o XML (y por extensión en XHTML). El W3C (World Wide Web Consortium) es el encargado de formular la especificación de las hojas de estilo que servirá de estándar para los agentes de usuario o navegadores.
La idea que se encuentra detrás del desarrollo de CSS es separar la estructura de un documento de su presentación.
Por ejemplo, el elemento de HTML <H1> indica que un bloque de texto es un encabezamiento y que es más importante que un bloque etiquetado como <H2>. Versiones más antiguas de HTML permitían atributos extra dentro de la etiqueta abierta para darle formato (como el color o el tamaño de fuente). No obstante, cada etiqueta <H1> debía disponer de la información si se deseaba un diseño consistente para una página, y además, una persona que lea esa página con un navegador pierde totalmente el control sobre la visualización del texto.
Cuando se utiliza CSS, la etiqueta <H1> no debería proporcionar información sobre como va a ser visualizado, solamente marca la estructura del documento. La información de estilo separada en una hoja de estilo, especifica cómo se ha de mostrar <H1> : color, fuente, alineación del texto, tamaño, y otras características no visuales como definir el volumen de un sintetizador de voz (véase Sintetización del habla), por ejemplo.
La información de estilo puede ser adjuntada tanto como un documento separado o en el mismo documento HTML. En este último podrían definirse estilos generales en la cabecera del documento o en cada etiqueta particular mediante el atributo "style".
Las ventajas de utilizar CSS (u otro lenguaje de estilo) son:
	Control centralizado de la presentación de un sitio web completo con lo que se agiliza de forma considerable la actualización del mismo. 
	Los Navegadores permiten a los usuarios especificar su propia hoja de estilo local que será aplicada a un sitio web remoto, con lo que aumenta considerablemente la accesibilidad. Por ejemplo, personas con deficiencias visuales pueden configurar su propia hoja de estilo para aumentar el tamaño del texto o remarcar más los enlaces. 
	Una página puede disponer de diferentes hojas de estilo según el dispositivo que la muestre o incluso a elección del usuario. Por ejemplo, para ser impresa, mostrada en un dispositivo móvil, o ser "leída" por un sintetizador de voz. 
	El documento HTML en sí mismo es más claro de entender y se consigue reducir considerablemente su tamaño. 

Hay varias versiones: CSS1 y CSS2, con CSS3 en desarrollo por el World Wide Web Consortium (W3C). Los navegadores modernos implementan CSS1 bastante bien, aunque existen pequeñas diferencias de implementación según marcas y versiones de los navegadores¹. CSS2, sin embargo, está solo parcialmente implentado en los más recientes.
¹ Un problema muy conocido de implementación de CSS es el de la versión 5.X del popular navegador Internet Explorer que utiliza un modelo no estándar para el cálculo de las medidas (véase más abajo).
Maquetación CSS
Aunque de un tiempo atrás los diseñadores web han optado la utilización de tablas para el diseño de páginas webs. De esta forma, el uso que daban a las tablas era como elementos de estilo cuando su verdadero cometido es albergar contenido. La maquetación CSS consiste en utilizar capas (layers) que en HTML se definen con las marcas <div></div> (de apertura y cierre, respectivamente) para estructurar la aplicación web, como alternativa a las tablas y los marcos (frames). Así, podemos nombrar cada capa con el atributo id de manera que podremos definir las propiedades de dicha capa en el archivo CSS externo al documento, aunque también se puede incluir el código CSS en la misma página que el HTML, pero es poco funcional (es convieniente hacer uso de la modularidad para hacer más fácil el mantenimiento). Un ejemplo de utilización de la marca div sería:
Ejemplo.html
...
dentro del body
<div id="capa1">
    Contenido: imágenes, texto, etc.
</div>

Estilo_Ejemplo.css

#capa1 { /*aquí definimos las propiedades de la capa*/
background-color: #ffffff;
margin: auto;
color: #000000;
}
Además también se pueden aplicar extensiones CSS no estandares como estas:
Extensiones.css
#capa2 {
-moz-border-radius: 2.5px;   
-moz-opacity: 0.55;
filter:alpha(opacity=55); 
}

En este caso -moz-border-radius es una propiedad de los productos Gecko Gecko_(motor_de_navegación) el cual puede moldear el radio de elementos de una página, -moz-opacity es una implementación también de los motores de rendering de Mozilla y por último filter:alpha es una extensión propietaria de Internet_Explorer de Microsoft.
Recomendaciones del W3C
Cascading Style Sheets, nivel 1 (CSS1), Diciembre de 1996
	Propiedades de fuentes 
	Propiedades de color y fondo 
	Propiedades de texto 
	espaciado de palabras 
	alineación 
	Propiedades de caja 
	Margen 
	Borde 
	Relleno 
	Propiedades de clasificación 
	visualización 
	listas 
Ilustración de propiedades de caja:
Margen (Margin) 
Borde (Border) 
Relleno (Padding) 
Contenido (Content)	

Relleno (Padding)	

Borde (Border)	

Margen (Margin)	

Si se define una caja con el atributo width (ancho), se interpreta por el modelo de caja del W3C como la anchura del contenido. La anchura del relleno y del borde se añaden a la anchura total del elemento.
En el modelo de caja de Microsoft el atributo de anchura es la anchura total, es decir, la anchura del contenido, del relleno y del borde. Esto restringe severamente el uso de este modelo en una especificación para varios navegadores. Si uno quiere evitarlo, no puede especificar el margen, el relleno o el borde en la misma etiqueta que el ancho del contenido. Otra posibilidad es usar un hack (véase la sección de enlaces).
No obstante Internet Explorer 6.0 puede variarse a un modo acorde con el estándar si se usa una declaración !DOCTYPE apropiada.

MathML
El MathML o Mathematical Markup Language es un lenguaje de marcado basado en XML, cuyo objetivo es expresar notación matemática de forma que distintas máquinas puedan entenderla, para su uso en combinación con XHTML en páginas web, y para intercambio de información entre programas de tipo matemático en general. El soporte de MathML es grande en programas matemáticos (como Maple o Mathcad), pero aún escaso en navegadores (sólo vía plugins en Internet Explorer, parcial en Mozilla).
Ejemplo (fórmula cuadrática (quadratic formula): 
   se escribe en sintaxis TeX de la siguiente manera:
x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a}
y usando MathML así:
<math>
 <mrow>
  <mi>x</mi>
  <mo>=</mo>
  <mfrac>
    <mrow>
      <mrow>
        <mo>-</mo>
        <mi>b</mi>
      </mrow>
      <mo>&PlusMinus;</mo>
      <msqrt>
        <mrow>
          <msup>
            <mi>b</mi>
            <mn>2</mn>
          </msup>
          <mo>-</mo>
          <mrow>
            <mn>4</mn>
            <mo>&InvisibleTimes;</mo>
            <mi>a</mi>
            <mo>&InvisibleTimes;</mo>
            <mi>c</mi>
          </mrow>
        </mrow>
      </msqrt>
    </mrow>
    <mrow>
      <mn>2</mn>
      <mo>&InvisibleTimes;</mo>
      <mi>a</mi>
    </mrow>
  </mfrac>
 </mrow>
</math>
A pesar de ser menos compacta que TeX, la estructuración XML promete hacerla ampliamente usable y permite su visualización instantánea en aplicaciones como navegadores web, además de facilitar una interpretación directa de su significado en programas matemáticos. MathML no está pensado para ser escrito o editado directamente por humanos.

TeX
TEΧ, escrito como TeX cuando se escribe en texto sin formato, es un sistema de tipografía escrito por Donald E. Knuth, muy popular en el ambiente académico, especialmente entre las comunidades de matemáticos, físicos e informáticos. Ha conseguido sustituir con creces a troff, otro programa de tipografía habitual en Unix.
TeX es generalmente considerado como la mejor forma de componer complejas fórmulas matemáticas, pero, especialmente en la forma de LaTeX y otros paquetes de macros, se puede usar para otras tareas de composición. Se puede usar para componer expresiones matemáticas en las páginas de la Wikipedia: mira Wikipedia:Usando_TeX
Historia
Knuth empezó a escribir TeX porque se sentía molesto con la decreciente calidad de la tipografía en los volúmenes I-III de su obra El arte de programar ordenadores. En una manifestación del típico impulso hacker de resolver los problemas por sí mismo y de una vez por todas, empezó a diseñar su propio lenguaje de tipografía. Pensó que podía acabarlo en su año sabático, 1978; se equivocó por sólo ocho años. El lenguaje se finalizó y congeló (no se hicieron más modificaciones) alrededor de 1985.
Guy Steele coincidió en Stanford en el verano de 1978, cuando Knuth estaba desarrollando su primera versión de TeX. Cuando volvió al MIT a finales de año, reescribió la entrada/salida de TeX para que se ejecutase en el ITS
La primera versión de TeX se escribió usando el lenguaje de programación SAIL que se ejecutaba en una PDP-10 en el sistema operativo WAITS de la Universidad de Stanford. Para posteriores versiones de TeX, Knuth inventó el concepto de programación literaria, una forma de producir código fuente compilable y documentación con referencias de alta calidad (por supuesto, escrito en TeX) partiendo del mismo archivo original. El lenguaje usado se llama WEB y produce programas en Pascal.
TeX tiene un sistema de numeración de versiones peculiar. Desde la versión 3, las actualizaciones se indican añadiendo un número extra al final del decimal, por lo que el número de versión se aproxima asintóticamente a π. La versión actual es la 3.14159. Esto es un reflejo del hecho que TeX es ahora mismo muy estable y sólo se prevén pequeñas actualizaciones. Knuth ha indicado que el "último cambio final (hecho después de mi muerte)" será cambiar el número de versión a π, y que en ese momento todos los errores que queden serán considerados características.
El sistema tipográfico
Las órdenes de TeX empiezan con una barra invertida ("\") y sus argumentos se indican mediante llaves ("{}"). Sin embargo, casi todas las propiedades sintácticas de TeX pueden cambiarse sobre la marcha lo que hace que la entrada de TeX sea algo difícil de analizar por algo que no sea el propio TeX. 
TeX es un lenguaje basado en órdenes básicas y macros: muchas órdenes, incluyendo a la mayoría de los que definen los usuarios, se sustituyen sobre la marcha hasta que solo quedan órdenes básicas que entonces se ejecutan. La sustitución en sí misma está libre de efectos secundarios. La recursión de macros no consume memoria y las construcciones if-then-else también están disponibles. Esto hace de TeX un lenguaje Turing completo incluso al nivel de sustitución.
El sistema TeX tiene un conocimiento preciso de los tamaños de los caracteres y símbolos y usando esta información calcula el alineamiento óptimo de letras por línea y de líneas en cada página. Posteriormente produce un archivo DVI (DVI viene de las siglas en inglés device independent, independiente de dispositivo) que contiene la localización final de todos los caracteres. El archivo dvi se puede imprimir directamente con un controlador de impresora adecuado, o puede convertirse a otros formatos. Actualmente, pdfTeX se usa para generar archivos PDF saltándose la generación del DVI.
La mayor parte de la funcionalidad viene dada por diversas macros: las originales de Knuth englobadas en lo que se llama plainTeX, LaTeX (mayoritario en las ciencias técnicas), y ConTeXt (usado principalmente para publicaciones).
La referencia principal de TeX son los dos primeros volúmenes de la obra Computers and Typesetting de Knuth: The TeXbook y TeX: The Program (éste incluye el código fuente documentado completo de TeX).
La organización de los directorios en una instalación de TeX está estandarizado en un árbol llamado texmf.
Licencia
La licencia permite la libre distribución y modificación pero exige que cualquier versión modificada no se llame TEX, TeX o algo similar fácil de confundir y da derechos similares a aquellos de una marca registrada.
Calidad
Aunque está bien escrito, TeX es tan grande (y tan lleno de técnica avanzada) que se dice haber descubierto al menos un error en cada sistema Pascal en el que se ha compilado ya que TeX se ejecuta en la mayoría de los sistemas operativos.
Knuth ofrece recompensas monetarias para la gente que encuentre e informe de un error en el programa. El premio por error empezó con un centavo y se doblaba cada año hasta que quedó congelado en su valor actual de 327.68 dólares. Esto, sin embargo, no ha hecho pobre a Knuth, porque se han encontrado muy pocos errores y en cualquier caso el cheque probando que el propietario encontró un error en TeX normalmente se enmarca en vez de cobrarlo.

El nombre
Knuth explica en su obra The TeXbook que la palabra technology ("tecnología") tiene raíz griega y esta comienza por las letras τεχ. Por tanto, el nombre TeX en español se tiene que pronunciar [tej], y no [teks]. Ello se debe a que TeX no quiere decir TEX sino τεχ, acabado en la letra griega χ [ji]. .. La misma palabra griega τέχνη (ΤΕΧΝΗ – technē) significa "arte", una referencia a que la técnica no está reñida con el arte ni con la presentación elegante.
Cuando se está escribiendo un archivo en TeX y se quiere hacer referencia al nombre se dispone de la orden \TeX definido como
\hbox{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125ex X} 
y fue creado por Knuth para demostrar lo que se podía hacer con TeX. La letra "E" queda por debajo de la línea base y más unida a la T; en los otros sistemas se escribe usando la aproximación "TeX".
Trabajos derivados
Varios sistemas de procesamiento de documentos están basados en TeX entre los que destacan:
•	LaTeX (su nombre viene de Leslie Lamport TeX, su creador), que incorpora estilos de documento para libros, cartas, transparencias, etc. y añade características de referencias cruzadas y numeración automática de secciones y ecuaciones. 
•	ConTeXt, creado en su mayoría por Hans Hagen en Pragma es una herramienta de diseño de documentos profesional basada en TeX. Es más joven que LaTeX y por tanto quizás menos popular. 
•	AMS-TeX, producido por la Sociedad Matemática Americana, tiene muchas órdenes más cómodas para el usuario, que pueden ser modificadas por las revistas para que siga el estilo editorial. La mayoría de las características de AMS-TeX se pueden usar en LaTeX usando los distintos "paquetes" de AMS y se hace referencia a AMS-LaTeX. El manual principal de AMS-TeX se titula The Joy of TeX. 
•	jadeTeX que usa TeX como base para imprimir desde el sistema DSSSL de James Clark 
•	Texinfo, el sistema de preparación de documentación del proyecto GNU. 
Otras extensiones de TeX son por ejemplo: BibTeX para el manejo de bibliografías (distribuido con LaTeX), pdfTeX, que se salta la creación de DVI y genera archivos en PDF, y Omega, que permite a TeX usar el conjunto de caracteres Unicode. Todas las extensiones están disponibles en el CTAN, (Comprehensive TeX Archive Network).
Herramientas compatibles
En sistemas compatibles Unix, TeX se distribuye bajo la forma de la distribución teTeX. En sistemas Windows existe MiKTeX y fpTeX.
El editor de texto TeXmacs es un editor de textos científicos WYSIWYG que pretende ser compatible con TeX. Usa las tipografías de Knuth y puede generar un archivo TeX. Otra herramienta similar es LyX.

TeX y MediaWiki
Desde el 2003, el programa wiki Mediawiki (el usado por Wikipedia) implementa las marcas TeX usando las etiquetas <math>...</math> que encierran bloques de TeX. Esta capacidad es posible gracias a Texvc que básicamente es una secuencia de órdenes interpretadas que envían las marcas al programa TeX produciéndose un dvi, que con dvips genera un archivo PostScript el cual servirá de base para que Ghostscript cree la imagen PNG. Debido a la naturaleza de la web, esto se lleva a cabo con la seguridad y la eficiencia en mente: permitir que terceras personas pasen texto sin control al sistema TeX es una mala idea si valoras tus datos.
[editar]
Ejemplos
Un ejemplo simple en TeX - Crea un archivo llamado miprimer.tex que contenga lo siguiente:
hola
\bye
Abre un intérprete de órdenes y escribe
tex miprimer.tex
TeX creará un archivo llamado miprimer.dvi. Usa un programa adecuado para visualizarlo. MiKTeX por ejemplo contiene el visor yap
yap miprimer.dvi
El visor muestra hola en una página. \bye es la orden Tex que marca el final de un archivo y no se muestra en la salida final.
El archivo dvi puede ser impreso directamente desde el visor o convertido a un formato más común tal como PostScript usando el programa dvips.
Los archivos PDF se pueden crear directamente usando pdfTeX:
 pdftex miprimer.tex
pdfTeX fue creado originalmente porque al convertir los PostScript generados en PDF se obtenía una visualización de las tipografías de baja calidad, aunque la impresión era buena. La causa es que TeX usa de forma nativa tipografías Tipo 3 de mapas de bits, que no se visualizan tan bien como las tipografías Tipo 1 escalables.
Es posible actualmente hacer que dvips use las tipografías escalables con un poco de configuración (versiones recientes de Ghostscript lo permiten), pero una conversión directa a PDF tiene otros beneficios: es un proceso en un solo paso, no dos, y pdfTeX incluye cosas tales como marcadores e hipervínculos que no lo tiene PostScript.
Ejemplos matemáticos
Para ver a TeX en acción, prueba a escribir la conocida fórmula de la ecuación cuadrática:
La fórmula cuadrática es ${-b\pm\sqrt{b^2-4ac} \over {2a}}$
\bye
Con el texto de arriba deberías obtener algo que se viese como esto
La fórmula cuadrática es 
En un documento, para entrar en el modo matemático se escribe un signo $, a continuación la fórmula de manera que la entienda TeX y se cierra con otro signo $. Otro modo de presentación, que deja la fórmula centrada en una nueva línea, se consigue usando $$. Por ejemplo, la fórmula anterior se escribiría
La fórmula cuadrática es $${-b\pm\sqrt{b^2-4ac} \over {2a}}$$
\bye
y se vería como
La fórmula cuadrática es 

LaTeX

Logo de LaTeX escrito con LaTeX
(escrito LaTeX en texto plano) es un procesador de textos formado por un gran conjunto de macros de TeX, escritas inicialmente por Leslie Lamport (LamportTeX) en 1984, con la intención de facilitar el uso del lenguaje de composición tipográfica creado por Donald Knuth. Es muy utilizado para la composición de artículos académicos, tesis y libros técnicos, dado que la calidad tipográfica de los documentos realizados con LaTeX es comparable a la de una editorial científica de primera línea. LaTeX es software libre bajo licencia LPPL.
Descripción técnica
El LaTeX es un procesador de textos que está formado mayoritariamente por órdenes (macros) construidas a partir de comandos de TeX —un lenguaje de bajo nivel, en el sentido de que sus acciones últimas son muy elementales— pero con la ventaja añadida, en palabras de Lamport[1], de «poder aumentar las capacidades de LaTeX utilizando comandos propios del TeX descritos en The TeXbook»[2]. Esto es lo que convierte a LaTeX en una herramienta práctica y útil pues, a su facilidad de uso, se une toda la potencia de TeX. Estas características hicieron que LaTeX se extendiese rápidamente entre un amplio sector científico y técnico, hasta el punto de convertirse en uso obligado en comunicaciones y congresos y requerido por determinadas revistas a la hora de entregar artículos académicos.
Su código abierto permitió que muchos usuarios realizasen nuevas utilidades que extendiesen sus capacidades con objetivos muy variados, a veces ajenos a la intención con la que fue creado: aparecieron diferentes dialectos de LaTeX que, a veces, eran incompatibles entre sí. Para atajar este problema, en 1989 Lamport y otros desarrolladores iniciaron el llamado «Proyecto "LaTeX3». En otoño de 1993 se anunció una reestandarización completa de LaTeX, mediante una nueva versión que incluía la mayor parte de estas extensiones adicionales (como la opción para escribir transparencias o la simbología de la American Mathematical Society) con el objetivo de dar uniformidad al conjunto y evitar la fragmentación entre versiones incompatibles de LaTeX 2.09. Esta tarea la realizaron Frank Mittlebach, Johannes Braams, Chris Rowley y Sebastian Rahtz junto al propio Leslie Lamport. Hasta alcanzar el objetivo final del «Proyecto 3», a las distintas versiones se las viene denominando «LaTeX2ɛ» (o sea, «versión 2 y un poco más...»). Actualmente cada año se ofrece una nueva versión, aunque las diferencias entre una y otra suelen ser muy pequeñas y siempre bien documentadas.
Con todo, además de todas las nuevas extensiones, la característica más relevante de este esfuerzo de reestandarización fue la arquitectura modular: se estableció un núcleo central (el compilador) que mantiene las funcionalidades de la versión anterior pero permite incrementar su potencia y versatilidad por medio de diferentes paquetes que solo se cargan si son necesarios. De ese modo, LaTeX dispone ahora de innumerables paquetes para todo tipo de objetivos, muchos dentro de la distribución oficial, y otros realizados por terceras partes o para usos extremadamente especializados.
Uso
LaTeX presupone una filosofía de trabajo diferente a la de los procesadores de texto habituales (conocidos como WYSIWYG, es decir, "lo que ves es lo que obtienes") y se basa en comandos. Tradicionalmente, este aspecto se ha considerado una desventaja (probablemente la única). Sin embargo, LaTeX, a diferencia de los procesadores de texto de tipo WYSIWYG, permite a quien escribe un documento centrarse exclusivamente en el contenido, sin tener que preocuparse de los detalles del formato. Además de sus capacidades gráficas para representar ecuaciones, fórmulas complicadas, notación científica e incluso musical, permite estructurar fácilmente el documento (con capítulos, secciones, notas, bibliografía, índices analíticos, etc.), lo cual lo hace extremadamente confortable y eficiente para artículos académicos y libros técnicos.
Con LaTeX, la elaboración del documento requiere normalmente dos etapas: en la primera hay que crear mediante cualquier editor de texto plano un fichero fuente que, con las órdenes y comandos adecuados, contenga el texto que queramos imprimir. La segunda consiste en procesar este fichero; el procesador de textos interpretará las órdenes escritas en él y compilará el documento, dejándolo preparado para que pueda ser enviado a la salida correspondiente, ya sea la pantalla o la impresora. Ahora bien, si se quiere añadir o cambiar algo en el documento, se deberá hacer los cambios en el fichero fuente y procesarlo de nuevo. Esta idea, que puede parecer poco práctica a priori, resultará conocida a los que estén familiarizados con el proceso de compilación que se realiza con los lenguajes de programación de alto nivel (C, C++, etc.), ya que es completamente análogo.
El modo en que LaTeX interpreta la "forma" que debe tener el documento es mediante etiquetas. Por ejemplo, «\documentclass{article}» le dice a LaTeX que el documento que va a procesar es un artículo. Puede resultar extraño que hoy en día se siga usando algo que no es WYSIWYG, pero las características de LaTeX siguen siendo muchas y muy variadas. También hay varias herramientas (aplicaciones) que ayudan a una persona a escribir estos documentos de una manera más visual (LyX, TeXmacs y otros). Estas herramientas se las podría llamar WYSIWYM («lo que ves es lo que pensaste»).
Una de las ventajas de LaTeX es que la salida que ofrece es siempre la misma, con independencia del dispositivo (impresora, pantalla, etc.) o el sistema (Windows, MacOS, Unix, GNU/Linux, etc.) y puede ser exportado muy fácilmente a partir de una misma fuente a numerosos formatos: Postscript, PDF, SGML, HTML (como se describe en el artículo desde LaTeX a imagen), RTF, etc. Existen distribuciones e IDEs de LaTeX para todos los sistemas operativos más extendidos, que incluyen con todo lo necesario para trabajar. Hay por ejemplo programas para Windows con licencia GPL como TeXnicCenter. Existe además un editor multiplataforma (MacOS, Win y Unix) llamado Texmaker, que también tiene licencia GPL.
Nombre y pronunciación
El nombre LaTeX, al derivarse del nombre TeX, mantiene la misma regla para la pronunciación que Donald Knuth especifica en The TeXbook[3], es decir que, en castellano, debería pronunciarse /látej/ pues la última letra no es la x (equis) sino la letra griega χ (ji). No obstante, la pronunciación viene dada por el uso, tal como explica Leslie Lamport en su libro [4], por lo que suele ser /láteks/ la manera más habitual de nombrarlo en español.
La palabra LaTeX en código
Código wiki
El código " <i>L</i><sup><i>A</i></sup><i>T</i><sub><i>E</i></sub><i>X</i>" genera LATEX
El código "L<sup>A</sup>T<sub>E</sub>X" genera LATEX
El código "<math>L^AT_EX</math>" genera: LATEX
Código LaTeX
El código "\LaTeX" genera el logo. Cuando no puede ser reproducido adecuadamente, por ejemplo al escribir en texto plano, se suelen escribir las consonantes en mayúsculas («LaTeX») para evitar la confusión con la palabra «látex».
Ejemplos
Alfabetos y Símbolos Matemáticos
código	símbolo	 	código	símbolo	 	código	símbolo	 	código	símbolo	
\Alpha	Α	 	\Beta	Β	 	\Gamma	Γ	 	\Delta	Δ		
\Epsilon	Ε	 	\Zeta	Ζ	 	\Lambda	Λ	 	\LPhi	Φ		
\Pi	Π	 	\Psi	Ψ	 	\Sigma	Σ	 	\Theta	Θ		
\Upsilon	Υ	 	\Xi	Ξ	 	\Omega	Ω	 	 			
\alpha	α	 	\beta	β	 	\gamma	γ	 	\delta	δ		
\epsilon	ε	 	\zeta	ζ	 	\eta	η	 	\theta	θ		
\iota	ι	 	\kappa	κ	 	\lambda	λ	 	\mu	μ		
\nu	ν	 	\xi	ξ	 	\pi	π	 	\rho	ρ		
\sigma	σ	 	\tau	τ	 	\upsilon	υ	 	\phi	φ		
\chi	χ	 	\psi	ψ	 	\omega	ω	 	 			
\digamma		 	\varepsilon		 	\varkappa		 	\varphi			
\varpi		 	\varrho		 	\varsigma		 	\vartheta			
\aleph		 	\beth		 	\daleth		 	\complement			
\ell		 	\eth		 	\hslash		 	\mho			
\partial		 	\wp		 	\infty		 	\angle			
\Finv		 	\Game		 	\Im		 	\Re			
Expresiones Matemáticas
código	símbolo	
0=a_{11} + a_{12}	0 = a11 + a12	 	
x^{a+b}=x^ay^b	xa + b = xayb	 	
x_i=\sqrt{\frac{a_i}{b_i}}		 	
\begin{pmatrix} \alpha& \beta^{*}\\ \gamma^{*}& \delta \end{pmatrix}			
\int_{\vert x-x_0 \vert < X_0}\Phi(x)			

PostScript
Un lenguaje de descripción de páginas es un lenguaje que ciertas impresoras pueden interpretar directamente. Estos lenguajes describen el formato de la página y la colocación del texto y elementos dentro de las mismas para conseguir una impresión fiable. Los más conocidos quizá sean PCL de Hewlett Packard y Postscript de Adobe.
PostScript es un Lenguaje de Descripción de Página (en inglés PDL, Page Description Language), utillizado en muchas impresoras y como formato de transporte de archivos gráficos en talleres de impresión profesional. Está basado en el trabajo realizado por John Gaffney en Evans y Sutherland en 1976. Posteriormente, continuaron el desarrollo 'JaM' ('John and Martin', Martin Newell) en Xerox PARC, y finalmente fue implementado en su forma actual por John Warnock y otros, luego de que él y Chuck Geschke fundaran Adobe Systems Incorporated (también conocido como Adobe) en 1982.
PostScript se diferenció por utilizar un lenguaje de programación completo, en vez de una serie de secuencias de escapes de bajo nivel, para describir una imagen para que sea impresa en una impresora láser o algún otro dispositivo de salida (en esto se parece a Emacs, que explotó un concepto interno parecido con respecto a las tareas de edición). También implementó notablemente la composición de imágenes, que consiste de un conjunto de líneas horizontales, pixeles al vuelo, descripciones por curvas de Bezier y tipografía (fuentes) de alta calidad a baja resolución (e.g. 300 puntos por pulgada). Anteriormente se creía que tipografías de mapa de bits mejoradas manualmente eran requeridas para esta tarea.
PDF es otro lenguaje de descripción de páginas y es derivado de PostScript, pero más simple y liviano.
PostScript también ha encontrado aplicaciones distintas de la impresión en papel, como es el caso de Display PostScript. DPS es una extensión de PostScript y fue utilizado como sistema gráfico 2D en el sistema operativo NEXTSTEP. Quartz, de Mac OS X, es un sistema similar que utiliza PDF.
Ghostscript es una implementación abierta de un intérprete compatible con PostScript.
Otro tipo lenguaje de descripción de página para impresoras es PCL. Es más ligero pero con menos posibilidades que PostScript.

SMIL
SMIL es el acrónimo de Synchronized Multimedia Integration Language (lenguaje de integración multimedia sincronizada) y es un estándar del World Wide Web Consortium (W3C) para presentaciones multimedia. El lenguaje SMIL permite integrar audio, video, imágenes, texto o cualquier otro contenido multimedia.
SMIL se pronuncia (en inglés) de la misma manera que smile, que significa "sonrisa".
SMIL el estándar
La recomendación SMIL está a cargo del grupo de trabajo Synchronized Multimedia Activity (Actividad sobre Sincronización Multimedia, bajo el acrónimo SYMM) del World Wide Web Consortium. Los objetivos de esta recomendación son:
•	Definir un lenguaje basado en XML que permita a los autores crear presentaciones multimedia. Mediante SMIL, un autor puede describir el comportamiento temporal de su presentación multimedia, asociar hiperenlaces a contenido multimedia y describir la disposición de la presentación en la pantalla. 
•	Facilitar la reutilización de la sintáxis y semántica de SMIL en otros lenguajes basados en XML, en particular aquellos que requieren representar sincronización y temporización. Por ejemplo, SMIL puede integrarse en XHTML y SVG. 
Como estándar abierto del W3C, SMIL está libre de patentes y regalías.
Cómo funciona
SMIL consiste en un conjunto de etiquetas XML que describen:
•	Fuentes de contenido: imagen estática (JPEG,PNG,etc.), audio (MP3,WAV,etc.), video (MPG,AVI,etc.), texto plano, flujos de texto (SUB,RT,etc.) y animaciones (SVG,VML,etc.). 
•	Sincronización: cada fuente de contenido puede reproducirse en secuencia o en paralelo con las demás. 
•	Temporización: es posible definir los instantes en el que una fuente de contenido debe iniciar o detener la reproducción, bien mediante eventos, bien mediante cronómetro. 
•	Posición: las fuentes de contenido pueden posicionarse en la pantalla y ajustar su tamaño u otras propiedades. 
•	Enlaces: para interactuar con el usuario. 
•	Animaciones: para cambiar dinámicamente las propiedades de objetos de contenido. Por ejemplo, su posición o color. 
Un reproductor apropiado puede leer e interpretar un fichero SMIL y reproducir las acciones que en él se describen.
Posibles aplicaciones
La utilidad más obvia de SMIL es la creación de presentaciones multimedia o transparencias. Sin embargo, no se descartan otras utilidades:
•	Subtitulado de películas extranjeras. 
•	Apoyo a disminuidos sensoriales. 
•	karaoke. 
•	Noticiarios teletipo. 
•	etc. 
SMIL también se está adoptando como medio de armonizar los formatos de mensajería multimedia en telefonía móvil (MMS). <?xml version="1.0" encoding="UTF-8"?> <smil xmlns:qt="http://www.apple.com/quicktime/resources/smilextensions" qt:time-slider="true">
<head> <layout> <meta name="title" content="SMIL Demo"/> <meta name="author" content="juanjas2000@yahoo.es"/>
   <meta name="author" content="J.S."/>
<root-layout width="480" height="400" background-color="red"/>
<region id="text"  background-color="black" top="340"  left="0" height="80" width="480" />
<region id="vim_icon01" left="35" top="80" width="410" height="200" />
<region id="video" top="0" left="0" height="400" width="480" fit="meet"/>
</layout> </head>
<body>
<par dur="0:00:36.00" > <textstream src="madrid.txt" region="text" system-captions="on" dur="0:00:36.00" begin="0:00:00.00"/>
   <a href="http://www.example.org"><img src="barcelona1.jpg"  alt="The vim icon" region="vim_icon01" dur="00:00:02.00" begin="00:00:00.00"/></a>
<img src="barcelona2.jpg" alt="The vim icon" region="vim_icon01" dur="00:00:02.00" begin="00:00:02.0"/> <img src="barcelona3.jpg" alt="The vim icon" region="vim_icon01" dur="00:00:02.00" begin="00:00:04.0"/>
   <video dur="0:00:30.00" src="cerveza.mpg" begin="00:00:06.00" region="video" title="video"/>  
</par>
</body> </smil>
Implementaciones
SMIL ya cuenta con numerosas implementaciones, entre las que cabe distinguir:
•	Reproductores: facilitan la interpretación y ejecución de SMIL. 
•	Herramientas: facilitan la creación de SMIL a los autores. 
Nótese que existen implementaciones tanto comerciales como abiertas, tanto gratuitas como de pago, aunque el estándar sea gratuito y abierto.

Scalable Vector Graphics
Scalable Vector Graphics (SVG) es un lenguaje para describir gráficos vectoriales bidimensionales, tanto estáticos como animados (estos últimos con ayuda de SMIL), en XML.
SVG se convirtió en una recomendación del W3C en Septiembre de 2001, por lo que ya ha sido incluido de forma nativa en el navegador web del W3C Amaya. La versión 1.5 de Mozilla Firefox soporta gráficos hechos con SVG y desde su versión 8, también el navegador Opera ha implementado SVG 1.1 Tiny en su núcleo. Otros navegadores web, necesitan un conector o plug-in, para lo que se puede utilizar el Visualizador SVG de Adobe.
SVG rivaliza con Macromedia Flash en términos de potencial y poder, con la diferencia de que el primero es un estándar abierto.
Vista general

Imagen estática generada desde un ejemplo SVG. El fichero original requiere un navegador con soporte nativo o mediante plugin

Imagen más grande generada desde el mismo fichero SVG mostrando como dichos ficheros pueden ser escalados.

La imagen, aunque aumentada de una forma considerable, no presenta pérdidas de resolución.

El SVG permite tres tipos de objetos gráficos:
•	Formas gráficas de vectores (p.e. caminos consistentes en rectas y curvas, y áreas limitadas por ellos) 
•	Imágenes de mapa de bits /digitales 
•	Texto 
Los objetos gráficos pueden ser agrupados, transformados y compuestos en objetos previamente renderizados, y pueden recibir un estilo común. El texto puede estar en cualquier espacio de nombres XML admitido por la aplicación, lo que mejora la posibilidad de búsqueda y la accesibilidad de los gráficos SVG. El juego de características incluye las transformaciones anidadas, los clipping paths, las máscaras alfa, los filtros de efectos, las plantillas de objetos y la extensibilidad.
El dibujado de los SVG puede ser dinámico e interactivo. El Document Object Model (DOM) para SVG, que incluye el DOM XML completo, permite animaciones de gráficos vectoriales sencillas y eficientes mediante ECMAScript o SMIL. Un juego amplio de manejadores de eventos, como "onMouseOver" y "onClick", pueden ser asignados a cualquier objeto SVG. Debido a su compatibilidad y relación con otras normas Web, características como el scripting pueden ser aplicadas a elementos SVG y a otros elementos XML desde distintos espacios de nombre XML simultáneamente dentro de la misma página web. Un ejemplo extremo de esto es un juego completo de tetris realizado como un objeto SVG, disponible aquí. (El enlace requiere un navegador con soporte de SVG).
Si el espacio de almacenamiento es un problema, las imágenes SVG pueden salvarse comprimidas con gzip, en cuyo caso pasan a ser imágenes SVGZ. Debido a la verbosidad del XML, este tiende a comprimirse muy bien, y estos ficheros pueden ser mucho más pequeños. Aún así, a menudo el fichero vectorizado original (SVG) es más pequeño que la versión de mapa de bits.
Impacto en la Web
La amplia adopción de clientes SVG, particularmente aquellos integrados nativamente en los navegadores, como Firefox, Opera, Konqueror o Safari, puede traer un significativo cambio de imagen en la Web. Una tendencia actual es construir sitios web dinámicos que se comportan como aplicaciones de escritorio, usando AJAX. SVG amplía las posibilidades de AJAX, proveyendo de un juego gráfico más rico a los elementos de la página, más allá de los especificados mediante HTML/CSS. El módulo terminal SVG de Firefox es un ejemplo inicial de esto.

Contenedor multimedia
Un contenedor Multimedia es un tipo de archivo informático que almacena información de vídeo, audio, subtítulos, capítulos, meta-datos e información de sincronización siguiendo un formato preestablecido en su especificación.
Algunos de los contenedores multimedia más conocidos son: AVI, MPG, QT, WMV. Otros menos conocidos son: OGG, OGM y Matroska.
Las pistas de vídeo y audio suelen ir comprimidas, siendo distintos los códecs utilizados dentro de cada uno de los contenedores los encargados de descomprimir la información en aras a su reproducción.
Cuando se crea un contenedor, en primer lugar se produce la codificación de las pistas y posteriormente son "unidas" ( multiplexadas) siguiendo un patrón típico de cada formato.
Cuando un archivo debe ser reproducido, en primer lugar actúa un divisor, el cual conoce el patrón del contenedor, y "separa" (desmultiplexa) las pistas de audio y vídeo. Una vez separadas, cada una de ellas es interpretada por el descodificador y reproducida.
En aquellos contenedores con más de una pista, es el reproductor (esto es, el usuario) el que selecciona la que se va a reproducir.
Es pues imprescindible que el reproductor cuente con los descodificadores necesarios para reproducir tanto el vídeo como el audio, ya que de lo contrario la información no puede ser interpretada de forma correcta.
En resumen, no sólo es necesario conocer el formato del contenedor para poder separar las pistas, sino que también es necesario poder descodificarlas.

AVI
AVI es el acrónimo de Audio Video Interleave (intercalado de audio y video). Se trata de un formato de archivo que actúa como contenedor de flujos de datos de audio y video.
Breve reseña histórica
El formato AVI fue definido por Microsoft para su tecnología Video for Windows en 1992. Posteriormente fue mejorado mediante las extensiones de formato del grupo OpenDML de la compañía Matrox. Estas extensiones están soportadas por Microsoft, aunque no de manera oficial. Se conocen como AVI 2.0.
No obstante, este formato no es totalmente original. Está basado en el formato RIFF (Resource interchange File Format), que a su vez, se basa en el formato IFF (Interchange File Format) de la compañía Electronic Arts. Éste último data de 1985.
Actualmente, el formato AVI es un estándar de facto que ha traspasado su ámbito original de los sistemas operativos Windows a reproductores de DVD/DivX, otros sistemas operativos de ordenadores personales y videoconsolas.
Cómo funciona
El formato AVI permite almacenar simultáneamente un flujo de datos de video y varios flujos de audio. El formato concreto de estos flujos no es objeto del formato AVI y es interpretado por un programa externo denominado códec. Es decir, el audio y el video contenidos en el AVI pueden estar en cualquier formato (mp3/divx, u Ogg/xvid, por ejemplo). Por eso se le considera un formato contenedor.
Para que todos los flujos puedan ser reproducidos simultáneamente es necesario que se almacenen de manera entrelazada. De esta manera, cada fragmento de archivo tiene suficiente información como para reproducir unos pocos fotogramas junto con el sonido correspondiente.
Obsérvese que el formato AVI admite varios flujos de datos de audio, lo que en la práctica significa que puede contener varias bandas sonoras en varios idiomas. Es el reproductor multimedia quien decide cuál de estos flujos debe ser reproducido, según las preferencias del usuario.
Los archivos AVI se dividen en fragmentos bien diferenciados denominados chunks. Cada chunk tiene asociado un identificador denominado etiqueta FourCC. El primer fragmento se denomina cabecera y su papel es describir meta-información respecto al archivo, por ejemplo, las dimensiones de la imagen y la velocidad en fotogramas por segundo. El segundo chunk contiene los flujos entrelazados de audio y video. Opcionalmente, puede existir un tercer chunk que actúa a modo de índice para el resto de chunks.

Cómo se reproduce un archivo AVI
Para reproducir un archivo AVI es necesario lo siguiente:
•	Un reproductor de video capaz de interpretar el formato AVI. 
•	El códec de video para interpretar el flujo de video. 
•	El códec de audio para interpretar el flujo de audio. 
La etiqueta FourCC permite identificar el códec necesario para interpretar un flujo de audio o video. Cada codec tiene asociados el conjunto de etiquetas que es capaz de reproducir. De esta manera, el reproductor de video es capaz de elegir el codec pertinente sin intervención del usuario.
El reproductor consecutivamente lee fragmentos del archivo AVI. Después separa cada uno de los flujos de audio y video que se encuentran entrelazados en el archivo. Cada uno de estos flujos, una vez separados, se almacenan en un buffer de memoria y se pasan al codec correspondiente. El códec de video devuelve otro buffer que contiene cada uno de los fotogramas a reproducir. El códec de audio retorna otro buffer con la muestra digital de sonido a reproducir. Con esta información, el reproductor solamente tiene que sincronizar los fotogramas y el sonido y reproducirlos a la velocidad adecuada.
En cambio en el sistema operativo Mac es impossible ver un "avi" y poder escucharlo. Por eso es necessario utilixar el software DivX Doctor. Cuya utilidad és transformar el AVi en .mov. Podréis encontrar más información en www.3ivx.com 

Moving Picture Experts Group
Desde su primera reunión en 1988, el MPEG ha crecido hasta incluir 350 miembros de distintas industrias y universidades. La designación oficial del MPEG es ISO/IEC JTC1/SC29 WG11.
MPEG ha normalizado los siguientes formatos de compresión y normas auxiliares:
•	MPEG-1: estándar inicial de compresión de audio y vídeo. Usado después como la norma para CD de vídeo, incluye popular formato de compresión de audio Capa 3 (MP3). 
•	MPEG-2: normas para audio y vídeo para difusión de calidad de televisión. Utilizado para servicios de TV por satélite como DirecTV (Cadena estadounidense de televisión vía satélite de difusión directa), señales de televisión digital por cable y (con ligeras modificaciones) para los discos de vídeo DVD. 
•	MPEG-3: diseñado originalmente para HDTV (Televisión de Alta Definición), pero abandonado posteriormente en favor de MPEG-2. 
•	MPEG-4: expande MPEG-1 para soportar "objetos" audio/vídeo, contenido 3D, codificación de baja velocidad binaria y soporte para gestión de derechos digitales (protección de copyright). 
•	MPEG-7: sistema formal para la descripción de contenido multimedia 
•	MPEG-21: MPEG describe esta norma futura como un "marco multimedia". 
Cómo funciona MPEG
El MPEG utiliza códecs (codificadores-descodificadores) de compresión con bajas pérdidas de datos usando códecs de transformación.
En los códecs de transformación con bajas pérdidas, las muestras tomadas de imagen y sonido son troceadas en pequeños segmentos, transformadas en espacio-frecuencia y cuantificadas. Los valores cuantificados son luego codificados entrópicamente.
Los sistemas de codificación de imágenes en movimiento, tal como MPEG-1, MPEG-2 y MPEG-4, añaden un paso extra, donde el contenido de imagen se predice, antes de la codificación, a partir de imágenes reconstruidas pasadas y se codifican solamente las diferencias con estas imágenes reconstruidas y algún extra necesario para llevar a cabo la predicción.
MPEG solamente normaliza el formato del flujo binario y el descodificador. El codificador no está normalizado en ningún sentido, pero hay implementaciones de referencia, para los miembros, que producen flujos binarios válidos.

QuickTime

Icono de QuickTime
QuickTime (QT) es la arquitectura multimedia estandar desarrollada por Apple que consiste en un conjunto de bibliotecas y un reproductor multimedia (QuickTime player). En su versión 7 es compatible con el estándar MPEG-4. Existe una versión Pro que añade diversas funcionalidades como la edición de video y codificación a variados formatos como AVI, MOV, MP4. Con la versión Pro, también es posible grabar audio con un micrófono conectado al ordenador. En los Mac, aparte de grabar audio, es posible grabar video. (esto puede ser posible con cámaras como la iSight)
QuickTime no es sólo un reproductor, sino un sistema multimedia completo capaz de reproducir, y en casos transmitir, contenidos de alta calidad en Internet y otros dispositivos, además de todo Quicktime es llamado "navaja suiza de edición de video", por ello Apple ha decidido incorporar las nuevas tecnologías MPEG-4 de video de alta definición, además de todo esto Apple anunció la salida de un nuevo códec llamado H.264 o conocido también como AVC (Advanced Video Coding) o Codificación de Video Avanzada que permite contenidos muy nítidos superiores al estándar de DVD, DivX y otros formatos de alta calidad.
A fecha de 2006 se encuentra disponible para los sistemas operativos Windows y Mac OS X. Muchas distribuciones de Linux pueden usar QuickTime mediante programas escritos originalmente para ellas como Mplayer.

Windows Media Video
Windows Media Video (WMV) es un nombre genérico que se da al conjunto de algoritmos de compresión ubicados en el set propietario de tecnologías de video desarrolladas por Microsoft, que forma parte del framework Windows Media.
WMV no se construye sólo con tecnología interna de Microsoft. Desde la versión 7 (WMV1), Microsoft ha utilizado su propia versión no estandarizada de MPEG-4. El vídeo a menudo se combina con sonido en formato Windows Media Audio.
El formato WMV es reproducido por una amplia gama de reproductores, como MPlayer o Windows Media Player, el último sólo disponible en plataformas Windows y Macintosh (sin compatibilidad completa). En el caso de reproductores ajenos a Microsoft, como por ejemplo el citado MPlayer, es frecuente utilizar una implementación alternativa de los formatos, como por ejemplo la de FFmpeg.
El vídeo WMV se empaqueta normalmente en algún contenedor multimedia, como pueden ser AVI o ASF. Los ficheros resultantes reciben la extensión .avi si el contenedor es de este tipo, .wmv si es un fichero de sólo video (.wma sería el equivalente para sonido) o .asf si se trata de un contenedor ASF, con contenido de audio y vídeo.
El formato WMV incluye ciertas características relativas a la utilización de Gestión de Derechos Digitales (DRM). Sin embargo, estas características pueden eliminarse con utilidades como Sidda, DRMCreep, drmdbg o drm2wmv.
La versión 9 del formato utilizado por Microsoft fue remitida a la Society Motion Picture and Televisión Engineers (SMPTE) para su aprobación como estándar, bajo el nombre en clave VC-1. Este códec es también utilizado en la distribución de vídeo de alta definición sobre DVDs estándar en un formato que Microsoft ha denominado WMV HD, el cual puede ser reproducido tanto en ordenadores como en reproductores de sobremesa.
Una primera versión del estándar fue publicada por la SMPTE en septiembre de 2005, incluyéndose información para la implementación de un decodificador y secuencias de prueba.

Ogg

  Biblioteca Ogg (libogg)	
Desarrollador:	Fundación Xiph.org	
Última versión:	1.1.3 / 27 de noviembre de 2005	
S.O.:	Multiplataforma	
Género:	Contenedor multimedia	
Licencia:	Tipo BSD / "Licencia Xiph"	
En castellano:	-	
Sitio Web:	http://www.xiph.org/ogg/	
Ogg es un formato contenedor multimedia, desarrollado por la Fundación Xiph.org y es el formato nativo para los códecs multimedia que también desarrolla Xiph.org.
El formato es libre de patentes y abierto al igual que toda la tecnología de Xiph.org, diseñado para dar un alto grado de eficiencia en el "streaming" y la compresión de archivos.
Introducción
Como con la mayoría de formatos contenedores, Ogg encapsula datos comprimidos (e incluso sin comprimir) y permite la interpolación de los datos de audio y de video dentro de un solo formato conveniente. Otros ejemplos de formatos contenedores son AVI y Matroska.
El nombre "Ogg" por lo tanto se refiere al formato de archivo el cual incluye un número de códecs separados e independientes de video y audio, ambos desarrollados en código abierto. Los archivos terminados en la extensión ".ogg" pueden ser de cualquier tipo de archivo Ogg, audio o video, y ya que su uso está libre de patentes, varios códecs de Ogg han sido incluidos en un muchos reproductores multimedia (VLC, mplayer, etc...) existiendo incluso filtros para reproducir los códecs Ogg en prácticamente cualquier reproductor que soporte DirectShow (Windows Media Player, BSplayer, Winamp, etc.).
El término "Ogg" algunas veces se refiere incorrectamente al códec de audio Vorbis ya que Vorbis fue el primer códec que se usó con el contenedor. También podría decirse que es incorrecto decir "OGG" en mayúsculas ya que no es un acrónimo como WMA y no se pronuncia como si fueran letras individuales como MP3 (eme-pe-tres), aunque no significa que sea inválido por ejemplo en programas multimedia que muestran asociaciones de extensiones en una lista.

Historia
El proyecto Ogg fue creado por Monty (Christopher Montgomery), fundador y director técnico de Xiph.Org, inició con unos intentos de fin de semana con un paquete de compresión de audio simple como parte de un proyecto más grande en 1993. En ese tiempo el software se llamaba "Squish". El proyecto y el problema general de compresión de música se convirtió en una facinación personal para Monty y Squish adquirió vida propia más allá de las porciones del proyecto de estudio digital de música del cual debía ser parte.
Unos pocos meses después del primer sitio web de Squish, Monty recibió una carta informándole que Squish era una marca registrada y un contribuidor a la causa sugirió el nombre "OggSquish" como un reemplazo.
Actualmente Ogg es el formato de archivo desarrollado a partir de ese trabajo temprano de compresión y es parte del proyecto multimedia más grande de la Fundación Xiph.org; Squish se convirtió solamente en uno de los nombres de los códecs Ogg. Inicialmente pensado para ser usado con el códec de audio Squish para posteriormente ser sustituido por Vorbis como el primer códec desarrollado como parte de los proyectos multimedia de la Fundación Xiph.org. Después fue adaptado para usarse con otros códecs de audio y video desarrollados por la Fundación y otros contribuyentes. La versión 1.0 fue lanzada el 29 de Julio de 2002.
El nombre Ogg se cree que viene del personaje Tata Ogg de las novelas del Mundodisco de Terry Pratchett, pero en realidad viene de una maniobra táctica del juego de red "Netrek".
Detalles técnicos
Ogg es un contenedor orientado a stream, lo que significa que puede ser escrito y leído en un solo paso, haciéndolo adecuado para streaming en internet. Ésta orientación a stream es la mayor diferencia en diseño sobre otros formatos contenedores basados-en-archivo.
El bitstream de Ogg está definido en el RFC 3533 y el tipo MIME recomendado para los archivos Ogg es application/ogg definido en el RFC 3534.
Características del bitstream de Ogg
•	Verdadero streaming, no se necesita intentar construir un 100% completo bitstream. 
•	No usa más que aprox. 1-2% del ancho de banda del bitstream, para la marca del límite del paquete, framing de alto-nivel, sincronización y búsqueda. 
•	Especificación de la posición absoluta dentro de la muestra del stream original. 
•	Mecanismo simple para una fácil corrección limitada, tal como un mecanismo simplificado del encadenamiento. 
•	Detección de corrupción, acceso aleatorio a los datos en posiciones arbitrarias en el bitstream. 
Proyectos usando Ogg
Existe varios proyectos multimedia que usan Ogg que están siendo desarrollados por la Fundación Xiph.org, pero entre los más conocídos están:
•	Vorbis: Códec de audio general. 
•	Theora: Códec de video basado en VP3. 
•	FLAC: Códec de audio sin pérdida. 
•	Speex: Códec de voz humana. 
•	Icecast: Servidor de streaming. 

OGM
Introducción
OGM acrónimo de Ogg Media, es un contenedor multimedia no un códec, su función es contener el audio, normalmente en formato Vorbis, el vídeo (usualmente DivX o XviD) y subtítulos, fue desarrollado por Tobias Waldvogel debido a que él quería usar el formato de audio "Ogg Vorbis" junto con video MPEG-4 en un AVI, pero era prácticamente imposible obtener sincronización debido a la arquitectura del AVI, por lo que en vez de insertar el audio Vorbis en un AVI, decidió insertar el video en un Ogg modificado y así surgió el OGM.
Oficialmente Ogg soporta únicamente códecs de video y audio dentro de las especificaciones de la Fundación Xiph.org entre los que se encuentran Theora, Vorbis, Speex y FLAC, por lo que OGM al permitir usar otros códecs se sale de las especificaciones.
OGM es una modificación (hack) del contenedor Ogg, diseñado como alternativa al AVI, proporcionando la habilidad de contener prácticamente cualquier códec de video y audio que el AVI soporte en el contenedor Ogg y otras mejoras que el AVI no posee.
Detalles técnicos
OGM no es oficialmente soportado por la Fundación Xiph.org, debido a que se sale de las especificaciones Ogg, así que mientras es ciertamente útil no es en realidad un Ogg.
El formato de OGM y Ogg es el mismo, la principal diferencia es el primer identificador en cada stream. OGM utiliza varios identificadores de formatos estandarizados (FourCC), audio, video y texto, para poder identificar códecs desconocidos más fácilmente en DirectShow (y otros frameworks).
Características
•	Una pista de video. 
•	Varias pistas de audio en diferentes formato 
•	Soporte nativo de audio en VBR (Variable BitRate). 
•	Varios subtítulos. 
•	Capítulos en un mismo fichero. 
•	Streaming. 
•	Búsqueda (seeking) mejorada respecto del AVI. El posicionamiento en un instante dado de la película es instantáneo: el vídeo no se desincroniza respecto al audio ni congela. 
•	Mayor tolerancia a errores respecto a AVI. 
•	Ocupa un poco más que el AVI a igual calidad y duración. 

Matroska

Matroska (en ruso: Матрёшка) Formato de archivo contenedor multimedia con vistas a ser el formato de futuro. Habitualmente la extensión de los archivos se representa como .mkv y .mka.

Es un formato basado en EBML, se ha desarrollado expresamente para Matroska. Mejora a AVI, incluso a OGM. Fue derivado de un proyecto similar llamado MCF.
Las capacidades del Matroska son:
•	Una pista de vídeo. 
•	Varias pistas de audio en varios formatos. 
•	Posibilidad de Audio y Video en VBR (BitRate Variable). 
•	Varios subtítulos, incluyendo SSA/ASS con funciones avanzadas 
•	Varios capítulos en un mismo fichero. 
•	Posibilidad de menús en el futuro. 
•	streaming. 
•	Búsqueda (seeking) mejorada respecto del avi (al cambiar de posición el video no se desincroniza y congela). 
•	Mejor tolerancia a errores respecto a AVI. 
•	Ocupa menos que OGM y AVI (es decir, posee menor overhead). 
•	Facilidad para añadir extensiones futuras, gracias a EBML. 
•	Posibilidad de añadir archivos de cualquier tipo. 

Códec
Codec es una abreviatura de Codificador-Descodificador. Describe una especificación implementada en software, hardware o una combinación de ambos, capaz de transformar un archivo con un flujo de datos (stream) o una señal. Los códecs pueden codificar el flujo o la señal (a menudo para la transmisión, el almacenaje o el cifrado) y recuperarlo o descifrarlo del mismo modo para la reproducción o la manipulación en un formato más apropiado para estas operaciones. Los códecs son usados a menudo en videoconferencias y emisiones de medios de comunicación.
La mayor parte de códecs provoca pérdidas de información para conseguir un tamaño lo más pequeño posible del archivo destino. Hay también codecs sin pérdidas, pero en la mayor parte de aplicaciones prácticas, para un aumento casi imperceptible de la calidad no merece la pena un aumento considerable del tamaño de los datos. La excepción es si los datos sufrirán otros tratamientos en el futuro. En este caso, una codificación repetida con pérdidas a la larga dañaría demasiado la calidad.
Muchos archivos multimedia contienen tanto datos de audio como de vídeo, y a menudo alguna referencia que permite la sincronización del audio y el vídeo. Cada uno de estos tres flujos de datos puede ser manejado con programas, procesos, o hardware diferentes; pero para que estos streams sean útiles para almacenarlos o transmitirlos, deben ser encapsulados juntos. Esta función es realizada por un formato de archivo de vídeo (contenedor), como .mpg, .avi, .mov, .mp4, .rm, .ogg o .tta. Algunos de estos formatos están limitados a contener streams que se reducen a un pequeño juego de codecs, mientras otros son usados para objetivos más generales.
Un endec es un concepto similar (pero no idéntico) para el hardware.
Aplicaciones
De las transformaciones ofrecidas por los códecs, se utilizan las más comunes para conseguir:
•	Transmisión 
Convertir una señal de analógica a digital y viceversa 
•	Compresión 
Comprimir y descomprimir datos, para maximizar el provecho de dispositivos de almacenaje 
•	Encriptación 
Convertir datos a un formato legible solo mediante contraseña, para administrar el acceso informático.

DivX
  DivX	
Desarrollador:	DivX, Inc.	
Última versión:	6.4 / 3 de octubre de 2006	
S.O.:	Windows, Mac OS X y Linux	
Género:	Códec de video, Reproductor multimedia	
Licencia:	Software propietario	
En castellano:	-	
Sitio Web:	www.divx.com	
DivX es un códec de video, un formato de video comprimido, basado en los estándares MPEG-4 Parte 2.
Comenzó a desarrollarse como un formato para la transmisión multimedia en internet, el MPEG4, pero pronto quedó relegado debido al gran tamaño de los ficheros, por otros formatos como el WMV de Microsoft, el QuickTime de Apple o el Real de RealNetworks, todos ellos de menor tamaño, ideales para vídeo bajo demanda.
Fueron dos jóvenes quienes, tomando como base el códec MPEG-4 de Microsoft, crearon la versión 3.11 con el smile DivX ;-) como anagrama para su obra.
Actualmente el desarrollo es totalmente legal, llevado a cabo por DivX, Inc, que viendo el potencial real de este códec lo comercializó y trasladó al mercado de consumo. En la actualidad no es difícil encontrar reproductores domésticos capaces de leer este formato.
Tras la comercialización del códec, algunos de los colaboradores siguieron su desarrollo, creando versiones libres como XviD y cerradas como 3ivx, incluso desarrollos de nuevos contenedores multimedia como el Matroska.
Gracias a su desarrollo es posible almacenar más de una hora de video en un CD de 700 MB con calidad cercana a la del DVD, sin tener que pagar regalías si es para uso personal. Resulta ideal para los videoaficionados, que pueden guardar y distribuir su obra en este formato con menores problemas.

XviD
  XviD	
Desarrollador:	Desarrolladores de XviD	
Última versión:	1.1.0 / 30 de diciembre de 2005	
S.O.:	Multiplataforma	
Género:	Códec de video	
Licencia:	GPL	
En castellano:	-	
Sitio Web:	www.xvid.org	
XviD es el nombre de un popular códec desarrollado como un proyecto de software libre por programadores voluntarios de todo el mundo, basado en el estandar MPEG-4 ASP. El formato fue creado como una alternativa libre a otros códecs comerciales de vídeo. Su calidad y eficiencia lo han convertido en uno de los códecs más populares. La reproducción de películas XviD está soportada en los reproductores de DVD más modernos.
El códec XviD hace posible comprimir una película completa con una calidad cercana a la de la fuente original para que ocupe tan solo 700MB (en ocasiones 1400MB, dependiendo de la duración y otros factores). Las películas codificadas en XviD ofrecen vídeos de alta calidad en archivos tamaño reducido, además de llevar menos tiempo su compresión que en MPEG-2 debido a un algoritmo de compresión más avanzado. El vídeo usualmente se combina con audio MP3, o AC3 para tener audio y vídeo de alta calidad. Estos factores y el hecho de que el códec se distribuya de forma libre han contribuido al éxito de este formato.
Cuando se instala el códec de XviD se proporcionan al sistema las instrucciones y el soporte específico para comprimir y descomprimir vídeo en el formato XviD. Una vez que se ha instalado el códec XviD el sistema estará preparado para reproducir películas XviD, usando Windows Media Player o cualquier otro reproductor habilitado para usar DirectShow.

Características
•	Uso de B-frames, o fotogramas bidireccionales, que almacenan entre dos fotogramas, uno anterior, y otro posterior, su compresión suele ser superior a los cuadros llave (keyframes) y p-frames. 
•	Quater pixel (Q-pel), se trabaja con una precisión doble en los vectores de movimiento de los bloques en la compensación del movimiento, es más útil en resoluciones bajas. 
•	Global motion compensation (GMC) o compensación global de movimiento, que entra en juego en giros de cámara y zoom, consiste en almacenar los vectores de movimiento de forma global (en relación a unos pocos), y consiguiendo hacer que muchos valgan 0, reduciendo su tamaño. 
•	Entrelazado, ideal para imágenes entrelazadas como la televisión, ya que mejora mucho la compresión y el resultado final en estos casos, ya que si se comprime una señal entrelazada como si no lo fuera, las líneas horizontales adyacentes, serán muy diferentes en escenas de movimiento, reduciendo la redundancia espacial, que es uno de los pilares de la compresión de video. 
•	Cuantización adaptativa, es una innovación psicovisual de XviD, en ella se emplean diferentes matrices de cuantización por cada macrobloque, comprimiendo más fuerte aquellos que son muy claros o muy oscuros, ya que son menos notables por el ojo que en los de tonalidad media. 
•	Pueden usarse matrices de cuantización MPEG, H.263, y también personalizadas. MPEG, ofrece imágenes más nítidas, con gran detalle, ideal para altas tasas de bits (por ejemplo en ripeos a 2 CDs). H.263 ofrece imágenes más suavizadas, permite disimular la formación de bloques cuando se necesita usar bajas tasas de bits, esto también se traduce en una imágen más borrosa y menor detalle. Las matrices personalizadas permiten adaptarlo a elección del usuario, pero sólo son recomendables para usuarios avanzados. 
Un detalle importante es que GMC y Q-pel no suelen estar soportados por los reproductores de DVD con MPEG-4 más antiguos, y la compresión en general, no es soportada por DVDs que no admitan MPEG-4 ASP, ya que es un formato de este tipo.

Códec de audio
Un códec de audio es un tipo de códec específicamente diseñado para la compresión y descompresión de señales de sonido audible para el ser humano. Por ejemplo, música o conversaciones.
Aplicaciones
Los códec de audio cumplen fundamentalmente la función de reducir la cantidad de datos digitales necesarios para reproducir una señal auditiva. Lo que comúnmente se denomina "compresión de datos", pero aplicado a un fin muy concreto.
Por ello, existen fundamentalmente dos aplicaciones de los códec de audio:
	Almacenamiento: útil para reproductores multimedia que pueden reproducir sonido almacenado, por ejemplo, en un disco duro, CD-ROM o tarjeta de memoria.
	Transmisión: útil para implemetar redes de videoconferencia y Telefonía IP.
Tipología
Los códecs de audio se caracterizan por los siguientes parámetros:
	Número de canales: un flujo de datos codificado puede contener una o más señales de audio simultáneamente. De manera que puede tratarse de audiciones "mono" (un canal), "estéreo" (dos canales, lo más habitual) o multicanal. Los códec de audio multicanal se suelen utilizar en sistemas de entretenimiento "cine en casa" ofreciendo seis (5.1) u ocho (7.1) canales.
	Frecuencia de muestreo: de acuerdo con el teorema de Nyquist, determina la calidad percibida a través de la máxima frecuencia que es capaz de codificar, que es precisamente la mitad de la frecuencia de muestreo. Por tanto, cuanto mayor sea la frecuencia de muestreo, mayor será la fidelidad del sonido obtenido respecto a la señal de audio original. Por ejemplo, para codificar sonido con calidad CD nunca se usan frecuencias de muestreo superiores a 44,1 Khz, ya que el oído humano no es capaz de escuchar frecuencias superiores a 22 kHz.
	Número de bits por muestra. Determina la precisión con la que se reproduce la señal original y el rango dinámico de la misma. Se suelen utilizar 8 (para un rango dinámico de hasta 45 dB), 16 (para un rango dinámico de hasta 90 dB como el formato CD) o 24 bits por muestra (para 109 a 120 dB de rango dinámico). El más común es 16 bits.
	Pérdida. Algunos códecs pueden eliminar frecuencias de la señal original que, teóricamente, son inaudibles para el ser humano. De esta manera se puede reducir la frecuencia de muestreo. En este caso se dice que es un códec con pérdida o lossy codec (en inglés). En caso contrario se dice que es un códec sin pérdida o lossless codec (en inglés).

El parámetro tasa de bits o bit-rate es el número de bits de información que se procesan por unidad de tiempo, teniendo en cuenta la frecuencia de muestreo resultante, la profundidad de la muestra en bits y el número de canales. A causa de la posibilidad de utilizar compresión (con o sin pérdidas), la tasa de bits no puede deducirse directamente de los parámetros anteriores
Estándares
Los siguientes estándares de iure provienen del campo de la videoconferencia. Están definidos dentro del conjunto de normas UIT H.320 y H.323:
	G.711: bit-rate de 56 o 64 Kbps.
	G.722: bit-rate de 48, 56 o 64 Kbps.
	G.723: bit-rate de 5,3 o 6,4 Kbps.
	G.728: bit-rate de 16 Kbps.
	G.729: bit-rate de 8 o 13 Kbps.
Diversos códecs admiten diversas velocidades para adecuarse a la capacidad de transmisión de las redes de comunicaciones subyacentes. Solamente G.711 debe implementarse obligatoriamente en un sistema de videoconferencia H.32x.
Los siguientes estándares de facto provienen del campo del entretenimiento multimedia:
	MP3: códec estero para compresión de música.
	Ogg Vorbis: códec libre de regalías. Admite múltiples aplicaciones, canales y bit-rates.
	AC3: códec multicanal (5.1) utilizado en aplicaciones de video (y DVDs).
Lista de códecs de audio
Sin pérdida
	Apple Lossless (ALAC).
	Direct Stream Transfer (DST).
	FLAC (Free Lossless Audio Codec).
	Lossless Audio (LA).
	LOSSLESS AUDIO COMPRESSION WITH Ltac
	LPAC (Lossless Predictive Audio Codec).
	Monkey's Audio (APE).
	OptimFROG.
	RealAudio Loseless.
	RKAU.
	Shorten (SHN).
	True Audio (TTA).
	WavPack.
	Meridial Lossless Packing (MLP).

Con pérdida
	MP1 (MPEG audio layer-1).
	MP2 (MPEG audio layer-2).
	MP3 (MPEG audio layer-3).
	Advanced Audio Coding (AAC).
	Ogg Vorbis
	WMA (Windows Media Audio).
	Musepack
	AC3 (Dolby Digital A/52).
	DTS (Digital Theather Systems).
	ADPCM.
	ADX (usado en videojuegos).
	ATRAC (Adaptive TRansform Acoustic Coding).
	Perceptual Audio Coding
	TwinVQ
Codificación de voz [editar]
	AMBE.
	AMR.
	CELP.
	EVRC.
	G.711 (Ley Mu y Ley A).
	G.722.
	G.723.
	G.726.
	G.728.
	G.729.
	GSM
	HILN (MPEG-4 Parametric audio coding).
	iLBC
	IMBE.
	Perceptual Audio Coding (usado en radio digital y vía satélite).
	Speex (libre de patentes).
	SMV.
	QCELP.
	VSELP.

Lenguajes interpretados
Los lenguajes interpretados (o lenguajes de script) forman un subconjunto de los lenguajes de programación, que incluye a aquellos lenguajes cuyos programas son habitualmente ejecutados en un intérprete en vez de compilados. Sin embargo, la definición de un lenguaje de programación es independiente de cómo se ejecuten los programas en él escritos, ya sea mediante una compilación previa o a través de un intérprete.
Lenguajes interpretados de uso común
Los lenguajes que suelen ser interpretados más famosos en la actualidad son (en orden alfabético):
	ActionScript 
	ASP (hasta la versión 3) 
	Bash 
	Basic4GL (Basic para OpenGL. Permite generar ejecutables Windows completos) 
	IO (es un lenguaje reciente -2002-) 
	JavaScript (todas las plataformas) 
	Logo (Linux Windows Mac) 
	Lua 
	Lush (Lisp para gráficos -Linux-) 
	NWNScript (empleado en el videojuego Neverwinter Nights y Neverwinter Nights 2) 
	Perl (Mundo Unix y en general para todas las demás plataformas) 
	PHP 
	Pike (es el más rápido de todos, al estar escrito en gran parte en código nativo) 
	Python (todas las plataformas) 
	REXX y variantes como Object REXX (todas las plataformas, en especial: OS/2 / AmigaOS) 
	Ruby 
	TCL 
	VBScript (Microsoft Windows) 

ActionScript
ActionScript es un lenguaje de programación orientado a objetos (OOP), utilizado en especial en aplicaciones web animadas realizadas en el entorno Macromedia Flash, la tecnología de Macromedia para añadir dinamismo al panorama web. Fue lanzado con la versión 4 de Flash, y desde entonces hasta ahora, ha ido ampliándose poco a poco, hasta llegar a niveles de dinamismo y versatilidad muy altos en la versión 8 de Flash.
ActionScript es un lenguaje de script, esto es, no requiere la creación de un programa completo para que la aplicación alcance los objetivos. El lenguaje está basado en especificaciones de estándar de industria ECMA-262, un estándar para Javascript, de ahí que ActionScript se parezca tanto a Javascript.
La versión más extendida actualmente es ActionScript 2.0, que incluye clases y es utilizada en la última versión de Macromedia Flash y en anteriores versiones de Flex. Recientemente se ha lanzado la beta pública de Flex 2, que incluye el nuevo ActionScript 3, con mejoras en el rendimiento y nuevas inclusiones como el uso de expresiones regulares y nuevas formas de empaquetar las clases. Incluye, además, Flash Player 8.5, que mejora notablemente el rendimiento y disminuye el uso de recursos en las aplicaciones Macromedia Flash.
Estructura
Flash está compuesto por Objetos, con su respectiva ruta dentro del swf. Cada uno de estos en ActionScript pertenece a una clase (MovieClip, Botones, Arreglos, etc.), que contiene Propiedades y Métodos.
	Propiedades: Dentro del archivo raiz de la clase, están declaradas como variables (_alpha, useHandCursor, length). 
	Métodos: Dentro del archivo raiz de la clase, están declaradas como funciones (stop(), gotoAndPlay(), getURL()). 

Clases
Algunas clases de ActionScript son:
	Accessibility (nivel superior) 
	Array (instancias) 
	Boolean (instancias) 
	Button (instancias) 
	Capabilities (nivel superior) 
	Color (instancias) 
	ContextMenu (instancias) 
	ContextMenuItems (instancias) 
	Date (instancias) 
	Error (instancias) 
	Key (nivel superior) 
	LoadVars (instancias) 
	Math (nivel superior) 
	Mouse (nivel superior) 
	MovieClip (instancias) 
	MovieClipLoader (instancias) 		NetConnection (instancias) 
	NetStream (instancias) 
	Number (nivel superior) 
	Object (instancias) 
	PrintJob (instancias) 
	Selection (nivel superior) 
	Sound (instancias) 
	Stage (nivel superior) 
	String (instancias) 
	StyleSheet (instancias) 
	System (nivel superior) 
	TextField (instancias) 
	TextFormat (instancias) 
	XML (instancias) 
	XMLSocket (instancias) 	

JavaScript
JavaScript es un lenguaje interpretado orientado a las páginas web basado en el paradigma prototipo, con una sintaxis semejante a la del lenguaje Java.
El lenguaje Javascript se integra dentro del código HTML de las páginas Web
El lenguaje fue inventado por Brendan Eich en la empresa Netscape Communications, que es la que fabricó los primeros navegadores de Internet comerciales.
Apareció por primera vez en el producto de Netscape llamado Netscape Navigator 2.0.
Tradicionalmente, se venía utilizando en páginas web HTML, para realizar tareas y operaciones en el marco de la aplicación cliente servidor.
Los autores inicialmente lo llamaron Mocha y más tarde LiveScript pero fue rebautizado como JavaScript en un anuncio conjunto entre Sun Microsystems y Netscape, el 4 de diciembre de 1995.
En 1997 los autores propusieron JavaScript para que fuera adoptado como estándar de la the European Computer Manufacturers' Association ECMA, que a pesar de su nombre no es europeo sino internacional, con sede en Ginebra. En junio de 1997 fue adoptado como un estándar ECMA, con el nombre de ECMAScript. Poco después también lo fue como un estándar ISO.
JScript es la implementación de ECMAScript de Microsoft, muy similar al JavaScript de Netscape, pero con ciertas diferencias en el modelo de objetos del navegador que hacen a ambas versiones con frecuencia incompatibles.
Para evitar estas incompatibilidades, el World Wide Web Consortium diseñó el estándar Document Object Model (DOM, ó Modelo de Objetos del Documento en castellano), que incorporan Konqueror, las versiones 6 de Internet Explorer y Netscape Navigator, Opera versión 7, y Mozilla desde su primera versión.
Sintaxis del Lenguaje
Espacio en blanco
Los espacios, las tabulaciones, los avances de línea y los comentarios utilizados fuera de las constantes de tipo cadena se les llama espacio en blanco (whitespace en inglés). A diferencia del lenguaje C, el espacio en blanco de un código fuente de JavaScript puede impactar directamente la semántica. Debido a una técnica conocida como «inserción de punto y coma», cualquier declarativa que esté bien formada al momento de procesar un avance de línea será considerada como completa (como si hubiera un punto y coma al final de la línea). 
Se recomienda a los programadores utilizar el punto y coma de manera explícita para marcar el final de las declarativas y reducir los efectos no deseados provocados por la inserción automática de punto y coma.
El espacio en blanco innecesario, los caracteres de espacio en blanco que no son necesarios para tener una sintaxis correcta, puede incrementar la cantidad de espacio desperdiciado y por lo tanto también el tamaño de los archivo. Cuando se utilizan técnicas de compresión que eliminan el espacio en blanco, se puede mejorar el desempeño al utilizar los punto y coma llamados 'opcionales'.
La sintaxis de los comentarios es la misma de C++, comentarios en bloque delimitados por «/*» y «*/», y comentarios del 'resto de la línea' delimitados por «//» y el fin de línea, a excepción del comentario de inicio <!--, que sirve para que no lo detecte navegadoreas que no entiendan <SCRIPT>.
Estructuras de Control
if...else...
If es una sentencia de control que permite a JavaScript hacer decisiones, esto quiere decir que ejecutará sentencias condicionalmente. Sintaxis:
  if (condición) {
     expresión_1;
  }else {
     expresión_2;
  }
La condición es evaluada y si el resultado es verdadero, la expresión_1 se ejecuta. Si el resultado de la condición_1 es falso, la expresión_1 no se ejecuta y ejecuta la expresión_2.
Operador ternario
[condición] ? [expresión1] : [expresión2]
Si la condición es cierta, se evalúa la expresión1. En caso contrario se evalúa expresión2
Bucle While
  while (condición) {
     sentencias
  }
Mientras la condición sea cierta se ejecutan las sentencias.
do...while...
  do {
     sentencias
  } while (condición);
Se ejecuta siempre la primera vez las sentencias y luego se vuelven a ejecutar una o más veces según la condición sea cierta o no.

Bucle for
  for ([TIPO_DATO VAR]; [condición]; [expresión de modificación]) {
     sentencias
  }
Para el valor inicial (que se modifica cada vez según la expresión de modificación) y mientras se dé la condición se ejecutan las sentencias.
Bucle for...in
  for (variable in objeto) {
     sentencias
  }
Para cada uno de los valores del objeto se ejecutan las sentencias.
Declaración switch
  switch (expresión) {
     case valor1 :
        sentencias;
        ''''''''''break;''''''''''
     case valor2 :
        sentencias;
        break;
     default :
        sentencias;
        break;
  }
Se ejecuta el correspondiente bloque de sentencias según el valor de la expresión.

PHP
  PHP	
Desarrollador:	PHP Group	
Última versión:	5.1.6 / 24 de agosto, 2006	
S.O.:	Multiplataforma	
Género:	Lenguaje interpretado	
Licencia:	PHP License 3.01	
En castellano:	-	
Sitio Web:	php.net	
PHP es un lenguaje de programación usado generalmente para la creación de contenido para sitios web. Las siglas significan "Hypertext PreProcessor" (inicialmente PHP Tools, o, Personal Home Page Tools), y se trata de un lenguaje interpretado usado para la creación de aplicaciones para servidores, o creación de contenido dinámico para sitios web. Últimamente también para la creación de otro tipo de programas incluyendo aplicaciones con interfaz gráfica usando la librería GTK+.
Visión general
El fácil uso y la similitud con los lenguajes más comunes de programación estructurada, como C y Perl, permiten a la mayoría de los programadores experimentados crear aplicaciones complejas con una curva de aprendizaje muy suave. También les permite involucrarse con aplicaciones de contenido dinámico sin tener que aprender todo un nuevo grupo de funciones y prácticas.
Debido al diseño de PHP, también es posible crear aplicaciones con una interfaz gráfica para el usuario (también llamada GUI), utilizando la extensión PHP-GTK. También puede ser usado desde la línea de órdenes, de la misma manera como Perl o Python pueden hacerlo, esta versión de PHP se llama PHP CLI (Command Line Interface).
Su interpretación y ejecución se da en el servidor, en el cual se encuentra almacenado el script, y el cliente sólo recibe el resultado de la ejecución. Cuando el cliente hace una petición al servidor para que le envíe una página web, generada por un script PHP, el servidor ejecuta el intérprete de PHP, el cual procesa el script solicitado que generará el contenido de manera dinámica, pudiendo modificar el contenido a enviar, y regresa el resultado al servidor, el cual se encarga de regresárselo al cliente. Además es posible utilizar PHP para generar archivos PDF, Flash, así como imágenes en diferentes formatos, entre otras cosas.
Permite la conexión a diferentes tipos de servidores de bases de datos tales como MySQL, Postgres, Oracle, ODBC, DB2, Microsoft SQL Server, Firebird y SQLite; lo cual permite la creación de Aplicaciones web muy robustas.
PHP también tiene la capacidad de ser ejecutado en la mayoría de los sistemas operativos tales como UNIX (y de ese tipo, como Linux), Windows y Mac OS X, y puede interactuar con los servidores de web más populares ya que existe en versión CGI, módulo para Apache, e ISAPI.
El modelo PHP puede ser visto como una alternativa al sistema de Microsoft que utiliza ASP.NET/C#/VB.NET, a ColdFusion de la compañía Macromedia, a JSP/Java de Sun Microsystems, y al famoso CGI/Perl. Aunque su creación y desarrollo se da en el ámbito de los sistemas libres, bajo la licencia GNU, existe además un compilador comercial llamado Zend Optimizer.
Historia
PHP fue originalmente diseñado en Perl, seguidos por la escritura de un grupo de CGI binarios escritos en el lenguaje C por el programador Danés-Canadiense Rasmus Lerdorf en el año 1994 para mostrar su currículum vitae y guardar ciertos datos, como la cantidad de tráfico que su página web recibía. El 8 de junio del 1995 fue publicado "Personal Home Page Tools" después de que Lerdorf lo combinara con su propio Form Interpreter para crear PHP/FI.
Dos programadores israelíes del Technion, Zeev Suraski y Andi Gutmans, reescribieron el analizador sintáctico (parser en inglés) en el año 1997 y crearon la base del PHP 3, cambiando el nombre del lenguaje a la forma actual. Inmediatamente comenzaron experimentaciones públicas de PHP 3 y fue lanzado oficialmente en junio del 1998.
Para 1999, Suraski y Gutmans reescribieron el código de PHP, produciendo lo que hoy se conoce como Zend Engine o motor Zend. También conformaron Zend Technologies en Ratmat Gan, Israel. En mayo de 2000 PHP 4 fue lanzado bajo el poder del motor Zend Engine 1.0. El 13 de julio de 2004, fue lanzado PHP 5, utilizando el motor Zend Engine II (o Zend Engine 2). La versión más reciente de PHP es la 5.1.6, que incluye el novedoso PDO (Objetos de Datos de PHP o PHP Data Objects) y mejoras utilizando todas las ventajas que provee el nuevo Zend Engine 2.
Usos de PHP
Los principales usos del PHP son los siguientes:
	Programación de páginas web dinámicas, habitualmente en combinación con el motor de base datos MySQL, aunque cuenta con soporte nativo para otros motores, incluyendo el estándar ODBC, lo que amplía en gran medida sus posibilidades de conexión. 
	Programación en consola, al estilo de Perl o Shell scripting. 
	Creación de aplicaciones gráficas independientes del navegador, por medio de la combinación de PHP y GTK (GIMP Tool Kit), lo que permite desarrollar aplicaciones de escritorio en los sistemas operativos en los que está soportado. 

Ventajas de PHP
	Es un lenguaje multiplataforma. 
	Capacidad de conexión con la mayoría de los manejadores de base de datos que se utilizan en la actualidad. 
	Leer y manipular datos desde diversas fuentes, incluyendo datos que pueden ingresar los usuarios desde formularios HTML. 
	Capacidad de expandir su potencial utilizando la enorme cantidad de módulos (llamados ext's o extensiones). 
	Posee una amplia documentación en su página oficial ([1]). 
	Es libre, por lo que se presenta como una alternativa de fácil acceso para todos. 
	Permite las técnicas de Programación Orientada a Objetos. 
	Nos permite crear los formularios para la web 
Ejemplo de Código PHP
A continuación un ejemplo de una página web sencilla desarrollada utilizando el lenguaje PHP:
<html>
<head>
    <title>Ejemplo</title>
</head>
<body>
<?php
if (isset($_POST['muestra'])) {
     echo 'Hola, '.htmlentities($_POST['nombre'])
         .', tu comida favorita es:'. htmlentities($_POST['comida']);
} else { 
?>
<form method="POST" action="?">
    ¿Cuál es tu nombre?
    <input type="text" name="nombre"/>
    ¿Cuál es tu comida favorita?
    <select name="comida">
        <option>Spaghetti</option>
        <option>Asado</option>
        <option>Pizza</option>
    </select>
    <input type="submit" name="muestra" value="Seguir">
</form>
<?php
}
?>
</body>
</html>

En este código es posible observar las siguientes características:
	Las variables enviadas por un formulario utilizando el método POST, son recibidas en el lenguaje dentro de la matriz $_POST, lo cual facilita la obtención de este tipo de datos. Este mismo método es utilizado por el lenguaje para todas las fuentes de información en una aplicación web, tales como cookies en la matriz $_COOKIES, variables de URL en $_GET (que en formularios puede servir para guardar los datos), variables de sesión utilizando $_SESSION, y variables del servidor y del cliente por medio de la matriz $_SERVER. 

	El código PHP está incrustado dentro del HTML e interactúa con el mismo, lo que permite diseñar la página Web en un editor común de HTML y añadir el código dinámico dentro de las etiquetas <?php ?>. 

	El resultado muestra y oculta ciertas porciones del código HTML en forma condicional. 

	Es posible utilizar funciones propias del lenguaje para aplicaciones Web como htmlentitites(), que convierte los caracteres que tienen algún significado especial en el código HTML o que podrían desplegarse erróneamente en el navegador como acentos o diéresis, en sus equivalentes en formato HTML. 

Soluciones LAMP
El término de Soluciones LAMP se origina a finales del 2000 en Alemania para describir a las aplicaciones web creadas utilizando la siguiente combinación de herramientas:
	Linux, el sistema operativo; 
	Apache, el servidor web; 
	MySQL, el gestor de bases de datos; 
	Perl, PHP, o Python, lenguajes de programación. 
Ampliamente promocionado por el editor de la editorial O'Reilly Dale Dougherty, a sugerencia de David Axmark y Monty Widenus desarrolladores de MySQL, la influencia de la editorial O'Reilly en el mundo del software libre hizo que el término se popularizara rápidamente en todo el mundo.

Script del lado del servidor
Los primeros servidores web permitían visualizar exclusivamente información estática (páginas vidriera). Esto representó bien pronto una limitación; sobre todo desde el momento en el que la actividad publicitaria y comercial comenzó a concentrarse también en la red internet.
La primera solución técnica realizada fue la posibilidad que el servidor web lanzase programas residentes en la máquina de servicio. Esta tecnología, conocida como CGI (Common Gateway Interface) permite al servidor web lanzar programas escritos principalmente en C o en Perl. Si bien la tecnología CGI resolvía el problema de la presentación exclusivamente estática de la información, al mismo tiempo presentaba dos limitaciones importantes: una era el problema de seguridad que podía representar el hecho que mediante la llamada a una página se pueda ejecutar programas indeseados en el servidor, la segunda era de carga del servidor (si una misma página que lanzaba un programa era llamada desde 100 clientes concurrentemente, en el servidor se ejecutaban 100 procesos, uno por cada cliente que solicitaba esa página).
Para resolver estos problemas, se buscó desarrollar una tecnología que permitiera ejecutar, en un único proceso del servidor, todos los pedidos de ejecución de código del servidor web sin importar la cantidad de clientes que se conectaban concurrentemente. Esta solución, denominada servlet en tecnología Java o filtro ISAPI en tecnología Microsoft, permite el poder ejecutar código en un único proceso externo que gestiona todas las llamadas realizadas por el servidor web, impidiendo al mismo tiempo que el servidor web pueda llamar a ejecutar programas del sistema operativo.
No obstante de este modo se limitan los problemas de prestación y seguridad de la tecnología CGI, no se resuelve el problema representado por un desarrollo demasiado costoso en términos de tiempo. Asimismo, hace necesario que dos figuras profesionales bien distintas trabajen en un único proyecto: el programador (que conoce bien el lenguaje de programación del lado del servidor utilizado) y el gráfico web (que conoce bien gráfica y lenguaje HTML pero no el lenguaje de programación del lado del servidor). Para resolver estas limitaciones, fueron desarrollados lenguajes que pueden ser incluidos al interno de archivos HTML. Estos comandos pueden ser interpretados (como por ejemplo las páginas ASP o PHP) o precompilados (como en las páginas JSP o ASP.NET). Asimismo, con el utilizo de esta tecnología se buscaba desarrollar aptitudes de gráfico web en los programadores y de programador en los gráficos web (se esperaba con ello el hacer más fácil y veloz el desarrollo de script del lado del servidor).

La unificación de tareas, que inicialmente parecía una ventaja para el desarrollo de páginas web, se convirtió en realidad en una fuerte limitación para el desarrollo de aplicaciones web.
Las últimas tendencias ven el desarrollo de framework en el servidor, solución que obliga a separar nuevamente el trabajo realizado por el gráfico web y el programador.

Active Server Pages
Active Server Pages (ASP) es una tecnología del lado servidor de Microsoft para páginas web generadas dinámicamente, que ha sido comercializada como un anexo a Internet Information Server (IIS).
ASP ha pasado por cuatro iteraciones mayores, ASP 1.0 (distribuido con IIS 3.0), ASP 2.0 (distribuido con IIS 4.0), ASP 3.0 (distribuido con IIS 5.0) y ASP.NET (parte de la plataforma .NET de Microsoft). Las versiones pre-.NET se denominan actualmente (desde 2002) como ASP clásico.
En el último ASP clásico, ASP 3.0, hay seis objetos integrados disponibles para el programador, Application, ASPError, Request, Response, Server y Session. Cada objeto corresponde a un grupo de funcionalidades frecuentemente usadas y útiles para crear páginas web dinámicas.
Las páginas pueden ser generadas mezclando código de scripts del lado del servidor (incluyendo acceso a base de datos) con HTML y código del lado del servidor. Por ejemplo:
<%if x=1 then%>
     <b>X igual a uno</b>
<%else%>
     <b>X diferente a uno</b>
<%end if%>
Este código trae como resultado en html
<b>X igual a uno</b>
cuando se establece la variable del lado del servidor a X=1.
Se facilita la programación de sitios web mediante varios objetos integrados, como un objeto de sesión basada en cookies, que mantiene las variables mientras se pasa de página a página.
Desde 2002, el ASP clásico está siendo reemplazado por ASP.NET, que, entre otras cosas, reemplaza los lenguajes interpretados como VBScript o JScript por lenguajes compilados a código intermedio (llamado MSIL o Microsoft Intermediate Language) como Visual Basic, C#, o cualquier otro lenguaje que soporte la plataforma .NET. El código MSIL se compila con posterioridad a código nativo.

ASP.NET

Cualquier persona que este familiarizado con el desarrollo de aplaiciones WEB sabrá que el desarrollo WEB no es una tarea simple. Ya que mientras que un modelo de programación para aplicaciones de uso comun está muy bien establecido establecido y soportado por un gran nuemro de lenguajes, herramientas de desarrollo, la programación Web es una mezcla de varios lenguajes de etiquetas, un gran uso de scripting y plataformas de servidor. Desafortunadamente para el programador de nivel intermedio, el conocimiento y habilidades que se necesitan para desarrollar aplaciones WEB tienen muy poco en comun con las que son necesarias en el desarrollo tradicional de aplicaciones.
Introduccion
Microsoft introdujo esta tecnología llamada Active Server Pages en diciembre de 1996, por lo que no es nada nueva. Es parte del Internet Information Server (IIS) desde la versión 3.0 y es una tecnología de páginas activas que permite el uso de diferentes scripts y componentes en conjunto con el tradicional HTML para mostrar páginas generadas dinámicamente. La definicion contextual de Microsoft es que "Las Active Server Pages son un ambiente de aplicación abierto y gratuito en el que se puede combinar código HTML, scripts y componentes ActiveX del servidor para crear soluciones dinámicas y poderosas para el web".
Definicion de ASP.NET
Microsoft ha desarrollado una nueva tecnología denominada ASP.NET, como parte de la estrategia .NET para el desarrollo Web, con el objetivo de resolver las limitaciones de ASP y posibilitar la creación de software como servicio. ASP.NET es la plataforma unificada de desarrollo Web que proporciona a los desarrolladores los servicios necesarios para crear aplicaciones Web empresariales.
Aspectos importantes
Para tener una idea mas clara de lo que implica el desarrollo de las aplicaciones utilizadas y distribuidas por Internet y las caracteristicas que representan a la plataforma ASP.NET, es importante hacer mencion de algunos aspectos con los que cuentan las apliacaciones actuales:

Aplicaciones cliente/servidor Estas apliaciones son típicamente en un formato de ejecutables compilados. Estos pueden integras toda la riqueza de una interfaz de usuario, tal es el caso de las apliacaciones de desempeño y productividad, pero no se reune la lògica de negocio como un recuerso que se pueda reutilizar. Ademas acostumbran ser menos gestionables y escalables que las demas aplicaciones.

Aplicaciones que utilizan el navegador Dichas apliaciones estas caracterizadas por contar con una interfaz de web rica y muy util. La interfaz gráfica integra varias teconologias, las cuales son el HTML, XHTML, scriptig, etc; siempre y cuando el navegador que se este utilizando soporte estas tecnologías.
Dado a que estas aplicaciones tienen la capacidad de ser compatibles entre navegadores, no se incluyen funcionalidades que pueden estar incorporadas únicamente en un determinado navegador, y se restringe el uso a tecnologías comunes o estandares como es el caso de el HTML o el Java.
Limitaciones del ASP
En el modelo de desarrollo Web basado en páginas activas, la programación ASP actual tiene diversas limitaciones:
- Para que todo ocurra en una página Web, es habitual escribir una gran cantidad de código para resolver necesidades sencillas. ASP.NET incorpora un modelo declarativo a la programación Web: los controles de servidor funcionan en una página Web simplemente declarándolos. Cuando se carga la página ASP.NET, se instancian los controles listados en la página ASP y es responsabilidad del control emitir código HTML que el navegador pueda entender.
- ASP es un tanto desorganizado. En una página ASP podemos incluir casi todo: HTML plano, código de scripting, objetos COM y texto. No hay una distinción formal entre el contenido de una página y su comportamiento: simplemente, insertamos código en la página, y a ver qué pasa. ASP.NET impone un cierto orden sobre el modelo de programación estándar ASP.
- La tercera limitacion en el desarrollo con ASP es que con el tradicional utilizamos lenguajes de scripting no tipados como VBScript o JScript. Podemos instalar otros motores de scripting que impongan verificación de tipos; sin embargo, no son universalmente conocidos o utilizados como los anteriores. ASP.NET claramente separa la porción basada en script de una página Web de su contenido.

(Más información en www.soloasp.com.ar) 

Java Server Pages
JavaServer Pages (JSP), en el campo de la Informática, es una tecnología para crear aplicaciones web. Es un desarrollo de la compañía Sun Microsystems, y su funcionamiento se basa en scripts, que utilizan una variante del lenguaje java.
La JSP, es una tecnología Java que permite a los programadores generar contenido dinámico para web, en forma de documentos HTML, XML, o de otro tipo. Las JSP's permite al código Java y a algunas acciones predefinidas ser incrustadas en el contenido estático del documento web.
En las JSP, se escribe el texto que va a ser devuelto en la salida (normalmente código HTML) incluyendo código java dentro de él para poder modificar o generar contenido dinámicamente. El código java se incluye dentro de las marcas de etiqueta <% y %>, a esto se le denomina scriptlet.

En una posterior especificación, se incluyeron taglib; esto es, la posibilidad de definir etiquetas nuevas que ejecuten código de clases java. La asociación de las etiquetas con las clases java se declaran en archivos de configuración en XML.
La principal ventaja de JSP frente a otros lenguajes es que permite integrarse con clases Java (.class) lo que permite separar en niveles las aplicaciones web, almacenando en clases java las partes que consumen más recursos así como las que requieren más seguridad, y dejando la parte encargada de formatear el documento html en el archivo jsp. Independientemente de la certeza de la aseveración, Java es conocido por ser un lenguaje muy portable (su lema publicitario reza: escríbelo una vez, córrelo donde sea), y sumado a las capacidades de JSP se hace una combinación muy atractiva.
Sin embargo JSP no se puede considerar un script al 100% ya que antes de ejecutarse el servidor web compila el script y genera un servlet, por lo tanto, se puede decir que aunque este proceso sea transparente para el programador no deja de ser una aplicación compilada. La ventaja de esto es algo más de rapidez y disponer del API de Java en su totalidad.
Debido a esto la tecnología JSP, así como Java está teniendo mucho peso en el desarrollo web profesional (sobre todo en intranets).
Microsoft, la más directa competencia de Sun, ha visto en esta estrategia de Sun una amenaza lo que le ha llevado a que su plataforma .NET incluya su lenguaje de scripts ASP.NET que permite ser integrado con clases .NET (ya estén hechas en C++, VisualBasic o C#) del mismo modo que jsp se integra con clases Java.
Ejemplo de código de una página JSP:
<%@ page errorPage="myerror.jsp" %>
<%@ page import="com.foo.bar" %>
<html>
<head>
<%! int serverInstanceVariable = 1;%>
...
<% int localStackBasedVariable = 1; %>
<table>
<tr><td></td></tr>
...
Ejemplo de una compilación o "Salida" JSP:
package jsp_servlet;
import java.util.*;
import java.io.*;
import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.jsp.*;
import javax.servlet.jsp.tagext.*;
import com.foo.bar; //imported as a result of <%@ page import="com.foo.bar" %>
import ...
class _myserlvet implements javax.servlet.Servlet, javax.servlet.jsp.HttpJspPage {
    //inserted as a
    //result of <%! int serverInstanceVariable = 1;%>
    int serverInstanceVariable = 1; 
    ...
    public void _jspService( javax.servlet.http.HttpServletRequest request,
                             javax.servlet.http.HttpServletResponse response )
      throws javax.servlet.ServletException,
             java.io.IOException
    {
        javax.servlet.ServletConfig config = ...;//get the servlet config
        Object page = this;
        PageContext pageContext = ...;//get the page context for this request 
        javax.servlet.jsp.JspWriter out = pageContext.getOut();
        HttpSession session = request.getSession( true );
        ...
(Más información en la página oficial de JSP) 
Redes Peer to Peer
A grandes rasgos, una red informática entre iguales (en inglés, peer-to-peer -que se traduciría de par a par- o de punto a punto, y más conocida como P2P) se refiere a una red que no tiene clientes ni servidores fijos, sino una serie de nodos que se comportan simultáneamente como clientes y como servidores respecto de los demás nodos de la red. Es una forma legal de compartir archivos de forma similar a como se hace en el email o mensajeros instantáneos, sólo que de una forma más eficiente.
Este modelo de red contrasta con el modelo cliente-servidor, el cual se rige mediante una arquitectura monolítica donde no hay distribución de tareas entre sí, sólo una simple comunicación entre un usuario y una terminal, en la que el cliente y el servidor no pueden cambiar de roles.
Las redes de ordenadores Peer-to-peer (o "P2P") son redes que aprovechan, administran y optimizan el uso de banda ancha que acumulan de los demás usuarios en una red por medio de la conectividad entre los mismos usuarios participantes de la red, obteniendo como resultado mucho más rendimiento en las conexiones y transferencias que con algunos métodos centralizados convencionales, donde una cantidad relativamente pequeña de servidores provee el total de banda ancha y recursos compartidos para un servicio o aplicación. Típicamente, estas redes se conectan en gran parte con otros nodos vía "ad hoc".
Dichas redes son útiles para muchos propósitos (ver Aplicaciones de las redes P2P), pero se usan muy a menudo para compartir toda clase de archivos que contienen: audio, video, texto, software y datos en cualquier formato digital. Este tipo de red es también comúnmente usado en telefonía VoIP para hacer más eficiente la transmisión de datos en tiempo real, así como lograr una mejor distribución del tráfico de la telefonía utilizando tecnología P2P.
Cualquier nodo puede iniciar, detener o completar una transacción compatible. La eficacia de los nodos en el enlace y transmisión de datos puede variar según su configuración local (cortafuegos, NAT, ruteadores, etc.), velocidad de proceso, disponibilidad de ancho de banda de su conexión a la red y capacidad de almacenamiento en disco.
Problemas de traducción del nombre P2P
Se suele traducir Peer-To-Peer al español como entre pares. Sin embargo, y según el diccionario, "peer" significa en inglés "par, igual". La traducción correcta, pues, es entre iguales o de igual a igual. Aunque la alternativa entre pares también sea correcta, se prefiere la anterior para evitar equívocos, reforzando la idea de que todos los nodos de una red P2P son iguales (no se distinguen servidores de clientes) y evitando el equívoco que supondría pensar que siempre se realizan comunicaciones entre parejas de nodos.

Filosofía de las redes Peer-to-peer
El P2P se basa principalmente en la filosofía e ideales de que todos los usuarios deben compartir. Conocida como filosofía P2P, es aplicada en algunas redes en forma de un sistema enteramente meritocrático en donde "el que más comparta, más privilegios tiene y más acceso dispone de manera más rápida a más contenido". Con este sistema se pretende asegurar la disponibilidad del contenido compartido, ya que de lo contrario no sería posible la subsistencia de la red.
Aquellos usuarios que no comparten contenido en el sistema y con ello no siguen la filosofía propia de esta red, se les denominan "leechers"; los cuales muchas veces representan una amenaza para la disponibilidad de recursos en una red P2P debido a que únicamente consumen recursos sin reponer lo que consumen, por ende podrían agotar los recursos compartidos y atentar contra la estabilidad de la misma...
Aplicaciones de las redes P2P
En la actual Internet, el ancho de banda o las capacidades de almacenamiento y cómputo son recursos caros. En aquellas aplicaciones y servicios que requieran una enorme cantidad de recursos pueden usarse las redes P2P.
Algunos ejemplos de aplicación de las redes P2P:
	Intercambio y búsqueda de ficheros. Quizás sea la aplicación más extendida de este tipo de redes. Algunos ejemplos son BitTorrent o la red eDonkey2000.
	Sistemas de ficheros distribuidos, como CFS o Freenet.
	Sistemas de telefonía por Internet, como Skype.
	A partir del año 2006 cada vez más compañías europeas y americanas, como Warner Bros o la BBC, empezaron a ver el P2P como una alternativa a la distribución convencional de películas y programas de televisión, ofreciendo parte de sus contenidos a través de tecnologías como la de BitTorrent.[1]
	Cálculos científicos que procesen enormes bases de datos, como los bioinformáticos.

Gráfico de un enjambre mostrando la distribución de los peers con sus respectivas trasmisiones y recepciones de datos dentro de un torrent en Azureus
Las redes P2P pueden ser también usadas para hacer funcionar grandes sistemas software diseñados para realizar pruebas que identifiquen la presencia de posibles drogas. El primer sistema diseñado con tal propósito fue desarrollado en 2001, en el Centro Computacional para el Descubrimiento de Drogas (Centre for Computational Drug Discovery) en la prestigiosa Universidad de Oxford con la cooperación de la Fundación Nacional para la Investigación del Cáncer (National Foundation for Cancer Research) de Estados Unidos.
Actualmente, existen varios sistemas software similares que se desarrollan bajo el auspicio de proyectos como el proyecto de Dispositivos Unidos en la Investigación del cáncer (United Devices Cancer Research Project). En una escala más pequeña, existen sistemas de administración autónoma para los biólogos computacionales, como el Chinook, que se unen para ejecutar y hacer comparaciones de datos bioinformáticos con los más de 25 diferentes servicios de análisis que ofrece. Uno de sus propósitos consiste en facilitar el intercambio de técnicas de análisis dentro de una comunidad local.
Las instituciones académicas también han comenzado la experimentación con compartición de archivos, como es el caso de LionShare.
Características
Seis características deseables de las redes P2P:
	Escalabilidad. Las redes P2P tienen un alcance mundial con cientos de millones de usuarios potenciales. En general, lo deseable es que cuantos más nodos estén conectados a una red P2P mejor será su funcionamiento. Así, cuando los nodos llegan y comparten sus propios recursos, los recursos totales del sistema aumentan. Esto es diferente en una arquitectura del modo servidor-cliente con un sistema fijo de servidores, en los cuales la adición de más clientes podría significar una transferencia de datos más lenta para todos los usuarios. Algunos autores advierten de que si proliferan mucho este tipo de redes, Cliente-Servidor, podrían llegar a su fin, ya que a cada una de estas redes se conectarán muy pocos usuarios.
	Robustez. La naturaleza distribuida de las redes peer-to-peer también incrementa la robustez en caso de haber fallos en la réplica excesiva de los datos hacia múltiples destinos, y —-en sistemas P2P puros—- permitiendo a los peers encontrar la información sin hacer peticiones a ningún servidor centralizado de indexado. En el último caso, no hay ningún punto singular de falla en el sistema.
	Descentralización. Estas redes por definición son descentralizadas y todos los nodos son iguales. No existen nodos con funciones especiales, y por tanto ningún nodo es imprescindible para el funcionamiento de la red. En realidad, algunas redes comúnmente llamadas P2P no cumplen esta característica, como Napster, eDonkey2000 o BitTorrent.
	Los costes están repartidos entre los usuarios. Se comparten o donan recursos a cambio de recursos. Según la aplicación de la red, los recursos pueden ser archivos, ancho de banda, ciclos de proceso o almacenamiento de disco.
	Anonimato. Es deseable que en estas redes quede anónimo el autor de un contenido, el editor, el lector, el servidor que lo alberga y la petición para encontrarlo siempre que así lo necesiten los usuarios. Muchas veces el derecho al anonimato y los derechos de autor son incompatibles entre sí, y la industria propone mecanismos como el DRM para limitar ambos.
	Seguridad. Es una de las características deseables de las redes P2P menos implementada. Los objetivos de un P2P seguro serían identificar y evitar los nodos maliciosos, evitar el contenido infectado, evitar el espionaje de las comunicaciones entre nodos, creación de grupos seguros de nodos dentro de la red, protección de los recursos de la red... En su mayoría aún están bajo investigación, pero los mecanismos más prometedores son: cifrado multiclave, cajas de arena, gestión de derechos de autor (la industria define qué puede hacer el usuario, por ejemplo la segunda vez que se oye la canción se apaga), reputación (sólo permitir acceso a los conocidos), comunicaciones seguras, comentarios sobre los ficheros...

Problemas de funcionamiento
La mayor parte de los nodos de Internet no disponen de una dirección IP fija o siquiera accesible para otros nodos de Internet. Este es el caso, por ejemplo, de los nodos que se conectan a través de redes locales como Wifi o Ethernet, de aquellos que tienen algún tipo de Cortafuegos y NAT o de los que se conectan a través de la mayor parte de los ISPs del mundo. Para el correcto funcionamiento de una red P2P, hay que resolver dos problemas fundamentales: cómo se encuentra un nodo que ya esté conectado a la red P2P y cómo se conectan los nodos sin dirección IP pública entre ellos.
Para resolver el primer problema, la solución habitual es realizar una conexión a un servidor (o servidores) inicial con dirección bien conocida (normalmente IP fija) que el programa P2P tiene almacenada. Este servidor inicial se encarga de mantener una lista con las direcciones de otros nodos que están actualmente conectados a la red. Tras esto, los clientes ya tienen información suficiente para entrar en la red y pueden intercambiar información con otro nodos, ya sin intervención de los servidores iniciales.
Para resolver el problema de conexión cuando los nodos no tienen dirección pública, estos se conectan a través de otro nodo que funciona como proxy de la conexión. Los dos nodos se conectan al proxy y éste envía la información que llega de uno al otro. Cualquier nodo con una dirección IP pública puede ser escogido como proxy de una conexión entre dos nodos. Por ejemplo, en la red Skype a través de nuestro ordenador pueden pasar conversaciones de otras personas. En estos casos, es imprescindible la implementación de algún mecanismo de seguridad para evitar que los proxies pueden llegar a entender la comunicación entre los dos nodos.

Clasificación
Una posible clasificación de las redes P2P pudiera ser acorde a su grado de centralización:

Las tres topologías de red según los famosos grafos de Paul Baran que aplican también al diseño P2P
Redes P2P centralizadas
Este tipo de red P2P se basa en una arquitectura monolítica en la que todas las transacciones se hacen a través de un único servidor que sirve de punto de enlace entre dos nodos y que, a la vez, almacena y distribuye los nodos donde se almacenan los contenidos. Poseen una administración muy dinámica y una disposición más permanente de contenido. Sin embargo, está muy limitada en la privacidad de los usuarios y en la falta de escalabilidad de un sólo servidor, además de ofrecer problemas en puntos únicos de fallo, situaciones legales y enormes costos en el mantenimiento así como el consumo de ancho de banda.
Una red de este tipo reúne las siguientes características:
	Se rige bajo un único servidor que sirve como punto de enlace entre nodos y como servidor de acceso al contenido, el cual distribuye a petición de los nodos.
	Todas las comunicaciones (como las peticiones y encaminamientos entre nodos) dependen exclusivamente de la existencia del servidor.
Algunos ejemplos de este tipo de redes son Napster y Audiogalaxy.

Redes P2P "puras" o totalmente descentralizadas 
Las redes P2P de este tipo son las más comunes, siendo las más versátiles al no requerir de un gestionamiento central de ningún tipo, lo que permite una reducción de la necesidad de usar un servidor central, por lo que se opta por los mismos usuarios como nodos de esas conexiones y también como almacenistas de esa información. En otras palabras, todas las comunicaciones son directamente de usuario a usuario con ayuda de un nodo (que es otro usuario) quien permite enlazar esas comunicaciones. Las redes de este tipo tienen las siguientes características:
	Los nodos actúan como cliente y servidor.
	No existe un servidor central que maneje las conexiones de red.
	No hay un enrutador central que sirva como nodo y administre direcciones.
Algunos ejemplos de una red P2P "pura" son: Kademlia, Ares Galaxy, Gnutella, Freenet y Gnutella2.
Redes P2P híbridas, semi-centralizadas o mixtas:
En este tipo de red, se puede observar la interacción entre un servidor central que sirve como hub y administra los recursos de banda ancha, enrutamientos y comunicación entre nodos pero sin saber la identidad de cada nodo y sin almacenar información alguna, por lo que el servidor no comparte archivos de ningún tipo a ningún nodo. Tiene la peculiaridad de funcionar (en algunos casos como en Torrent) de ambas maneras, es decir, puede incorporar más de un servidor que gestione los recursos compartidos, pero también en caso de que el o los servidores que gestionan todo caigan, el grupo de nodos sigue en contacto a través de una conexión directa entre ellos mismos con lo que es posible seguir compartiendo y descargando más información en ausencia de los servidores. Este tipo de P2P sigue las siguientes características:
	Tiene un servidor central que guarda información en espera y responde a peticiones para esa información.
	Los nodos son responsables de hospedar la información (pues el servidor central no almacena la información), que permite al servidor central reconocer los recursos que se desean compartir, y para poder descargar esos recursos compartidos a los peers que lo solicitan.
	Las terminales de enrutamiento son direcciones usadas por el servidor, que son administradas por un sistema de índices para obtener una dirección absoluta.
Algunos ejemplos de una red P2P híbrida son Bittorrent, eDonkey2000 y Direct Connect

Otras categorías en base a la red P2P
Algunos prefieren clasificar las redes P2P en base a su estructuración, clasificando las redes en:
	Redes P2P estructuradas como CAN
	Redes P2P sin estructura como Gnutella
También se podría clasificar las redes P2P de acuerdo a su generación y estas son:
	Primera Generación de P2P: Son literalmente las primeras redes P2P las cuales eran centralizadas
	Segunda Generación de P2P: En esta generación se implementa por primera vez la característica de la descentralización, siendo esta característica la más común en los actuales P2P
	Tercera Generación de P2P: Son aquellos P2P de generación más reciente, que implementan una comunicación no directa, cifrada y anónima
Existe también la posibilidad de clasificar las redes P2P concorde a sus características de anonimidad o exclusividad como:
	Sin características de anonimidad
	Pseudonimo
	Red P2P Privada
	Friend-to-friend (de amigo-a-amigo)
Una reciente generación de sistemas peer-to-peer son llamados "metacomputing" o son clasificados como "middleware". Estos incluyen: Legión, Globus
Redes P2P sin estructura y Redes P2P estructuradas
La red de sobrecapa del P2P consiste en todos los peer que participan como nodos de red. Hay enlaces entre dos nodos cualesquiera que se conozcan: es decir si un peer participante conoce la localización de otro peer en la red del P2P, entonces hay un borde dirigido del nodo anterior al último nodo en la red de sobrecapa. En base a cómo los nodos en la red de sobrecapa se enlazan el uno al otro, podemos clasificar las redes del P2P como no estructuradas o estructuradas.
Una red P2P no estructurada se forma cuando los enlaces de la sobrecapa se establecen arbitrariamente. Tales redes pueden ser construidas tan fácilmente como un peer que desea unirse a la red puede copiar enlaces existentes de otro nodo y después formar sus propios enlaces en un cierto plazo.
En una red P2P estructurada, si un peer desea encontrar un pedazo deseado de datos en la red, la petición tiene que recorrer toda la red para encontrar tantos peers como sea posible, para conseguir a alguien que comparta los datos. La desventaja principal con estas redes es que las peticiones no pueden ser resueltas siempre.
Un contenido popular es muy probable estar disponible en varios peers y cualquier peer que busca ese contenido popular, es muy probable que encontrase lo mismo pero, si un peer está buscando datos raros o no-tan-populares compartidos por solamente algunos otros peers, después es altamente probable que la búsqueda no sea acertada. Puesto que no hay correlación entre un peer y el contenido compartido por él, no hay garantía que la petición encontrará al peer que tiene los datos deseados.
El flooding también causa una alta cantidad de señalar tráfico en la red y por lo tanto tales redes tienen típicamente una eficacia muy pobre en los resultados de búsqueda. La mayoría de las redes populares P2P tales como Napster, Gnutella y KaZaA son redes P2P sin estructura.
Las redes P2P estructuradas superan las limitaciones de redes no estructuradas manteniendo una tabla de hash distribuida(DHT) y permitiendo que cada peer sea responsable de una parte específica del contenido en la red. Estas redes utilizan funciones de hash distribuido y asignan valores a cada contenido y a cada peer en la red. Después siguen un protocolo global en la determinación de qué peer es responsable de qué contenido. Esta manera, siempre que un peer desee buscar ciertos datos, utiliza el protocolo global para determinar el(los) peer(s) responsable(s) de los datos y después dirige la búsqueda hacia el(los) peer(s) responsable(s). Algunas redes P2P estructuradas son:
	Chord
	Pastry P2P Network
	Tapestry P2P Network
	Content Addressable Network
	Tulip Overlay
Controversia legal
Aunque las redes P2P pueden ser empleadas para compartir materiales propiedad de los propios sharers, no protegidos por derechos de autor o susceptibles de libre difusión, lo más frecuente es que se usen para intercambiar archivos con material protegido por derechos de propiedad intelectual ajenos, cuyos titulares pudieran no desear que ese material sea distribuido a través de este medio.
Buena parte de los archivos compartidos y que se pueden descargar en estas redes son archivos de música (mp3, wma) y vídeo (DivX). Un usuario puede decidir, como en su hogar podría, poner a disposición de los demás sus archivos con el público. No se hace con ánimo de lucro, simplemente a el usuario de estas redes, sus archivos pueden parecen tan interesantes que se cree que los demás también querrían disfrutar de ellos. Sólo es necesario tener muchos archivos compartidos para que los demás descarguen, no es necesario que el usuario los conozca.
Las leyes en materia de propiedad intelectual y derechos de autor, pudieran dar derecho a el titular de exigir que se ponga fin a la distribución de su material y a reclamar una indemnización por violación a sus derechos como autor, exactamente igual que cuando lo invadido es la propiedad material ordinaria de otra persona. 
Algunos expertos en la materia, opinan que el file-sharer no puede dar o regalar lo que no es suyo, es decir, que el contenido que va envuelto en el archivo virtual es un objeto de carácter inmaterial que no le pertenece a él, sino al titular de los derechos de propiedad intelectual [cita requerida].
En esas condiciones, poner archivos protegidos a disposición de otros internautas podría entrañar un acto (ilícito bajo algunas legislaciones) que en ocasiones y según las legislaciones de algunos países, puede desatar en una responsabilidad de naturaleza penal.
Esto ha llevado a muchos observadores, entre ellos la mayor parte de las empresas discográficas y distribuidoras y algunos defensores del sistema P2P, a concluir que estas redes suponen una gran amenaza a los modelos empresariales ya establecidos, pero esto no siempre es así, ya que como recientemente se ha visto, algunas de estas compañías han optado por levantar servicios basados en ésta tecnología [cita requerida].
Cuando la mayor cantidad de contenidos que se descarga y distribuye libremente en la red son obras no sujetos a derechos de autor, así como obras cuyos autores no han prohibido dichos intercambios, por ejemplo:
	Sistemas operativos libres: Distribuciones Linux, Freebsd, etc.
	Programas libres: Inkscape, Cinelerra, Gimp, Maxima, y obras creadas bajo licencia libre con estos programas. Sujetos a la licencia GPL,
	Libros que ya perdieron su copyright,
	Música libre: Ver CD libre.
	Video libre: Elephants Dreams, Plumiferos, etc.,
	Obras bajo licencia creative commons: Texto, audio, imágenes, etc.
Además, debe tenerse en cuenta que existen aplicaciones específicas de redes P2P directamente orientadas al intercambio de este tipo de contenidos y obras, como por ejemplo:
	Skype
	(VoIP)
	o Hello, de Picasa (álbumes de fotos personales), etc.
Debido a la ola de demandas, muchos desarrolladores de estas redes están pensando en nuevos métodos que permitan al usuario permanecer en anonimato a través de la creación del concepto P2P anónimo; además del uso y desarrollo de las redes descentralizadas.

Situación legal en España
Algunos autores como Ignacio Garrote, Rafael Sánchez Aristi, José Carlos Erdozáin, etc. [cita requerida], y otras organizaciones, como la SGAE [cita requerida], consideran que este intercambio de archivos no es legal por dos motivos:
	Primero por la puesta a disposición interactiva inconsentida realizada por el programa al "subir" fragmentos de los archivos que se están descargando a otros usuarios al considerar esto un uso colectivo aunque no se ejecute la obra y que no consideran como privado.
	Y segundo por el lucro cesante al perder el editor los ingresos por la copia que podría haber vendido si el usuario no hubiese realizado la copia privada en primer término.
Sin embargo, abogados especializados[2] [3] [4] y asociaciones de consumidores y usuarios[5] afirman que es legal descargar archivos audiovisuales dentro del marco de la legislación actual, aunque estén sujetos a derechos de autor, amparándose en el derecho de copia privada y siempre que no haya ánimo de lucro.[6] Y donde el uso privado de la obra audiovisual establecido por la ley como requisito para no requerir ninguna autorización por parte del titular de los derechos de autor para la reproducción (copia) se produce durante la ejecución (visionado) de la misma.
Aparte de las descargas con derechos de autor, la versatilidad que proporciona este sistema de descarga y compartición de archivos provoca que se use para la descarga de temáticas más perseguidas legalmente, como puede ser pornografía infantil, perseguida por la policía de España y de otros países. Actualmente, las descargas ilegales de este tipo de material están penadas de uno a tres años si los menores implicados son mayores de 13 años y de cuatro a ocho años si son menores de dicha edad. Se debe recordar que precisamente este sistema de descarga de archivos, tan de moda y usado por la sociedad, provoca que a la vez que se descarga un archivo, se permita la copia a su vez de este archivo y otros que puedan estar en la carpeta de recursos del provoca, lo que implica un tráfico de datos e intercambio, llevando penas mucho más severas legalmente. Pero no se le puede echar la culpa a las beneficiosas redes P2P, porque vía email y mensajería instantánea se puede hacer exactamente lo mismo.
En España han sido múltiples las acciones policiales contra los usuarios que se dedican a descargar archivos y muchos los detenidos acusados de intercambio de pornografía infantil, y ya han habido ingresos en prisión en los primeros juicios celebrados con condenas de cuatro, cinco y hasta seis años por haber usado este sistema a la hora de conseguir los archivos, pero no por esto se puede decir que todos los españoles son criminales, estos son criminales que usan las legales redes P2P para cometer delitos, es como si mandaran una fotografía vía email, exactamente lo mismo.
El día 11 de Julio de 2008 el gobierno Español anunció que aprovecharía la presidencia española de la Unión Europea en el primer semestre de 2010 para frenar el uso de las redes P2P.[7]

Referente a las páginas webs de enlaces a redes P2P, el 18 de septiembre de 2008, se notifico el auto de la Audiencia Provincial de Madrid en el que confirma el sobreseimiento libre en el caso Sharemula; con lo cual se declaro que enlazar a las redes de pares no constituye una actividad criminal.[8]
El día 20 de diciembre de 2008, los colectivos Compartir es bueno y Hacktivistas realizaron una descarga pública de contenidos bajo Copyright mediante P2P frente a la sede del PSOE, avisando con diez dias de antelación al Ministro de Cultura, César Antonio Molina y al Jefe de la Unidad de Delitos Telemáticos de la Guardia Civil. La descarga se realizó sin problemas con la presencia de policia y medios de comunicación [9] [10] .
Redes, protocolos y aplicaciones
	Ares: Ares Galaxy, FileCroc, KCeasy, Warez P2P
	BitTorrent: AllPeers, ABC [Yet Another BitTorrent Client], Azureus, BitComet, BitSpirit, BitTornado, BitLord, BitTorrent, BitTorrent.Net, Burst!, G3 Torrent, Lphant, mlMac, MLDonkey, QTorrent, Shareaza, Transmission, Tribler, µTorrent
	CSpace: sistema de comunicaciones basado en peer-to-peer
	Direct Connect network: DC++, NeoModus Direct Connect, BCDC++, StrongDC++
	Domain Name System
	eDonkey2000: aMule, eDonkey2000, eMule, LMule, Lphant, MLDonkey, mlMac, Shareaza, xMule, iMesh
	FastTrack: giFT, Grokster, iMesh (y sus variantes sin adware incluyendo aiMesh Light), Kazaa (y todas sus variantes libres de adware como Kazaa Lite), KCeasy (plugin requerido), Mammoth, MLDonkey, mlMac, Poisoned
	Freenet: Entropy (bajo su propia red), Freenet
	GNUnet: GNUnet, (GNUnet-gtk)
	Gnutella: Acquisition, BearShare, Cabos, Gnucleus, Grokster, iMesh, gtk-gnutella, KCeasy, Kiwi Alpha, LimeWire, FrostWire, MLDonkey, mlMac, Morpheus, Phex, Poisoned, Swapper, Shareaza, XoloX
	Gnutella2: Adagio, Caribou, Gnucleus, iMesh, Kiwi Alpha, MLDonkey, mlMac, Morpheus, Shareaza, TrustyFiles
	Kad (usando el protocolo Kademlia): aMule, eMule, Lphant (a partir de la versión 3.50), MLDonkey,
	LimeWire
	MANOLITO/MP2P: Blubster, Piolet
	MFPnet: Amicima
	Napster: Napigator, OpenNap, WinMX
	NEO Network: Morpheus
	P2PTV tipo de redes: TVUPlayer, CoolStreaming, Cybersky-TV, TVants
	Peercasting tipo de redes: PeerCast, IceShare, FreeCast
	Usenet
	WPNP: WinMX 
	Otras redes: ANts P2P, Applejuice, Audiogalaxy, Avalanche, CAKE, Chord, The Circle, Connecta 2000, Coral, Dijjer, EarthStation 5, FileTopia, Groove, Hamachi, iFolder, konspire2b, Madster/Aimster, MUTE, OpenFT, P-Grid, IRC, JXTA, KoffeePhoto, Peersites, MojoNation, Mnet, Octoshape, Omemo, Overnet, Scour, Skype, Solipsis, soribada, Soulseek, SPIN, Swarmcast, WASTE, Winny
Aplicaciones multi-red de codigo abierto
	MLDonkey (BitTorrent, eDonkey2000, FastTrack, Gnutella, Gnutella2, Kademlia, FTP) (Windows, Linux, Mac OS X)
	eMule (eDonkey2000, Kad Network) (Windows)
	aMule (eDonkey2000, Kad Network) (Linux, Mac OS X, FreeBSD, NetBSD, OpenBSD, Windows and Solaris Operating Environment)
	FileScope (Gnutella, Gnutella2, eDonkey2000, OpenNAP) (crossplatform)
	giFT (protocolo propio OpenFT, y con el uso de plugins - FastTrack, eDonkey2000, Ares, OpenNAP, Soulseek y Gnutella)
	Gnucleus (Gnutella, Gnutella2) (Windows)
	KCeasy (Ares, FastTrack (plugin requerido), Gnutella, OpenFT)
	Shareaza (BitTorrent, eDonkey2000, Gnutella, Gnutella2) (Windows)
	Napshare (MUTE, Key Network) (Linux, Windows)
	Waste (WASTE) (Windows, Linux, Mac OS X)
	StealthNet (StealthNet) (Windows, Linux, Mac OS X)

Aplicaciones multi-red de codigo cerrado
	Kiwi Alpha (Gnutella, Gnutella2) (Windows)
	Morpheus (NEO Network, Gnutella, Gnutella2, BitTorrent) (Windows)
	WinMX (Windows) (winmxgroup.com)
	Zultrax (Gnutella, ZEPP) (Windows)
	Lphant (y sus variantes sin adware como Lphant Plus), (eDonkey2000), (BitTorrent)
	iMesh (Fasttrack, eDonkey2000, Gnutella, Gnutella2) (Microsoft Windows)