Lenguajes de Scripting – Artículo

Autores: J. Arcos, J. Agredo

Universidad del Cauca

Facultad de ingeniería electrónica y comunicaciones

Programa ingeniería de sistemas

Abstract

Programming languages are tools used to develop applications of all kinds. There are different types of languages, among them are scripting languages which are mostly used in the Web environment, servers. Each type of language has its own characteristics that make have strengths and weaknesses as the area where they are, not all languages have the same ability to perform in all environments in which they are used.

1. Introducción:

Un lenguaje de programación es un lenguaje formal diseñado para realizar procesos que pueden ser llevados a cabo por máquinas como las computadoras. 

Los lenguajes de programación, son herramientas que se utilizan para desarrollo de aplicaciones de todo tipo. Existen diferentes tipos de lenguajes, entre ellos están los lenguajes de scripting los cuales se utilizan más que todo en el ambiente de páginas web, servidores. 

En este documento abordaremos las características principales de algunos lenguajes de programación scripting, un tipo  lenguaje de programación para el que la mayoría de sus implementaciones ejecuta las instrucciones directamente, sin una previa compilación del programa a instrucciones en lenguaje máquina. El intérprete ejecuta el programa directamente, traduciendo cada sentencia en una secuencia de una o más subrutinas ya compiladas en código máquina.  [5]

2. Trabajos relacionados

 nuevas tendencias del software[10], desarrollo web[11], comparación de lenguajes de programacion de aplicaciones web[12], desarrollo de paginas web[13]

3. Características

Cada tipo de lenguaje contiene sus propias características que hacen que tengan fortalezas y debilidades según sea el ámbito en el cual se encuentren, no todos los lenguajes tienen la misma capacidad de desempeño en todos los entornos en los que se utilizan. 

Dependiendo del problema a solucionar, de las necesidades de rendimiento a satisfacer y de la existencia o no, de módulos y librerías ya hechas, dependencias necesarias, resulta necesario hacer la elección de un determinado lenguaje.

3.1  Ruby

El lenguaje Ruby es un lenguaje de scripting, interpretado, fue creado por Yukihiro Matsumoto en el Japón, en el año de 1995, ya que es un lenguaje totalmente orientado a objetos todo en Ruby es un objeto, comparte características similares a smalltalk. Según el creador este lenguaje está diseñado para  la productividad y la diversión del desarrollador, siguiendo los principios de una buena interfaz de usuario.

Este lenguaje posee la característica de que es libre, con lo cual puede ser modificado, copiado y distribuido. A diferencia de otros lenguajes de programación orientados a objetos, Ruby se caracteriza por la herencia simple, tiene su propia convención de declaración de variables [1].  

Según el índice TIOBE que es el encargado de medir el crecimiento de los lenguajes de programación, el lenguaje Ruby cada vez tiene un mayor crecimiento y aceptación por parte de los usuarios, lo que hace que mantenga en constante evolución. Este lenguaje es considerado muy flexible debido a que permite al usuario alterar libremente  las partes esenciales de Ruby, con lo cual puede ser adaptado a las necesidades de cada usuario.

Ruby es muy eficiente en su funcionamiento, ya que posee manejo de hilos independiente del sistema operativo, dando soporte multihilo en todas las plataformas en la que puede ser ejecutado Ruby, sin tener en cuenta si el sistema operativo lo soporta o no [2].

3.2  PHP

Es un lenguaje de scripting, interpretado, fue creado por Rasmus Lerdorf en 1995, al inicio solo fue pensado y creado como una serie de scripts de Perl para tener un control de los accesos online, al principio tuvo el nombre de PHP/FI. Al paso del tiempo Rasmus fue creando un código que fuera capaz mantener una comunicación con bases de datos, lo que ayudó a la creación de páginas web que no fueran estáticas, sino que hubiera una comunicación por parte del usuario( páginas dinámicas) [3].

La evolución de este lenguaje se dio gracias a que Rasmus tomó la decisión de liberar el código, para que fuera utilizado por las personas que lo desearan interactuar con él,  esto conllevo a que se pudieran corregir errores, mejorar el código lo cual ayudó a que hubiera un crecimiento grande en este lenguaje [3].

En el transcurso del tiempo hubieron avances en su estructura, lo cual permitió que se generan las diferentes versiones por las que ha venido evolucionando php, este lenguaje al igual que otros también posee estructuras de control, declaración de funciones.  Hay que tener en cuenta que para ejecutar un programa realizado en este lenguaje existe la necesidad de tener un servidor, ya que este código debe ser ejecutado en uno. Este código puede ser utilizado embebido en HTML

3.3  Python

