<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="es">
	<id>https://www.ecured.cu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Xigurat</id>
	<title>EcuRed - Contribuciones del colaborador [es]</title>
	<link rel="self" type="application/atom+xml" href="https://www.ecured.cu/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Xigurat"/>
	<link rel="alternate" type="text/html" href="https://www.ecured.cu/Especial:Contribuciones/Xigurat"/>
	<updated>2026-06-09T23:24:58Z</updated>
	<subtitle>Contribuciones del colaborador</subtitle>
	<generator>MediaWiki 1.31.16</generator>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Xfce&amp;diff=1709096</id>
		<title>Xfce</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Xfce&amp;diff=1709096"/>
		<updated>2012-10-26T16:20:17Z</updated>

		<summary type="html">&lt;p&gt;Xigurat: actualizando versión y pronunciación en inglés&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ficha Software|nombre=Xfce|logo=Xfce_logo.svg.png|descripcion=|creador=Equipo de desarrolladores de Xfce|fecha_de_creacion=Última versión estable 	4.10, de 2012|sitio_web=http://www.xfce.org/}}&lt;br /&gt;
'''Xfce''' (se pronuncia como cuatro letras por separado, aunque en iglés se pronuncia ''&amp;quot;X-Face&amp;quot;'') es un entorno de escritorio ligero para sistemas tipo [[Unix]] como [[Linux]], [[BSD]], [[Solaris]] y derivados. Se configura íntegramente con el [[ratón o mouse]]. Su creador, [[Olivier Fourdan]], lo describe así: «Diseñado para la productividad, las aplicaciones se cargan y se ejecutan rápidamente, mientras conserva recursos de sistema».&lt;br /&gt;
&lt;br /&gt;
Xfce también provee el marco de trabajo para el desarrollo de aplicaciones. Además de Xfce mismo, hay otros programas que también utilizan las bibliotecas de Xfce, como el editor de texto [[Mousepad]], el reproductor multimedia [[Xfmedia]] o el emulador de consola [[Terminal]].&lt;br /&gt;
&lt;br /&gt;
Xfce está basado en la [[biblioteca]] [[GTK+ 2.x]] y utiliza el [[gestor de ventanas]] [[Xfwm]]. Xfce se parecía en sus inicios al entorno de escritorio [[CDE]], pero fue alejándose notablemente debido a que fue reprogramado nuevamente desde cero (ya lo había hecho entre las versiones 2.x y 3.x), y a diferencia de sus anteriores versiones, ahora cuenta con un sistema modular pudiendo gestionar un sistema de tipo multihead de manera bastante sencilla, y sigue todos los estándares establecidos por [[Freedesktop.org]].&lt;br /&gt;
&lt;br /&gt;
El nombre Xfce originalmente provenía de '''XF'''orms '''C'''ommon '''E'''nviroment, pero debido a los grandes cambios en el código, ya no usa el kit de herramientas de XForms, como originalmente lo hacía. El nombre sobrevivió, pero ya no se indica como XFce sino Xfce. Los desarrolladores están de acuerdo en que el nombre carece de significado actualmente, aunque se le suele desglosar como '''X F'''ree '''C'''horesterol '''E'''nvironment (entorno X libre de colesterol) en referencia al poco consumo de memoria que realiza y a la velocidad con que se ejecuta al no tener elementos superfluos a diferencia de otros entornos de escritorio más grandes.&lt;br /&gt;
&lt;br /&gt;
[[Thunar]] es el nuevo [[gestor de archivos]] predeterminado para Xfce desde la versión 4.4. Es similar a [[Nautilus]] y está diseñado para una máxima velocidad y un mínimo consumo de memoria. Xfce también posee un gestor de archivos comprimidos llamado [[Squeeze]]/[[Xarchiver]].&lt;br /&gt;
== Orígenes del nombre de Xfce ==&lt;br /&gt;
El nombre Xfce originalmente provenía de XForms Common Enviroment, pero debido a los grandes cambios en el código, ya no usa el kit de herramientas de XForms, como originalmente lo hacía. El nombre sobrevivió, pero ya no se indica como XFce sino Xfce. Los desarrolladores están de acuerdo en que el nombre carece de significado actualmente, aunque se le suele desglosar como X Free Choresterol Environment (entorno X libre de colesterol) en referencia al poco consumo de memoria que realiza y a la velocidad con que se ejecuta al no tener elementos superfluos a diferencia de otros entornos de escritorio más grandes.&lt;br /&gt;
== Ventajas de Xfce frente a otros entornos de escritorio ==&lt;br /&gt;
Xfce es más ligero que GNOME y KDE, consume menos recursos del sistema, por lo que es más adecuado para equipos con menos recursos de hardware, como memoria RAM o CPU.&lt;br /&gt;
== Gestor de archivos predeterminado de Xfce ==&lt;br /&gt;
Thunar es el nuevo [[gestor de archivos]] predeterminado para Xfce desde la versión 4.4. Es similar a Nautilus y está diseñado para una máxima velocidad y un mínimo consumo de memoria. Xfce también posee un gestor de archivos comprimidos llamado Xarchiver.&lt;br /&gt;
== Filosofía de Xfce ==&lt;br /&gt;
Xfce está basado en la biblioteca GTK+ 2.x y utiliza el gestor de ventanas Xfwm. Xfce se parecía en sus inicios al entorno de escritorio CDE, pero fue alejándose notablemente debido a que fue reprogramado nuevamente desde cero (ya lo había hecho entre las versiones 2.x y 3.x), y a diferencia de sus anteriores versiones, ahora cuenta con un sistema modular pudiendo gestionar un sistema de tipo [[multihead]] de manera bastante sencilla y sigue todos los estándares establecidos por Freedesktop.org.&lt;br /&gt;
== Concepto de Xfwm ==&lt;br /&gt;
Xfwm es el [[gestor de ventanas]] predeterminado para el entorno Xfce. Provee su propio gestor de composición, el primero de su tipo cuando fue lanzado. Xfwm también soporta atajos de teclado y es completamente modificable gráficamente.&lt;br /&gt;
== Instalación Xfce ==&lt;br /&gt;
Para instalar el entorno de escritorio completo, por ejemplo, en [[Debian]], debemos instalar el paquete xfce4, o bien xubuntu-desktop (este último instala los componentes que forman parte de la instalación por defecto de [[Xubuntu]]), de los repositorios oficiales de [[Ubuntu]]. &lt;br /&gt;
&lt;br /&gt;
De forma más práctica basta con abrir una terminal e insertar la siguiente línea de comandos:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install xubuntu-desktop&lt;br /&gt;
&lt;br /&gt;
Una vez hecho esto al reiniciar el sistema, se podrá seleccionar en la pantalla del login, sobre el icono de sesión, el escritorio que se desee.&lt;br /&gt;
&lt;br /&gt;
En distribuciones como [[Fedora]] o [[CentOS]] se puede realizar la instalación utilizando la herramienta yum.&lt;br /&gt;
&lt;br /&gt;
  yum groupinstall XFCE&lt;br /&gt;
&lt;br /&gt;
En este caso no es necesario reiniciar el sistema, bastara con salir de la sesión y elegir XFCE como gestor de escritorio al volver a entrar.&lt;br /&gt;
== Configuración del escritorio ==&lt;br /&gt;
Para configurar Xfce sólo tenemos que ir a ''Menú » Configuración » Administrador de configuración''.&lt;br /&gt;
Ahí encontrará muchas de las herramientas necesarias para configurar nuestro sistema. Empecemos por el escritorio. Para ello dentro del ''Administrador de configuración'' pinchamos en ''Desktop''. Aquí podemos cambiar el fondo de escritorio en la pestaña ''Appearance'', el tamaño de los iconos y otras cosas de utilidad. Para mostrar el escritorio tenemos que tener marcada la opción: ''Mostrar imagen'' y luego seleccionar la imagen pinchando sobre la carpeta o insertando la ruta donde dice ''Fichero''. En esta ventana también se ajusta el brillo de la pantalla.&lt;br /&gt;
En la otra pestaña, ''Behavior'', podemos modificar el comportamiento del menú al hacer clic derecho sobre el escritorio. Si no se quiere que salga el menú de Xfce en el escritorio al hacer clic derecho, podemos desmarcar la opción ''Show menú desktop on right click''.&lt;br /&gt;
También tenemos la opción de ''Editar Menú'', pero esa la veremos más adelante. Más abajo tenemos la opción ''Desktop Icons'', donde podemos cambiar el tamaño de los iconos, donde podemos ponerle un valor 44 si lo desean.&lt;br /&gt;
En el Administrador de configuración también tenemos la opción ''Display'' donde podemos establecer la resolución de pantalla.&lt;br /&gt;
== Apariencia de escritorio ==&lt;br /&gt;
Para instalar un tema en Xfce existen dos alternativas:&lt;br /&gt;
&lt;br /&gt;
# Crear la carpeta .themes dentro de /home/nombre_de_usuario&lt;br /&gt;
# Descomprimir los temas descargados dentro de /usr/share/themes''&lt;br /&gt;
&lt;br /&gt;
La segunda opción es la más recomendable. Los iconos se ponen dentro de ''/usr/share/icons''. Para cambiar el puntero, o se instala un tema de los disponibles en el repositorio de Debian.&lt;br /&gt;
Para cambiar el tema nos vamos a ''Administrador de configuración » User Interface''.&lt;br /&gt;
Ahí escogemos los temas instalados en la pestaña ''Temas'' y los iconos en ''Temas de Iconos''.&lt;br /&gt;
Luego en ''Administrador de configuración » Windows Manager''&lt;br /&gt;
&lt;br /&gt;
Donde podemos escoger los temas para las ventanas, los bordes y demás. En este caso pondremos ''Moomex''. Existen dentro de esta herramienta otras opciones como Teclado, Foco y Avanzado, donde no tenemos que tocar nada si no lo necesitamos.&lt;br /&gt;
&lt;br /&gt;
Si queremos activar ''Composite'' vamos a ''Administrador de configuración » Windows Manager Tweaks''.&lt;br /&gt;
&lt;br /&gt;
Buscamos la pestaña ''Compositor'' y dentro activamos ''Enable display comopositing'' y lo configuramos a nuestro gusto. Esto nos dará efectos de sombra, reflejos y transparencia en las ventanas.&lt;br /&gt;
== Personalización del menú ==&lt;br /&gt;
Xfce nos permite configurar el menú principal a gusto de cada uno. Veamos cómo hacerlo. Hacemos clic derecho sobre el menú:&lt;br /&gt;
&lt;br /&gt;
* '''Propiedades''': Aquí podemos cambiar la imagen del menú poner la que queramos, además un texto para que aparezca al lado de la imagen, es opcional por supuesto.&lt;br /&gt;
&lt;br /&gt;
Luego, hacemos clic derecho sobre cualquier área y damos clic en Add entry. Aquí podemos desplegar la primera opción y agregar.&lt;br /&gt;
&lt;br /&gt;
* '''Lanzador''': Nos agrega un lanzador de aplicaciones, por ejemplo Iceweasel.&lt;br /&gt;
&lt;br /&gt;
* '''Título''': Solamente nos pone un título para el menú como se puede ver en la imagen superior del Xfce modificado.&lt;br /&gt;
* '''Submenú''': Para agregar los submenú, por ejemplo: Internet, gráficos, etc.&lt;br /&gt;
* '''Separador''': Para separar los elementos&lt;br /&gt;
* '''Salir''': Añade la orden de Salir de Xfce.&lt;br /&gt;
&lt;br /&gt;
Luego guardamos todo, al momento nos ha cambiado todo el menú. Lo único malo de este método es que cuando instalemos algo no se nos añadirá automáticamente al menú y tenemos que ponerlo manualmente.&lt;br /&gt;
== Componentes principales de Xfce ==&lt;br /&gt;
* ''' Gestor de ventanas''': Gestiona la posición de las ventanas de aplicación en la pantalla, proporciona las decoraciones en las ventanas y gestiona las áreas de trabajo o escritorios virtuales.&lt;br /&gt;
* ''' Panel''': El panel es parte del entorno de escritorio de Xfce y ofrece lanzadores de programa, menús de panel, un reloj, un intercambiador de escritorio y mucho más. &lt;br /&gt;
* ''' Gestor de escritorio''': Este programa establece el fondo de escritorio y proporciona la ventana de menú raíz, iconos de escritorio o iconos minimizados y una lista de ventanas.&lt;br /&gt;
* ''' Gestor de sesión''': El gestor de sesión controla el inicio y cierre de sesión del entorno de escritorio Xfce.&lt;br /&gt;
* ''' Ayudante de impresión''': Proporciona una interfaz gráfica de impresión. Xfprint puede usar [[CUPS]], BSD-LPR o un archivo como destino y las impresoras se obtienen del sistema de impresión que elija. &lt;br /&gt;
* ''' Administrador de configuración''': Le permite configurar cada detalle de su entorno de escritorio. &lt;br /&gt;
* ''' Utilidades y scripts''': Utilidades esenciales y scripts. Proporciona una ventana para créditos y licencia, una ventana para lanzar aplicaciones, y varios scripts importantes que son usados por otros paquetes.&lt;br /&gt;
* ''' Bibliotecas de Xfce''': Las tres bibliotecas base de Xfce (libxfce4util, libxfcegui4 and libxfce4menu) son usadas por casi todas las aplicaciones de Xfce. &lt;br /&gt;
* ''' Xfconf''': Sistema cliente-servidor simple de almacenamiento y consulta de configuración.&lt;br /&gt;
== Aplicaciones principales de Xfce ==&lt;br /&gt;
&lt;br /&gt;
* ''' Mousepad''':Mousepad es un editor de texto basado en Leafpad. La principal razón de ser de Mousepad ha sido dar soporte de impresión, lo cual habría sido difícil de implementar en Leafpad por diversos motivos.&lt;br /&gt;
* ''' Terminal''': Terminal es un emulador de terminal moderno para el escritorio Unix/Linux (principalmente para el entorno de escritorio Xfce).&lt;br /&gt;
* ''' Administrador de archivos Thunar''': Thunar es un moderno administrador de archivos para el entorno de escritorio Xfce. Thunar ha sido diseñado desde el principio para ser rápido y fácil de usar.&lt;br /&gt;
* ''' Xfburn''': Xfburn es una interfaz para la grabación de medios ópticos basada en la biblioteca libburnia para crear y grabar CD y DVD.&lt;br /&gt;
* ''' Orage''': Una sencilla aplicación de calendario con recordatorios.&lt;br /&gt;
* ''' Buscador de aplicaciones''': Le permite buscar, lanzar y encontrar información sobre aplicaciones instaladas en su sistema.&lt;br /&gt;
* ''' Xfmedia''': Xfmedia es un reproductor multimedia simple y fácil de usar basado en el motor de xine. La GUI GTK+ se centra en la reproducción y gestión de archivos de audio aunque, al estar basada en xine, también soporta video.&lt;br /&gt;
* ''' Administrador de archivos comprimidos''': Xarchiver es una interfaz GTK+2 para archivos 7z, zip, rar, tar, bzip2, gzip, arj and rpm.&lt;br /&gt;
* ''' Mezclador''': Un moderno mezclador basado en GStreamer.&lt;br /&gt;
* ''' Visor de imágenes''': Ristretto es un visor de imágenes ligero.&lt;br /&gt;
* ''' Navegador web''': Midori es un navegador web ligero.&lt;br /&gt;
== Framework de Xfce ==&lt;br /&gt;
* ''' Libexo''': Las bibliotecas principales de Xfce están enfocadas al desarrollo del escritorio, libexo está orientada al desarrollo de aplicaciones.&lt;br /&gt;
* ''' Bindings de Python''': Bindings de Python para Xfce. Le permiten crear programas usando las bibliotecas de Xfce más fácilmente.&lt;br /&gt;
* ''' Xfce Foundation Classes''': Xfce Foundation Classes es un conjunto de clases C++ integradas para el desarrollo de aplicaciones para Xfce en sistemas operativos tipo UNIX tales como Linux.&lt;br /&gt;
* ''' Perl Bindings''': Perl bindings for Xfce. If you are old-fashioned or just don like C and Python, you can use Perl to write Xfce applications. &lt;br /&gt;
* ''' Tablas de hashes basadas en disco''': DBH es una biblioteca para crear tablas de hashes basadas en disco en sistemas POSIX.&lt;br /&gt;
* ''' Herramientas de desarrollo de Xfc''': Las herramientas para el desarrollador de Xfce proporcionan una colección de scripts y macros M4 necesarias para compilar los componentes principales del escritorio Xfce.&lt;br /&gt;
== Datos gráficos de Xfce ==&lt;br /&gt;
* ''' Motor de temas GTK+''': Un motor de temas para GTK+. No es necesario para el escritorio, pero es un buen motor de temas, así que puede que quiera probarlo.&lt;br /&gt;
* ''' Tema de iconos''': Tema de iconos predeterminado de Xfce. Incluye iconos PNG y SVG.&lt;br /&gt;
== Mejoras de la última versión Xfce 4.6 frente a la versión Xfce 4.4, la última versión estable ==&lt;br /&gt;
Con Xfce 4.6, Xfdesktop manager finalmente es implementado: puedes seleccionar varios iconos, moverlos, removerlos, etc.&lt;br /&gt;
Xfce 4.6 nos trae un nuevo menú de escritorio que nos permite manipular los archivos como lo haríamos con el menú contextual del Administrador de Ficheros Thunar, pero también abrir aplicaciones, cerrar la sesión o acceder a la documentación.&lt;br /&gt;
&lt;br /&gt;
'''-Paneles'''&lt;br /&gt;
&lt;br /&gt;
Muchos [[bugs]] fueron corregidos en el Xfce4 Panel, particularmente aquellos que daban problemas con múltiples escritorios o pantallas, además de varias miniaplicaciones y mejoras para tus paneles.&lt;br /&gt;
&lt;br /&gt;
El reloj plugin ha sido reescrito para consumir menos recursos y solucionar ciertos fallos, como también un nuevo modo para los corazones geeks: (un reloj binario). El nuevo plugin de Área de Notificación permite ocultar los iconos de notificación seleccionados para mantener el área limpia y legible.&lt;br /&gt;
&lt;br /&gt;
'''-Nuevo Mezclador de Sonido'''&lt;br /&gt;
 &lt;br /&gt;
Xfce4 Mixer ha sido reescrito para funcionar con [[Gstreamer]]. Esto permite soportar fácilmente múltiples sistemas de sonido, la interfase es algo más pulida y puedes administrar diferentes tarjetas de sonido. Adicionalmente, ahora puedes regular rápidamente el volumen con la rueda del ratón, desde el plugin del panel.&lt;br /&gt;
&lt;br /&gt;
'''-Administración de Sesión mejorado'''&lt;br /&gt;
&lt;br /&gt;
Xfce 4.6 viene con un Administrador de Sesiones mejorado: la sesión inicia más rápido, y el diálogo de preferencias ha sido recreado para facilitar su administración. Además, el Administrador de Sesiones automáticamente reiniciará la sesión de aquellas aplicaciones que han colapsado, de modo que no te quedes sin los paneles de escritorio, administrador de ventana, etc.&lt;br /&gt;
&lt;br /&gt;
También incluye el esperado soporte para Suspender e Hibernar, desde la instalación. Aparecen ahora dos botones adicionales que ofrecen la suspensión o hibernación del equipo.&lt;br /&gt;
&lt;br /&gt;
'''-Administrador de Ventanas'''&lt;br /&gt;
 &lt;br /&gt;
