16
SOFTWARE DE DESARROLLO Características del lenguaje Java Lenguaje simple Java posee una curva de aprendizaje muy rápida. Resulta relativamente sencillo escribir applets interesantes desde el principio. Todos aquellos familiarizados con C++ encontrarán que Java es más sencillo, ya que se han eliminado ciertas características, como los punteros. Debido a su semejanza con C y C++, y dado que la mayoría de la gente los conoce aunque sea de forma elemental, resulta muy fácil aprender Java. Los programadores experimentados en C++ pueden migrar muy rápidamente a Java y ser productivos en poco tiempo. Orientado a objetos Java fue diseñado como un lenguaje orientado a objetos desde el principio. Los objetos agrupan en estructuras encapsuladas tanto sus datos como los métodos (o funciones) que manipulan esos datos. La tendencia del futuro, a la que Java se suma, apunta hacia la programación orientada a objetos, especialmente en entornos cada vez más complejos y basados en red. Distribuido Java proporciona una colección de clases para su uso en aplicaciones de red, que permiten abrir sockets y establecer y aceptar conexiones con servidores o clientes remotos, facilitando así la creación de aplicaciones distribuidas. Interpretado y compilado a la vez Java es compilado, en la medida en que su código fuente se transforma en una especie de código máquina, los bytecodes, semejantes a las instrucciones de ensamblador. Por otra parte, es interpretado, ya que los bytecodes se pueden ejecutar directamente sobre cualquier máquina a la cual se hayan portado el intérprete y el sistema de ejecución en tiempo real (run-time). Robusto Java fue diseñado para crear software altamente fiable. Para ello proporciona numerosas comprobaciones en compilación y en tiempo de ejecución. Sus características de memoria liberan a los programadores de una familia entera de errores (la aritmética de punteros), ya que se ha prescindido por completo los punteros, y la recolección de basura elimina la necesidad de liberación explícita de memoria.

SOFTWARE DE DESARROLLO Características del …admin-info.galeon.com/desarrollo.pdf · Java proporciona una colección de clases para su uso en aplicaciones de red, ... para la parte

Embed Size (px)

Citation preview

Page 1: SOFTWARE DE DESARROLLO Características del …admin-info.galeon.com/desarrollo.pdf · Java proporciona una colección de clases para su uso en aplicaciones de red, ... para la parte

SOFTWARE DE DESARROLLO

Características del lenguaje Java

Lenguaje simple

Java posee una curva de aprendizaje muy rápida. Resulta relativamente sencillo escribir applets interesantes desde el principio. Todos aquellos familiarizados con C++ encontrarán que Java es más sencillo, ya que se han eliminado ciertas características, como los punteros. Debido a su semejanza con C y C++, y dado que la mayoría de la gente los conoce aunque sea de forma elemental, resulta muy fácil aprender Java. Los programadores experimentados en C++ pueden migrar muy rápidamente a Java y ser productivos en poco tiempo.

Orientado a objetos

Java fue diseñado como un lenguaje orientado a objetos desde el principio. Los objetos agrupan en estructuras encapsuladas tanto sus datos como los métodos (o funciones) que manipulan esos datos. La tendencia del futuro, a la que Java se suma, apunta hacia la programación orientada a objetos, especialmente en entornos cada vez más complejos y basados en red.

Distribuido

Java proporciona una colección de clases para su uso en aplicaciones de red, que permiten abrir sockets y establecer y aceptar conexiones con servidores o clientes remotos, facilitando así la creación de aplicaciones distribuidas.

Interpretado y compilado a la vez

Java es compilado, en la medida en que su código fuente se transforma en una especie de código máquina, los bytecodes, semejantes a las instrucciones de ensamblador. Por otra parte, es interpretado, ya que los bytecodes se pueden ejecutar directamente sobre cualquier máquina a la cual se hayan portado el intérprete y el sistema de ejecución en tiempo real (run-time).

Robusto

Java fue diseñado para crear software altamente fiable. Para ello proporciona numerosas comprobaciones en compilación y en tiempo de ejecución. Sus características de memoria liberan a los programadores de una familia entera de errores (la aritmética de punteros), ya que se ha prescindido por completo los punteros, y la recolección de basura elimina la necesidad de liberación explícita de memoria.

Page 2: SOFTWARE DE DESARROLLO Características del …admin-info.galeon.com/desarrollo.pdf · Java proporciona una colección de clases para su uso en aplicaciones de red, ... para la parte

Seguro (?)

Dada la naturaleza distribuida de Java, donde las applets se bajan desde cualquier punto de la Red, la seguridad se impuso como una necesidad de vital importancia. A nadie le gustaría ejecutar en su ordenador programas con acceso total a su sistema, procedentes de fuentes desconocidas. Así que se implementaron barreras de seguridad en el lenguaje y en el sistema de ejecución en tiempo real.