Python es un lenguaje de programación interpretado cuya filosofía hace hincapié en una sintaxis que favorezca un código legible. [5 ]

Es usado con éxito en miles de aplicaciones alrededor del mundo, incluyendo sistemas muy grandes y de misión crítica. [ 6]

Python fue creado a finales de los ochenta  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

Permite la creación de todo tipo de programas incluso sitios web no requiere de compilación es un código interpretado, libre y código fuente abierto. Es un lenguaje de propósito general multiplataforma, orientado a objetos, portable, multiparadigma.

Es un opción más para realizar páginas web dinámicas, tiene el gran beneficio de ser un lenguaje multiplataforma por lo que tener problemas al utilizar una u otra plataforma es mínimo.

3.4  Lua

Lúa fue creado en 1993 por Roberto Ierusalimschy, Luiz Henrique de Figueiredo y Waldemar Celes  este lenguaje es implementado como una biblioteca escrita en c,  lúa a pesar de que se considera interpretado, lo es en gran parte, pero posee un proceso de compilación al igual que otros lenguajes como java. El código compilado de este lenguaje es convertido a código bytecode, esta característica hace que este lenguaje pueda ser multiplataforma, debido a que el código generado (bytecode) es ejecutado en la máquina virtual de lúa [4].

Al ser un lenguaje de extensión no posee el programa principal para poder ejecutarse, como en el caso de c, el lenguaje lua al ser embebido requiere de la ayuda de un cliente anfitrión para su ejecución, como por ejemplo javascript el cual es ejecutado utilizando código HTML.

Al estar implementado como una biblioteca en c lúa puede utilizar funciones de este lenguaje  para abarcar un rango cada vez más amplio de dominios. Al ser un software libre permite que se pueda modificar y personalizar al gusto, este lenguaje de programación es muy usado más que todo en el campo de la programación de juegos, lúa al igual que otros poseen estructuras de control, para regular el flujo de ejecución que se desee al momento de crear el código necesario a ejecutar [4].

3.5  Perl

Es un lenguaje de programación muy utilizado para construir aplicaciones CGI para el web. Perl es un acrónimo de Practical Extracting and Reporting Languaje, que viene a indicar que se trata de un lenguaje de programación muy práctico para extraer información de archivos de texto y generar informes a partir del contenido de los ficheros. 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.

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 y UseModWiki, un motor de Wiki. Muchos sitios web con alto tráfico, como Amazon.com yTicketmaster.com usan Perl extensamente. [ 7 ]

3.6  JavaScript

Abreviado comúnmente JS,  es un lenguaje de programación interpretado. Se define como orientado a objetos, basado en prototipos imperativo, débilmente tipado y dinámico.

Se utiliza principalmente en su forma del lado del cliente, implementado como parte de un  navegador permitiendo mejoras en la interfaz del usuario y páginas web dinámicas. [8]

Cabe mencionar que no solo se usa para aplicaciones web, sino también para aplicaciones de escritorio.

Dado que se puede ejecutar del lado del cliente, puede haber programadores que se valgan de esto para ejecutar scripts con contenido malicioso y sin consentimiento del usuario. Para evitar esto, algunos navegadores incorporan algunas restricciones para evitar que se atente contra la integridad de la información del usuario. [8]  Una de estas restricciones es hacer que los scripts se ejecuten en un sandbox, que permite controlar los recursos proporcionados a los programas “cliente” a ejecutarse [8]

4. Cuadro comparativo

