ESTRUCTURA DE LOS LENGUAJES DE PROGRAMACION
Python
Es un lenguaje de
programación de alto nivel cuya filosofía hace hincapié
en una sintaxis muy limpia y que favorezca un código legible.
Se trata de un lenguaje de
programación multiparadigma ya que
soporta orientación a objetos, programación imperativa y, en menor medida, programación funcional. Es un lenguaje interpretado, usa tipado dinámico, es fuertemente tipado y multiplataforma.
Es administrado por la Python
Software Foundation. Posee una
licencia de código abierto, denominada Python Software Foundation License,1 que es compatible con la Licencia
pública general de GNU a partir de la versión 2.1.1, e incompatible en ciertas versiones
anteriores.
Python fue creado a finales de los
ochenta2 por Guido van Rossum en el Centro para las Matemáticas y la
Informática (CWI, Centrum Wiskunde & Informatica), en los Países Bajos, como un sucesor del lenguaje de programación ABC,
capaz de manejar excepciones e interactuar con el sistema operativo Amoeba.3
El nombre del lenguaje proviene de
la afición de su creador original, Guido van Rossum, por los humoristas
británicos Monty Python.4
Van Rossum es el principal autor de
Python, y su continuo rol central en decidir la dirección de Python es
reconocido, refiriéndose a él como Benevolente Dictador Vitalicio (en inglés: Benevolent Dictator for Life, BDFL).
En 1991, van Rossum publicó el
código de la versión 0.9.0 en alt.sources.5 En esta etapa del desarrollo ya estaban
presentes clases con herencia, manejo de excepciones, funciones y los tipos modulares, como: str,list, dict, entre
otros. Además en este lanzamiento inicial aparecía un sistema de módulos
adoptado deModula-3; van Rossum describe el módulo como
“una de las mayores unidades de programación de Python”.2 El modelo de excepciones en Python es parecido
al de Modula-3, con la adición de una cláusula else.3 En el año 1994 se formó comp.lang.python, el foro de discusión principal de
Python, marcando un hito en el crecimiento del grupo de usuarios de este
lenguaje.
En el año 2000, el equipo principal
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.9 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 de PythonLabs se unieron en Digital Creations.
Python 2.0 tomó una característica
mayor del lenguaje de programación funcional Haskell: listas por comprensión. 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.
Elementos
del lenguaje
Python fue diseñado para ser leído
con facilidad. Una de sus características es el uso de palabras donde otros
lenguajes utilizarían símbolos. Por ejemplo, los operadores lógicos !, || y && en Python se escriben not, or y and, respectivamente.
El contenido de los bloques de
código (bucles, funciones, clases, etc.) es delimitado mediante espacios o
tabuladores, conocidos comoindentación, antes de cada línea de órdenes pertenecientes al
bloque.18 Python se diferencia así de otros lenguajes de
programación que mantienen como costumbre declarar los bloques mediante un
conjunto de caracteres, normalmente entre llaves {}.19 20 Se pueden utilizar tanto espacios como
tabuladores para identar el código, pero se recomienda no mezclarlos.21
Función factorial en
Python (indentación obligatoria)
|
|
int factorial(int x) {
if (x == 0)
return 1;
else
return x * factorial(x - 1);
}
|
def
factorial(x):
if
x == 0:
return 1
else:
return x * factorial(x - 1)
|
Debido al significado sintáctico de la indentación,
una instrucción debe estar contenida en línea. No obstante, si por legibilidad
se quiere dividir la instrucción en varias líneas, añadiendo una barra
invertida \ al final de una línea, se
indica que la instrucción continúa en la siguiente.
Tipo
|
Clase
|
Notas
|
Ejemplo
|
str
|
Cadena
|
Inmutable
|
'Cadena'
|
unicode
|
Cadena
|
u'Cadena'
|
|
list
|
Secuencia
|
Mutable, puede contener objetos de diversos tipos
|
[4.0, 'Cadena', True]
|
tuple
|
Secuencia
|
Inmutable, puede contener objetos de diversos tipos
|
(4.0, 'Cadena', True)
|
set
|
Conjunto
|
Mutable, sin orden, no contiene duplicados
|
set([4.0, 'Cadena', True])
|
frozenset
|
Conjunto
|
Inmutable, sin orden, no contiene duplicados
|
frozenset([4.0, 'Cadena', True])
|
dict
|
Mapping
|
Grupo de pares clave:valor
|
{'key1': 1.0, 'key2': False}
|
int
|
Número entero
|
Precisión fija, convertido en long en caso de overflow.
|
42
|
long
|
Número entero
|
Precisión arbitraria
|
42L ó 456966786151987643L
|
float
|
Número decimal
|
Coma flotante de doble precisión
|
3.1415927
|
bool
|
Booleano
|
Valor booleano verdadero o falso
|
True o False
|
Biblioteca
estándar
Python tiene una gran biblioteca
estándar, usada para una diversidad de tareas. Esto viene de la filosofía
"pilas incluidas" ("batteries
included") 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.
Implementaciones
Existen diversas implementaciones del lenguaje:
§
CPython es la implementación original,
disponible para varias plataformas en el sitio oficial de Python.
PERL
Perl es un lenguaje de programación diseñado por Larry Wall en 1987. Perl toma características del lenguaje C, del lenguaje interpretado bourne shell (sh), AWK, sed, Lisp y, en un grado inferior, de muchos otros lenguajes de programación.
Estructuralmente, Perl está basado en un estilo de bloques como los del C o AWK, y fue ampliamente adoptado por su destreza en el procesado de texto y no tener ninguna de las limitaciones de los otros lenguajes de script.
La estructura completa de Perl deriva ampliamente del lenguaje C. Perl es un lenguaje imperativo, con variables, expresiones, asignaciones, bloques de código delimitados por llaves, estructuras de control y subrutinas.
Perl también toma características de la programación shell. Todas las variables son marcadas con un Sigilo precedente (Sigil, en inglés). Los sigilos identifican inequívocamente los nombres de las variables, permitiendo a Perl tener una rica sintaxis. Notablemente, los sigilos permiten interpolar variables directamente dentro de las cadenas de caracteres (strings). Como en los shell, Perl tiene muchas funciones integradas para tareas comunes y para acceder a los recursos del sistema.
Perl toma las listas del Lisp, hash (memoria asociativa) del AWK y expresiones regulares del sed. Todo esto simplifica y facilita todas las formas del análisis sintáctico, manejo de texto y tareas de gestión de datos.
En Perl 5, se añadieron características para soportar estructuras de datos complejas, funciones de primer orden (p. e. clausuras como valores) y un modelo de programación orientada a objetos. Éstos incluyen referencias, paquetes y una ejecución de métodos basada en clases y la introducción de variables de ámbito léxico, que hizo más fácil escribir código robusto (junto con el pragma strict). Una característica principal introducida en Perl 5 fue la habilidad de empaquetar código reutilizable como módulos. Larry Wall indicó más adelante que "la intención del sistema de módulos de Perl 5 era apoyar el crecimiento de la cultura Perl en vez del núcleo de Perl".3
Todas las versiones de Perl hacen el tipificado automático de datos y la gestión de memoria. El intérprete conoce el tipo y requerimientos de almacenamiento de cada objeto en el programa; reserva y libera espacio para ellos según sea necesario. Las conversiones legales de tipo se hacen de forma automática en tiempo de ejecución; las conversiones ilegales son consideradas errores fatales.
El diseño de Perl puede ser entendido como una respuesta a tres amplias tendencias de la industria informática: rebaja de los costes en el hardware, aumento de los costes laborales y las mejoras en la tecnología de compiladores. Anteriormente, muchos lenguajes de ordenador como el Fortran y C, fueron diseñados para hacer un uso eficiente de un hardware caro. En contraste, Perl es diseñado para hacer un uso eficiente de los costosos programadores de ordenador.
Perl tiene muchas características que facilitan la tarea del programador a costa de unos requerimientos de CPU y memoria mayores. Éstas incluyen gestión de memoria automática; tipo de dato dinámico; strings, listas y hashes; expresiones regulares; introspección y una función
eval()
.
Larry Wall fue adiestrado como lingüista y el diseño de Perl ha sido muy aleccionado con principios lingüísticos. Ejemplos incluyen laCodificación Huffman (las construcciones más comunes deben ser las más cortas), buena distribución (la información importante debe ir primero) y una larga colección de primitivas del lenguaje. Perl favorece las construcciones del lenguaje, tan naturales, como para los humanos son la lectura y la escritura, incluso si eso hace más complicado al intérprete Perl.
HTML
Siglas de HyperText Markup
Language («lenguaje de marcado de hipertexto»), es ellenguaje de marcado predominante para la
elaboración de páginas web. Es usado para describir la estructura y el contenido
en forma de texto, así como para complementar el texto con objetos tales como
imágenes. HTML se escribe en forma de «etiquetas», rodeadas porcorchetes angulares (<,>). HTML también puede describir, hasta
un cierto punto, la apariencia de un documento, y puede incluir un script (por ejemplo JavaScript), el cual puede afectar el comportamiento de navegadores web y otros procesadores de HTML.
HTML también es usado para referirse
al contenido del tipo de MIME text/html
o todavía más ampliamente como un término genérico para el HTML, ya sea en
forma descendida del XML(como XHTML 1.0 y
posteriores) o en forma descendida directamente de SGML (como
HTML 4.01 y anteriores).
Primeras especificaciones
La primera descripción de HTML
disponible públicamente fue un documento llamado HTML Tags (Etiquetas HTML), publicado por primera vez en
Internet por Tim Berners-Lee en 1991.1 2 Describe 22 elementos comprendiendo el diseño
inicial y relativamente simple de HTML. Trece de estos elementos todavía
existen en HTML 4.3
Berners-Lee consideraba a HTML una
ampliación de SGML, pero no fue formalmente reconocida
como tal hasta la publicación de mediados de 1993, por la IETF, de una
primera proposición para una especificación de HTML: el boceto Hypertext Markup Language de
Berners-Lee y Dan Connolly, el cual incluía una Definición de Tipo de Documento SGML para definir la gramática.4 El boceto expiró luego de seis meses, pero fue
notable por su reconocimiento de la etiqueta propia del navegador Mosaic usada
para insertar imágenes sin cambio de línea, reflejando la filosofía del IETF de
basar estándares en prototipos con éxito. 5 Similarmente, el boceto competidor de Dave
Raggett HTML+ (Hypertext Markup
Format) (Formato de marcaje de hipertexto), de 1993 tardío,
sugería, estandarizar características ya implementadas tales como tablas.6
Elementos
Los elementos son la estructura básica de HTML. Los elementos tienen dos
propiedades básicas: atributos y contenido. Cada atributo y contenido tiene
ciertas restricciones para que se considere válido al documento HTML. Un
elemento generalmente tiene una etiqueta de inicio (p.ej. <nombre-de-elemento>) y una etiqueta de cierre
(p.ej. </nombre-de-elemento>). Los atributos del elemento están
contenidos en la etiqueta de inicio y el contenido está ubicado entre las dos
etiquetas (p.ej. <nombre-de-elemento atributo="valor">Contenido</nombre-de-elemento>). Algunos elementos, tales
como <br>, no tienen contenido ni llevan una
etiqueta de cierre. Debajo se listan varios tipos de elementos de marcado
usados en HTML.
PHP
Es un lenguaje de programación interpretado (Lenguaje de alto rendimiento), diseñado
originalmente para la creación de páginas web dinámicas. Se usa principalmente para la interpretación del
lado del servidor (server-side
scripting) pero actualmente puede ser utilizado desde una interfaz
de línea de comandos o en la creación de otros tipos de programas
incluyendo aplicaciones con interfaz gráfica usando las bibliotecas Qt o GTK+.
PHP es un acrónimo recursivo que significa PHP Hypertext Pre-processor (inicialmente PHP Tools, o, Personal Home Page Tools). Fue creado
originalmente por Rasmus Lerdorf en 1994; sin embargo la implementación principal
de PHP es producida ahora por The PHP Group y sirve como el estándar de facto
para PHP al no haber una especificación formal. Publicado bajo la PHP License,
la Free Software Foundation considera esta licencia como software libre.
Puede ser desplegado en la mayoría
de los servidores web y en casi todos los sistemas operativos y plataformas sin
costo alguno. El lenguaje PHP se encuentra instalado en más de 20 millones de
sitios web y en un millón de servidores, el número de sitios en PHP ha
compartido algo de su preponderante dominio con otros nuevos lenguajes no tan
poderosos desde agosto de 2005. El sitio web de Wikipedia está desarrollado en
PHP. Es también el módulo Apache más popular entre las computadoras que
utilizan Apache como servidor web.
El gran parecido que posee PHP con
los lenguajes más comunes de programación
estructurada, como C y Perl, permiten a
la mayoría de los programadores crear aplicaciones complejas
con una curva de aprendizaje muy corta. También les permite involucrarse con
aplicaciones de contenido dinámico sin tener que aprender todo un nuevo grupo
de funciones.
Aunque todo en su diseño está
orientado a facilitar la creación de sitios webs, es posible crear aplicaciones
con una interfaz
gráfica para el usuario, utilizando la extensión PHP-Qt o PHP-GTK. También puede ser usado desde la línea de órdenes, de la misma manera como Perl oPython pueden
hacerlo; a esta versión de PHP se la llama PHP-CLI (Command Line Interface).
Permite la conexión a diferentes
tipos de servidores de bases de datos tales como MySQL, PostgreSQL, Oracle, ODBC, DB2, Microsoft SQL Server, Firebird y SQLite.
PHP también tiene la capacidad de
ser ejecutado en la mayoría de los sistemas operativos, tales como Unix (y de
ese tipo, como Linux oMac OS X) y Microsoft Windows, y puede interactuar con los servidores de web más populares ya que existe en versión CGI, módulo paraApache, e ISAPI.
PHP es una alternativa a las tecnologías de Microsoft ASP y ASP.NET (que
utiliza C# y Visual Basic .NET como
lenguajes), a ColdFusionde la
empresa Adobe, a JSP/Java y a CGI/Perl. Aunque su
creación y desarrollo se da en el ámbito de los sistemas libres, bajo la
licenciaGNU, existe
además un entorno de desarrollo integrado comercial llamado Zend Studio. CodeGear (la
división de lenguajes de programación de Borland) ha sacado
al mercado un entorno de desarrollo integrado para PHP, denominado 'Delphi for
PHP. También existen al menos un par de módulos para Eclipse, uno de los entornos más populares.
Fue originalmente diseñado en Perl, con base
en la escritura de un grupo de CGI binarios escritos en el lenguaje C por el programador
danés-canadiense Rasmus Lerdorf en el año 1994 para mostrar su currículum vítae y guardar ciertos datos, como
la cantidad de tráfico que su página web recibía. El 8 de junio de 1995 fue
publicado "Personal Home Page Tools" después de que Lerdorf lo
combinara con su propioForm
Interpreter para crear PHP/FI.
Java
Es un lenguaje de
programación orientado a objetos, desarrollado por Sun Microsystems a principios de los años 90. El lenguaje en sí mismo toma mucha de su sintaxis
de C y C++, pero tiene
un modelo de objetos más simple y elimina herramientas de bajo nivel, que suelen
inducir a muchos errores, como la manipulación directa de punteros o memoria.Con respecto a la
memoria, su gestión no es un problema ya que ésta es gestionada por el propio
lenguaje y no por el programador.
Las aplicaciones Java están típicamente compiladas en un bytecode, aunque la compilación en código máquina nativo también es posible. En
el tiempo de ejecución, el bytecode es normalmente interpretado o compilado a código nativo
para la ejecución, aunque la ejecución directa por hardware del bytecode por
un procesador Java también es posible.
La implementación original y de
referencia del compilador, la máquina virtual y las bibliotecas de clases de Java fueron
desarrollados por Sun Microsystems en 1995. Desde
entonces, Sun ha controlado las especificaciones, el desarrollo y evolución del
lenguaje a través del Java Community Process, si bien otros han desarrollado
también implementaciones alternativas de estas tecnologías de Sun, algunas
incluso bajo licencias de software libre.
Entre diciembre de 2006 y mayo
de 2007, Sun Microsystems liberó la mayor parte de sus
tecnologías Java bajo la licencia GNU GPL, de acuerdo con las especificaciones del Java
Community Process, de tal forma que prácticamente todo el Java de Sun es
ahora software libre (aunque la biblioteca de
clases de Sun
que se requiere para ejecutar los programas Java aún no lo es).
El término Java fue acuñado en una cafetería
frecuentada por algunos de los miembros del equipo. Pero no está claro si es un
acrónimo o no, aunque algunas fuentes señalan que podría tratarse de las
iniciales de sus creadores: James
Gosling, Arthur Van Hoff, y Andy Bechtolsheim. Otros abogan
por el siguiente acrónimo, Just Another Vague Acronym ("sólo
otro acrónimo ambiguo más").
Desde J2SE 1.4, la evolución del lenguaje ha sido regulada
por el JCP (Java Community Process), que usa Java Specification Requests(JSRs)
para proponer y especificar cambios en la plataforma Java. El lenguaje en sí
mismo está especificado en la Java
Language Specification (JLS), o Especificación del Lenguaje Java.
Los cambios en los JLS son gestionados en JSR 901.
El lenguaje Java se creó con cinco
objetivos principales:
1. Debería usar el paradigma de la
programación orientada a objetos.
2. Debería permitir la ejecución de un
mismo programa en múltiples sistemas operativos.
3. Debería incluir por defecto soporte
para trabajo en red.
4. Debería diseñarse para ejecutar
código en sistemas remotos de forma segura.
5. Debería ser fácil de usar y tomar lo
mejor de otros lenguajes orientados a objetos, como C++.
Para conseguir la ejecución de
código remoto y el soporte de red, los programadores de Java a veces recurren a
extensiones como CORBA(Common Object Request Broker
Architecture), Internet Communications Engine o OSGi respectivamente.
// Hola.java
public class Hola() //Declara una clase llamada Hola, que es
descendiente de la clase Object
{
//Entre llaves se declaran los atributos y
métodos de la clase
public static void main(String[] args)
//public: indica que el
método main()es público
//void: indica que la función main() no devuelve ningún valor
//El método main()debe aceptar siempre como parámetro un vector de
strings
{
System.out.println("Hola, mundo!");
//Esta línea indica que se va a ejecutar el método println(), encargado
de mostrar
//un valor a través de la salida estándar (en nuestro caso, un String)
//Este método pertenece al atributo out
Las applet Java son programas incrustados en otras aplicaciones,
normalmente una página Web que se muestra en un navegador.
// Hello.java
import
javax.swing.JApplet;
import
java.awt.Graphics;
public class Hello extends JApplet {
public void paint(Graphics g) {
g.drawString("Hola, mundo!", 65, 95);
}
}
<!-- Hola.html -->
<html>
<head>
<title>Applet Hola Mundo</title>
</head>
<body>
<applet code="Hola.class"
width="200" height="200">
</applet>
</body>
</html>