Indiferente a la arquitectura

Java está diseñado para soportar aplicaciones que serán ejecutadas en los más variados entornos de red, desde Unix a Windows Nt, pasando por Mac y estaciones de trabajo, sobre arquitecturas distintas y con sistemas operativos diversos. Para acomodar requisitos de ejecución tan variopintos, el compilador de Java genera bytecodes: un formato intermedio indiferente a la arquitectura diseñado para transportar el código eficientemente a múltiples plataformas hardware y software. El resto de problemas los soluciona el intérprete de Java.

Portable

La indiferencia a la arquitectura representa sólo una parte de su portabilidad. Además, Java especifica los tamaños de sus tipos de datos básicos y el comportamiento de sus operadores aritméticos, de manera que los programas son iguales en todas las plataformas. Estas dos últimas características se conocen como la Máquina Virtual Java(JVM).

Alto rendimiento

Multihebra

Hoy en día ya se ven como terriblemente limitadas las aplicaciones que sólo pueden ejecutar una acción a la vez. Java soporta sincronización de múltiples hilos de ejecución (multithreading) a nivel de lenguaje, especialmente útiles en la creación de aplicaciones de red distribuidas. Así, mientras un hilo se encarga de la comunicación, otro puede interactuar con el usuario mientras otro presenta una animación en pantalla y otro realiza cálculos.

Dinámico

El lenguaje Java y su sistema de ejecución en tiempo real son dinámicos en la fase de enlazado. Las clases sólo se enlazan a medida que son necesitadas. Se pueden enlazar nuevos módulos de código bajo demanda, procedente de fuentes muy variadas, incluso desde la Red.

Produce applets

Java puede ser usado para crear dos tipos de programas: aplicaciones independientes y applets. Las aplicaciones independientes se comportan como cualquier otro programa escrito en cualquier lenguaje, como por ejemplo el navegador de Web HotJava, escrito íntegramente en Java.

Page 3: SOFTWARE DE DESARROLLO Características del …admin-info.galeon.com/desarrollo.pdf · Java proporciona una colección de clases para su uso en aplicaciones de red, ... para la parte

Por su parte, las applets son pequeños programas que aparecen embebidos en las páginas Web, como aparecen los gráficos o el texto, pero con la capacidad de ejecutar acciones muy complejas, como animar imágenes, establecer conexiones de red, presentar menús y cuadros de diálogo para luego emprender acciones, etc.

Microsoft Visual Basic

Visual Basic es un lenguaje de programación desarrollado por Alan Cooper para Microsoft. El

lenguaje de programación es un dialecto de BASIC, con importantes añadidos. Su primera

versión fue presentada en 1991 con la intención de simplificar la programación utilizando

un ambiente de desarrollo completamente gráfico que facilitara la creación de interfaces

gráficas y en cierta medida también la programación misma. Desde el 2001 Microsoft ha

propuesto abandonar el desarrollo basado en la API Win32 y pasar a trabajar sobre un

framework o marco común de librerías independiente de la version del sistema operativo, .NET