RubyPHPPythonLuaPerlJavaScript
Operadores Aritméticos
Suma+Ej: a+b+Ej: $a+$b+Ej: a+b+Ej: a+b+Ej: $a+$b+Ej: a+b
Resta-Ej: a-b-Ej: $a-$b-Ej: a-b-Ej: a-b-Ej: $a-$b-Ej: a-b
Multiplicación *Ej: a*b*Ej: $a*$b*Ej: a*b*Ej: a*b*Ej: $a*$b*Ej: a*b
División  /Ej: a/b/Ej:c$a/$b/Ej: a/b/Ej: a/b/Ej: $a/$b/Ej: a/b
Módulo%Ej: a%b%Ej: $a%b%Ej: a%b%Ej: a%b+Ej: $a+$b%Ej: a%b
Exponenciación **Ej: a**b**Ej:$a**$b**Ej: a**b%Ej: a^b+Ej: $a+$b**Ej: a**b
Operadores de comparación
igual ==Ej: a==b==Ej:$a==$b==Ej: a==b==Ej: a==b==Ej:$a==$b==Ej: a==b
diferente!=Ej: a!=b!=Ej:$a!=$b!=Ej: a!=b~=Ej: a~=b!=Ej:$a!=$b!=Ej: a!=b
menor que <Ej: a<b<Ej:$a<$b<Ej: a<b<Ej: a<b<Ej:$a<$b<Ej: a<b
mayor que >Ej: a>b>Ej:$a>$b>Ej: a>b>Ej: a>b>Ej:$a>$b>Ej: a>b
menor o igual que <=Ej: a<=b<=Ej:$a<=$b<=Ej: a<=b<=Ej: a<=b<=Ej:$a<=$b<=Ej: a<=b
mayor o igual que>=Ej: a>=b>=Ej:$a>=$b>=Ej: a>=b>=Ej: a>=b>=Ej:$a>=$b>=Ej: a>=b
Operadores lógicos
AndandEj:a and bandEj:$a and $bandEjmTrue and FalseandEj: a and band ó &&Ej$a and $b; $a && b&&Ej:  a && b
OrorEj: a or borEj: $a or $borEjmTrue and FalseorEj: a or bor ó ||$a or $b; $a||$b||Ej:  a || b
Not!Ej: !a!Ej: !$anotEjmr = not True notEj: not a!$ ó $a!$a; not $a!Ej:  !a
RubyPHPPythonLuaPerlJavaScript
Paradigmas Imperativo, funcional, reflexivo, orientado a objetos P.O.OEstructuradaFuncionalmultiparadigma, funcional, imperativa, orientado a objetos (basado en clases), reflexiva, procedural, eventos, genéricaImperativo, orientado a objetos (prototipos) y funcional
MultiplataformaSiSiSiSiSiSi
TipadoDinámico/  fuerte Dinámico/ débilDinámico/ débilDinámico/ fuerte  DinámicoDinámico/ débil
InterpretadoSiSiSiSiSiSi
Licencialibre y fuente abiertalibreLibre y fuente abiertalibre y fuente abiertalibre y fuente abiertaLibre
CostoGratuitoGratuitoGratuitoGratuitoGratuitoGratuito
VentajasCurva de aprendizaje corta, alta demanda en el campo laboral.  Facilidad de aprendizaje, se puede conectar con la mayoría de las bases de datos. SImpleSencillo de aprenderLenguaje de alto nivelPortableAmpliableIncrustableExtensibleRápido, es posible utilizarlo en programación orientada a objetos. Reduce ciclo de programaciónPortableManipula archivos de textoExtensibleCapacidad limitada por razones de seguridadSe ejecuta del lado del clienteSeguro y fiable
DesventajasInterpretado, poca documentación,No es un lenguaje muy conocido a comparación de otros.  Interpretado, necesita de un servidor web, con gran número de solicitudes, baja el desempeño, no soporta totalmente la POO.Es lento, para operaciones críticas se necesitaría otro lenguajeFalta de documentaciónErrores en tiempo de ejecución por falta de tipadoInterpretado, poca comunidad de soporte.Se compila cada vez que se ejecutaNo soporta herenciasCódigo visible por cualquier usuarioEl código debe ser descargado completamente

5. Conclusiones 

·     si se tiene conocimiento de programación en un lenguaje, el aprendizaje de otros lenguajes será muy rápido, ya que posee estructuras similares en sus operadores, declaración de funciones, y algunos en su estructura.

·     A pesar de la diferencia de características que poseen los lenguajes de scripting las cuales los hace más óptimos según el entorno en el que se estén utilizando, tiene algo en común y es que son lenguajes que no poseen un tipo de compilación, lo cual hace que la eficiencia de estos en cuanto a rendimiento sea menor a lenguajes compilados.

·     En la búsqueda de información se pudo notar que existe mucha documentación de algunos lenguajes, debido a la gran cantidad de personas que de alguna u otra forma aporta conocimiento lo cual permite que haya  un rápido aprendizaje y buen manejo de estos.

.     Perl hace hincapié en el respaldo para tareas comunes orientadas a aplicación, teniendo expresiones regulares incorporadas, escaneo de archivos y características de generación de reportes. Python hace hincapié en el respaldo para metodologías comunes en programación como diseño de estructuras de datos y programación orientada a objetos.

6. Bibliografía

[1] http://es.tldp.org/Manuales-LuCAS/doc-guia-usuario-ruby/guia-usuario-ruby.pdf

[2] https://www.paradigmadigital.com/dev/el-indice-tiobe-como-medir-que-lenguajes-de-

programación-son-los-más-usados/

[3] http://administraciondesistemas.pbworks.com/f/Manual_PHP5_Basico.pdf

[4] http://blog.rodrigortiz.com/wp-content/uploads/2011/08/Manual-de-Referencia-de-Lua-5.11.pdf