Era de esperar que Xfwm4 haya madurado bastante desde su último lanzamiento: varios bugs han sido corregidos, se adicionó soporte para múltiples pantallas, y sobre todo, la performance ha sido realzada.&lt;br /&gt;
&lt;br /&gt;
Entre otras novedosas características, Xfwm4 es ahora capaz de detectar las ventanas que no responden y nos ofrecerá terminarlas.&lt;br /&gt;
&lt;br /&gt;
También hay un nuevo Menú de Acciones que nos permite redimensionar y mover rápidamente, traer encima o debajo de otras ventanas o llevarlas a pantalla completa.&lt;br /&gt;
&lt;br /&gt;
La nueva operación Rellenar (fill) ha sido implementada; expande una ventana por todo el espacio disponible, sin sobreponerse por encima de otras ventanas existentes adyacentes.&lt;br /&gt;
&lt;br /&gt;
El compositor ha sido optimizado para reducir el [[flickering]] de las ventanas durante su redimensionamiento.&lt;br /&gt;
Algunas opciones de efectos extra (tweakable) se han sumado, por ejemplo, puedes deshabilitar el parpadeo de las ventanas cuando reciben una notificación de urgencia.&lt;br /&gt;
&lt;br /&gt;
'''-Administrador de ficheros (Thunar)'''&lt;br /&gt;
&lt;br /&gt;
Hay varias correcciones de errores e importantes mejoras en Thunar. Se pueden usar los botones Adelante y Atrás del ratón  (de estar disponibles) para navegar, e incluye un nuevo plugin para cambiar una imagen como papel tapíz (wallpaper) desde el menú contextual.&lt;br /&gt;
&lt;br /&gt;
Thunar responde ahora a las especificaciones de carpetas de usuarios XDG; esto permite personalizar y localizar carpetas donde se almacena música, documentos, videos, plantillas, etc.&lt;br /&gt;
&lt;br /&gt;
Thunar muestra ahora los volúmenes sin montar como iconos traslúcidos, de modo que se distingan de los ya montados y en uso. Thunar ahora también soporta dispositivos cifrados.&lt;br /&gt;
&lt;br /&gt;
'''-Nuevos Diálogos de Configuración'''&lt;br /&gt;
&lt;br /&gt;
Xfce 4.6 incluye una nueva interface del célebre Xfce Settings Manager, el cuál permite configurar el entorno más fácil que nunca. Los diálogos que son accesibles por un clic simple han sido rediseñados para ser más compactos y de manera que personalizar el sistema sea intuitivo y ágil.&lt;br /&gt;
&lt;br /&gt;
Para configurarlo seguimos los siguientes pasos: ''Administrador de configuración » Keyboard'' y buscamos la pestaña ''Atajo''. Buscamos el botón ''Añadir'', debajo de Temas y le ponemos un nombre cualquiera, por ejemplo: misatajos. Luego marcamos misatajos y le damos al botón añadir que se encuentra debajo de Atajo. Primero tenemos que insertar un comando, por ejemplo: xfce4-screenshooter, luego nos pide que oprimamos las teclas para esta opción, en nuestro caso PrintScreen ya que este comando lo que hace es capturar la pantalla.&lt;br /&gt;
&lt;br /&gt;
'''-Nuevo Buscador de Aplicaciones'''&lt;br /&gt;
&lt;br /&gt;
Xfce 4.6 incluye además un nuevo buscador de aplicaciones el cual nos permite un escritorio más ordenado e intuitivo. Es muy simple de usar desde el teclado, y detecta aplicaciones ya instaladas. También permite crear accesos y lanzadores desde los paneles rápidamente simplemente arrastrando un icono de aplicaciones a la ventana del creador de lanzadores.&lt;br /&gt;
&lt;br /&gt;
Estas son algunas de las más interesantes nuevas características de Xfce. Seguramente en breve, obtendremos la versión actualizada en los repositorios de Ubuntu.&lt;br /&gt;
== Definiciones de interés ==&lt;br /&gt;
# ''[[Entorno de escritorio]]:'' Es una solución completa de interfaz gráfica de usuario que le provee de iconos, barras de herramientas, aplicaciones e integración entre 	aplicaciones con habilidades como drag&amp;amp;drop (arrastrar y soltar) que hacen que el manejo del sistema operativo sea más amigable. En general cada entorno de 	escritorio se distingue por su aspecto y comportamiento particulares, aunque algunos tienden a imitar características de escritorios ya existentes.&lt;br /&gt;
# ''[[terminal de computadora|Terminal]]:'' Un terminal es una forma de acceder al sistema sin utilizar la interfaz gráfica, es decir, realizar todo tipo de tareas en formato texto.&lt;br /&gt;
# ''[[Gestor de archivos]]:'' es una aplicación informática que provee acceso a archivos y facilita el realizar operaciones con ellos, como copiar, mover o eliminar archivos.&lt;br /&gt;
# ''[[Multihead (Multihilo)]]:'' Hilo es la ejecución del código dentro del entorno, por tanto el multihilo es si el programa es ejecutado en un sistema con multiprogramación, dos o más hilos pueden compartir el procesador por multiplexación de tiempo, incluso si están usando el mismo programa y los mismos datos. Si el cómputo multihilo se ejecuta en computador con más de un procesador, es posible que dos o más hilos se ejecuten en paralelo.&lt;br /&gt;
# ''[[Gestor de ventanas]]:'' Un gestor de ventanas es un programa que controla la ubicación y apariencia de las ventanas bajo un sistema de ventanas en una interfaz gráfica de usuario. Las acciones asociadas al sistema operativo son, normalmente, abrir, cerrar, minimizar, maximizar, mover, escalar y mantener un listado de las ventanas abiertas. Es también muy común que el gestor de ventanas integre elementos como el decorador de ventanas, bandeja del sistema, barra de tareas, lanzadores de programas, iconos o fondo de escritorio. El sistema gráfico X Window, popular en el ámbito de sistemas Unix y similares, como GNU/Linux, permite al usuario escoger entre varios gestores. Los gestores de ventanas difieren entre sí de muchas maneras, incluyendo apariencia, consumo de memoria, opciones de personalización, escritorios múltiples o virtuales y similitud con ciertos entornos de escritorio ya existentes, entre otras.&lt;br /&gt;
# ''[[CUPS]]:'' El Sistema de impresión común de Unix (Common Unix Printing System en inglés, abreviado CUPS) es un sistema de impresión modular para sistemas operativos de tipo Unix que permite que un computador actúe como servidor de impresión. Un computador que ejecuta CUPS actúa como un servidor que puede aceptar tareas de impresión desde otros computadores clientes, los procesa y los envía al servidor de impresión apropiado.&lt;br /&gt;
# ''[[Bugs]]:'' Defecto de software. Es el resultado de un fallo o deficiencia durante el proceso de creación de programas de ordenador (software).&lt;br /&gt;
# ''[[Gstreamer]]:'' Es un framework multimedia libre multiplataforma escrito en el Lenguaje de programación C, usando la biblioteca Gobject. Gstreamer permite crear aplicaciones multimedia, como video, sonido, codificación, etc. La función del núcleo de Gstreamer es proveer un framework para plugins, flujo de datos y manejo/negociación de distintos tipos de medios. También provee una API para escribir aplicaciones.&lt;br /&gt;
# ''[[Flickering]]:'' Efecto de oscilación, centelleo o parpadeo de ventanas.&lt;br /&gt;
== Distribuciones Xfce ==&lt;br /&gt;
Xfce no es tan fácil de encontrar [[RPM Package Manager|empaquetado]] (puede compilarse y empaquetarse si se desea) en las distribuciones de [[Linux]] comparado a otros [[entorno de escritorio|entornos de escritorios]] como [[KDE]] y [[GNOME]]. Pocas distribuciones lo incluyen como el entorno predefinido.&lt;br /&gt;
[[Image:Xfce.png|thumb|right|Entorno Xfce]] &lt;br /&gt;
[[Image:XFCE4.png|thumb|right|Entorno Xfce v4.8 en Ubuntu 11.10]] &lt;br /&gt;
Varias distribuciones que incluyen Xfce por defecto son:&lt;br /&gt;
&lt;br /&gt;
* [[Xfld]]&lt;br /&gt;
* [[Archie (Linux)|Archie]]&lt;br /&gt;
* [[Belenix]]&lt;br /&gt;
* [[College Linux]]&lt;br /&gt;
* [[Dreamlinux]]&lt;br /&gt;
* [[Fedora]]&lt;br /&gt;
* [[FreeSBIE]]&lt;br /&gt;
* [[Kate OS]]&lt;br /&gt;
* [[LinEspa]]&lt;br /&gt;
* [[Linux Mint]]&lt;br /&gt;
* [[Mandriva]] &lt;br /&gt;
* [[Morphix]]&lt;br /&gt;
* [[OpenSuSE]]&lt;br /&gt;
* [[Slackware]]&lt;br /&gt;
* [[SLAX]]&lt;br /&gt;
* [[Vector Linux]]&lt;br /&gt;
* [[WHAX]]&lt;br /&gt;
* [[Wolvix]]&lt;br /&gt;
* [[Xubuntu]]&lt;br /&gt;
* [[Zenwalk Linux]]&lt;br /&gt;
* [[X-Evian]]&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
* [[Entorno de escritorio]]&lt;br /&gt;
* [[GNOME]]&lt;br /&gt;
* [[KDE]]&lt;br /&gt;
* [[CDE]]&lt;br /&gt;
== Referencias ==&lt;br /&gt;
*[http://wiki.xfce.org/faq http://wiki.xfce.org/faq]&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos ==&lt;br /&gt;
* [http://www.xfce.org/ Xfce] Sitio oficial (en inglés)&lt;br /&gt;
* [http://www.xfce-look.org/ Xfce-Look.org] Recursos de apariencias de Xfce (en inglés)&lt;br /&gt;
* [http://www.guia-ubuntu.org/index.php?title=XFce Xfce en la Guía Ubuntu]&lt;br /&gt;
* [http://www.softwarelibre.net/instalar_kde_y_xfce_en_ubuntu Instalar KDE y Xfce en Ubuntu]&lt;br /&gt;
* [http://www.cristalab.com/tips/personalizando-y-configurando-xfce-en-linux-c66568l/ Personalizando y configurando Xfce]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]][[Category:Software_para_Linux]][[Category:Entornos_de_escritorio_para_Linux]]&lt;/div&gt;</summary>
		<author><name>Xigurat</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=CouchDB&amp;diff=1278565</id>
		<title>CouchDB</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=CouchDB&amp;diff=1278565"/>
		<updated>2011-12-19T18:32:57Z</updated>

		<summary type="html">&lt;p&gt;Xigurat: quitando una incoherencia&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ficha Software&lt;br /&gt;
|nombre=Apache CouchDB&lt;br /&gt;
|familia= Apache&lt;br /&gt;
|imagen=Couchdb.png&lt;br /&gt;
|tamaño= 200 px&lt;br /&gt;
|descripción= Base de Datos NoSQL&lt;br /&gt;
|imagen2=&lt;br /&gt;
|tamaño2=&lt;br /&gt;
|descripción2=&lt;br /&gt;
|creador=&lt;br /&gt;
|desarrollador= Damien Katz&lt;br /&gt;
|diseñador=&lt;br /&gt;
|modelo de desarrollo=&lt;br /&gt;
|lanzamiento inicial=&lt;br /&gt;
|versiones=&lt;br /&gt;
|última versión estable=&lt;br /&gt;
|género=[[RDBMS]]&lt;br /&gt;
|sistemas operativos=&lt;br /&gt;
|idioma=&lt;br /&gt;
|licencia=[[Apache License, Version 2.0]]&lt;br /&gt;
|premios=&lt;br /&gt;
|web= http://couchdb.apache.org/&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;div align=&amp;quot;justify&amp;quot;&amp;gt;&lt;br /&gt;
'''Apache CouchDB''' es una base de datos orientada a documentos que se pueden consultar utilizando [[JavaScript]] en una forma [[MapReduce]]. CouchDB también ofrece replicación incremental con detección de conflictos bi-direccional y resolución.&lt;br /&gt;
&lt;br /&gt;
==Que ofrece CouchDB==&lt;br /&gt;
&lt;br /&gt;
CouchDB ofrece una API [[JSON API]] que se puede acceder desde cualquier entorno que permite a las peticiones [[HTTP]]. Existen miles de librerías de terceros clientes que hacen que este sea aún más fácil a partir de su lenguaje de programación de su elección.CouchDB incorporado en la consola Web de administraciónse dirige directamente a la base de datos mediante solicitudes [[HTTP]]emitidas desde el navegador.&lt;br /&gt;
&lt;br /&gt;
CouchDB está escrito en [[Erlang]], un robusto ideal funcional lenguaje de programación concurrente para a construcción de sistemas distribuidos. [[Erlang]] permite un diseño flexible que es fácilmente escalable y extensible.&lt;br /&gt;
&lt;br /&gt;
==Base de datos documental sin schema==&lt;br /&gt;
&lt;br /&gt;
CouchDB guarda los datos en forma de documentos. Todo lo que almacenamos es un documento sin schema, lo cual permite guardar juntos documentos con distintos campos dentro de la misma [[Base de Datos]].&lt;br /&gt;
los documentos se almacenan en [[JSON]], un formato ligero, sencillo y cómodo de usar desde cualquier lenguaje. Ejemplo de típico documento de CouchDB:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
{&lt;br /&gt;
   &amp;quot;_id&amp;quot; : &amp;quot;234a41170621c326ec63382f846d5764&amp;quot;,&lt;br /&gt;
   &amp;quot;_rev&amp;quot; : &amp;quot;1-480277b989ff06c4fa87dfd0366677b6&amp;quot;,&lt;br /&gt;
   &amp;quot;tipo&amp;quot; : &amp;quot;articulo&amp;quot;,&lt;br /&gt;
   &amp;quot;titulo&amp;quot; : &amp;quot;Esto es una prueba&amp;quot;,&lt;br /&gt;
   &amp;quot;cuerpo&amp;quot; : &amp;quot;Soy el contenido de un artículo de   prueba&amp;quot;,  &lt;br /&gt;
   &amp;quot;tags&amp;quot; : [&amp;quot;cine&amp;quot;, &amp;quot;comedia&amp;quot;]&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
  &lt;br /&gt;
El '''_id''' sirve para que CouchDB lo distinga de otros documentos y vale para poder recuperarlo posteriormente. Es un string que puede contener lo que queramos aunque si no ponemos nada CouchDB generará un UUID.&lt;br /&gt;
El uso del UUID permite tener un id único UNIVERSALMENTE, lo cual es útil en el tema de la replicación.&lt;br /&gt;
El campo '''_rev''' es especial y sirve para que CouchDB controle la versión del documento. Cada vez que se guarde un cambio en un documento cambia el número de revisión (se incrementa el 1 de antes del – y el resto del número cambia). Esto es útil porque cada vez que se intente guardar un documento se pasa el numero de la versión que vamos a modificar, de forma que si CouchDB ve que estamos guardando un cambio sobre una revisión antigua da error y no permite continuar.&lt;br /&gt;
El resto de los campos se puede usar expresiones [[JSON]] válidas, como en el ejemplo donde se tiene el atributo '''tags''' que es un array de strings. Podría ser un diccionario:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
({“clave1″: “valor1″, “clave2″:”valor2″}),un número (2), etc…&lt;br /&gt;
&amp;lt;/pre&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Al trabajar sin [[Schema]] el sistema se adapta a los cambios en la estructura de los documentos que es necesario almacenar. De esta forma el usuario puede despreocuparse de lo que se va introduciendo en la base de datos.&lt;br /&gt;
&lt;br /&gt;
==Consultable al estilo MapReduce==&lt;br /&gt;
&lt;br /&gt;
CouchDB no ofrece un lenguaje tipo [[SQL]] para realizar consultas sino que ofrece un sistema basado en [[MapReduce]] para poder obtener los datos. Este sistema se compone de una parte '''Map''' y una parte '''Reduce'''.&lt;br /&gt;
&lt;br /&gt;
=== Map y Reduce ===&lt;br /&gt;
&lt;br /&gt;
*'''Map''': Es una función que se ejecuta para cada documento. Esta función recibe como parámetro el propio documento y puede devolver pares de clave-valor. Un función puede devolver 0, 1 ó varios de estos pares para un único documento de entrada. A primera vista esto puede parece muy ineficiente, pero la función sólo se ejecuta una vez para cada documento y va almacenando los resultados en un índice que relaciona claves y valores de forma que en posteriores consultas se ataque sobre este índice. Por supuesto, si alguno de los documentos de la Base de Datos se modifica, se vuelve a rehacer el índice (pero sólo para los documentos modificados)&lt;br /&gt;
ejemplo:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function(doc) {  &lt;br /&gt;
   for (var i in doc.tags)  &lt;br /&gt;
      emit(doc.tags[i],   doc);  &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;    &lt;br /&gt;
las funciones Map (y las Reduce) se definen en [[Javascript]].&lt;br /&gt;
CouchDB ofrece una arquitectura [[pluggable]] mediante la cual se puede crear estas en cualquier lenguaje sea [[Python]], [[Ruby]] y otros.&lt;br /&gt;
Esta función devuelve como clave cada uno de los tags y como valor el propio documento. De esta forma ejecutada sobre el doc de ejemplo daría 2 filas: una para “cine” y otra para “comedia” ambas teniendo como valor el propio documento.&lt;br /&gt;
Después sobre este conjunto de resultados se puede filtrar por clave o bien por un par de claves inicio y fin. De esta forma si se quiere sabes todos los artículos que son de cine filtraríamos aquellos que tienen la clave “cine”. &lt;br /&gt;
las claves pueden ser cualquier tipo de datos soportado por [[JSON]] como arrays, números, diccionarios… lo cual puede ser útil para realizar consultas más avanzadas.&lt;br /&gt;
*'''Reduce''': A grandes rasgos esta agrupa los resultados del Map para obtener un número. De esta forma si la parte Map anterior fuera asi:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
function(doc) {  &lt;br /&gt;
   for (var i in doc.tags)  &lt;br /&gt;
      emit(doc.tags[i],   1);&lt;br /&gt;
   }&lt;br /&gt;
&amp;lt;pre&amp;gt;  &lt;br /&gt;
Definicion de una funcion reduce:&lt;br /&gt;
&amp;lt;pre&amp;gt;        &lt;br /&gt;
 function(keys, values) {  &lt;br /&gt;
   return sum(values);  &lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
La función Reduce recibe como entrada todas las claves y todos los valores. Con la funcion sum, proporcionada por CouchDB, vamos acumulando los 1 que devuelve la función map de forma que como resultado de esta obtenemos varias filas con cada uno de los tags como clave y el número de documentos que tienen este tag como valor.&lt;br /&gt;
En la nomenclatura de CouchDB un par de funciones [[MapReduce]] se llama view (no siendo obligatorio definir la parte reduce).&lt;br /&gt;
&lt;br /&gt;
==Accesible por REST==&lt;br /&gt;
&lt;br /&gt;
REST permite acceder a los datos de una forma muy sencilla a través de [[URLs]]. Por ejemplo para recuperar los documento con id ''6e1295ed6c29495e54cc05947f18c8af'' de la Base de Datos ''albums'' se accedería a la siguiente [[URL]] que devuelve el documento JSON correspondiente:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://localhost:5984/albums/6e1295ed6c29495e54cc05947f18c8af&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
De forma similar si se quiere acceder a una view como la que comentábamos cuando explicábamos el Map y recuperar algún resultado iremos a la URL:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
http://localhost:5984/blog/_design/doc/_view/tag?key=”cine”&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
Esta [[URL]] quiere decir que se esta accediendo a la Base de Datos llama blog, para recuperar un design document (donde se guardan las views dentro de la Base de Datos) llamado doc y dentro de este a la view llamada tag. Después dentro de la view si se desea recuperar el resultado identificado por la clave cine.&lt;br /&gt;
En esta [[URL]] se obtiene un resultado similar a este:&lt;br /&gt;
&amp;lt;pre&amp;gt;     &lt;br /&gt;
 {  &lt;br /&gt;
   &amp;quot;total_rows&amp;quot;:   4,&lt;br /&gt;
   &amp;quot;offset&amp;quot;:   0,&lt;br /&gt;
   &amp;quot;rows&amp;quot;:[   {&lt;br /&gt;
      &amp;quot;id&amp;quot;:&amp;quot;9280b03239ca11af9cfedf66b021ae88&amp;quot;,&lt;br /&gt;
      &amp;quot;key&amp;quot;:&amp;quot;cine&amp;quot;,&lt;br /&gt;
      &amp;quot;value&amp;quot;:{&lt;br /&gt;
         &amp;quot;_id&amp;quot;:&amp;quot;9280b03239ca11af9cfedf66b021ae88&amp;quot;,&lt;br /&gt;
         &amp;quot;_rev&amp;quot;:&amp;quot;1-0289d70fe05850345fd4e9118934a99b&amp;quot;,&lt;br /&gt;
         &amp;quot;tags&amp;quot;:[&amp;quot;cine&amp;quot;,&amp;quot;comedia&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
     }, {&lt;br /&gt;
  &lt;br /&gt;
      &amp;quot;id&amp;quot;:&amp;quot;a92d03ff82289c259c9012f5bfeb639c&amp;quot;,&lt;br /&gt;
        &amp;quot;key&amp;quot;:&amp;quot;cine&amp;quot;,&lt;br /&gt;
        &amp;quot;value&amp;quot;:   {&lt;br /&gt;
           &amp;quot;_id&amp;quot;:&amp;quot;a92d03ff82289c259c9012f5bfeb639c&amp;quot;,&lt;br /&gt;
          &amp;quot;_rev&amp;quot;:&amp;quot;2-97377eef95764a4dbf107d8142187f53&amp;quot;,&lt;br /&gt;
          &amp;quot;tags&amp;quot;:[&amp;quot;cine&amp;quot;,&amp;quot;drama&amp;quot;]&lt;br /&gt;
        }&lt;br /&gt;
     }&lt;br /&gt;
   ]}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
 &lt;br /&gt;
En '''key''' y '''value''' estan los resultado esperados: el tag y el documento que lo contiene. Aparte CouchDB incluye el id del documento que ha dado lugar a ese resultado (el que entra como parámetro en la función Map). Además se devuelve el numero total de filas devueltas y el offset del resultado.&lt;br /&gt;
En vez del parámetro key se le puede pasar a nuestra vista un par de parámetros startkey y endkey para obtener un rango de los resultados que nos interese (p.ej. en una view que devolviera como clave un string representando una fecha).&lt;br /&gt;
&lt;br /&gt;
==Replicación integrada==&lt;br /&gt;
&lt;br /&gt;
Una funcionalidad relativamente exótica que permite que las Bases de Datos de datos sincronicen sus datos de una forma muy sencilla (una simple llama [[REST]] la activa) con otra Base de Datos remota o local. De este modo se tiene de una forma sencilla una o mas réplicas de la BD para implementar arquitecturas de alta disponibilidad o de balanceo de carga.&lt;br /&gt;
De forma similar, el atributo _rev anteriormente comentado nos permite que CouchDB detecte casos en los que un mismo documento ha sido modificado en varias bases de datos a la vez (cada documento tendria un _rev diferente) &lt;br /&gt;
CloudTPS:&lt;br /&gt;
&lt;br /&gt;
==Transacciones escalable para aplicaciones Web en la nube==&lt;br /&gt;
&lt;br /&gt;
[[NoSQL]] Nube almacenes de datos proporcionan la escalabilidad y características de alta disponibilidad para aplicaciones web, pero al mismo tiempo que sacrificar la coherencia de datos. Sin embargo, muchas aplicaciones no pueden permitirse ninguna incoherencia de datos. [[CloudTPS]] es un gestor de transacciones escalable que garantiza las propiedades [[ACID]] completa de multi-elemento de operaciones emitidas por las aplicaciones web, incluso en la presencia de fallas en el servidor y las particiones de red. Ponemos en práctica este enfoque en la parte superior de las dos principales familias de las capas de datos escalables: [[Bigtable]] y [[SimpleDB]]. La evaluación del desempeño en la parte superior de [[HBase[[ (una versión de código abierto de Bigtable) en nuestro grupo local y Amazon SimpleDB en la nube de Amazon muestra que nuestro sistema de escalas de forma lineal al menos hasta 40 nodos en nuestras agrupaciones locales y 80 nodos en la nube de Amazon.&lt;br /&gt;
&lt;br /&gt;
== Url para Descargar el SoftWare ==&lt;br /&gt;
&lt;br /&gt;
http://couchdb.apache.org/downloads.html&lt;br /&gt;
&lt;br /&gt;
== Fuentes  ==&lt;br /&gt;
&lt;br /&gt;
*http://www.4tic.com/blog/2011/06/29/couchdb-una-base-de-datos-diferente-2/&lt;br /&gt;
*http://softlibre.barrapunto.com/article.pl?sid=09/11/29/1420207&lt;br /&gt;
*http://couchdb.apache.org/&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
[[Category:Software]] [[Category:Bases_de_datos]] [[Category:Software_para_Linux]]&lt;/div&gt;</summary>
		<author><name>Xigurat</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Geany&amp;diff=1276092</id>
		<title>Geany</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Geany&amp;diff=1276092"/>
		<updated>2011-12-18T05:15:47Z</updated>

		<summary type="html">&lt;p&gt;Xigurat: actualizando última versión.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ficha Software&lt;br /&gt;
|nombre=Geany&lt;br /&gt;
|familia=&lt;br /&gt;
|imagen=Geany2.png&lt;br /&gt;
|tamaño=&lt;br /&gt;
|descripción=Editor de códigos para la programación de diversos lenguajes &lt;br /&gt;
|imagen2=&lt;br /&gt;
|tamaño2=&lt;br /&gt;
|descripción2=&lt;br /&gt;
|creador=Enrico Tröger&lt;br /&gt;
|desarrollador=&lt;br /&gt;
|diseñador=&lt;br /&gt;
|modelo   de desarrollo=&lt;br /&gt;
|lanzamiento inicial=19 de octubre de 2005&lt;br /&gt;
|versiones=&lt;br /&gt;
|última   versión estable= 0.21&lt;br /&gt;
|género=Entorno de desarrollo integrado&lt;br /&gt;
|sistemas operativos=[[Windows]] y [[GNU/Linux]].&lt;br /&gt;
|idioma= Español&lt;br /&gt;
|licencia=GNU General   Public License (GPL)&lt;br /&gt;
|premios=&lt;br /&gt;
|web=http://www.geany.org/  &lt;br /&gt;
}}'''Geany'''. Es un editor de [[Texto]] ligero basado en [[Scintilla]] con características básicas de entorno de desarrollo integrado ([[IDE]]). Está disponible para distintos sistemas operativos, como [[GNU/Linux]], [[Mac OS X]], [[BSD]], [[Solaris]] y [[Microsoft Windows]]. Es distribuido como [[software libre]] bajo la [[Licencia Pública General de GNU]].&lt;br /&gt;
&lt;br /&gt;
==Lenguajes soportados==&lt;br /&gt;
&lt;br /&gt;
Tiene soporte para muchos lenguajes de programación distintos, como [[C]], [[C++]], [[Java]], [[JavaScript]], [[PHP]], [[HTML]], [[CSS]], [[Python]], [[Perl]], [[Ruby]], [[Fortran]], [[Pascal]] , [[Haskell]] entre tantos otros.&lt;br /&gt;
&lt;br /&gt;
==Características==&lt;br /&gt;
&lt;br /&gt;
Algunas de las características más destacadas de Geany son: &lt;br /&gt;
&lt;br /&gt;
*Autocompletado&lt;br /&gt;
*Soporte multidocumento&lt;br /&gt;
*Soporte de proyectos&lt;br /&gt;
*Coloreado de sintaxis&lt;br /&gt;
*Emulador de terminal incrustado. &lt;br /&gt;
&lt;br /&gt;
Algunas de las utilidades más conocidas son:&lt;br /&gt;
&lt;br /&gt;
*Compatible con la mayoría de lenguajes  &lt;br /&gt;
*Varios paneles para acceder mejor a los datos  &lt;br /&gt;
*Herramientas para compilar  &lt;br /&gt;
*Buscador integrado &lt;br /&gt;
&lt;br /&gt;
Lo más sorprendente quizás sea que este sencillo programa permite:&lt;br /&gt;
&lt;br /&gt;
*'''Posibilidad de  compilar y ejecutar directamente desde el entorno''' (en todos los  lenguajes orientados a esta labor). Aunque parezca increíble, es capaz  de llamar al compilador y luego ejecutar el programa compilado  directamente a través de una consola que se te integra en el programa.  &lt;br /&gt;
*'''Descomposición y representación de las clases y  estructuras de nuestro código.''' Geany interpreta nuestro código y en  la barra izquierda nos representa las estructuras y clases que aparecen  en él.  &lt;br /&gt;
*Posibilidad de ampliar funcionalidad  mediante complementos.&lt;br /&gt;
&lt;br /&gt;
==Es gratuito==&lt;br /&gt;
&lt;br /&gt;
Es una aplicación gratuita y de código abierto que nos permitirá crear y editar código fácilmente en un entorno sencillo. Protegido bajo Licencia Pública General de GNU resulta una variante muy buena para los amantes de la programación, las pequeñas y medianas empresa que no cuentan con capital como para asumir la compra de grandes paquetes para programación con lo es [[Visual Studio 2008]] o superior.&lt;br /&gt;
&lt;br /&gt;
Este sencillo y gratuito software es ampliamente usado por grupos de programadores ya que aun cuando trabajen en una programa específico como lo puede ser [[Lazarus]], [[PythonG]], [[Netbeans]] entre tantos otros software libre para la programación, se suele usar Geany del mismo modo que [[Notepad++]], osea, como un editor de textos donde arreglar o trabajar con muchos menos recursos de la computadora.&lt;br /&gt;
&lt;br /&gt;
[[Image:Geany_build1.png‎|thumb|center|350px|Geany]] &lt;br /&gt;
&lt;br /&gt;
==Fuente==&lt;br /&gt;
&lt;br /&gt;
*[http://www.geany.org/Main/Authors Pagina del autor]&lt;br /&gt;
*[http://www.genbeta.com/herramientas/geany-editor-de-textos-para-programadores-en-windows-y-linux Geany editor de textos para programadores en wundows y linux]&lt;br /&gt;
*[http://geany.softonic.com/ información en Softonic]&lt;br /&gt;
*[http://geany.uptodown.com/ubuntu Geany en Ubuntu]&lt;br /&gt;
*[http://www.linuxhispano.net/2010/02/02/geany-algo-mas-que-un-editor-de-codigo-para-gnome/ Genay algo más que un editor de código para gnome]&lt;br /&gt;
*[http://comunidades.uci.cu/blogs/codeninja/2011/11/geany-y-yo/ Geany y yo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Ciencias_informáticas]]&lt;/div&gt;</summary>
		<author><name>Xigurat</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Geany&amp;diff=1276091</id>
		<title>Geany</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Geany&amp;diff=1276091"/>
		<updated>2011-12-18T05:13:53Z</updated>

		<summary type="html">&lt;p&gt;Xigurat: /* Fuente */ agregando otra fuente&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ficha Software&lt;br /&gt;
|nombre=Geany&lt;br /&gt;
|familia=&lt;br /&gt;
|imagen=Geany2.png&lt;br /&gt;
|tamaño=&lt;br /&gt;
|descripción=Editor de códigos para la programación de diversos lenguajes &lt;br /&gt;
|imagen2=&lt;br /&gt;
|tamaño2=&lt;br /&gt;
|descripción2=&lt;br /&gt;
|creador=Enrico Tröger&lt;br /&gt;
|desarrollador=&lt;br /&gt;
|diseñador=&lt;br /&gt;
|modelo   de desarrollo=&lt;br /&gt;
|lanzamiento inicial=19 de octubre de 2005&lt;br /&gt;
|versiones=&lt;br /&gt;
|última   versión estable= 0.20&lt;br /&gt;
|género=Entorno de desarrollo integrado&lt;br /&gt;
|sistemas operativos=[[Windows]] y [[GNU/Linux]].&lt;br /&gt;
|idioma= Español&lt;br /&gt;
|licencia=GNU General   Public License (GPL)&lt;br /&gt;
|premios=&lt;br /&gt;
|web=http://www.geany.org/  &lt;br /&gt;
}}'''Geany'''. Es un editor de [[Texto]] ligero basado en [[Scintilla]] con características básicas de entorno de desarrollo integrado ([[IDE]]). Está disponible para distintos sistemas operativos, como [[GNU/Linux]], [[Mac OS X]], [[BSD]], [[Solaris]] y [[Microsoft Windows]]. Es distribuido como [[software libre]] bajo la [[Licencia Pública General de GNU]].&lt;br /&gt;
&lt;br /&gt;
==Lenguajes soportados==&lt;br /&gt;
&lt;br /&gt;
Tiene soporte para muchos lenguajes de programación distintos, como [[C]], [[C++]], [[Java]], [[JavaScript]], [[PHP]], [[HTML]], [[CSS]], [[Python]], [[Perl]], [[Ruby]], [[Fortran]], [[Pascal]] , [[Haskell]] entre tantos otros.&lt;br /&gt;
&lt;br /&gt;
==Características==&lt;br /&gt;
&lt;br /&gt;
Algunas de las características más destacadas de Geany son: &lt;br /&gt;
&lt;br /&gt;
*Autocompletado&lt;br /&gt;
*Soporte multidocumento&lt;br /&gt;
*Soporte de proyectos&lt;br /&gt;
*Coloreado de sintaxis&lt;br /&gt;
*Emulador de terminal incrustado. &lt;br /&gt;
&lt;br /&gt;
Algunas de las utilidades más conocidas son:&lt;br /&gt;
&lt;br /&gt;
*Compatible con la mayoría de lenguajes  &lt;br /&gt;
*Varios paneles para acceder mejor a los datos  &lt;br /&gt;
*Herramientas para compilar  &lt;br /&gt;
*Buscador integrado &lt;br /&gt;
&lt;br /&gt;
Lo más sorprendente quizás sea que este sencillo programa permite:&lt;br /&gt;
&lt;br /&gt;
*'''Posibilidad de  compilar y ejecutar directamente desde el entorno''' (en todos los  lenguajes orientados a esta labor). Aunque parezca increíble, es capaz  de llamar al compilador y luego ejecutar el programa compilado  directamente a través de una consola que se te integra en el programa.  &lt;br /&gt;
*'''Descomposición y representación de las clases y  estructuras de nuestro código.''' Geany interpreta nuestro código y en  la barra izquierda nos representa las estructuras y clases que aparecen  en él.  &lt;br /&gt;
*Posibilidad de ampliar funcionalidad  mediante complementos.&lt;br /&gt;
&lt;br /&gt;
==Es gratuito==&lt;br /&gt;
&lt;br /&gt;
Es una aplicación gratuita y de código abierto que nos permitirá crear y editar código fácilmente en un entorno sencillo. Protegido bajo Licencia Pública General de GNU resulta una variante muy buena para los amantes de la programación, las pequeñas y medianas empresa que no cuentan con capital como para asumir la compra de grandes paquetes para programación con lo es [[Visual Studio 2008]] o superior.&lt;br /&gt;
&lt;br /&gt;
Este sencillo y gratuito software es ampliamente usado por grupos de programadores ya que aun cuando trabajen en una programa específico como lo puede ser [[Lazarus]], [[PythonG]], [[Netbeans]] entre tantos otros software libre para la programación, se suele usar Geany del mismo modo que [[Notepad++]], osea, como un editor de textos donde arreglar o trabajar con muchos menos recursos de la computadora.&lt;br /&gt;
&lt;br /&gt;
[[Image:Geany_build1.png‎|thumb|center|350px|Geany]] &lt;br /&gt;
&lt;br /&gt;
==Fuente==&lt;br /&gt;
&lt;br /&gt;
*[http://www.geany.org/Main/Authors Pagina del autor]&lt;br /&gt;
*[http://www.genbeta.com/herramientas/geany-editor-de-textos-para-programadores-en-windows-y-linux Geany editor de textos para programadores en wundows y linux]&lt;br /&gt;
*[http://geany.softonic.com/ información en Softonic]&lt;br /&gt;
*[http://geany.uptodown.com/ubuntu Geany en Ubuntu]&lt;br /&gt;
*[http://www.linuxhispano.net/2010/02/02/geany-algo-mas-que-un-editor-de-codigo-para-gnome/ Genay algo más que un editor de código para gnome]&lt;br /&gt;
*[http://comunidades.uci.cu/blogs/codeninja/2011/11/geany-y-yo/ Geany y yo]&lt;br /&gt;
&lt;br /&gt;
[[Category:Ciencias_informáticas]]&lt;/div&gt;</summary>
		<author><name>Xigurat</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Geany&amp;diff=1276090</id>
		<title>Geany</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Geany&amp;diff=1276090"/>
		<updated>2011-12-18T05:11:09Z</updated>

		<summary type="html">&lt;p&gt;Xigurat: /* Características */ corrección ortográfica&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ficha Software&lt;br /&gt;
|nombre=Geany&lt;br /&gt;
|familia=&lt;br /&gt;
|imagen=Geany2.png&lt;br /&gt;
|tamaño=&lt;br /&gt;
|descripción=Editor de códigos para la programación de diversos lenguajes &lt;br /&gt;
|imagen2=&lt;br /&gt;
|tamaño2=&lt;br /&gt;
|descripción2=&lt;br /&gt;
|creador=Enrico Tröger&lt;br /&gt;
|desarrollador=&lt;br /&gt;
|diseñador=&lt;br /&gt;
|modelo   de desarrollo=&lt;br /&gt;
|lanzamiento inicial=19 de octubre de 2005&lt;br /&gt;
|versiones=&lt;br /&gt;
|última   versión estable= 0.20&lt;br /&gt;
|género=Entorno de desarrollo integrado&lt;br /&gt;
|sistemas operativos=[[Windows]] y [[GNU/Linux]].&lt;br /&gt;
|idioma= Español&lt;br /&gt;
|licencia=GNU General   Public License (GPL)&lt;br /&gt;
|premios=&lt;br /&gt;
|web=http://www.geany.org/  &lt;br /&gt;
}}'''Geany'''. Es un editor de [[Texto]] ligero basado en [[Scintilla]] con características básicas de entorno de desarrollo integrado ([[IDE]]). Está disponible para distintos sistemas operativos, como [[GNU/Linux]], [[Mac OS X]], [[BSD]], [[Solaris]] y [[Microsoft Windows]]. Es distribuido como [[software libre]] bajo la [[Licencia Pública General de GNU]].&lt;br /&gt;
&lt;br /&gt;
==Lenguajes soportados==&lt;br /&gt;
&lt;br /&gt;
Tiene soporte para muchos lenguajes de programación distintos, como [[C]], [[C++]], [[Java]], [[JavaScript]], [[PHP]], [[HTML]], [[CSS]], [[Python]], [[Perl]], [[Ruby]], [[Fortran]], [[Pascal]] , [[Haskell]] entre tantos otros.&lt;br /&gt;
&lt;br /&gt;
==Características==&lt;br /&gt;
&lt;br /&gt;
Algunas de las características más destacadas de Geany son: &lt;br /&gt;
&lt;br /&gt;
*Autocompletado&lt;br /&gt;
*Soporte multidocumento&lt;br /&gt;
*Soporte de proyectos&lt;br /&gt;
*Coloreado de sintaxis&lt;br /&gt;
*Emulador de terminal incrustado. &lt;br /&gt;
&lt;br /&gt;
Algunas de las utilidades más conocidas son:&lt;br /&gt;
&lt;br /&gt;
*Compatible con la mayoría de lenguajes  &lt;br /&gt;
*Varios paneles para acceder mejor a los datos  &lt;br /&gt;
*Herramientas para compilar  &lt;br /&gt;
*Buscador integrado &lt;br /&gt;
&lt;br /&gt;
Lo más sorprendente quizás sea que este sencillo programa permite:&lt;br /&gt;
&lt;br /&gt;
*'''Posibilidad de  compilar y ejecutar directamente desde el entorno''' (en todos los  lenguajes orientados a esta labor). Aunque parezca increíble, es capaz  de llamar al compilador y luego ejecutar el programa compilado  directamente a través de una consola que se te integra en el programa.  &lt;br /&gt;
*'''Descomposición y representación de las clases y  estructuras de nuestro código.''' Geany interpreta nuestro código y en  la barra izquierda nos representa las estructuras y clases que aparecen  en él.  &lt;br /&gt;
*Posibilidad de ampliar funcionalidad  mediante complementos.&lt;br /&gt;
&lt;br /&gt;
==Es gratuito==&lt;br /&gt;
&lt;br /&gt;
Es una aplicación gratuita y de código abierto que nos permitirá crear y editar código fácilmente en un entorno sencillo. Protegido bajo Licencia Pública General de GNU resulta una variante muy buena para los amantes de la programación, las pequeñas y medianas empresa que no cuentan con capital como para asumir la compra de grandes paquetes para programación con lo es [[Visual Studio 2008]] o superior.&lt;br /&gt;
&lt;br /&gt;
Este sencillo y gratuito software es ampliamente usado por grupos de programadores ya que aun cuando trabajen en una programa específico como lo puede ser [[Lazarus]], [[PythonG]], [[Netbeans]] entre tantos otros software libre para la programación, se suele usar Geany del mismo modo que [[Notepad++]], osea, como un editor de textos donde arreglar o trabajar con muchos menos recursos de la computadora.&lt;br /&gt;
&lt;br /&gt;
[[Image:Geany_build1.png‎|thumb|center|350px|Geany]] &lt;br /&gt;
&lt;br /&gt;
==Fuente==&lt;br /&gt;
&lt;br /&gt;
*[http://www.geany.org/Main/Authors Pagina del autor]&lt;br /&gt;
*[http://www.genbeta.com/herramientas/geany-editor-de-textos-para-programadores-en-windows-y-linux Geany editor de textos para programadores en wundows y linux]&lt;br /&gt;
*[http://geany.softonic.com/ información en Softonic]&lt;br /&gt;
*[http://geany.uptodown.com/ubuntu Geany en Ubuntu]&lt;br /&gt;
*[http://www.linuxhispano.net/2010/02/02/geany-algo-mas-que-un-editor-de-codigo-para-gnome/ Genay algo más que un editor de código para gnome]&lt;br /&gt;
&lt;br /&gt;
[[Category:Ciencias_informáticas]]&lt;/div&gt;</summary>
		<author><name>Xigurat</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Xfce&amp;diff=1276088</id>
		<title>Xfce</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Xfce&amp;diff=1276088"/>
		<updated>2011-12-18T05:10:02Z</updated>

		<summary type="html">&lt;p&gt;Xigurat: /* Distribuciones Xfce */ agregando otro screenshot&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ficha Software|nombre=Xfce|logo=Xfce_logo.svg.png|descripcion=|creador=Equipo de desarrolladores de Xfce|fecha_de_creacion=Última versión estable 	4.6.1 19 de abril de 2009|sitio_web=http://www.xfce.org/}}&lt;br /&gt;
'''Xfce''' (se pronuncia como cuatro letras por separado) es un entorno de escritorio ligero para sistemas tipo [[Unix]] como [[Linux]], [[BSD]], [[Solaris]] y derivados. Se configura íntegramente con el [[ratón o mouse]]. Su creador, [[Olivier Fourdan]], lo describe así: «Diseñado para la productividad, las aplicaciones se cargan y se ejecutan rápidamente, mientras conserva recursos de sistema».&lt;br /&gt;
&lt;br /&gt;
Xfce también provee el marco de trabajo para el desarrollo de aplicaciones. Además de Xfce mismo, hay otros programas que también utilizan las bibliotecas de Xfce, como el editor de texto [[Mousepad]], el reproductor multimedia [[Xfmedia]] o el emulador de consola [[Terminal]].&lt;br /&gt;
&lt;br /&gt;
Xfce está basado en la [[biblioteca]] [[GTK+ 2.x]] y utiliza el [[gestor de ventanas]] [[Xfwm]]. Xfce se parecía en sus inicios al entorno de escritorio [[CDE]], pero fue alejándose notablemente debido a que fue reprogramado nuevamente desde cero (ya lo había hecho entre las versiones 2.x y 3.x), y a diferencia de sus anteriores versiones, ahora cuenta con un sistema modular pudiendo gestionar un sistema de tipo multihead de manera bastante sencilla, y sigue todos los estándares establecidos por [[Freedesktop.org]].&lt;br /&gt;
&lt;br /&gt;
El nombre Xfce originalmente provenía de '''XF'''orms '''C'''ommon '''E'''nviroment, pero debido a los grandes cambios en el código, ya no usa el kit de herramientas de XForms, como originalmente lo hacía. El nombre sobrevivió, pero ya no se indica como XFce sino Xfce. Los desarrolladores están de acuerdo en que el nombre carece de significado actualmente, aunque se le suele desglosar como '''X F'''ree '''C'''horesterol '''E'''nvironment (entorno X libre de colesterol) en referencia al poco consumo de memoria que realiza y a la velocidad con que se ejecuta al no tener elementos superfluos a diferencia de otros entornos de escritorio más grandes.&lt;br /&gt;
&lt;br /&gt;
[[Thunar]] es el nuevo [[gestor de archivos]] predeterminado para Xfce desde la versión 4.4. Es similar a [[Nautilus]] y está diseñado para una máxima velocidad y un mínimo consumo de memoria. Xfce también posee un gestor de archivos comprimidos llamado [[Squeeze]]/[[Xarchiver]].&lt;br /&gt;
== Orígenes del nombre de Xfce ==&lt;br /&gt;
El nombre Xfce originalmente provenía de XForms Common Enviroment, pero debido a los grandes cambios en el código, ya no usa el kit de herramientas de XForms, como originalmente lo hacía. El nombre sobrevivió, pero ya no se indica como XFce sino Xfce. Los desarrolladores están de acuerdo en que el nombre carece de significado actualmente, aunque se le suele desglosar como X Free Choresterol Environment (entorno X libre de colesterol) en referencia al poco consumo de memoria que realiza y a la velocidad con que se ejecuta al no tener elementos superfluos a diferencia de otros entornos de escritorio más grandes.&lt;br /&gt;
== Ventajas de Xfce frente a otros entornos de escritorio ==&lt;br /&gt;
Xfce es más ligero que GNOME y KDE, consume menos recursos del sistema, por lo que es más adecuado para equipos con menos recursos de hardware, como memoria RAM o CPU.&lt;br /&gt;
== Gestor de archivos predeterminado de Xfce ==&lt;br /&gt;
Thunar es el nuevo [[gestor de archivos]] predeterminado para Xfce desde la versión 4.4. Es similar a Nautilus y está diseñado para una máxima velocidad y un mínimo consumo de memoria. Xfce también posee un gestor de archivos comprimidos llamado Xarchiver.&lt;br /&gt;
== Filosofía de Xfce ==&lt;br /&gt;
Xfce está basado en la biblioteca GTK+ 2.x y utiliza el gestor de ventanas Xfwm. Xfce se parecía en sus inicios al entorno de escritorio CDE, pero fue alejándose notablemente debido a que fue reprogramado nuevamente desde cero (ya lo había hecho entre las versiones 2.x y 3.x), y a diferencia de sus anteriores versiones, ahora cuenta con un sistema modular pudiendo gestionar un sistema de tipo [[multihead]] de manera bastante sencilla y sigue todos los estándares establecidos por Freedesktop.org.&lt;br /&gt;
== Concepto de Xfwm ==&lt;br /&gt;
Xfwm es el [[gestor de ventanas]] predeterminado para el entorno Xfce. Provee su propio gestor de composición, el primero de su tipo cuando fue lanzado. Xfwm también soporta atajos de teclado y es completamente modificable gráficamente.&lt;br /&gt;
== Instalación Xfce ==&lt;br /&gt;
Para instalar el entorno de escritorio completo, por ejemplo, en [[Debian]], debemos instalar el paquete xfce4, o bien xubuntu-desktop (este último instala los componentes que forman parte de la instalación por defecto de [[Xubuntu]]), de los repositorios oficiales de [[Ubuntu]]. &lt;br /&gt;
&lt;br /&gt;
De forma más práctica basta con abrir una terminal e insertar la siguiente línea de comandos:&lt;br /&gt;
&lt;br /&gt;
  sudo apt-get install xubuntu-desktop&lt;br /&gt;
&lt;br /&gt;
Una vez hecho esto al reiniciar el sistema, se podrá seleccionar en la pantalla del login, sobre el icono de sesión, el escritorio que se desee.&lt;br /&gt;
&lt;br /&gt;
En distribuciones como [[Fedora]] o [[CentOS]] se puede realizar la instalación utilizando la herramienta yum.&lt;br /&gt;
&lt;br /&gt;
  yum groupinstall XFCE&lt;br /&gt;
&lt;br /&gt;
En este caso no es necesario reiniciar el sistema, bastara con salir de la sesión y elegir XFCE como gestor de escritorio al volver a entrar.&lt;br /&gt;
== Configuración del escritorio ==&lt;br /&gt;
Para configurar Xfce sólo tenemos que ir a ''Menú » Configuración » Administrador de configuración''.&lt;br /&gt;
Ahí encontrará muchas de las herramientas necesarias para configurar nuestro sistema. Empecemos por el escritorio. Para ello dentro del ''Administrador de configuración'' pinchamos en ''Desktop''. Aquí podemos cambiar el fondo de escritorio en la pestaña ''Appearance'', el tamaño de los iconos y otras cosas de utilidad. Para mostrar el escritorio tenemos que tener marcada la opción: ''Mostrar imagen'' y luego seleccionar la imagen pinchando sobre la carpeta o insertando la ruta donde dice ''Fichero''. En esta ventana también se ajusta el brillo de la pantalla.&lt;br /&gt;
En la otra pestaña, ''Behavior'', podemos modificar el comportamiento del menú al hacer clic derecho sobre el escritorio. Si no se quiere que salga el menú de Xfce en el escritorio al hacer clic derecho, podemos desmarcar la opción ''Show menú desktop on right click''.&lt;br /&gt;
También tenemos la opción de ''Editar Menú'', pero esa la veremos más adelante. Más abajo tenemos la opción ''Desktop Icons'', donde podemos cambiar el tamaño de los iconos, donde podemos ponerle un valor 44 si lo desean.&lt;br /&gt;
En el Administrador de configuración también tenemos la opción ''Display'' donde podemos establecer la resolución de pantalla.&lt;br /&gt;
== Apariencia de escritorio ==&lt;br /&gt;
Para instalar un tema en Xfce existen dos alternativas:&lt;br /&gt;
&lt;br /&gt;
# Crear la carpeta .themes dentro de /home/nombre_de_usuario&lt;br /&gt;
# Descomprimir los temas descargados dentro de /usr/share/themes''&lt;br /&gt;
&lt;br /&gt;
La segunda opción es la más recomendable. Los iconos se ponen dentro de ''/usr/share/icons''. Para cambiar el puntero, o se instala un tema de los disponibles en el repositorio de Debian.&lt;br /&gt;
Para cambiar el tema nos vamos a ''Administrador de configuración » User Interface''.&lt;br /&gt;
Ahí escogemos los temas instalados en la pestaña ''Temas'' y los iconos en ''Temas de Iconos''.&lt;br /&gt;
Luego en ''Administrador de configuración » Windows Manager''&lt;br /&gt;
&lt;br /&gt;
Donde podemos escoger los temas para las ventanas, los bordes y demás. En este caso pondremos ''Moomex''. Existen dentro de esta herramienta otras opciones como Teclado, Foco y Avanzado, donde no tenemos que tocar nada si no lo necesitamos.&lt;br /&gt;
&lt;br /&gt;
Si queremos activar ''Composite'' vamos a ''Administrador de configuración » Windows Manager Tweaks''.&lt;br /&gt;
&lt;br /&gt;
Buscamos la pestaña ''Compositor'' y dentro activamos ''Enable display comopositing'' y lo configuramos a nuestro gusto. Esto nos dará efectos de sombra, reflejos y transparencia en las ventanas.&lt;br /&gt;
== Personalización del menú ==&lt;br /&gt;
Xfce nos permite configurar el menú principal a gusto de cada uno. Veamos cómo hacerlo. Hacemos clic derecho sobre el menú:&lt;br /&gt;
&lt;br /&gt;
* '''Propiedades''': Aquí podemos cambiar la imagen del menú poner la que queramos, además un texto para que aparezca al lado de la imagen, es opcional por supuesto.&lt;br /&gt;
&lt;br /&gt;
Luego, hacemos clic derecho sobre cualquier área y damos clic en Add entry. Aquí podemos desplegar la primera opción y agregar.&lt;br /&gt;
&lt;br /&gt;
* '''Lanzador''': Nos agrega un lanzador de aplicaciones, por ejemplo Iceweasel.&lt;br /&gt;
&lt;br /&gt;
* '''Título''': Solamente nos pone un título para el menú como se puede ver en la imagen superior del Xfce modificado.&lt;br /&gt;
* '''Submenú''': Para agregar los submenú, por ejemplo: Internet, gráficos, etc.&lt;br /&gt;
* '''Separador''': Para separar los elementos&lt;br /&gt;
* '''Salir''': Añade la orden de Salir de Xfce.&lt;br /&gt;
&lt;br /&gt;
Luego guardamos todo, al momento nos ha cambiado todo el menú. Lo único malo de este método es que cuando instalemos algo no se nos añadirá automáticamente al menú y tenemos que ponerlo manualmente.&lt;br /&gt;
== Componentes principales de Xfce ==&lt;br /&gt;
* ''' Gestor de ventanas''': Gestiona la posición de las ventanas de aplicación en la pantalla, proporciona las decoraciones en las ventanas y gestiona las áreas de trabajo o escritorios virtuales.&lt;br /&gt;
* ''' Panel''': El panel es parte del entorno de escritorio de Xfce y ofrece lanzadores de programa, menús de panel, un reloj, un intercambiador de escritorio y mucho más. &lt;br /&gt;
* ''' Gestor de escritorio''': Este programa establece el fondo de escritorio y proporciona la ventana de menú raíz, iconos de escritorio o iconos minimizados y una lista de ventanas.&lt;br /&gt;
* ''' Gestor de sesión''': El gestor de sesión controla el inicio y cierre de sesión del entorno de escritorio Xfce.&lt;br /&gt;
* ''' Ayudante de impresión''': Proporciona una interfaz gráfica de impresión. Xfprint puede usar [[CUPS]], BSD-LPR o un archivo como destino y las impresoras se obtienen del sistema de impresión que elija. &lt;br /&gt;
* ''' Administrador de configuración''': Le permite configurar cada detalle de su entorno de escritorio. &lt;br /&gt;
* ''' Utilidades y scripts''': Utilidades esenciales y scripts. Proporciona una ventana para créditos y licencia, una ventana para lanzar aplicaciones, y varios scripts importantes que son usados por otros paquetes.&lt;br /&gt;
* ''' Bibliotecas de Xfce''': Las tres bibliotecas base de Xfce (libxfce4util, libxfcegui4 and libxfce4menu) son usadas por casi todas las aplicaciones de Xfce. &lt;br /&gt;
* ''' Xfconf''': Sistema cliente-servidor simple de almacenamiento y consulta de configuración.&lt;br /&gt;
== Aplicaciones principales de Xfce ==&lt;br /&gt;
&lt;br /&gt;
* ''' Mousepad''':Mousepad es un editor de texto basado en Leafpad. La principal razón de ser de Mousepad ha sido dar soporte de impresión, lo cual habría sido difícil de implementar en Leafpad por diversos motivos.&lt;br /&gt;
* ''' Terminal''': Terminal es un emulador de terminal moderno para el escritorio Unix/Linux (principalmente para el entorno de escritorio Xfce).&lt;br /&gt;
* ''' Administrador de archivos Thunar''': Thunar es un moderno administrador de archivos para el entorno de escritorio Xfce. Thunar ha sido diseñado desde el principio para ser rápido y fácil de usar.&lt;br /&gt;
* ''' Xfburn''': Xfburn es una interfaz para la grabación de medios ópticos basada en la biblioteca libburnia para crear y grabar CD y DVD.&lt;br /&gt;
* ''' Orage''': Una sencilla aplicación de calendario con recordatorios.&lt;br /&gt;
* ''' Buscador de aplicaciones''': Le permite buscar, lanzar y encontrar información sobre aplicaciones instaladas en su sistema.&lt;br /&gt;
* ''' Xfmedia''': Xfmedia es un reproductor multimedia simple y fácil de usar basado en el motor de xine. La GUI GTK+ se centra en la reproducción y gestión de archivos de audio aunque, al estar basada en xine, también soporta video.&lt;br /&gt;
* ''' Administrador de archivos comprimidos''': Xarchiver es una interfaz GTK+2 para archivos 7z, zip, rar, tar, bzip2, gzip, arj and rpm.&lt;br /&gt;
* ''' Mezclador''': Un moderno mezclador basado en GStreamer.&lt;br /&gt;
* ''' Visor de imágenes''': Ristretto es un visor de imágenes ligero.&lt;br /&gt;
* ''' Navegador web''': Midori es un navegador web ligero.&lt;br /&gt;
== Framework de Xfce ==&lt;br /&gt;
* ''' Libexo''': Las bibliotecas principales de Xfce están enfocadas al desarrollo del escritorio, libexo está orientada al desarrollo de aplicaciones.&lt;br /&gt;
* ''' Bindings de Python''': Bindings de Python para Xfce. Le permiten crear programas usando las bibliotecas de Xfce más fácilmente.&lt;br /&gt;
* ''' Xfce Foundation Classes''': Xfce Foundation Classes es un conjunto de clases C++ integradas para el desarrollo de aplicaciones para Xfce en sistemas operativos tipo UNIX tales como Linux.&lt;br /&gt;
* ''' Perl Bindings''': Perl bindings for Xfce. If you are old-fashioned or just don like C and Python, you can use Perl to write Xfce applications. &lt;br /&gt;
* ''' Tablas de hashes basadas en disco''': DBH es una biblioteca para crear tablas de hashes basadas en disco en sistemas POSIX.&lt;br /&gt;
* ''' Herramientas de desarrollo de Xfc''': Las herramientas para el desarrollador de Xfce proporcionan una colección de scripts y macros M4 necesarias para compilar los componentes principales del escritorio Xfce.&lt;br /&gt;
== Datos gráficos de Xfce ==&lt;br /&gt;
* ''' Motor de temas GTK+''': Un motor de temas para GTK+. No es necesario para el escritorio, pero es un buen motor de temas, así que puede que quiera probarlo.&lt;br /&gt;
* ''' Tema de iconos''': Tema de iconos predeterminado de Xfce. Incluye iconos PNG y SVG.&lt;br /&gt;
== Mejoras de la última versión Xfce 4.6 frente a la versión Xfce 4.4, la última versión estable ==&lt;br /&gt;
Con Xfce 4.6, Xfdesktop manager finalmente es implementado: puedes seleccionar varios iconos, moverlos, removerlos, etc.&lt;br /&gt;
Xfce 4.6 nos trae un nuevo menú de escritorio que nos permite manipular los archivos como lo haríamos con el menú contextual del Administrador de Ficheros Thunar, pero también abrir aplicaciones, cerrar la sesión o acceder a la documentación.&lt;br /&gt;
&lt;br /&gt;
'''-Paneles'''&lt;br /&gt;
&lt;br /&gt;
Muchos [[bugs]] fueron corregidos en el Xfce4 Panel, particularmente aquellos que daban problemas con múltiples escritorios o pantallas, además de varias miniaplicaciones y mejoras para tus paneles.&lt;br /&gt;
&lt;br /&gt;
El reloj plugin ha sido reescrito para consumir menos recursos y solucionar ciertos fallos, como también un nuevo modo para los corazones geeks: (un reloj binario). El nuevo plugin de Área de Notificación permite ocultar los iconos de notificación seleccionados para mantener el área limpia y legible.&lt;br /&gt;
&lt;br /&gt;
'''-Nuevo Mezclador de Sonido'''&lt;br /&gt;
 &lt;br /&gt;
Xfce4 Mixer ha sido reescrito para funcionar con [[Gstreamer]]. Esto permite soportar fácilmente múltiples sistemas de sonido, la interfase es algo más pulida y puedes administrar diferentes tarjetas de sonido. Adicionalmente, ahora puedes regular rápidamente el volumen con la rueda del ratón, desde el plugin del panel.&lt;br /&gt;
&lt;br /&gt;
'''-Administración de Sesión mejorado'''&lt;br /&gt;
&lt;br /&gt;
Xfce 4.6 viene con un Administrador de Sesiones mejorado: la sesión inicia más rápido, y el diálogo de preferencias ha sido recreado para facilitar su administración. Además, el Administrador de Sesiones automáticamente reiniciará la sesión de aquellas aplicaciones que han colapsado, de modo que no te quedes sin los paneles de escritorio, administrador de ventana, etc.&lt;br /&gt;
&lt;br /&gt;
También incluye el esperado soporte para Suspender e Hibernar, desde la instalación. Aparecen ahora dos botones adicionales que ofrecen la suspensión o hibernación del equipo.&lt;br /&gt;
&lt;br /&gt;
'''-Administrador de Ventanas'''&lt;br /&gt;
 &lt;br /&gt;
Era de esperar que Xfwm4 haya madurado bastante desde su último lanzamiento: varios bugs han sido corregidos, se adicionó soporte para múltiples pantallas, y sobre todo, la performance ha sido realzada.&lt;br /&gt;
&lt;br /&gt;
Entre otras novedosas características, Xfwm4 es ahora capaz de detectar las ventanas que no responden y nos ofrecerá terminarlas.&lt;br /&gt;
&lt;br /&gt;
También hay un nuevo Menú de Acciones que nos permite redimensionar y mover rápidamente, traer encima o debajo de otras ventanas o llevarlas a pantalla completa.&lt;br /&gt;
&lt;br /&gt;
La nueva operación Rellenar (fill) ha sido implementada; expande una ventana por todo el espacio disponible, sin sobreponerse por encima de otras ventanas existentes adyacentes.&lt;br /&gt;
&lt;br /&gt;
El compositor ha sido optimizado para reducir el [[flickering]] de las ventanas durante su redimensionamiento.&lt;br /&gt;
Algunas opciones de efectos extra (tweakable) se han sumado, por ejemplo, puedes deshabilitar el parpadeo de las ventanas cuando reciben una notificación de urgencia.&lt;br /&gt;
&lt;br /&gt;
'''-Administrador de ficheros (Thunar)'''&lt;br /&gt;
&lt;br /&gt;
Hay varias correcciones de errores e importantes mejoras en Thunar. Se pueden usar los botones Adelante y Atrás del ratón  (de estar disponibles) para navegar, e incluye un nuevo plugin para cambiar una imagen como papel tapíz (wallpaper) desde el menú contextual.&lt;br /&gt;
&lt;br /&gt;
Thunar responde ahora a las especificaciones de carpetas de usuarios XDG; esto permite personalizar y localizar carpetas donde se almacena música, documentos, videos, plantillas, etc.&lt;br /&gt;
&lt;br /&gt;
Thunar muestra ahora los volúmenes sin montar como iconos traslúcidos, de modo que se distingan de los ya montados y en uso. Thunar ahora también soporta dispositivos cifrados.&lt;br /&gt;
&lt;br /&gt;
'''-Nuevos Diálogos de Configuración'''&lt;br /&gt;
&lt;br /&gt;
Xfce 4.6 incluye una nueva interface del célebre Xfce Settings Manager, el cuál permite configurar el entorno más fácil que nunca. Los diálogos que son accesibles por un clic simple han sido rediseñados para ser más compactos y de manera que personalizar el sistema sea intuitivo y ágil.&lt;br /&gt;
&lt;br /&gt;
Para configurarlo seguimos los siguientes pasos: ''Administrador de configuración » Keyboard'' y buscamos la pestaña ''Atajo''. Buscamos el botón ''Añadir'', debajo de Temas y le ponemos un nombre cualquiera, por ejemplo: misatajos. Luego marcamos misatajos y le damos al botón añadir que se encuentra debajo de Atajo. Primero tenemos que insertar un comando, por ejemplo: xfce4-screenshooter, luego nos pide que oprimamos las teclas para esta opción, en nuestro caso PrintScreen ya que este comando lo que hace es capturar la pantalla.&lt;br /&gt;
&lt;br /&gt;
'''-Nuevo Buscador de Aplicaciones'''&lt;br /&gt;
&lt;br /&gt;
Xfce 4.6 incluye además un nuevo buscador de aplicaciones el cual nos permite un escritorio más ordenado e intuitivo. Es muy simple de usar desde el teclado, y detecta aplicaciones ya instaladas. También permite crear accesos y lanzadores desde los paneles rápidamente simplemente arrastrando un icono de aplicaciones a la ventana del creador de lanzadores.&lt;br /&gt;
&lt;br /&gt;
Estas son algunas de las más interesantes nuevas características de Xfce. Seguramente en breve, obtendremos la versión actualizada en los repositorios de Ubuntu.&lt;br /&gt;
== Definiciones de interés ==&lt;br /&gt;
# ''[[Entorno de escritorio]]:'' Es una solución completa de interfaz gráfica de usuario que le provee de iconos, barras de herramientas, aplicaciones e integración entre 	aplicaciones con habilidades como drag&amp;amp;drop (arrastrar y soltar) que hacen que el manejo del sistema operativo sea más amigable. En general cada entorno de 	escritorio se distingue por su aspecto y comportamiento particulares, aunque algunos tienden a imitar características de escritorios ya existentes.&lt;br /&gt;
# ''[[terminal de computadora|Terminal]]:'' Un terminal es una forma de acceder al sistema sin utilizar la interfaz gráfica, es decir, realizar todo tipo de tareas en formato texto.&lt;br /&gt;
# ''[[Gestor de archivos]]:'' es una aplicación informática que provee acceso a archivos y facilita el realizar operaciones con ellos, como copiar, mover o eliminar archivos.&lt;br /&gt;
# ''[[Multihead (Multihilo)]]:'' Hilo es la ejecución del código dentro del entorno, por tanto el multihilo es si el programa es ejecutado en un sistema con multiprogramación, dos o más hilos pueden compartir el procesador por multiplexación de tiempo, incluso si están usando el mismo programa y los mismos datos. Si el cómputo multihilo se ejecuta en computador con más de un procesador, es posible que dos o más hilos se ejecuten en paralelo.&lt;br /&gt;
# ''[[Gestor de ventanas]]:'' Un gestor de ventanas es un programa que controla la ubicación y apariencia de las ventanas bajo un sistema de ventanas en una interfaz gráfica de usuario. Las acciones asociadas al sistema operativo son, normalmente, abrir, cerrar, minimizar, maximizar, mover, escalar y mantener un listado de las ventanas abiertas. Es también muy común que el gestor de ventanas integre elementos como el decorador de ventanas, bandeja del sistema, barra de tareas, lanzadores de programas, iconos o fondo de escritorio. El sistema gráfico X Window, popular en el ámbito de sistemas Unix y similares, como GNU/Linux, permite al usuario escoger entre varios gestores. Los gestores de ventanas difieren entre sí de muchas maneras, incluyendo apariencia, consumo de memoria, opciones de personalización, escritorios múltiples o virtuales y similitud con ciertos entornos de escritorio ya existentes, entre otras.&lt;br /&gt;
# ''[[CUPS]]:'' El Sistema de impresión común de Unix (Common Unix Printing System en inglés, abreviado CUPS) es un sistema de impresión modular para sistemas operativos de tipo Unix que permite que un computador actúe como servidor de impresión. Un computador que ejecuta CUPS actúa como un servidor que puede aceptar tareas de impresión desde otros computadores clientes, los procesa y los envía al servidor de impresión apropiado.&lt;br /&gt;
# ''[[Bugs]]:'' Defecto de software. Es el resultado de un fallo o deficiencia durante el proceso de creación de programas de ordenador (software).&lt;br /&gt;
# ''[[Gstreamer]]:'' Es un framework multimedia libre multiplataforma escrito en el Lenguaje de programación C, usando la biblioteca Gobject. Gstreamer permite crear aplicaciones multimedia, como video, sonido, codificación, etc. La función del núcleo de Gstreamer es proveer un framework para plugins, flujo de datos y manejo/negociación de distintos tipos de medios. También provee una API para escribir aplicaciones.&lt;br /&gt;
# ''[[Flickering]]:'' Efecto de oscilación, centelleo o parpadeo de ventanas.&lt;br /&gt;
== Distribuciones Xfce ==&lt;br /&gt;
Xfce no es tan fácil de encontrar [[RPM Package Manager|empaquetado]] (puede compilarse y empaquetarse si se desea) en las distribuciones de [[Linux]] comparado a otros [[entorno de escritorio|entornos de escritorios]] como [[KDE]] y [[GNOME]]. Pocas distribuciones lo incluyen como el entorno predefinido.&lt;br /&gt;
[[Image:Xfce.png|thumb|right|Entorno Xfce]] &lt;br /&gt;
[[Image:XFCE4.png|thumb|right|Entorno Xfce v4.8 en Ubuntu 11.10]] &lt;br /&gt;
Varias distribuciones que incluyen Xfce por defecto son:&lt;br /&gt;
&lt;br /&gt;
* [[Xfld]]&lt;br /&gt;
* [[Archie (Linux)|Archie]]&lt;br /&gt;
* [[Belenix]]&lt;br /&gt;
* [[College Linux]]&lt;br /&gt;
* [[Dreamlinux]]&lt;br /&gt;
* [[Fedora]]&lt;br /&gt;
* [[FreeSBIE]]&lt;br /&gt;
* [[Kate OS]]&lt;br /&gt;
* [[LinEspa]]&lt;br /&gt;
* [[Linux Mint]]&lt;br /&gt;
* [[Mandriva]] &lt;br /&gt;
* [[Morphix]]&lt;br /&gt;
* [[OpenSuSE]]&lt;br /&gt;
* [[Slackware]]&lt;br /&gt;
* [[SLAX]]&lt;br /&gt;
* [[Vector Linux]]&lt;br /&gt;
* [[WHAX]]&lt;br /&gt;
* [[Wolvix]]&lt;br /&gt;
* [[Xubuntu]]&lt;br /&gt;
* [[Zenwalk Linux]]&lt;br /&gt;
* [[X-Evian]]&lt;br /&gt;
&lt;br /&gt;
== Véase también ==&lt;br /&gt;
* [[Entorno de escritorio]]&lt;br /&gt;
* [[GNOME]]&lt;br /&gt;
* [[KDE]]&lt;br /&gt;
* [[CDE]]&lt;br /&gt;
== Referencias ==&lt;br /&gt;
*[http://wiki.xfce.org/faq http://wiki.xfce.org/faq]&lt;br /&gt;
&lt;br /&gt;
== Enlaces externos ==&lt;br /&gt;
* [http://www.xfce.org/ Xfce] Sitio oficial (en inglés)&lt;br /&gt;
* [http://www.xfce-look.org/ Xfce-Look.org] Recursos de apariencias de Xfce (en inglés)&lt;br /&gt;
* [http://www.guia-ubuntu.org/index.php?title=XFce Xfce en la Guía Ubuntu]&lt;br /&gt;
* [http://www.softwarelibre.net/instalar_kde_y_xfce_en_ubuntu Instalar KDE y Xfce en Ubuntu]&lt;br /&gt;
* [http://www.cristalab.com/tips/personalizando-y-configurando-xfce-en-linux-c66568l/ Personalizando y configurando Xfce]&lt;br /&gt;
&lt;br /&gt;
[[Category:Software]][[Category:Software_para_Linux]][[Category:Entornos_de_escritorio_para_Linux]]&lt;/div&gt;</summary>
		<author><name>Xigurat</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Archivo:XFCE4.png&amp;diff=1276087</id>
		<title>Archivo:XFCE4.png</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Archivo:XFCE4.png&amp;diff=1276087"/>
		<updated>2011-12-18T05:07:49Z</updated>

		<summary type="html">&lt;p&gt;Xigurat: Entorno de escritorio XFCE4&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Sumario ==&lt;br /&gt;
Entorno de escritorio XFCE4&lt;br /&gt;
== Estado de copyright: ==&lt;br /&gt;
&lt;br /&gt;
== Licencia ==&lt;br /&gt;
{{CC}}&lt;br /&gt;
== Fuente: ==&lt;/div&gt;</summary>
		<author><name>Xigurat</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Python&amp;diff=1276083</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Python&amp;diff=1276083"/>
		<updated>2011-12-18T04:21:08Z</updated>

		<summary type="html">&lt;p&gt;Xigurat: /* Elementos del lenguaje */ modificada la implementación del ejemplo a una más pythónica.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ficha Software&lt;br /&gt;
|nombre=Python&lt;br /&gt;
|familia=&lt;br /&gt;
|imagen=python_logo.png&lt;br /&gt;
|tamaño=&lt;br /&gt;
|descripción=Lenguaje de programación interpertado, orientado a objetos, imperativo, funcional&lt;br /&gt;
|imagen2=&lt;br /&gt;
|tamaño2=&lt;br /&gt;
|descripción2=&lt;br /&gt;
|creador=[[Guido van Rossum]]&lt;br /&gt;
|desarrollador=&lt;br /&gt;
|diseñador=&lt;br /&gt;
|modelo de desarrollo=&lt;br /&gt;
|lanzamiento inicial=&lt;br /&gt;
|versiones=&lt;br /&gt;
|última versión estable=3.2&lt;br /&gt;
|género=&lt;br /&gt;
|sistemas operativos=&lt;br /&gt;
|idioma=&lt;br /&gt;
|licencia=&lt;br /&gt;
|premios=&lt;br /&gt;
|web=http://www.python.org/&lt;br /&gt;
}}'''Python'''. Lenguaje de programación creado por [[Guido van Rossum]] en el año [[1991]].Se compara habitualmente con [[Tcl]], [[Perl]], [[Scheme]], [[Java]] y [[Ruby]]. En la actualidad Python se desarrolla como un proyecto de [[Código abierto]], administrado por la [[Python Software Foundation]]. La última versión estable del lenguaje es la 3.2.2. Python es considerado como la &amp;quot;oposición leal&amp;quot; a Perl, lenguaje con el cual mantiene una rivalidad amistosa. Los usuarios de Python consideran a éste mucho más limpio y elegante para programar. &lt;br /&gt;
&lt;br /&gt;
== Historia  ==&lt;br /&gt;
&lt;br /&gt;
Python fue creado a finales de los ochenta por [[Guido van Rossum]] en [[National Research Institute for Mathematics and Computer Science|CWI]] en los [[Países Bajos]] como un sucesor del [[Lenguaje de programación ABC]], capaz de manejar excepciones e interactuar con el [[Amoeba (Informática)|sistema operativo Amoeba]]. &lt;br /&gt;
&lt;br /&gt;
Van Rossum es el principal autor de Python, y su continuo rol central en decidir la dirección de Python es reconocido, refiriéndose a él como ''Benevolente dictador vitalicio'' o ''Benevolent Dictator for Life'' (BDFL). &lt;br /&gt;
&lt;br /&gt;
En 1991, van Rossum publicó el código (versión 0.9.0) en [[[[news:alt.sources|alt.sources]]]]. En esta etapa del desarrollo ya estaban presentes clases con herencia, manejo de excepciones, funciones, y los tipos modulares: &amp;lt;code&amp;gt;list&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dict&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt; y así sucesivamente. Además en este lanzamiento inicial aparecía un sistema de módulos adoptado de [[Modula-3]]; van Rossum describe el módulo como &amp;quot;uno de las mayores unidades de programación de Python&amp;quot;. El modelo de excepciones en Python es parecido al de Modula-3, con la adición de una cláusula &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt;. En el año 1994 se formó [[[[news:comp.lang.python|comp.lang.python]]]], el foro de discusión principal de Python, marcando un hito en el crecimiento del grupo de usuarios de este lenguaje. &lt;br /&gt;
&lt;br /&gt;
Python alcanzó la versión 1.0 en enero de 1994. Una característica de este lanzamiento fueron las herramientas de la [[Programación funcional]]: &amp;lt;code&amp;gt;[[Cálculo lambda|lambda]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;map&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;filter&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;reduce&amp;lt;/code&amp;gt;. Van Rossum explicó que &amp;quot;Hace 12 años, Python adquirió lambda, reduce(), filter() and map(), cortesía de un hacker de [[Lisp]] que las extrañaba y que envió parches. El donante fue [[Amrit Prem]]; no se hace ninguna mención específica de cualquier herencia de Lisp en las notas de lanzamiento. &lt;br /&gt;
&lt;br /&gt;
La última versión liberada proveniente de CWI fue Python 1.2. En 1995, van Rossum continuó su trabajo en Python en la [[Corporation for National Research Initiatives]] (CNRI) en Reston, [[Virginia]], donde lanzó varias versiones del [[Software]]. &lt;br /&gt;
&lt;br /&gt;
Durante su estancia en CNRI, van Rossum lanzó la iniciativa ''Computer Programming for Everybody'' (CP4E), con el fin de hacer la programación más accesible a más gente, con un nivel de 'alfabetización' básico en lenguajes de programación, similar a la alfabetización básica en inglés y habilidades matemáticas necesarias por muchos trabajadores. &lt;br /&gt;
&lt;br /&gt;
Python tuvo un papel crucial en este proceso: debido a su orientación hacia una sintaxis limpia, ya era idóneo, y las metas de CP4E presentaban similitudes con su predecesor, ABC. El proyecto fue patrocinado por [[DARPA]]. En el año 2007, el proyecto CP4E está inactivo, y mientras Python intenta ser fácil de aprender y no muy arcano en su sintaxis y semántica, alcanzando a los no-programadores, no es una preocupación activa. &lt;br /&gt;
&lt;br /&gt;
En el año 2000, el principal equipo de desarrolladores de Python se cambió a [[BeOpen.com]] para formar el equipo BeOpen [[PythonLabs]]. CNRI pidió que la versión 1.6 fuera pública, continuando su desarrollo hasta que el equipo de desarrollo abandonó CNRI; su programa de lanzamiento y el de la versión 2.0 tenían una significativa cantidad de traslapo. Python 2.0 fue el primer y único lanzamiento de BeOpen.com. Después que Python 2.0 fuera publicado por BeOpen.com, Guido van Rossum y los otros desarrolladores PythonLabs se unieron en [[Digital Creations]]. &lt;br /&gt;
&lt;br /&gt;
Python 2.0 tomó una característica mayor del lenguaje de [[Programación funcional]] [[Haskell]]: [[List comprehension]]s. La sintaxis de Python para esta construcción es muy similar a la de Haskell, salvo por la preferencia de los caracteres de puntuación en Haskell, y la preferencia de Python por palabras claves alfabéticas. Python 2.0 introdujo además un sistema de [[Recolección de basura]] capaz de recolectar referencias cíclicas. &lt;br /&gt;
&lt;br /&gt;
Posterior a este doble lanzamiento, y después que van Rossum dejó CNRI para trabajar con desarrolladores de software comercial, quedó claro que la opción de usar Python con software disponible bajo [[Licencia pública general de GNU|GPL]] era muy deseable. La licencia usada entonces, la [[Python License]], incluía una cláusula estipulando que la licencia estaba gobernada por el estado de [[Virginia]], por lo que, bajo la óptica de los abogados de [[Free Software Foundation]] (FSF), se hacía incompatible con [[Licencia pública general de GNU|GNU GPL]]. CNRI y FSF se relacionaron para cambiar la licencia de software libre de Python para hacerla compatible con GPL. En el año 2001, van Rossum fue premiado con [[FSF Award for the Advancement of Free Software]]. &lt;br /&gt;
&lt;br /&gt;
Python 1.6.1 es esencialmente el mismo que Python 1.6, con unos pocos arreglos de [[Bugs]], y con una nueva licencia compatible con GPL. &lt;br /&gt;
&lt;br /&gt;
Python 2.1 fue un trabajo derivado de Python 1.6.1, así como también de Python 2.0. Su licencia fue renombrada: [[Python Software Foundation License]]. Todo el código, documentación y especificaciones añadidas, desde la fecha del lanzamiento de la versión alfa de Python 2.1, tiene como dueño a [[Python Software Foundation]] (PSF), una organización sin ánimo de lucro fundada en el año 2001, tomando como modelo la [[Apache Software Foundation]]. Incluido en este lanzamiento fue una implementación del scoping más parecida a las reglas de [[Static scoping]] (del cual [[Scheme]] es el originador). &lt;br /&gt;
&lt;br /&gt;
Una innovación mayor en Python 2.2 fue la unificación de los tipos en Python (tipos escritos en C), y clases (tipos escritos en Python) dentro de una jerarquía. Esa unificación logró un modelo de objetos de Python puro y consistente. También fueron agregados los [[Generador (informática)|generadores]] que fueron inspirados por el lenguaje [[Icon]]. &lt;br /&gt;
&lt;br /&gt;
== Características  ==&lt;br /&gt;
&lt;br /&gt;
Python permite dividir el programa en módulos reutilizables desde otros programas Python. Viene con una gran colección de módulos estándar que se pueden utilizar como base de los programas (o como ejemplos para empezar a aprender Python). También hay módulos incluidos que proporcionan E/S de ficheros, llamadas al sistema, [[Sockets]] y hasta interfaces a [[GUI]] como [[Tk]], [[GTK]], [[Qt]] entre otros. &lt;br /&gt;
&lt;br /&gt;
Python se utiliza como lenguaje de programación interpretado, lo que ahorra un tiempo considerable en el desarrollo del programa, pues no es necesario compilar ni enlazar. El intérprete se puede utilizar de modo interactivo, lo que facilita experimentar con características del lenguaje, escribir programas desechables o probar funciones durante el desarrollo del programa. &lt;br /&gt;
&lt;br /&gt;
El nombre del lenguaje proviene de la afición de su creador original, Guido van Rossum, por los humoristas británicos [[Monty Python]]. El principal objetivo que persigue este lenguaje es la facilidad, tanto de lectura, como de diseño. &lt;br /&gt;
&lt;br /&gt;
== Filosofía  ==&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Python se refieren a menudo a la '''Filosofía Python''' que es bastante análoga a la filosofía de [[Unix]]. El código que sigue los principios de Python de legibilidad y transparencia se dice que es &amp;quot;pythonico&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
*Bello es mejor que feo. &lt;br /&gt;
*Explícito es mejor que implícito. &lt;br /&gt;
*Simple es mejor que complejo. &lt;br /&gt;
*Complejo es mejor que complicado. &lt;br /&gt;
*Plano es mejor que anidado. &lt;br /&gt;
*Ralo es mejor que denso. &lt;br /&gt;
*La legibilidad cuenta. &lt;br /&gt;
*Los casos especiales no son tan especiales como para quebrantar las reglas. &lt;br /&gt;
*Aunque lo práctico gana a la pureza. &lt;br /&gt;
*Los errores nunca deberían dejarse pasar silenciosamente. &lt;br /&gt;
*A menos que hayan sido silenciados explícitamente. &lt;br /&gt;
*Frente a la ambigüedad, rechaza la tentación de adivinar. &lt;br /&gt;
*Debería haber una -y preferiblemente sólo una- manera obvia de hacerlo. &lt;br /&gt;
*Aunque esa manera puede no ser obvia al principio a menos que usted sea holandés. &lt;br /&gt;
*Ahora es mejor que nunca. &lt;br /&gt;
*Aunque ''nunca'' es a menudo mejor que ''ya mismo''. &lt;br /&gt;
*Si la implementación es dificil de explicar, es una mala idea. &lt;br /&gt;
*Si la implementación es fácil de explicar, puede que sea una buena idea. &lt;br /&gt;
*Los espacios de nombres (''namespaces'') son una gran idea ¡Hagamos más de esas cosas!&lt;br /&gt;
&lt;br /&gt;
Desde la versión 2.1.2, Python incluye estos puntos en su versión original en inglés &lt;br /&gt;
&lt;br /&gt;
== Modo interactivo  ==&lt;br /&gt;
&lt;br /&gt;
El intérprete de Python estándar incluye un ''modo interactivo'', en el cual se escriben las instrucciones en una especie de [[Intérprete de comandos|shell]]: las expresiones pueden ser introducidas una a una, pudiendo verse el resultado de su evaluación inmediatamente. Esto resulta útil tanto para las personas que se están familiarizando con el lenguaje como también para los programadores más avanzados: se pueden probar porciones de código en el modo interactivo antes de integrarlo como parte de un programa. &lt;br /&gt;
&lt;br /&gt;
Existen otros programas, tales como [[IDLE (Python)|IDLE]] o [[IPython]], que añaden funcionalidades extra al modo interactivo, como el auto-completar código y el coloreado de la sintaxis del lenguaje. &lt;br /&gt;
&lt;br /&gt;
Ejemplo del modo interactivo: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; 2+2&lt;br /&gt;
 4&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; a = range(10)&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print a&lt;br /&gt;
 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Implementaciones  ==&lt;br /&gt;
&lt;br /&gt;
Python posee diversas implementaciones: &lt;br /&gt;
&lt;br /&gt;
*[[CPython]] es la implementación original, disponible para varias plataformas en el sitio oficial de Python. &lt;br /&gt;
*[[IronPython]] es la implementación para .NET &lt;br /&gt;
*[[Stackless Python]] es la variante de CPython que trata de no usar el ''stack'' de [[Lenguaje de programación C|C]] ([http://www.stackless.com/ www.stackless.com]) &lt;br /&gt;
*[[Jython]] es la implementación hecha en [[Lenguaje de programación Java|Java]] &lt;br /&gt;
*[[Pippy]] es la implementación realizada para Palm ([http://pippy.sourceforge.net/ pippy.sourceforge.net])&lt;br /&gt;
&lt;br /&gt;
== Elementos del lenguaje  ==&lt;br /&gt;
&lt;br /&gt;
Python fue diseñado para ser leído con facilidad. Entre otras cosas se utilizan palabras en inglés donde otros lenguajes utilizarían símbolos (por ejemplo, los [[operadores lógicos]] &amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;&amp;amp;amp;&amp;amp;amp;&amp;lt;/code&amp;gt; en Python se escriben &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt;, respectivamente). &lt;br /&gt;
&lt;br /&gt;
En vez de delimitar los bloques de código mediante el uso de llaves (&amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt;), Python utiliza la [[Indentación]]. Esto hace que la misma sea obligatoria, ayudando a la claridad y consistencia del código escrito (incluso entre varios desarrolladores): &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; | [[Factorial|Función factorial]] en [[Lenguaje de programación C|C]] &lt;br /&gt;
! width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; | [[Factorial|Función factorial]] en Python&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int factorial(int x) &lt;br /&gt;
{&lt;br /&gt;
 if (x == 0)&lt;br /&gt;
   return 1;&lt;br /&gt;
 else&lt;br /&gt;
   return x*factorial(x - 1); &lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def factorial(x):&lt;br /&gt;
    if not x:&lt;br /&gt;
        return 1&lt;br /&gt;
    else:&lt;br /&gt;
        return x * factorial(x-1)&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def factorial(n): return n*factorial(n-1) if n else 1&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Comentarios  ===&lt;br /&gt;
&lt;br /&gt;
Los [[Comentarios|comentarios]] se inician con el símbolo &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;, y se extienden hasta el final de la línea. Al comentar una linea, esta no es tenida en cuenta por el interprete lo cual es útil si deseamos poner información adicional en nuestro código como por ejemplo un explicativo que comente que hacen dichas lineas, que falta o haría falta hacer (muy útil para los programadores al momento de leer un código hecho por otro programador). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
# Comentario en una línea en Python.&lt;br /&gt;
print('Hola mundo') # También es posible añadir un comentario después de una línea de código&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Variables  ===&lt;br /&gt;
&lt;br /&gt;
Las variables se definen de forma [[Tipado dinámico|dinámica]]. El signo igual (&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;) se usa para asignar valores a las variables: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
x = 1&lt;br /&gt;
x = 'texto' # esto es posible porque los tipos son asignados dinámicamente&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Tipos de datos  ===&lt;br /&gt;
&lt;br /&gt;
Python soporta implícitamente una gran variedad de tipos de datos. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;integratable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Tipo &lt;br /&gt;
! Clase &lt;br /&gt;
! Notas &lt;br /&gt;
! Ejemplo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt; &lt;br /&gt;
| String &lt;br /&gt;
| Inmutable &lt;br /&gt;
| &amp;lt;code&amp;gt;'Integrador'&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;unicode&amp;lt;/code&amp;gt; &lt;br /&gt;
| String &lt;br /&gt;
| Versión [[Unicode]] de &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt; (eliminado en Python3) &lt;br /&gt;
| &amp;lt;code&amp;gt;u'Integrador'&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;list&amp;lt;/code&amp;gt; &lt;br /&gt;
| Secuencia &lt;br /&gt;
| Mutable, puede contener diversos tipos &lt;br /&gt;
| &amp;lt;code&amp;gt;[4.0, 'string', True]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;tuple&amp;lt;/code&amp;gt; &lt;br /&gt;
| Secuencia &lt;br /&gt;
| Inmutable &lt;br /&gt;
| &amp;lt;code&amp;gt;(4.0, 'string', True)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;set&amp;lt;/code&amp;gt; &lt;br /&gt;
| Conjunto &lt;br /&gt;
| Mutable, sin orden, no contiene duplicados &lt;br /&gt;
| &amp;lt;code&amp;gt;set([4.0, 'string', True])&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;frozenset&amp;lt;/code&amp;gt; &lt;br /&gt;
| Conjunto &lt;br /&gt;
| Inmutable, sin orden, no contiene duplicados &lt;br /&gt;
| &amp;lt;code&amp;gt;frozenset([4.0, 'string', True])&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;dict&amp;lt;/code&amp;gt; &lt;br /&gt;
| Mapping &lt;br /&gt;
| Grupo de pares clave, valor &lt;br /&gt;
| &amp;lt;code&amp;gt;{'key1': 1.0, 'key2': False}&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; &lt;br /&gt;
| Número entero &lt;br /&gt;
| Precisión fija, convertido en &amp;lt;var&amp;gt;long&amp;lt;/var&amp;gt; en caso de overflow. &lt;br /&gt;
| &amp;lt;code&amp;gt;42&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;long&amp;lt;/code&amp;gt; &lt;br /&gt;
| Número entero &lt;br /&gt;
| Precisión arbitraria &lt;br /&gt;
| &amp;lt;code&amp;gt;42L&amp;lt;/code&amp;gt; ó &amp;lt;code&amp;gt;456966786151987643L&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; &lt;br /&gt;
| Número decimal representado en &lt;br /&gt;
| coma flotante de doble precisión &lt;br /&gt;
| &amp;lt;code&amp;gt;3.1415927&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt; &lt;br /&gt;
| Booleano &lt;br /&gt;
| Valor booleano verdadero o falso &lt;br /&gt;
| &amp;lt;code&amp;gt;True o False&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Mutable: si su valor o el de alguno de sus elementos (el caso de las listas, conjuntos y los diccionarios) puede cambiarse en tiempo de ejecución. &lt;br /&gt;
*Inmutable: si su contenido no puede cambiarse en tiempo de ejecución. Por ejemplo: las cadenas y tuplas.&lt;br /&gt;
&lt;br /&gt;
==== Tuplas y Listas  ====&lt;br /&gt;
&lt;br /&gt;
*Para declarar una ''lista'', basta usar los corchetes &amp;lt;code&amp;gt;[ ]&amp;lt;/code&amp;gt;, mientras que para declarar una ''tupla'' es recomendable usar los paréntesis &amp;lt;code&amp;gt;()&amp;lt;/code&amp;gt;. En ambas los elementos se separan por comas, y en el caso de las tuplas es necesario que tengan como mínimo una coma. &lt;br /&gt;
*Tanto las ''listas'' como las ''tuplas'' pueden contener elementos de diferentes tipos. No obstante las listas suelen usarse para elementos del mismo tipo en cantidad variable mientras que las tuplas se reservan para elementos distintos en cantidad fija. &lt;br /&gt;
*Para acceder a los elementos de una ''lista'' o ''tupla'', se utiliza un índice entero. Se pueden utilizar índices negativos para acceder elementos a partir del final. &lt;br /&gt;
*Las ''listas'' se caracterizan por ser mutables, es decir, se puede cambiar su contenido, mientras que no es posible modificar el contenido de una ''tupla'' ya creada, puesto que es inmutable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; lista = ['aaa', 1, 90]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; lista[-1]&lt;br /&gt;
90&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; lista[0] = 'xyz'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; lista[0:2]&lt;br /&gt;
['xyz', 1]&lt;br /&gt;
 &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; tupla = (1, 2, 3)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; tupla[0] = 2 &lt;br /&gt;
 ( genera un error )&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; tupla[0]&lt;br /&gt;
1&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; otratupla = (tupla, ('a', 'b')) # es posible anidar tuplas&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; 1, 2, 3, 'a' # Esto también es una tupla, aunque es recomendable ponerla entre paréntesis&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; (1) # Aunque entre paréntesis, esto en cambio no es una tupla, ya que no posee una coma tras el elemento&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; (1,) # En cambio, en este otro caso, sí.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; (1, 2) # Con más de un elemento no es necesaria la coma final...&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; (1, 2,) # ...aunque agregarla no modifica el resultado. Esta tupla es igual a la anterior.&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== Diccionarios  ====&lt;br /&gt;
&lt;br /&gt;
Los diccionarios se declaran entre llaves (&amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt;), y contienen elementos separados por comas, donde cada elemento está formado por un par &amp;lt;var&amp;gt;clave&amp;lt;/var&amp;gt; &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt; &amp;lt;var&amp;gt;valor&amp;lt;/var&amp;gt; (el símbolo &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt; separa la clave de su valor correspondiente). &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # Ejemplo de como llamamos a valores en un diccionario mediante su clave. La clave la pondremos entre un corchete abierto &amp;quot;[&amp;quot; y un corchete cerrado &amp;quot;]&amp;quot;. Esto nos devolverá el valor.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {&amp;quot;coche&amp;quot;: &amp;quot;rojo&amp;quot;, &amp;quot;mesa&amp;quot;: &amp;quot;marron&amp;quot;}&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['coche']&lt;br /&gt;
'rojo'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['mesa']&lt;br /&gt;
'marron'&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Los diccionarios son mutables: &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {&amp;quot;numero_globos&amp;quot;: 4}&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario[&amp;quot;numero_globos&amp;quot;]&lt;br /&gt;
4&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario[&amp;quot;numero_globos&amp;quot;] = 3 # Podemos reasignar el valor de una clave&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario[&amp;quot;numero_globos&amp;quot;]&lt;br /&gt;
3&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
El valor de un diccionario puede ser de cualquier tipo. Un string (&amp;quot;casa&amp;quot;), un int (2), una lista ([1, 2, 3]), o incluso un diccionario. &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {&amp;quot;coches&amp;quot;: 4, &amp;quot;tipo&amp;quot;: &amp;quot;de los que tienen 4 ruedas&amp;quot;, &amp;quot;marcas&amp;quot;: ['Honda', 'Renault', 'Seat'], &amp;quot;descripciones&amp;quot;: {&amp;quot;uno&amp;quot;: ('Seat', 'Ibiza', 'rojo'), &amp;quot;dos&amp;quot;: ('Honda', 'civic', 'azul'), &amp;quot;tres&amp;quot;: ('Seat', 'Ibiza', 'negro') } }&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['coches']&lt;br /&gt;
4&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['tipo']&lt;br /&gt;
'de los que tienen 4 ruedas'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['marcas']&lt;br /&gt;
['Honda', 'Renault', 'Seat']&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['marcas'][0]&lt;br /&gt;
'Honda'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['descripciones']&lt;br /&gt;
{&amp;quot;uno&amp;quot;: ('Seat', 'Ibiza', 'rojo'), &amp;quot;dos&amp;quot;: ('Honda', 'civic', 'azul'), &amp;quot;tres&amp;quot;: ('Seat', 'Ibiza', 'negro') }&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['descripciones']['uno']&lt;br /&gt;
('Seat', 'Ibiza', 'rojo')&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
En cambio, la clave en los diccionarios debe ser inmutable. Esto quiere decir, por ejemplo, que no podremos usar ni listas ni diccionarios como claves: &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {&amp;quot;coche&amp;quot;: 'rojo'} # Con un string. Valido.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {4: &amp;quot;manuales&amp;quot;} # Con un int. Valido.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {(2, 'lampara'): &amp;quot;florero&amp;quot;} # Con una tupla. Valido.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {[2, 'lampara']: &amp;quot;florero&amp;quot;} # Con una lista. Error.&lt;br /&gt;
(... Error ...)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {{'fuente': 'luz'}: &amp;quot;dimm&amp;quot;} # Con un diccionario. Error.&lt;br /&gt;
(... Error ...)&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Cabe señalar, que los diccionarios al igual que las listas, al ser mutables, compartirán los cambios realizados, independientemente del nombre de la variable que usemos para referirnos a ellos. &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; a = {&amp;quot;coche&amp;quot;: 'rojo'}&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; a['coche']&lt;br /&gt;
'rojo'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; b = a&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; b['coche']&lt;br /&gt;
'rojo'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; b['coche'] = 'azul'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; b['coche']&lt;br /&gt;
'azul'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; a['coche']&lt;br /&gt;
'azul'&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Cuando este comportamiento no sea el deseado, se puede hacer una copia del diccionario usando su método &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
En este ejemplo, se recorre la estructura de diccionario, y se imprime su contenido de la forma ''clave''=''valor'' &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; dict = {&amp;quot;dia&amp;quot;: 24, &amp;quot;mes&amp;quot;: &amp;quot;agosto&amp;quot;}&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; for k in dict:&lt;br /&gt;
...    print &amp;quot;%s=%s&amp;quot; % (k, dict[k])&lt;br /&gt;
 &lt;br /&gt;
dia=24&lt;br /&gt;
mes=agosto&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== Conjuntos (Sets)  ====&lt;br /&gt;
&lt;br /&gt;
Los conjuntos se construyen mediante &amp;lt;code&amp;gt;set(items)&amp;lt;/code&amp;gt; donde &amp;lt;var&amp;gt;items&amp;lt;/var&amp;gt; es cualquier objeto iterable. Los conjuntos no mantienen el orden ni contienen elementos duplicados. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; conj = set(['a','b','a'])&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print conj&lt;br /&gt;
set(['a','b'])&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Funciones  ===&lt;br /&gt;
&lt;br /&gt;
Las funciones se definen con la palabra clave &amp;lt;code&amp;gt;def&amp;lt;/code&amp;gt;, seguida del nombre de la función y sus parámetros. Otra forma de escribir funciones, aunque menos utilizada, es con la palabra clave &amp;lt;code&amp;gt;lambda&amp;lt;/code&amp;gt; (que aparece en lenguajes funcionales como [[Lisp]]). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # Ejemplo de función lambda&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; f = lambda x: x+2&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; f(4)&lt;br /&gt;
6&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # Ejemplo de función con def. En este ejemplo salvo que se indique la variable 'y' valdrá 2.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; def multiplicacion(x, y=2):&lt;br /&gt;
...     return x * y     &lt;br /&gt;
...&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; multiplicacion(10)&lt;br /&gt;
20&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; multiplicacion(10, 3)&lt;br /&gt;
30&lt;br /&gt;
&amp;lt;/source&amp;gt; El valor devuelto en las funciones con def será el dado con la instrucción &amp;quot;return&amp;quot; y el contenido de la función será declarado mediante espacios o tabuladores (siempre el mismo número)&amp;lt;ref&amp;gt;http://docs.python.org/tutorial/controlflow.html#defining-functions&amp;lt;/ref&amp;gt; antes de cada línea de órdenes pertenecientes al bloque. '''Python''' se diferencia así de otros muchos lenguajes de programación que mantienen como costumbre declarar los bloques mediante un conjunto de caracteres, normalmente entre corchetes (&amp;lt;code&amp;gt;{ }&amp;lt;/code&amp;gt;).&amp;lt;ref&amp;gt;http://www.acm.uiuc.edu/webmonkeys/book/c_guide/1.3.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;http://www.desarrolloweb.com/articulos/583.php&amp;lt;/ref&amp;gt; En cambio el lenguaje de programación [[Ruby]] sigue el mismo sismo sistema para declarar los bloques que Python.&amp;lt;ref&amp;gt;http://www.ruby-doc.org/docs/ProgrammingRuby/html/ref_c_module.html#Module.module_function&amp;lt;/ref&amp;gt; Se recomienda que la identación sea siempre de espacios o siempre de tabuladores, pero no mezclarlos, utilizar espacios en vez de tabuladores y que estos siempre sean 4 espacios.&amp;lt;ref&amp;gt;http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#whitespace-1&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Módulos  ===&lt;br /&gt;
&lt;br /&gt;
Existen muchas propiedades que se pueden agregar al lenguaje importando módulos, que son minicódigos (la mayoría escritos también en Python) que llaman a los recursos del sistema. Un ejemplo es el módulo Tkinter, que permite crear interfaces gráficas que incluyan botones, cajas de texto, y muchas cosas que vemos habitualmente en el sistema operativo. Otro ejemplo es el módulo que permite manejar el sistema operativo desde el lenguaje. Los módulos se agregan a los códigos escribiendo &amp;lt;code&amp;gt;import&amp;lt;/code&amp;gt; seguida del nombre del módulo que queramos usar. En este código se muestra como apagar el ordenador desde Windows. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
apagar = &amp;quot;shutdown /s&amp;quot;&lt;br /&gt;
import os&lt;br /&gt;
os.system(apagar)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Ejemplos de código Python  ==&lt;br /&gt;
&lt;br /&gt;
El siguiente ejemplo muestra cómo obtener una lista con los cuadrados de los números del 0 al 9 (inclusive). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 print [x**2 for x in range(10)]&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
El siguiente ejemplo saludará al usuario si se conoce su plato preferido, o le preguntará cuál es, en caso contrario. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# -*- coding: iso8859-15 -*-&lt;br /&gt;
# diccionario de comidas preferidas de cada persona&lt;br /&gt;
comidas = {&lt;br /&gt;
   &amp;quot;Juan&amp;quot; : &amp;quot;tiburón en escabeche&amp;quot;,&lt;br /&gt;
   &amp;quot;Pablo&amp;quot; : &amp;quot;paella don Beto&amp;quot;, &lt;br /&gt;
   &amp;quot;Alfredo&amp;quot; : &amp;quot;sesos de mono&amp;quot;,&lt;br /&gt;
   &amp;quot;Fulano&amp;quot; : &amp;quot;cucarachas fritas&amp;quot;,&lt;br /&gt;
   &amp;quot;Sonia&amp;quot; : &amp;quot;burros&amp;quot;,&lt;br /&gt;
   &amp;quot;Lucas&amp;quot; : &amp;quot;hamburguesas Mr Paul&amp;quot;,&lt;br /&gt;
   &amp;quot;Jose&amp;quot; : &amp;quot;ceviche&amp;quot;,&lt;br /&gt;
   &amp;quot;Cesar&amp;quot; : &amp;quot;arroz con pollo&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
afirmativas = set(['si','s','mucho','porfa'])&lt;br /&gt;
 &lt;br /&gt;
def saluda(nombre, comida):&lt;br /&gt;
    respuesta = raw_input(&amp;quot;Hola &amp;quot; + nombre + &amp;quot;, ¿te gusta &amp;quot; + comida + &amp;quot;? &amp;quot;)&lt;br /&gt;
    if respuesta not in afirmativas:&lt;br /&gt;
        pregunta(nombre)&lt;br /&gt;
&lt;br /&gt;
def pregunta(nombre):&lt;br /&gt;
    respuesta = raw_input(&amp;quot;Hola &amp;quot; + nombre + &amp;quot;, ¿qué comida te gusta? &amp;quot;)&lt;br /&gt;
    comidas[nombre] = respuesta&lt;br /&gt;
&lt;br /&gt;
for nombre in [&amp;quot;Juan&amp;quot;, &amp;quot;Pablo&amp;quot;, &amp;quot;Alfredo&amp;quot;, &amp;quot;Fulano&amp;quot;, &amp;quot;Sonia&amp;quot;, &amp;quot;Lucas&amp;quot;, &amp;quot;Mengano&amp;quot;,&amp;quot;Cesar&amp;quot;]:&lt;br /&gt;
    if nombre in comidas and comidas[nombre] is not None:&lt;br /&gt;
        saluda(nombre, comidas[nombre])&lt;br /&gt;
    else:&lt;br /&gt;
        pregunta(nombre)&lt;br /&gt;
&amp;lt;/source&amp;gt; El siguiente ejemplo busca y cuenta palabras palíndromas (se leen igual al derecho y al revés) en un archivo de texto que le indiquemos. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
ruta = raw_input(&amp;quot;Escriba la ruta del archivo a leer: &amp;quot;)&lt;br /&gt;
archivo = open(ruta, 'r')&lt;br /&gt;
texto = archivo.read()&lt;br /&gt;
  &lt;br /&gt;
contar = 0&lt;br /&gt;
  &lt;br /&gt;
for palabra in texto.split(' '):&lt;br /&gt;
  if palabra == palabra[::-1]:&lt;br /&gt;
    contar += 1&lt;br /&gt;
  &lt;br /&gt;
if not contar:&lt;br /&gt;
  print &amp;quot;No hay palabras palíndromas en el archivo&amp;quot;&lt;br /&gt;
else:&lt;br /&gt;
  print &amp;quot;Palabras palíndromas encontradas: &amp;quot;, contar&lt;br /&gt;
  &lt;br /&gt;
archivo.close()&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Biblioteca Estándar  ==&lt;br /&gt;
&lt;br /&gt;
Python tiene una gran biblioteca estándar, usada para una diversidad de tareas. Esto viene de la filosofía &amp;quot;pilas incluidas&amp;quot; (&amp;quot;batteries included&amp;quot;) en referencia a los módulos de Python. Los módulos de la biblioteca estándar pueden mejorarse por módulos personalizados escritos tanto en [[C]] como en Python. Debido a la gran variedad de herramientas incluidas en la biblioteca estándar combinada con la habilidad de usar lenguajes de bajo nivel como C y [[C++]], los cuales son capaces de interactuar con otras bibliotecas, Python es un lenguaje que combina su clara sintaxis con el inmenso poder de lenguajes menos elegantes. &lt;br /&gt;
&lt;br /&gt;
== Vease también  ==&lt;br /&gt;
&lt;br /&gt;
*[[Django]] Framework de programación web escrito en Python &lt;br /&gt;
*[[Herramienta Trac]]&lt;br /&gt;
&lt;br /&gt;
== Fuente  ==&lt;br /&gt;
&lt;br /&gt;
*Knowlton, Jim (2009). ''Python, tr: Fernández Vélez, María Jesús, 1 edición (en Español), Anaya Multimedia-Anaya Interactiva'', pp. 272. ISBN 978-84-415-2513-9. &lt;br /&gt;
*[http://docs.python.org/3.1/library/2to3.html Python.org ]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referencias  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:Programación]] [[Category:Lenguajes_de_programación]] [[Category:Lenguajes_de_programación_orientada_a_objetos]]&lt;/div&gt;</summary>
		<author><name>Xigurat</name></author>
		
	</entry>
	<entry>
		<id>https://www.ecured.cu/index.php?title=Python&amp;diff=1276077</id>
		<title>Python</title>
		<link rel="alternate" type="text/html" href="https://www.ecured.cu/index.php?title=Python&amp;diff=1276077"/>
		<updated>2011-12-18T04:18:01Z</updated>

		<summary type="html">&lt;p&gt;Xigurat: se actualizó la última versión&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Ficha Software&lt;br /&gt;
|nombre=Python&lt;br /&gt;
|familia=&lt;br /&gt;
|imagen=python_logo.png&lt;br /&gt;
|tamaño=&lt;br /&gt;
|descripción=Lenguaje de programación interpertado, orientado a objetos, imperativo, funcional&lt;br /&gt;
|imagen2=&lt;br /&gt;
|tamaño2=&lt;br /&gt;
|descripción2=&lt;br /&gt;
|creador=[[Guido van Rossum]]&lt;br /&gt;
|desarrollador=&lt;br /&gt;
|diseñador=&lt;br /&gt;
|modelo de desarrollo=&lt;br /&gt;
|lanzamiento inicial=&lt;br /&gt;
|versiones=&lt;br /&gt;
|última versión estable=3.2&lt;br /&gt;
|género=&lt;br /&gt;
|sistemas operativos=&lt;br /&gt;
|idioma=&lt;br /&gt;
|licencia=&lt;br /&gt;
|premios=&lt;br /&gt;
|web=http://www.python.org/&lt;br /&gt;
}}'''Python'''. Lenguaje de programación creado por [[Guido van Rossum]] en el año [[1991]].Se compara habitualmente con [[Tcl]], [[Perl]], [[Scheme]], [[Java]] y [[Ruby]]. En la actualidad Python se desarrolla como un proyecto de [[Código abierto]], administrado por la [[Python Software Foundation]]. La última versión estable del lenguaje es la 3.2.2. Python es considerado como la &amp;quot;oposición leal&amp;quot; a Perl, lenguaje con el cual mantiene una rivalidad amistosa. Los usuarios de Python consideran a éste mucho más limpio y elegante para programar. &lt;br /&gt;
&lt;br /&gt;
== Historia  ==&lt;br /&gt;
&lt;br /&gt;
Python fue creado a finales de los ochenta por [[Guido van Rossum]] en [[National Research Institute for Mathematics and Computer Science|CWI]] en los [[Países Bajos]] como un sucesor del [[Lenguaje de programación ABC]], capaz de manejar excepciones e interactuar con el [[Amoeba (Informática)|sistema operativo Amoeba]]. &lt;br /&gt;
&lt;br /&gt;
Van Rossum es el principal autor de Python, y su continuo rol central en decidir la dirección de Python es reconocido, refiriéndose a él como ''Benevolente dictador vitalicio'' o ''Benevolent Dictator for Life'' (BDFL). &lt;br /&gt;
&lt;br /&gt;
En 1991, van Rossum publicó el código (versión 0.9.0) en [[[[news:alt.sources|alt.sources]]]]. En esta etapa del desarrollo ya estaban presentes clases con herencia, manejo de excepciones, funciones, y los tipos modulares: &amp;lt;code&amp;gt;list&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;dict&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt; y así sucesivamente. Además en este lanzamiento inicial aparecía un sistema de módulos adoptado de [[Modula-3]]; van Rossum describe el módulo como &amp;quot;uno de las mayores unidades de programación de Python&amp;quot;. El modelo de excepciones en Python es parecido al de Modula-3, con la adición de una cláusula &amp;lt;code&amp;gt;else&amp;lt;/code&amp;gt;. En el año 1994 se formó [[[[news:comp.lang.python|comp.lang.python]]]], el foro de discusión principal de Python, marcando un hito en el crecimiento del grupo de usuarios de este lenguaje. &lt;br /&gt;
&lt;br /&gt;
Python alcanzó la versión 1.0 en enero de 1994. Una característica de este lanzamiento fueron las herramientas de la [[Programación funcional]]: &amp;lt;code&amp;gt;[[Cálculo lambda|lambda]]&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;map&amp;lt;/code&amp;gt;, &amp;lt;code&amp;gt;filter&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;reduce&amp;lt;/code&amp;gt;. Van Rossum explicó que &amp;quot;Hace 12 años, Python adquirió lambda, reduce(), filter() and map(), cortesía de un hacker de [[Lisp]] que las extrañaba y que envió parches. El donante fue [[Amrit Prem]]; no se hace ninguna mención específica de cualquier herencia de Lisp en las notas de lanzamiento. &lt;br /&gt;
&lt;br /&gt;
La última versión liberada proveniente de CWI fue Python 1.2. En 1995, van Rossum continuó su trabajo en Python en la [[Corporation for National Research Initiatives]] (CNRI) en Reston, [[Virginia]], donde lanzó varias versiones del [[Software]]. &lt;br /&gt;
&lt;br /&gt;
Durante su estancia en CNRI, van Rossum lanzó la iniciativa ''Computer Programming for Everybody'' (CP4E), con el fin de hacer la programación más accesible a más gente, con un nivel de 'alfabetización' básico en lenguajes de programación, similar a la alfabetización básica en inglés y habilidades matemáticas necesarias por muchos trabajadores. &lt;br /&gt;
&lt;br /&gt;
Python tuvo un papel crucial en este proceso: debido a su orientación hacia una sintaxis limpia, ya era idóneo, y las metas de CP4E presentaban similitudes con su predecesor, ABC. El proyecto fue patrocinado por [[DARPA]]. En el año 2007, el proyecto CP4E está inactivo, y mientras Python intenta ser fácil de aprender y no muy arcano en su sintaxis y semántica, alcanzando a los no-programadores, no es una preocupación activa. &lt;br /&gt;
&lt;br /&gt;
En el año 2000, el principal equipo de desarrolladores de Python se cambió a [[BeOpen.com]] para formar el equipo BeOpen [[PythonLabs]]. CNRI pidió que la versión 1.6 fuera pública, continuando su desarrollo hasta que el equipo de desarrollo abandonó CNRI; su programa de lanzamiento y el de la versión 2.0 tenían una significativa cantidad de traslapo. Python 2.0 fue el primer y único lanzamiento de BeOpen.com. Después que Python 2.0 fuera publicado por BeOpen.com, Guido van Rossum y los otros desarrolladores PythonLabs se unieron en [[Digital Creations]]. &lt;br /&gt;
&lt;br /&gt;
Python 2.0 tomó una característica mayor del lenguaje de [[Programación funcional]] [[Haskell]]: [[List comprehension]]s. La sintaxis de Python para esta construcción es muy similar a la de Haskell, salvo por la preferencia de los caracteres de puntuación en Haskell, y la preferencia de Python por palabras claves alfabéticas. Python 2.0 introdujo además un sistema de [[Recolección de basura]] capaz de recolectar referencias cíclicas. &lt;br /&gt;
&lt;br /&gt;
Posterior a este doble lanzamiento, y después que van Rossum dejó CNRI para trabajar con desarrolladores de software comercial, quedó claro que la opción de usar Python con software disponible bajo [[Licencia pública general de GNU|GPL]] era muy deseable. La licencia usada entonces, la [[Python License]], incluía una cláusula estipulando que la licencia estaba gobernada por el estado de [[Virginia]], por lo que, bajo la óptica de los abogados de [[Free Software Foundation]] (FSF), se hacía incompatible con [[Licencia pública general de GNU|GNU GPL]]. CNRI y FSF se relacionaron para cambiar la licencia de software libre de Python para hacerla compatible con GPL. En el año 2001, van Rossum fue premiado con [[FSF Award for the Advancement of Free Software]]. &lt;br /&gt;
&lt;br /&gt;
Python 1.6.1 es esencialmente el mismo que Python 1.6, con unos pocos arreglos de [[Bugs]], y con una nueva licencia compatible con GPL. &lt;br /&gt;
&lt;br /&gt;
Python 2.1 fue un trabajo derivado de Python 1.6.1, así como también de Python 2.0. Su licencia fue renombrada: [[Python Software Foundation License]]. Todo el código, documentación y especificaciones añadidas, desde la fecha del lanzamiento de la versión alfa de Python 2.1, tiene como dueño a [[Python Software Foundation]] (PSF), una organización sin ánimo de lucro fundada en el año 2001, tomando como modelo la [[Apache Software Foundation]]. Incluido en este lanzamiento fue una implementación del scoping más parecida a las reglas de [[Static scoping]] (del cual [[Scheme]] es el originador). &lt;br /&gt;
&lt;br /&gt;
Una innovación mayor en Python 2.2 fue la unificación de los tipos en Python (tipos escritos en C), y clases (tipos escritos en Python) dentro de una jerarquía. Esa unificación logró un modelo de objetos de Python puro y consistente. También fueron agregados los [[Generador (informática)|generadores]] que fueron inspirados por el lenguaje [[Icon]]. &lt;br /&gt;
&lt;br /&gt;
== Características  ==&lt;br /&gt;
&lt;br /&gt;
Python permite dividir el programa en módulos reutilizables desde otros programas Python. Viene con una gran colección de módulos estándar que se pueden utilizar como base de los programas (o como ejemplos para empezar a aprender Python). También hay módulos incluidos que proporcionan E/S de ficheros, llamadas al sistema, [[Sockets]] y hasta interfaces a [[GUI]] como [[Tk]], [[GTK]], [[Qt]] entre otros. &lt;br /&gt;
&lt;br /&gt;
Python se utiliza como lenguaje de programación interpretado, lo que ahorra un tiempo considerable en el desarrollo del programa, pues no es necesario compilar ni enlazar. El intérprete se puede utilizar de modo interactivo, lo que facilita experimentar con características del lenguaje, escribir programas desechables o probar funciones durante el desarrollo del programa. &lt;br /&gt;
&lt;br /&gt;
El nombre del lenguaje proviene de la afición de su creador original, Guido van Rossum, por los humoristas británicos [[Monty Python]]. El principal objetivo que persigue este lenguaje es la facilidad, tanto de lectura, como de diseño. &lt;br /&gt;
&lt;br /&gt;
== Filosofía  ==&lt;br /&gt;
&lt;br /&gt;
Los usuarios de Python se refieren a menudo a la '''Filosofía Python''' que es bastante análoga a la filosofía de [[Unix]]. El código que sigue los principios de Python de legibilidad y transparencia se dice que es &amp;quot;pythonico&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
*Bello es mejor que feo. &lt;br /&gt;
*Explícito es mejor que implícito. &lt;br /&gt;
*Simple es mejor que complejo. &lt;br /&gt;
*Complejo es mejor que complicado. &lt;br /&gt;
*Plano es mejor que anidado. &lt;br /&gt;
*Ralo es mejor que denso. &lt;br /&gt;
*La legibilidad cuenta. &lt;br /&gt;
*Los casos especiales no son tan especiales como para quebrantar las reglas. &lt;br /&gt;
*Aunque lo práctico gana a la pureza. &lt;br /&gt;
*Los errores nunca deberían dejarse pasar silenciosamente. &lt;br /&gt;
*A menos que hayan sido silenciados explícitamente. &lt;br /&gt;
*Frente a la ambigüedad, rechaza la tentación de adivinar. &lt;br /&gt;
*Debería haber una -y preferiblemente sólo una- manera obvia de hacerlo. &lt;br /&gt;
*Aunque esa manera puede no ser obvia al principio a menos que usted sea holandés. &lt;br /&gt;
*Ahora es mejor que nunca. &lt;br /&gt;
*Aunque ''nunca'' es a menudo mejor que ''ya mismo''. &lt;br /&gt;
*Si la implementación es dificil de explicar, es una mala idea. &lt;br /&gt;
*Si la implementación es fácil de explicar, puede que sea una buena idea. &lt;br /&gt;
*Los espacios de nombres (''namespaces'') son una gran idea ¡Hagamos más de esas cosas!&lt;br /&gt;
&lt;br /&gt;
Desde la versión 2.1.2, Python incluye estos puntos en su versión original en inglés &lt;br /&gt;
&lt;br /&gt;
== Modo interactivo  ==&lt;br /&gt;
&lt;br /&gt;
El intérprete de Python estándar incluye un ''modo interactivo'', en el cual se escriben las instrucciones en una especie de [[Intérprete de comandos|shell]]: las expresiones pueden ser introducidas una a una, pudiendo verse el resultado de su evaluación inmediatamente. Esto resulta útil tanto para las personas que se están familiarizando con el lenguaje como también para los programadores más avanzados: se pueden probar porciones de código en el modo interactivo antes de integrarlo como parte de un programa. &lt;br /&gt;
&lt;br /&gt;
Existen otros programas, tales como [[IDLE (Python)|IDLE]] o [[IPython]], que añaden funcionalidades extra al modo interactivo, como el auto-completar código y el coloreado de la sintaxis del lenguaje. &lt;br /&gt;
&lt;br /&gt;
Ejemplo del modo interactivo: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; 2+2&lt;br /&gt;
 4&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; a = range(10)&lt;br /&gt;
 &amp;gt;&amp;gt;&amp;gt; print a&lt;br /&gt;
 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Implementaciones  ==&lt;br /&gt;
&lt;br /&gt;
Python posee diversas implementaciones: &lt;br /&gt;
&lt;br /&gt;
*[[CPython]] es la implementación original, disponible para varias plataformas en el sitio oficial de Python. &lt;br /&gt;
*[[IronPython]] es la implementación para .NET &lt;br /&gt;
*[[Stackless Python]] es la variante de CPython que trata de no usar el ''stack'' de [[Lenguaje de programación C|C]] ([http://www.stackless.com/ www.stackless.com]) &lt;br /&gt;
*[[Jython]] es la implementación hecha en [[Lenguaje de programación Java|Java]] &lt;br /&gt;
*[[Pippy]] es la implementación realizada para Palm ([http://pippy.sourceforge.net/ pippy.sourceforge.net])&lt;br /&gt;
&lt;br /&gt;
== Elementos del lenguaje  ==&lt;br /&gt;
&lt;br /&gt;
Python fue diseñado para ser leído con facilidad. Entre otras cosas se utilizan palabras en inglés donde otros lenguajes utilizarían símbolos (por ejemplo, los [[operadores lógicos]] &amp;lt;code&amp;gt;||&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;&amp;amp;amp;&amp;amp;amp;&amp;lt;/code&amp;gt; en Python se escriben &amp;lt;code&amp;gt;or&amp;lt;/code&amp;gt; y &amp;lt;code&amp;gt;and&amp;lt;/code&amp;gt;, respectivamente). &lt;br /&gt;
&lt;br /&gt;
En vez de delimitar los bloques de código mediante el uso de llaves (&amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt;), Python utiliza la [[Indentación]]. Esto hace que la misma sea obligatoria, ayudando a la claridad y consistencia del código escrito (incluso entre varios desarrolladores): &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; | [[Factorial|Función factorial]] en [[Lenguaje de programación C|C]] &lt;br /&gt;
! width=&amp;quot;50%&amp;quot; valign=&amp;quot;top&amp;quot; | [[Factorial|Función factorial]] en Python&lt;br /&gt;
|-&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
&amp;lt;source lang=&amp;quot;c&amp;quot;&amp;gt;&lt;br /&gt;
int factorial(int x) &lt;br /&gt;
{&lt;br /&gt;
 if (x == 0)&lt;br /&gt;
   return 1;&lt;br /&gt;
 else&lt;br /&gt;
   return x*factorial(x - 1); &lt;br /&gt;
} &lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
| valign=&amp;quot;top&amp;quot; | &lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def factorial(x):&lt;br /&gt;
    if x == 0:&lt;br /&gt;
        return 1&lt;br /&gt;
    else:&lt;br /&gt;
        return x * factorial(x-1)&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
{| width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
| &lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
def factorial(n): return 1 if n==0 else n*factorial(n-1)&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Comentarios  ===&lt;br /&gt;
&lt;br /&gt;
Los [[Comentarios|comentarios]] se inician con el símbolo &amp;lt;code&amp;gt;#&amp;lt;/code&amp;gt;, y se extienden hasta el final de la línea. Al comentar una linea, esta no es tenida en cuenta por el interprete lo cual es útil si deseamos poner información adicional en nuestro código como por ejemplo un explicativo que comente que hacen dichas lineas, que falta o haría falta hacer (muy útil para los programadores al momento de leer un código hecho por otro programador). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# -*- coding: utf-8 -*-&lt;br /&gt;
# Comentario en una línea en Python.&lt;br /&gt;
print('Hola mundo') # También es posible añadir un comentario después de una línea de código&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Variables  ===&lt;br /&gt;
&lt;br /&gt;
Las variables se definen de forma [[Tipado dinámico|dinámica]]. El signo igual (&amp;lt;code&amp;gt;=&amp;lt;/code&amp;gt;) se usa para asignar valores a las variables: &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
x = 1&lt;br /&gt;
x = 'texto' # esto es posible porque los tipos son asignados dinámicamente&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Tipos de datos  ===&lt;br /&gt;
&lt;br /&gt;
Python soporta implícitamente una gran variedad de tipos de datos. &lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;integratable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Tipo &lt;br /&gt;
! Clase &lt;br /&gt;
! Notas &lt;br /&gt;
! Ejemplo&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt; &lt;br /&gt;
| String &lt;br /&gt;
| Inmutable &lt;br /&gt;
| &amp;lt;code&amp;gt;'Integrador'&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;unicode&amp;lt;/code&amp;gt; &lt;br /&gt;
| String &lt;br /&gt;
| Versión [[Unicode]] de &amp;lt;code&amp;gt;str&amp;lt;/code&amp;gt; (eliminado en Python3) &lt;br /&gt;
| &amp;lt;code&amp;gt;u'Integrador'&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;list&amp;lt;/code&amp;gt; &lt;br /&gt;
| Secuencia &lt;br /&gt;
| Mutable, puede contener diversos tipos &lt;br /&gt;
| &amp;lt;code&amp;gt;[4.0, 'string', True]&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;tuple&amp;lt;/code&amp;gt; &lt;br /&gt;
| Secuencia &lt;br /&gt;
| Inmutable &lt;br /&gt;
| &amp;lt;code&amp;gt;(4.0, 'string', True)&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;set&amp;lt;/code&amp;gt; &lt;br /&gt;
| Conjunto &lt;br /&gt;
| Mutable, sin orden, no contiene duplicados &lt;br /&gt;
| &amp;lt;code&amp;gt;set([4.0, 'string', True])&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;frozenset&amp;lt;/code&amp;gt; &lt;br /&gt;
| Conjunto &lt;br /&gt;
| Inmutable, sin orden, no contiene duplicados &lt;br /&gt;
| &amp;lt;code&amp;gt;frozenset([4.0, 'string', True])&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;dict&amp;lt;/code&amp;gt; &lt;br /&gt;
| Mapping &lt;br /&gt;
| Grupo de pares clave, valor &lt;br /&gt;
| &amp;lt;code&amp;gt;{'key1': 1.0, 'key2': False}&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;int&amp;lt;/code&amp;gt; &lt;br /&gt;
| Número entero &lt;br /&gt;
| Precisión fija, convertido en &amp;lt;var&amp;gt;long&amp;lt;/var&amp;gt; en caso de overflow. &lt;br /&gt;
| &amp;lt;code&amp;gt;42&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;long&amp;lt;/code&amp;gt; &lt;br /&gt;
| Número entero &lt;br /&gt;
| Precisión arbitraria &lt;br /&gt;
| &amp;lt;code&amp;gt;42L&amp;lt;/code&amp;gt; ó &amp;lt;code&amp;gt;456966786151987643L&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;float&amp;lt;/code&amp;gt; &lt;br /&gt;
| Número decimal representado en &lt;br /&gt;
| coma flotante de doble precisión &lt;br /&gt;
| &amp;lt;code&amp;gt;3.1415927&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| &amp;lt;code&amp;gt;bool&amp;lt;/code&amp;gt; &lt;br /&gt;
| Booleano &lt;br /&gt;
| Valor booleano verdadero o falso &lt;br /&gt;
| &amp;lt;code&amp;gt;True o False&amp;lt;/code&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
*Mutable: si su valor o el de alguno de sus elementos (el caso de las listas, conjuntos y los diccionarios) puede cambiarse en tiempo de ejecución. &lt;br /&gt;
*Inmutable: si su contenido no puede cambiarse en tiempo de ejecución. Por ejemplo: las cadenas y tuplas.&lt;br /&gt;
&lt;br /&gt;
==== Tuplas y Listas  ====&lt;br /&gt;
&lt;br /&gt;
*Para declarar una ''lista'', basta usar los corchetes &amp;lt;code&amp;gt;[ ]&amp;lt;/code&amp;gt;, mientras que para declarar una ''tupla'' es recomendable usar los paréntesis &amp;lt;code&amp;gt;()&amp;lt;/code&amp;gt;. En ambas los elementos se separan por comas, y en el caso de las tuplas es necesario que tengan como mínimo una coma. &lt;br /&gt;
*Tanto las ''listas'' como las ''tuplas'' pueden contener elementos de diferentes tipos. No obstante las listas suelen usarse para elementos del mismo tipo en cantidad variable mientras que las tuplas se reservan para elementos distintos en cantidad fija. &lt;br /&gt;
*Para acceder a los elementos de una ''lista'' o ''tupla'', se utiliza un índice entero. Se pueden utilizar índices negativos para acceder elementos a partir del final. &lt;br /&gt;
*Las ''listas'' se caracterizan por ser mutables, es decir, se puede cambiar su contenido, mientras que no es posible modificar el contenido de una ''tupla'' ya creada, puesto que es inmutable.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt; &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; lista = ['aaa', 1, 90]&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; lista[-1]&lt;br /&gt;
90&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; lista[0] = 'xyz'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; lista[0:2]&lt;br /&gt;
['xyz', 1]&lt;br /&gt;
 &lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; tupla = (1, 2, 3)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; tupla[0] = 2 &lt;br /&gt;
 ( genera un error )&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; tupla[0]&lt;br /&gt;
1&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; otratupla = (tupla, ('a', 'b')) # es posible anidar tuplas&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; 1, 2, 3, 'a' # Esto también es una tupla, aunque es recomendable ponerla entre paréntesis&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; (1) # Aunque entre paréntesis, esto en cambio no es una tupla, ya que no posee una coma tras el elemento&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; (1,) # En cambio, en este otro caso, sí.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; (1, 2) # Con más de un elemento no es necesaria la coma final...&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; (1, 2,) # ...aunque agregarla no modifica el resultado. Esta tupla es igual a la anterior.&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== Diccionarios  ====&lt;br /&gt;
&lt;br /&gt;
Los diccionarios se declaran entre llaves (&amp;lt;code&amp;gt;{}&amp;lt;/code&amp;gt;), y contienen elementos separados por comas, donde cada elemento está formado por un par &amp;lt;var&amp;gt;clave&amp;lt;/var&amp;gt; &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt; &amp;lt;var&amp;gt;valor&amp;lt;/var&amp;gt; (el símbolo &amp;lt;code&amp;gt;:&amp;lt;/code&amp;gt; separa la clave de su valor correspondiente). &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # Ejemplo de como llamamos a valores en un diccionario mediante su clave. La clave la pondremos entre un corchete abierto &amp;quot;[&amp;quot; y un corchete cerrado &amp;quot;]&amp;quot;. Esto nos devolverá el valor.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {&amp;quot;coche&amp;quot;: &amp;quot;rojo&amp;quot;, &amp;quot;mesa&amp;quot;: &amp;quot;marron&amp;quot;}&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['coche']&lt;br /&gt;
'rojo'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['mesa']&lt;br /&gt;
'marron'&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Los diccionarios son mutables: &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {&amp;quot;numero_globos&amp;quot;: 4}&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario[&amp;quot;numero_globos&amp;quot;]&lt;br /&gt;
4&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario[&amp;quot;numero_globos&amp;quot;] = 3 # Podemos reasignar el valor de una clave&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario[&amp;quot;numero_globos&amp;quot;]&lt;br /&gt;
3&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
El valor de un diccionario puede ser de cualquier tipo. Un string (&amp;quot;casa&amp;quot;), un int (2), una lista ([1, 2, 3]), o incluso un diccionario. &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {&amp;quot;coches&amp;quot;: 4, &amp;quot;tipo&amp;quot;: &amp;quot;de los que tienen 4 ruedas&amp;quot;, &amp;quot;marcas&amp;quot;: ['Honda', 'Renault', 'Seat'], &amp;quot;descripciones&amp;quot;: {&amp;quot;uno&amp;quot;: ('Seat', 'Ibiza', 'rojo'), &amp;quot;dos&amp;quot;: ('Honda', 'civic', 'azul'), &amp;quot;tres&amp;quot;: ('Seat', 'Ibiza', 'negro') } }&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['coches']&lt;br /&gt;
4&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['tipo']&lt;br /&gt;
'de los que tienen 4 ruedas'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['marcas']&lt;br /&gt;
['Honda', 'Renault', 'Seat']&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['marcas'][0]&lt;br /&gt;
'Honda'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['descripciones']&lt;br /&gt;
{&amp;quot;uno&amp;quot;: ('Seat', 'Ibiza', 'rojo'), &amp;quot;dos&amp;quot;: ('Honda', 'civic', 'azul'), &amp;quot;tres&amp;quot;: ('Seat', 'Ibiza', 'negro') }&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario['descripciones']['uno']&lt;br /&gt;
('Seat', 'Ibiza', 'rojo')&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
En cambio, la clave en los diccionarios debe ser inmutable. Esto quiere decir, por ejemplo, que no podremos usar ni listas ni diccionarios como claves: &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {&amp;quot;coche&amp;quot;: 'rojo'} # Con un string. Valido.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {4: &amp;quot;manuales&amp;quot;} # Con un int. Valido.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {(2, 'lampara'): &amp;quot;florero&amp;quot;} # Con una tupla. Valido.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {[2, 'lampara']: &amp;quot;florero&amp;quot;} # Con una lista. Error.&lt;br /&gt;
(... Error ...)&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; mi_diccionario = {{'fuente': 'luz'}: &amp;quot;dimm&amp;quot;} # Con un diccionario. Error.&lt;br /&gt;
(... Error ...)&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Cabe señalar, que los diccionarios al igual que las listas, al ser mutables, compartirán los cambios realizados, independientemente del nombre de la variable que usemos para referirnos a ellos. &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; a = {&amp;quot;coche&amp;quot;: 'rojo'}&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; a['coche']&lt;br /&gt;
'rojo'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; b = a&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; b['coche']&lt;br /&gt;
'rojo'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; b['coche'] = 'azul'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; b['coche']&lt;br /&gt;
'azul'&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; a['coche']&lt;br /&gt;
'azul'&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
Cuando este comportamiento no sea el deseado, se puede hacer una copia del diccionario usando su método &amp;lt;code&amp;gt;copy&amp;lt;/code&amp;gt;. &lt;br /&gt;
&lt;br /&gt;
En este ejemplo, se recorre la estructura de diccionario, y se imprime su contenido de la forma ''clave''=''valor'' &amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; dict = {&amp;quot;dia&amp;quot;: 24, &amp;quot;mes&amp;quot;: &amp;quot;agosto&amp;quot;}&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; for k in dict:&lt;br /&gt;
...    print &amp;quot;%s=%s&amp;quot; % (k, dict[k])&lt;br /&gt;
 &lt;br /&gt;
dia=24&lt;br /&gt;
mes=agosto&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
==== Conjuntos (Sets)  ====&lt;br /&gt;
&lt;br /&gt;
Los conjuntos se construyen mediante &amp;lt;code&amp;gt;set(items)&amp;lt;/code&amp;gt; donde &amp;lt;var&amp;gt;items&amp;lt;/var&amp;gt; es cualquier objeto iterable. Los conjuntos no mantienen el orden ni contienen elementos duplicados. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; conj = set(['a','b','a'])&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; print conj&lt;br /&gt;
set(['a','b'])&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Funciones  ===&lt;br /&gt;
&lt;br /&gt;
Las funciones se definen con la palabra clave &amp;lt;code&amp;gt;def&amp;lt;/code&amp;gt;, seguida del nombre de la función y sus parámetros. Otra forma de escribir funciones, aunque menos utilizada, es con la palabra clave &amp;lt;code&amp;gt;lambda&amp;lt;/code&amp;gt; (que aparece en lenguajes funcionales como [[Lisp]]). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # Ejemplo de función lambda&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; f = lambda x: x+2&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; f(4)&lt;br /&gt;
6&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; # Ejemplo de función con def. En este ejemplo salvo que se indique la variable 'y' valdrá 2.&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; def multiplicacion(x, y=2):&lt;br /&gt;
...     return x * y     &lt;br /&gt;
...&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; multiplicacion(10)&lt;br /&gt;
20&lt;br /&gt;
&amp;gt;&amp;gt;&amp;gt; multiplicacion(10, 3)&lt;br /&gt;
30&lt;br /&gt;
&amp;lt;/source&amp;gt; El valor devuelto en las funciones con def será el dado con la instrucción &amp;quot;return&amp;quot; y el contenido de la función será declarado mediante espacios o tabuladores (siempre el mismo número)&amp;lt;ref&amp;gt;http://docs.python.org/tutorial/controlflow.html#defining-functions&amp;lt;/ref&amp;gt; antes de cada línea de órdenes pertenecientes al bloque. '''Python''' se diferencia así de otros muchos lenguajes de programación que mantienen como costumbre declarar los bloques mediante un conjunto de caracteres, normalmente entre corchetes (&amp;lt;code&amp;gt;{ }&amp;lt;/code&amp;gt;).&amp;lt;ref&amp;gt;http://www.acm.uiuc.edu/webmonkeys/book/c_guide/1.3.html&amp;lt;/ref&amp;gt;&amp;lt;ref&amp;gt;http://www.desarrolloweb.com/articulos/583.php&amp;lt;/ref&amp;gt; En cambio el lenguaje de programación [[Ruby]] sigue el mismo sismo sistema para declarar los bloques que Python.&amp;lt;ref&amp;gt;http://www.ruby-doc.org/docs/ProgrammingRuby/html/ref_c_module.html#Module.module_function&amp;lt;/ref&amp;gt; Se recomienda que la identación sea siempre de espacios o siempre de tabuladores, pero no mezclarlos, utilizar espacios en vez de tabuladores y que estos siempre sean 4 espacios.&amp;lt;ref&amp;gt;http://python.net/~goodger/projects/pycon/2007/idiomatic/handout.html#whitespace-1&amp;lt;/ref&amp;gt; &lt;br /&gt;
&lt;br /&gt;
=== Módulos  ===&lt;br /&gt;
&lt;br /&gt;
Existen muchas propiedades que se pueden agregar al lenguaje importando módulos, que son minicódigos (la mayoría escritos también en Python) que llaman a los recursos del sistema. Un ejemplo es el módulo Tkinter, que permite crear interfaces gráficas que incluyan botones, cajas de texto, y muchas cosas que vemos habitualmente en el sistema operativo. Otro ejemplo es el módulo que permite manejar el sistema operativo desde el lenguaje. Los módulos se agregan a los códigos escribiendo &amp;lt;code&amp;gt;import&amp;lt;/code&amp;gt; seguida del nombre del módulo que queramos usar. En este código se muestra como apagar el ordenador desde Windows. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
apagar = &amp;quot;shutdown /s&amp;quot;&lt;br /&gt;
import os&lt;br /&gt;
os.system(apagar)&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Ejemplos de código Python  ==&lt;br /&gt;
&lt;br /&gt;
El siguiente ejemplo muestra cómo obtener una lista con los cuadrados de los números del 0 al 9 (inclusive). &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
 print [x**2 for x in range(10)]&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
El siguiente ejemplo saludará al usuario si se conoce su plato preferido, o le preguntará cuál es, en caso contrario. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
# -*- coding: iso8859-15 -*-&lt;br /&gt;
# diccionario de comidas preferidas de cada persona&lt;br /&gt;
comidas = {&lt;br /&gt;
   &amp;quot;Juan&amp;quot; : &amp;quot;tiburón en escabeche&amp;quot;,&lt;br /&gt;
   &amp;quot;Pablo&amp;quot; : &amp;quot;paella don Beto&amp;quot;, &lt;br /&gt;
   &amp;quot;Alfredo&amp;quot; : &amp;quot;sesos de mono&amp;quot;,&lt;br /&gt;
   &amp;quot;Fulano&amp;quot; : &amp;quot;cucarachas fritas&amp;quot;,&lt;br /&gt;
   &amp;quot;Sonia&amp;quot; : &amp;quot;burros&amp;quot;,&lt;br /&gt;
   &amp;quot;Lucas&amp;quot; : &amp;quot;hamburguesas Mr Paul&amp;quot;,&lt;br /&gt;
   &amp;quot;Jose&amp;quot; : &amp;quot;ceviche&amp;quot;,&lt;br /&gt;
   &amp;quot;Cesar&amp;quot; : &amp;quot;arroz con pollo&amp;quot;&lt;br /&gt;
}&lt;br /&gt;
afirmativas = set(['si','s','mucho','porfa'])&lt;br /&gt;
 &lt;br /&gt;
def saluda(nombre, comida):&lt;br /&gt;
    respuesta = raw_input(&amp;quot;Hola &amp;quot; + nombre + &amp;quot;, ¿te gusta &amp;quot; + comida + &amp;quot;? &amp;quot;)&lt;br /&gt;
    if respuesta not in afirmativas:&lt;br /&gt;
        pregunta(nombre)&lt;br /&gt;
&lt;br /&gt;
def pregunta(nombre):&lt;br /&gt;
    respuesta = raw_input(&amp;quot;Hola &amp;quot; + nombre + &amp;quot;, ¿qué comida te gusta? &amp;quot;)&lt;br /&gt;
    comidas[nombre] = respuesta&lt;br /&gt;
&lt;br /&gt;
for nombre in [&amp;quot;Juan&amp;quot;, &amp;quot;Pablo&amp;quot;, &amp;quot;Alfredo&amp;quot;, &amp;quot;Fulano&amp;quot;, &amp;quot;Sonia&amp;quot;, &amp;quot;Lucas&amp;quot;, &amp;quot;Mengano&amp;quot;,&amp;quot;Cesar&amp;quot;]:&lt;br /&gt;
    if nombre in comidas and comidas[nombre] is not None:&lt;br /&gt;
        saluda(nombre, comidas[nombre])&lt;br /&gt;
    else:&lt;br /&gt;
        pregunta(nombre)&lt;br /&gt;
&amp;lt;/source&amp;gt; El siguiente ejemplo busca y cuenta palabras palíndromas (se leen igual al derecho y al revés) en un archivo de texto que le indiquemos. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;python&amp;quot;&amp;gt;&lt;br /&gt;
ruta = raw_input(&amp;quot;Escriba la ruta del archivo a leer: &amp;quot;)&lt;br /&gt;
archivo = open(ruta, 'r')&lt;br /&gt;
texto = archivo.read()&lt;br /&gt;
  &lt;br /&gt;
contar = 0&lt;br /&gt;
  &lt;br /&gt;
for palabra in texto.split(' '):&lt;br /&gt;
  if palabra == palabra[::-1]:&lt;br /&gt;
    contar += 1&lt;br /&gt;
  &lt;br /&gt;
if not contar:&lt;br /&gt;
  print &amp;quot;No hay palabras palíndromas en el archivo&amp;quot;&lt;br /&gt;
else:&lt;br /&gt;
  print &amp;quot;Palabras palíndromas encontradas: &amp;quot;, contar&lt;br /&gt;
  &lt;br /&gt;
archivo.close()&lt;br /&gt;
&amp;lt;/source&amp;gt; &lt;br /&gt;
&lt;br /&gt;
== Biblioteca Estándar  ==&lt;br /&gt;
&lt;br /&gt;
Python tiene una gran biblioteca estándar, usada para una diversidad de tareas. Esto viene de la filosofía &amp;quot;pilas incluidas&amp;quot; (&amp;quot;batteries included&amp;quot;) en referencia a los módulos de Python. Los módulos de la biblioteca estándar pueden mejorarse por módulos personalizados escritos tanto en [[C]] como en Python. Debido a la gran variedad de herramientas incluidas en la biblioteca estándar combinada con la habilidad de usar lenguajes de bajo nivel como C y [[C++]], los cuales son capaces de interactuar con otras bibliotecas, Python es un lenguaje que combina su clara sintaxis con el inmenso poder de lenguajes menos elegantes. &lt;br /&gt;
&lt;br /&gt;
== Vease también  ==&lt;br /&gt;
&lt;br /&gt;
*[[Django]] Framework de programación web escrito en Python &lt;br /&gt;
*[[Herramienta Trac]]&lt;br /&gt;
&lt;br /&gt;
== Fuente  ==&lt;br /&gt;
&lt;br /&gt;
*Knowlton, Jim (2009). ''Python, tr: Fernández Vélez, María Jesús, 1 edición (en Español), Anaya Multimedia-Anaya Interactiva'', pp. 272. ISBN 978-84-415-2513-9. &lt;br /&gt;
*[http://docs.python.org/3.1/library/2to3.html Python.org ]&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Referencias  ==&lt;br /&gt;
&lt;br /&gt;
&amp;lt;references /&amp;gt; &lt;br /&gt;
&lt;br /&gt;
[[Category:Programación]] [[Category:Lenguajes_de_programación]] [[Category:Lenguajes_de_programación_orientada_a_objetos]]&lt;/div&gt;</summary>
		<author><name>Xigurat</name></author>
		
	</entry>
</feed>