Framework, a través de Visual Basic .NET (y otros lenguajes como C Sharp (C#) de fácil

transición de código entre ellos) que presenta serias incompatibilidades con el código Visual

Basic existente.

Visual Basic constituye un IDE (entorno de desarrollo integrado o en inglés Integrated

Development Enviroment) que ha sido empaquetado como un programa de aplicación, es decir,

consiste en un editor de código (programa donde se escribe el código fuente), un depurador

(programa que corrige errores en el código fuente para que pueda ser bien compilado), un

compilador (programa que traduce el código fuente a lenguaje de máquina), y un constructor de

interfaz gráfica o GUI (es una forma de programar en la que no es necesario escribir el código

para la parte gráfica del programa, sino que se puede hacer de forma visual).

Características generales

Es un lenguaje de fácil aprendizaje pensado tanto para programadores principiantes como

expertos, guiado por eventos, y centrado en un motor de formularios que facilita el rápido

desarrollo de aplicaciones gráficas. Su sintaxis, derivada del antiguo BASIC, ha sido ampliada

con el tiempo al agregarse las características típicas de los lenguajes estructurados modernos. Se

ha agregado una implementación limitada de la programación orientada a objetos (los propios

formularios y controles son objetos), aunque sí admite el polimorfismomediante el uso de los

Interfaces, no admite la herencia. No requiere de manejo de punteros y posee un manejo muy

sencillo de cadenas de caracteres. Posee varias bibliotecas para manejo de bases de datos,

pudiendo conectar con cualquier base de datos a través

de ODBC (Informix, DBase, Access, MySQL, SQL Server, PostgreSQL ,etc) a través de ADO.

Page 4: SOFTWARE DE DESARROLLO Características del …admin-info.galeon.com/desarrollo.pdf · Java proporciona una colección de clases para su uso en aplicaciones de red, ... para la parte

Es utilizado principalmente para aplicaciones de gestión de empresas, debido a la rapidez con la

que puede hacerse un programa que utilice una base de datos sencilla, además de la abundancia

de programadores en este lenguaje.

El compilador de Microsoft genera ejecutables que requieren una DLL para que funcionen, en

algunos casos llamada MSVBVMxy.DLL (acrónimo de "MicroSoft Visual Basic Virtual

Machine x.y", siendo x.y la versión) y en otros VBRUNXXX.DLL ("Visual Basic Runtime

X.XX"), que provee todas las funciones implementadas en el lenguaje. Además existen un gran

número de bibliotecas (DLL) que facilitan el acceso a muchas funciones del sistema operativo y

la integración con otras aplicaciones. Sin embargo esto sólo es una limitación en sistemas

obsoletos, ya que las bibliotecas necesarias para ejecutar programas en Visual Basic vienen de

serie en todas las versiones de Windows desde Windows 2000.

Versiones

Las versiones de Visual Basic para Windows son muy conocidas, pero existe una versión de

Microsoft Visual Basic 1.0 para MS-DOS (ediciones Profesional y Estándar) menos difundida y

que data de 1992. Era un entorno que, aunque en modo texto, incluía un diseñador de

formularios en el que se podían arrastrar y soltar distintos controles.

La última versión sólo para 16 bits, la 3.0, incluía ya una detallada biblioteca de componentes

para toda clase de usos. Durante la transición de Windows 3.11 a Windows 95, apareció la

versión 4.0, que podía generar programas de 16 y 32 bits a partir de un mismo código fuente, a

costa de un gran aumento en el tamaño de los archivos "runtime" necesarios. Además, se

sustituyen los controles VBX por los nuevos OCX. Con la versión 5.0, se implementó por

primera vez la posibilidad de compilar a código nativo, obteniendo una mejora de rendimiento

considerable. Tanto esta como la posterior 6.0 soportaban características propias de los

lenguajes orientados a objetos, aunque careciendo de algunos ítems importantes como la

herencia, el polimorfismo y la sobrecarga. La versión 6.0 continua utilizándose masivamente.

Las versiones actuales de Visual Basic se basan en la plataforma .NET, que se desligan de las

anteriores versiones.

Ventajas

Ventajas

� Es un lenguaje RAD.

� Posee una curva de aprendizaje muy rápida.

� Integra el diseño e implementación de formularios de Windows.

Page 5: SOFTWARE DE DESARROLLO Características del …admin-info.galeon.com/desarrollo.pdf · Java proporciona una colección de clases para su uso en aplicaciones de red, ... para la parte

� Permite usar con suma facilidad la plataforma de los sistemas Windows.

� El código en Visual Basic es fácilmente migrable a otros lenguajes.

Inconvenientes

Inconvenientes

� Sin soporte de Microsoft desde el 4 de abril de 2008 (Pero el MSDN es muy completo).

� No es multiplataforma (Sin embargo se pueden usar emuladores e interpretes para correrlos

en otras plataformas).

� Por defecto permite la programación sin declaración de variables. (que puede ser

sencillamente corregida escribiendo la frase Option Explicit en el encabezado de cada

formulario, en cuyo caso será menester declarar todas las variables a utilizar, lo que a la postre

genera código más puro).

� No permite programación a bajo nivel ni incrustrar secciones de código en ASM.

� Sólo permite el uso de funciones de librerías dinámicas (DLL) stdcall.

� Algunas funciones están indocumentadas (Sin embargo esto ocurre en muchos lenguajes).

� Es un lenguaje basado en objetos y no orientado a objetos.

� No maneja muy bien los apuntadores de memoria.

� No soporta tratamiento de procesos como parte del lenguaje.

� No incluye operadores de desplazamiento de bits como parte del lenguaje.

� No permite el manejo de memoria dinámica, punteros, etc. como parte del lenguaje.

� No avisa de ciertos errores o advertencias (se puede configurar el compilador para generar

ejecutables sin los controladores de desbordamiento de enteros o las comprobaciones de límites

en matrices entre otros, dejando así más de la mano del programador la tarea de controlar dichos

errores)

� No tiene instrucciones de preprocesamiento.

� El tratamiento de mensajes de Windows es básico e indirecto.

� La gran gama de controles incorporados son, sin embargo en algunos casos, muy generales,

lo que lleva a tener que reprogramar nuevos controles para una necesidad concreta de la

aplicación. Esto cambia radicalmente en Visual Basic .NET donde es posible reprogramar y

mejorar o reutilizar los controles existentes.

� Los controles personalizados no mejoran la potencia de la API de Windows, y en

determinados casos acudir a ésta será el único modo de conseguir el control personalizado

deseado.

Page 6: SOFTWARE DE DESARROLLO Características del …admin-info.galeon.com/desarrollo.pdf · Java proporciona una colección de clases para su uso en aplicaciones de red, ... para la parte

Entornos de desarrollo

Existe un único entorno de desarrollo para Visual Basic, desarrollado por Microsoft:

� Microsoft Visual Basic x.0 para versiones desde la 1.0 hasta la 8.0, (con las diferencias entre

las versiones desde la 1.0 (MS-DOS/Windows 3.1) hasta la 3.0 (16 bits, Windows 3.1) y las de

la 4.0 (16/32 bits, Windows 3.1/95/NT) hasta la 6.0 (32 bits, Windows

9x/Me/NT/2000/XP/Vista)

Gambas es un proyecto libre para GNU/Linux que hereda en gran medida de Visual Basic su

lenguaje y su entorno de desarrollo.

Delphi

Delphi es un entorno de desarrollo de software diseñado para la programación de propósito

general con énfasis en la programación visual. En Delphi se utiliza como lenguaje de

programación una versión moderna de Pascal llamada Object Pascal. Es producido

comercialmente por la empresa estadounidense CodeGear, adquirida en Mayo de 2008 por

Embarcadero Technologies, una empresa del grupo Thoma Cressey Bravo, en una suma que

ronda los 30 millones de dólares. En sus diferentes variantes, permite producir

archivosejecutables para Windows, Linux y la plataforma .NET.

CodeGear ha sido escindida de la empresa Borland, donde Delphi se creó originalmente, tras un

proceso que pretendía en principio la venta del departamento de herramientas para desarrollo.

Uso y variantes

Un uso habitual de Delphi (aunque no el único) es el desarrollo de aplicaciones visuales y

de bases de datos cliente-servidor y multicapas. Debido a que es una herramienta de propósito

múltiple, se usa también para proyectos de casi cualquier tipo, incluyendo aplicaciones de

consola, aplicaciones de web (por ejemplo servicios web, CGI, ISAPI, NSAPI, módulos para

Apache), servicios COM y DCOM, y servicios del sistema operativo. Entre las aplicaciones

más populares actualmente destaca Skype, un programa de telefonía por IP.

Delphi inicialmente sólo producía ejecutables binarios para Windows: Delphi 1 para Win16 y

con Delphi 2 se introdujo Win32. En la actualidad da más posibilidades:

� En la última versión RAD Studio 2009 incluye en el mismo entorno de desarrollo los

lenguajes:

� Delphi para Win32

Page 7: SOFTWARE DE DESARROLLO Características del …admin-info.galeon.com/desarrollo.pdf · Java proporciona una colección de clases para su uso en aplicaciones de red, ... para la parte

� Delphi para .NET

� C# para .NET

� C++

� Existe una versión de Delphi para sistemas Unix y Linux, denominada Kylix (de la cual

existe un versión gratuita, aunque limitada). Sin embargo Kylix fue congelado por Borland en

su versión 3.00.

El lenguaje de programación

Delphi está basado en una versión moderna de Pascal, denominada Object Pascal. Borland en

los últimos años defendía que el nombre correcto del lenguaje es también Delphi, posiblemente

debido a pretensiones de marca, aunque en sus mismos manuales el nombre del lenguaje

aparecía como Object Pascal, por lo que la comunidad de programadores no ha adoptado

mayoritariamente este cambio (supuesta aclaración, según Borland). Object Pascal expande las

funcionalidades del Pascal estándar:

� Soporte para la programación orientada a objetos (habitualmente llamada POO) también

existente desde Turbo Pascal 5.5, pero más evolucionada en cuanto a:

� Encapsulación: declarando partes privadas, protegidas, públicas y publicadas de las

clases

� Propiedades: concepto nuevo que luego han adaptado muchos otros lenguajes. Las

propiedades permiten usar la sintaxis de asignación para setters y getters.

� Simplificación de la sintaxis de referencias a clases y punteros.

� Soporte para manejo estructurado de excepciones, mejorando sensiblemente el control de

errores de usuario y del sistema.

� Programación activada por eventos (event-driven), posible gracias a la técnica de delegación

de eventos. Esta técnica permite asignar el método de un objeto para responder a un evento

lanzado sobre otro objeto. Fue adoptada por Niklaus Wirth, autor del Pascal Original, e

incorporada a otros de sus lenguajes como Component Pascal.

Componentes

Delphi dio una implementación muy buena a la idea del uso de componentes, que son piezas

reutilizables de código (clases) que pueden interactuar con el EID en tiempo de diseño y

desempeñar una función específica en tiempo de ejecución. Desde un enfoque más específico

de la herramienta, se catalogan como componentes todos aquellos objetos que heredan de la

clase TComponent, donde se implementa la funcionalidad necesaria para interactuar con el

entorno de desarrollo, la carga dinámica desde streams y la liberación de memoria mediante una

Page 8: SOFTWARE DE DESARROLLO Características del …admin-info.galeon.com/desarrollo.pdf · Java proporciona una colección de clases para su uso en aplicaciones de red, ... para la parte

jerarquía. Una gran parte de los componentes disponibles para Delphi son controles (derivados

de TControl), que encapsulan los elementos de interacción con el usuario como botones, menus,

barras de desplazamiento, etcétera.

Delphi incluye una biblioteca de clases bien diseñada denominada VCL (Visual Component

Library, Biblioteca de Componentes Visuales) y, en sus versiones 6 y 7, una jerarquía

multiplataforma paralela denominada CLX. Ésta también se incluye en Kylix. Estas jerarquías

de objetos incluyen componentes visuales y no visuales, tales como los pertenecientes a la

categoría de acceso a datos, con los que puede establecerse conexiones de forma nativa o

mediante capas intermedias (como ADO, BDE u ODBC) a la mayoría de las bases de datos

relacionales existentes en el mercado. La VCL también está disponible para el desarrollo en

.NET.

Además de poder utilizar en un programa estos componentes estándar (botones, grillas,

conjuntos de datos, etc.), es posible crear nuevos componentes o mejorar los ya existentes,

extendiendo la funcionalidad de la herramienta. En Internet existe un gran número de

componentes, tanto gratuitos como comerciales, disponibles para los proyectos a los que no les

basten los que vienen ya con la herramienta.

Eventos

Delphi permite de manera sencilla ejecutar trozos de código en respuesta a acciones

o eventos (sucesos) que ocurren durante el tiempo que un programa se ejecuta. Por ejemplo,

cuando se presiona un botón, la VCL captura la notificación estándar de windows, y detecta si

hay algún método asociado al evento OnClick del botón. Si lo hay, manda ejecutar dicho

método.

Los eventos pueden generarse debido a la recepción de señales desde elementos de hardware

como el ratón o el teclado, o pueden producirse al realizar alguna operación sobre un elemento

de la propia aplicación (como abrir un conjunto de datos, que genera los

eventos BeforeOpen/AfterOpen). La VCL ha demostrado estar bien diseñada y el control que se

tiene a través de los eventos de la misma es suficiente para la gran mayoría de aplicaciones.

Base de Datos

Una de las principales características y ventajas de Delphi es su capacidad para desarrollar

aplicaciones con conectividad a bases de datos de diferentes fabricantes. El programador de

Delphi cuenta con una gran cantidad de componentes para realizar la conexión, manipulación,

presentación y captura de los datos, algunos de ellos liberados bajo licencias de código abierto o

gratuitos. Estos componentes de acceso a datos pueden enlazarse a una gran variedad de

Page 9: SOFTWARE DE DESARROLLO Características del …admin-info.galeon.com/desarrollo.pdf · Java proporciona una colección de clases para su uso en aplicaciones de red, ... para la parte

controles visuales, aprovechando las características del lenguaje orientado a objetos, gracias al

polimorfismo.

En la paleta de componentes pueden encontrarse varias pestañas para realizar una conexión a

bases de datos usando diferentes capas o motores de conexión.

Hay motores que permiten conectarse a bases de datos de diferentes fabricantes tales

como BDE, DBExpress o ADO, que cuentan con manejadores para los formatos más

extendidos.

También hay componentes de conexión directa para un buen número de bases de datos

específicas: Firebird, Interbase, Oracle, etcétera.

A continuación un breve resumen (aún recopilándose) de las capas de conexión disponibles para

las bases de datos más populares:

� Interbase/Firebird: IBX (InterBase eXpress), IBO (IB Objects), MDO (Mercury Data

Objects), *DBExpress, BDE, FibPlus, Zeos

� Oracle: DOA (Direct Oracle Access), NCOci8

� dBase: BDE

� FoxPro: BDE

� Paradox: BDE

� Microsoft SQL Server: BDE, ADO, *DBExpress

� mySQL: Zeos (nativo), *DBExpress, BDE y ADO (usando ODBC)

� Postgres: BDE, ADO

Borland Database Engine (BDE)

Es un motor de conexión a bases de datos de uso bastante amplio y que permite manejar bases

de datos de escritorio como dBase, Foxpro y Paradox, además de ofrecer la capacidad para

conectarse a servidores SQL locales y remotos. Su uso, va siendo cada vez menor, debido a la

pobre gestión de memoria que realiza, sustituyéndolo por componentes más actualizados y

especializados como DOAC (Direct Oracle Access Components) o DBExpress, esto sumado a

la fiabilidad que están presentando los nuevos gestores de Datos en especial tecnologías como

RDO y ADO; los cuales son mantenidos por sus fabricantes, forzando la compatibilidad con las

versiones preliminares; liberando al programador de actualizaciones en cuanto a gestión de

datos. Actualmente ya no es desarrollado por Codegear.

Page 10: SOFTWARE DE DESARROLLO Características del …admin-info.galeon.com/desarrollo.pdf · Java proporciona una colección de clases para su uso en aplicaciones de red, ... para la parte

Desarrollo visual

Como entorno visual, la programación en Delphi consiste en diseñar los formularios que

componen al programa colocando todos sus controles (botones, etiquetas, campos de texto, etc.)

en las posiciones deseadas, normalmente usando un ratón. Luego se asocia código a

los eventos de dichos controles y también se pueden crear módulos de datos, que regularmente

contienen los componentes de acceso a datos y las reglas de negocio de una aplicación.

Entorno Integrado de Desarrollo (EID)

O IDE en inglés (Integrated Development Environment), es el ambiente de desarrollo de

programas de Delphi. Se trata de un editor de formularios (que permite el desarrollo visual), un

potente editor de textos que resalta la sintaxis del código fuente, la paleta de componentes y

el depurador integrado, además de una barra de botones y un menú que nos permite la

configuración de la herramienta y la gestión de proyectos. En las

ediciones Client/Server y Enterprise el EID también ofrece integración con una herramienta

de control de versiones(PVCS).

Perl

Perl

Paradigma: multiparadigma

Apareció en: 1987

Diseñado por: Larry Wall

Desarrollador: Rafael Garcia-Suarez y Nicolas Clarck

Última versión: 5.10.0 (10 de diciembre de 2007) 5.8.9 (14 de diciembre de 2008)

Tipo de dato: dinámico

Implementaciones: Perl mod_perl

Page 11: SOFTWARE DE DESARROLLO Características del …admin-info.galeon.com/desarrollo.pdf · Java proporciona una colección de clases para su uso en aplicaciones de red, ... para la parte

embperl

Dialectos: Perl 5 Perl 6

Influido por: AWK, BASIC, BASIC-PLUS,C, C++, Lisp, Pascal, sed,Unix shell

Ha influido: Python, PHP, Ruby,ECMAScript

Sistema operativo: muchos (más de 100)

Licencia de software:

GPL, Licencia Artística

Web: www.perl.org

Perl es un lenguaje de programación diseñado por Larry Wall creado en 1987. Perl toma

características del C, del lenguaje interpretado 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.

Descripción

Perl es un lenguaje de propósito general originalmente desarrollado para la manipulación

de texto y que ahora es utilizado para un amplio rango de tareas incluyendo administración de

sistemas, desarrollo web, programación en red, desarrollo de GUI y más.

Se previó que fuera práctico (facilidad de uso, eficiente, completo) en lugar de hermoso

(pequeño, elegante, mínimo). Sus principales características son que es fácil de usar, soporta

tanto la programación estructurada como la programación orientada a objetos y la programación

funcional, tiene incorporado un poderoso sistema de procesamiento de texto y una enorme

colección de módulos disponibles.

Page 12: SOFTWARE DE DESARROLLO Características del …admin-info.galeon.com/desarrollo.pdf · Java proporciona una colección de clases para su uso en aplicaciones de red, ... para la parte

Características

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 signo precedente (sigil). Los sigil identifican inequívocamente los nombres de las

variables, permitiendo a Perl tener una rica sintaxis. Notablemente, los sigil 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".2

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.

Diseño

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.

Page 13: SOFTWARE DE DESARROLLO Características del …admin-info.galeon.com/desarrollo.pdf · Java proporciona una colección de clases para su uso en aplicaciones de red, ... para la parte

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 la Codificació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.

La sintaxis de Perl refleja la idea de que "cosas que son diferentes deben parecer diferentes".

Por ejemplo, escalares, arrays y hashes tienen diferente sigil. Índices de array y

claves hashusan diferentes clases de paréntesis. Strings y expresiones regulares tienen

diferentes delimitadores estándar. Esta aproximación puede contrastarse con lenguajes

como Lisp, donde la misma construcción S-expresión y sintaxis básica se usa para muchos y

variados propósitos.

Perl tiene características que soportan una variedad de paradigmas de programación, como

la imperativa, funcional y la orientada a objetos. Al mismo tiempo, Perl no obliga a seguir

ningún paradigma en particular, ni obliga al programador a elegir alguna de ellas.

Hay un amplio sentido de lo práctico, tanto en el lenguaje Perl como en la comunidad y la

cultura que lo rodean. El prefacio de Programming Perl comienza con, "Perl es un lenguaje

para tener tu trabajo terminado". Una consecuencia de esto es que Perl no es un lenguaje

ordenado. Incluye características si la gente las usa, tolera excepciones a las reglas y emplea

laheurística para resolver ambigüedades sintácticas. Debido a la naturaleza indulgente del

compilador, a veces los errores pueden ser difíciles de encontrar. Hablando del variado

comportamiento de las funciones internas en los contextos de lista y escalar, la página de

manual de perlfunc(1) dice "En general, hacen lo que tu quieras, siempre que quieras la

coherencia."

Perl tiene varios lemas que transmiten aspectos de su diseño y uso. Uno es There's more than

one way to do it (Hay más de una forma de hacerlo) (TMTOWTDI, usualmente pronunciado

'Tim Toady'). Otros son "Perl: la motosierra del ejército Suizo de los lenguajes de

programación" y "Límites imprecisos". Una meta prefijada de Perl es hacer las cosas fáciles de

forma fácil y las tareas difíciles, posibles. A Perl también se le ha llamado "El esparadrapo de

Internet".

Page 14: SOFTWARE DE DESARROLLO Características del …admin-info.galeon.com/desarrollo.pdf · Java proporciona una colección de clases para su uso en aplicaciones de red, ... para la parte

Aplicaciones

Perl tiene muchas y variadas aplicaciones, gracias a la disponibilidad de muchos módulos

estándares y de terceras partes.

Se ha usado desde los primeros días del Web para escribir guiones (scripts) CGI. Es una de las

"tres Pes" (Perl, Python y PHP), que son los lenguajes más populares para la creación de

aplicaciones Web, y es un componente integral de la popular solución LAMP para el desarrollo

web. Grandes proyectos escritos en Perl son Slash, IMDb[2] y UseModWiki, un motor deWiki.

Muchos sitios web con alto tráfico, como Amazon.com y Ticketmaster.com usan Perl

extensamente.

Perl se usa a menudo como un "lenguaje pegamento", ligando sistemas e interfaces que no

fueron diseñados específicamente para interoperar; y para el "escarbado de datos", convirtiendo

o procesando grandes cantidades de datos para tareas como por ejemplo crear informes. De

hecho, estas fortalezas están íntimamente unidas. Su combinación hace a Perl una popular

herramienta de propósito general para los administradores de sistemas, especialmente en

programas pequeños que pueden ser escritos y ejecutados en una sola línea de comandos.

Perl es también ampliamente usado en finanzas y bioinformática, donde es apreciado por

su desarrollo rápido, tanto de aplicaciones como de despliegue, así como la habilidad de

manejar grandes volúmenes de datos.

Implementación

Perl está implementado como un intérprete, escrito en C, junto con una gran colección de

módulos, escritos en Perl y C. La distribución fuente tiene, en 2005, 12 MB cuando se

empaqueta y comprime en un fichero tar. El intérprete tiene 150.000 líneas de código C y

se compila en un ejecutable de 1 MB en las arquitecturas de hardware más típicas. De forma

alternativa, el intérprete puede ser compilado como una biblioteca y ser embebida en otros

programas. Hay cerca de 500 módulos en la distribución, sumando 200.000 líneas de Perl y

unas 350.000 líneas adicionales de código C. Mucho del código C en los módulos consiste en

tablas de codificación de caracteres.

El intérprete tiene una arquitectura orientada a objetos. Todos los elementos del lenguaje Perl

—escalares, listas, hashes, referencias a código, manejadores de archivo— están representados

en el intérprete como estructuras C. Las operaciones sobre estas estructuras están definidas

como una numerosa colección de macros, typedef y funciones; esto constituye la API C de Perl.

La API Perl puede ser desconcertante para el no iniciado, pero sus puntos de entrada siguen un

esquema de nombres coherente, que ayuda a los que quieran utilizarla.

Page 15: SOFTWARE DE DESARROLLO Características del …admin-info.galeon.com/desarrollo.pdf · Java proporciona una colección de clases para su uso en aplicaciones de red, ... para la parte

La ejecución de un programa Perl se puede dividir, generosamente, en dos fases: tiempo de

compilación y tiempo de ejecución.3 En tiempo de compilación el intérprete parsea el texto del

programa en un árbol sintáctico. En tiempo de ejecución, ejecuta el programa siguiendo el

árbol. El texto es parseado sólo una vez y el árbol sintáctico es optimizado antes de ser

ejecutado, para que la fase de ejecución sea relativamente eficiente. Las optimizaciones del

árbol sintáctico en tiempo de compilación incluyen simplificación de expresiones constantes,

propagación del contexto y optimización en trozos sueltos de código. Sin embargo, las fases de

compilación y ejecución pueden anidarse: un bloque BEGIN se ejecuta en tiempo de

compilación, mientras que una función eval inicia una compilación durante una ejecución.

Ambas operaciones están implícitas en otras -de forma notable, la cláusula use que carga

bibliotecas, conocidas en Perl como módulos, implica un bloque BEGIN.

Perl es un lenguaje dinámico y tiene una gramática sensible al contexto que puede quedar

afectada por el código ejecutado durante una fase de ejecución intermedia (Ver ejemplos. ). Por

eso Perl no puede ser parseado mediante una aplicación directa de analizadores

léxicos/parseador Lex/Yacc. En cambio, el intérprete implementa su propio analizador léxico,

que coordinado con un parseador modificado GNU bison resuelve las ambigüedades del

lenguaje. Se ha dicho que "sólo perl puede parsear Perl", queriendo decir que sólo el intérprete

Perl(perl) puede parsear el lenguaje Perl (Perl). La razón de esto se atestigua por las

persistentes imperfecciones de otros programas que emprenden la tarea de parsear Perl, como

los analizadores de código y los auto-indentadores, que tienen que vérselas no sólo con las

muchas formas de expresar inequívocamente construcciones sintácticas, sino también con el

hecho de que también Perl no puede, en general, ser parseado sin antes ser ejecutado.

El mantenimiento del intérprete Perl, a lo largo de los años, se ha vuelto cada vez más difícil. El

núcleo ha estado en continuo desarrollo desde 1994. El código ha sido optimizado

enrendimiento a expensas de la simplicidad, claridad y unas interfaces internas más fuertes.

Nuevas características han sido añadidas, manteniendo todavía, compatibilidad virtualmente

completa hacia atrás con las primeras versiones. El tamaño y la complejidad del intérprete son

una barrera para los desarrolladores que desean trabajar en él.

Perl es distribuido con unos 120.000 test funcionales. Éstos se ejecutan como parte del proceso

normal de construcción y comprueban extensamente al intérprete y a sus módulos principales.

Los desarrolladores Perl confían en los test funcionales para asegurarse que los cambios en el

intérprete no introducen errores; recíprocamente, los usuarios Perl que vean al intérprete pasar

los test funcionales en su sistema pueden tener un alto grado de confianza de que está

funcionando adecuadamente.

Page 16: SOFTWARE DE DESARROLLO Características del …admin-info.galeon.com/desarrollo.pdf · Java proporciona una colección de clases para su uso en aplicaciones de red, ... para la parte

No hay una especificación o estándar escrito para el lenguaje Perl y no hay planes de crear uno

para la versión actual de Perl. Siempre ha existido sólo una implementación del intérprete. Este

intérprete, junto con los test funcionales, forman la especificación de facto del lenguaje.

Disponibilidad

Perl es software libre y está licenciado bajo la Licencia Artística y la GNU General Public

License. Existen distribuciones disponibles para la mayoría de sistemas operativos. Está

especialmente extendido en Unix y en sistemas similares, pero ha sido portado a las plataformas

más modernas (y otras más obsoletas). Con sólo seis excepciones confirmadas, puede ser

compilado desde el código fuente en todos los Unix, compatibles POSIX o cualquier otra

plataforma Unix compatible. Sin embargo, esto no es normalmente necesario, porque Perl está

incluido por defecto en la instalación de los sistemas operativos más populares.4

Debido a los cambios especiales necesarios para soportar al Mac OS Classic, existe una

adaptación especial llamada MacPerl.

GNU/Linux

Perl está instalado por defecto en las distribuciones más populares

de GNU/Linux incluyendo Gentoo, Mandriva, Debian, RedHat y SUSE.

Windows

Los usuarios de Microsoft Windows normalmente instalan una distribución binaria de

Perl.6 Compilar Perl desde el fuente bajo Windows es posible, pero la mayoría de las

instalaciones no disponen del necesario compilador de C.

La capa de emulación Cygwin proporciona otra forma de correr Perl bajo Windows. Cygwin

proporciona en entorno parecido al Unix en Windows que incluye gcc, por lo que compilar Perl

desde el código es una opción accesible para los usuarios que prefieren esta opción.

En Junio de 2006, win32.perl.org fue lanzado por Adam Kennedy en nombre de la Fundación

Perl. Es una comunidad web "para todo lo relacionado con Windows y Perl"