[5]. http://www.alegsa.com.ar/Dic/lenguaje%20interpretado.php 

[ 6 ].  https://www.python.org/about/quotes/

[7]. http://www.enterate.unam.mx/Articulos/2006/abril/perl.htm 

[8]. http://www.cristinaalcantarilla.com/sandboxing-un-aislamiento-de-procesos/ 

[9]. http://www.palentino.es/blog/el-sandbox-aislamiento-local-web-herramientas/

[10] http://nuevastendsw.blogspot.com.co/2010/03/cuadro-comparativo.html

[11] http://desarrollowebydesarrolloweb.blogspot.com.co/2015/02/tabla-comparativa-de-los-lenguajes-de.html

[12] http://claudiadaw.blogspot.com.co/2012/08/comparacion-de-lenguajes-de.html

[13] http://evoluciondelasaplicacionesweb.blogspot.com.co/2015/02/tabla-comparativa-de-los-lenguajes-de.html

Clasificación de los Lenguajes de Programación

Los lenguajes de programación son conjuntos de símbolos y reglas, los cuales su principal función es crear procesos y software.
Estas funciones lo que hacen es darle instrucción es a la máquina para que esta envié una respuesta

Proceso de Traducción

2016-04-08.png

Lenguajes Ensamblados

Se refiere al lenguaje ensamblador. Constituye la representación más directa del código máquina (0-1).

Aún hoy se utiliza en la programación de handler o manipuladores de dispositivos de hardware.

Características:

  • Posee una cierta dificultad de ser entendido por un ser humano
  • Es difícilmente portable
  • Son generalmente más rápidos
  • Se tiene un control muy preciso de las tareas realizadas por un Microprocesador
  • Se puede controlar el tiempo que tarda una rutina en ejecutarse
  • Es un código estructurado desarrollado sobre un archivo de programación (.ASM)

Lenguaje Ensamblador

Un programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que corresponde al flujo de órdenes ejecutables que pueden ser cargadas en la memoria de un sistema basado en microprocesador.

La instrucción binaria

  • Binario:  10110000 01100001 (Hexadecimal:  0xb061)

La representación en lenguaje ensamblador es más fácil de recordar:

  • MOV al, 061h

Lenguajes Interpretados

Es el lenguaje cuyo código no necesita ser preprocesado mediante un compilador, eso significa que el ordenador es capaz de ejecutar la sucesión de instrucciones dadas por el programador sin necesidad de leer y traducir exhaustivamente todo el código, para hacer esto posible se necesita un intermediario, un programa encargado de traducir cada instrucción escrita con una semántica “humana” a código máquina, el programa es un intérprete, y este además se encarga de automatizar algunas tareas típicas de un programador como declaraciones de variables o dependencias. Entre los principales lenguajes de este tipo están Java, Perl, Python, Ruby, ASP, Bash. Por lo general, los lenguajes interpretados son de alto nivel y están orientados a objetos y eventos, lo que facilita la programación web y la programación cliente/servidor.

Ventajas

La principal es que es independiente de la máquina y del sistema operativo ya que no contiene instrucciones propias de un procesador sino que contiene llamadas a funciones que el intérprete deberá conocer, es decir es multiplataforma.

Desventajas

La velocidad es menor, este es el aspecto más notable, se debe evaluar muy bien al crear software con este tipo de lenguajes, pues se debe equilibrar la portabilidad con la velocidad que se está sacrificando.

Lenguajes de Programación Compilados

Necesitan de un compilador.
Ventajas

  • Rápida ejecución.
  • Independencia del lenguaje y compilador.
  • Mejora la seguridad.
  • El código se compacta en un solo archivo.


Desventajas

  • Poca flexibilidad.
  • Espacio en el disco.
  • Requiere de un compilador.

¿Qué es un Compilador?

Proceso de transformación de un programa fuente a un programa ejecutable

Lenguaje de Programación Preprocesado

Ventajas:

  • Permite ser interpretado en diferentes plataformas y arquitecturas.
  • Generalmente es empleado con el fin de obtener optimización y portabilidad en las aplicaciones.
  • La ejecución es más rápida comparada con el lenguaje interpretado.

Desventajas:

  • La ejecución es más lenta comparada con el lenguaje compilado.
  • Por requerir ser traducido a un lenguaje intermedio y luego al lenguaje de máquina, esto provoca pérdida en la eficiencia en la ejecución.

Proceso de traducción a un lenguaje intermedio de más bajo nivel

Preprocesado.jpg

Lenguajes de uso común

  • Lisp
  • Delphi
  • Java
  • Visual C#
  • Visual J#