miércoles, 22 de junio de 2016

Lenguajes de Programacion: C++

C++ es un lenguaje imperativo orientado a objetos derivado del C. En realidad un

superconjunto de C, que nació para añadirle cualidades y características de las que

carecía. El resultado es que como su ancestro, sigue muy ligado al hardware subyacente,

manteniendo una considerable potencia para programación a bajo nivel, pero se la han

añadido elementos que le permiten también un estilo de programación con alto nivel de

abstracción. Estrictamente hablando, C no es un subconjunto de C++; de hecho es posible

escribir código C que es ilegal en C++. Pero a efectos prácticos, dado el esfuerzo de

compatibilidad desplegado en su diseño, puede considerarse que C++ es una extensión del

C clásico. La definición "oficial" del lenguaje nos dice que C++ es un lenguaje de propósito

general basado en el C, al que se han añadido nuevos tipos de datos, clases, plantillas,

mecanismo de excepciones, sistema de espacios de nombres, funciones inline, sobrecarga

de operadores, referencias, operadores para manejo de memoria persistente, y algunas

utilidades adicionales de librería (en realidad la librería Estándar C es un subconjunto de la

librería C++)

El lenguaje C++ se comenzó a desarrollar en 1980. Su autor fue Bjarne Stroustrup.

Qué se puede hacer con C++


¿Qué clase de programas y aplicaciones se pueden crear usando C y C++? La respuesta

es muy sencilla: TODOS. Tanto C como C++ son lenguajes de programación de propósito

general. Todo puede programarse con ellos, desde sistemas operativos y compiladores

hasta aplicaciones de bases de datos y procesadores de texto, pasando por juegos,

aplicaciones a medida, etc.

Un ejemplo de código



Este es el clásico programa hola mundo, la idea está centrada en el nacimiento de un

nuevo programa de manos de su creador.

#include <iostream>
 
using namespace std;
 
int main()
{
   cout << "Hola mundo" << endl;
   return 0;
}

¿Qué se ha hecho en C o en C++?


Sistemas Operativos y otros programas


Así como Unix el antecesor de este sistema operativo, GNU/Linux -a menudo denominado

tan sólo como Linux, que es el nombre del núcleo del SO- hace uso de un buen número de

lenguajes de programación en sus distintos componentes. ¿Cuáles son esos lenguajes?

Cada tipo de recurso parece tener ciertas preferencias, y es que hay lenguajes más

adecuados para unas cosas. Obviamente el lenguaje de programación C sigue siendo la

base, pero hay mucho más implicados.

Kernel y drivers de dispositivos: Tanto los drivers como el kernel funcionan en un nivel

realmente bajo de operaciones en el ordenador. Para escribir el kernel del sistema

operativo y acceder a las propiedades del hardware tales como los ciclos de la memoria,

buses de entrada/salida, etc., se necesita un lenguaje que pueda comunicarse con el

hardware con potencia. El kernel Linux hace uso del lenguaje C (aunque en realidad no se

trate de un lenguaje de bajo nivel) con una pequeña parte en lenguaje ensamblador.

Librerías y utilidades: Las librerías y utilidades básicas del sistema tales como mkdir,

chmod, chown, head, tail, chroot, uptime, users también están escritas en lenguaje C.

Gestores de paquetes y programas de configuración: Los gestores de paquetes tales como

yum, apt, dpkg, etcétera, también están escritos en C, que como veis es la estrella absoluta

de los componentes "base" de un sistema GNU/Linux.

Entornos de Escritorio y gestores de ventanas: La mayoría de gente usa un entorno de

escritorio, y es que a día de hoy poco queda sólo en interfaz de línea de comandos. Los

gestores de ventanas tales como metacity, kwin están desarrollados en C y requieren gcc

para ser compilados. El entorno de escritorio, iconos, ventanas, barras de herramientas,

etc, están basados en librerías específicas (Qt para KDE, GTK+ para GNOME) y hacen uso

del lenguaje mayoritario, C.

Aplicaciones gráficas de usuario: Este es el punto donde entran en juego una gran cantidad

de lenguajes de programación, dado que básicamente es la capa más alta. Tenemos una

gran variedad: C, Python, Java, Perl y otros. Hay librerías GTK+, Tcl/Tk, Qt que son un

frontend gráfico a tareas que corren por detrás en línea de comando.

El Sistema operativo Windows está hecho básicamente en C, C tiene la ventaja de que

puede escalarse con ensamblador, lo cual es buena opción para optimizar ciertos módulos.

Las versiones anteriores de Windows estaban hechas en Basic (Basic NO visual Basic) que

es un lenguaje de bajo nivel de hace unos cuantos años ya. Es un lenguaje que se usa

mucho en la electrónica aun.

Actualmente Windows 7 Mac os x Leopard y Linux usan mas de una Tecnología ya se

empezó a usar c# c++ y hasta java en el caso de linux se usa phytom c y tbn

ensambladores y demás cosas, y Mac siempre basado en Unix con compilación en C++

para los últimos Sistemas Operativos.

Información obtenida de http://www.ecured.cu/C%2B%2B


C++ en el programa Code::Blocks


Tutorial Introductorio al C++ con el programa Code::Blocks




martes, 21 de junio de 2016

Lenguajes de Programacion: Perl

Perl (Practical Extraction and Report Language) es un lenguaje de programación

desarrollado a finales de los años 80 por Larry Wall a partir otras herramientas de UNIX

como son: ed,grep,awk,c-shell, para la administración de tareas propias de sistemas UNIX.

Es un lenguaje de script de tipo BCPL (como TCL o PHP), muy semejante al AWK (de

hecho está basado en él), de tipo estructurado con trazas de orientación a objetos (no

completamente soportado de forma directa), que permite el desarrollo rápido de

aplicaciones y herramientas especialmente orientadas al tratamiento de textos y archivos,

aunque actualmente también se utiliza incluso para entornos graficos, en combinación con

sistemas como Perl/TK o GTK.

Larry Wall comenzó a trabajar en Perl en 1987 mientras trabajaba como programador en

Unisys y anunció la versión 1.0 en el grupo de noticias comp.sources.misc el 18 de

diciembre de 1987.

Características


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.

No establece ninguna filosofía de programación concreta. No se puede decir que sea

orientado a objetos, modular o estructurado aunque soporta directamente todos estos

paradigmas y su punto fuerte son las labores de procesamiento de textos y archivos.

No es ni un compilador ni un intérprete, esta en un punto intermedio, cuando mandamos a

ejecutar un programa en Perl, se compila el código fuente a un código intermedio en

memoria que se optimiza como si se fuera a elaborar un programa ejecutable pero es

ejecutado por un motor, como si se tratase de un interprete.

Lenguaje de programación basado en scripts a casi cualquier plataforma. Es muy utilizado

para escribir CGIs.

Lenguaje optimizado para el escaneo de texto arbitrario de ficheros. Es también un buen

lenguaje para tareas de administración de sistemas. Es un lenguaje con intención de ser

práctico en lugar de bonito. Satisface las tres virtudes del programador: flojera, impaciencia

y petulancia.

Básicamente, es un lenguaje que se ha intentado que sea lo más natural posible, lo que

conlleva que en ocasiones nos encontremos estructuras poco habituales en un lenguaje de

este tipo:

print "hola EcuRed" if $saludo == 1;

Destaca también el uso de variables especiales, muy habituales en los lenguajes de tipo

script en los sistemas de tipo Unix. Estas variables permiten realizar una serie de

operaciones sobre los datos y los archivos que aportan a PERL una flexibilidad y potencia

enormes.

Además de variables que podemos encontrar en otros lenguajes como @ARGV (indica los

parámetros con los que se ha llamado al programa) o %ENV (indica las variables de

entorno de la aplicación), podemos utilizar también variables como $_ (que representa el

último dato que llegó por la entrada estandar), o $/, que nos indica si PERL debe enviar el

texto a la salida estandar inmediatamente (o al flujo de salida que le hayamos indicado

previamente).

PERL tiene implementadas las expresiones regulares, (regular expressions), lo que le da

una potencia muy grande en el procesamiento de textos.

Todas las variables son marcadas con un sigilo precedente (sigil). 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.

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

diferentes". Por ejemplo, escalares, arrays y hashes tienen diferente sigilo. Índices de array

y claves hash usan 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.
 

Estructura del lenguaje


Programa ejemplo Perl, el programa canónico "Hola EcuRed" es:

#!/usr/bin/perl print "¡Hola EcuRed!\n";

La primera línea contiene el shebang (par de caracteres que identifica el texto que sigue),

que le indica al sistema operativo dónde encontrar el intérprete de Perl. La segunda

imprime el string¡Hola EcuRed! y un carácter de nueva línea.

El shebang es la forma normal para invocar al intérprete en los sistemas Unix. Los sistemas

Windows pueden seguir utilizándolo o pueden asociar la extensión de archivo .pl con el

intérprete Perl. Algunos editores de texto también usan la línea shebang como una pista

sobre el modo de trabajo en que deben operar. Si el programa es ejecutado por perl y no

invocado por el shell, la línea que empieza por el shebang es parseada para interpretar las

opciones. En otro caso, es ignorada.

Información obtenida de http://www.ecured.cu/Perl



Perl en el programa Notepad++


Tutorial introductorio al Perl en el programa Notepad++  




Lenguajes de Programacion: Pascal

Pascal es un lenguaje de programación desarrollado por el profesor suizo Niklaus Wirth a

finales de los años 60. Su objetivo era crear un lenguaje que facilitara el aprendizaje de la

programación a sus alumnos. Sin embargo con el tiempo su utilización excedió el ámbito

académico para convertirse en una herramienta para la creación de aplicaciones de todo

tipo.

Pascal se caracteriza por ser un lenguaje de programación estructurado fuertemente

tipificado. Esto implica que:

El código esta dividido en porciones fácilmente legibles llamadas funciones o

procedimientos. De esta forma Pascal facilita la utilización de la programación estructurada

en oposición al antiguo estilo de programación monolítica. 

El tipo de dato de todas las variables debe ser declarado previamente para que su uso

quede habilitado.

El nombre de Pascal fue escogido en honor al matemático Blaise Pascal.

Características únicas


A diferencia de lenguajes de programación descendientes de lenguaje de programación C,

Pascal utiliza el símbolo := para la asignación en vez de =. Si bien el segundo es más

conciso, la práctica ha demostrado que muchos usuarios utilizan el símbolo de igualdad

para comparar valores en lugar del comparador de C que es el símbolo ==. Esta sintaxis

conduce a muchos errores o bugs difíciles de rastrear en código C. Dado que Pascal no

permite asignaciones dentro de expresiones y utiliza sintaxis distinta para asignaciones y

comparaciones, no sufre estos errores.

Además sus programas tienen definidas dos partes: declarativa y ejecutiva. En la primera

debe aparecer todo lo que se usará en la segunda, de lo contrario se detecta como

desconocido y evita ciertas incomprensiones como veremos más adelante. En la parte

declarativa se enuncian Unit existentes, procedimientos, funciones, variables, constantes y

nuevos tipos de datos estructurados.

Otra diferencia importante es que en Pascal, el tipo de una variable se fija en su definición;

la asignación a variables de valores de tipo incompatible no están autorizadas (en C, en

cambio, el compilador hace el mejor esfuerzo para dar una interpretación a casi todo tipo de

asignaciones). Esto previene errores comunes donde variables son usadas incorrectamente

porque el tipo es desconocido; y también evita la necesidad de notación húngara, que

vienen a ser prefijos que se añaden a los nombres de las variables y que indican su tipo.

Implementaciones


Las primeras versiones del compilador de Pascal, entre ellas la más distribuida fue UCSD

Pascal, traducían el lenguaje en código para una Máquina virtual llamada máquina-P. La

gran ventaja de este enfoque es que para tener un compilador de Pascal en una nueva

arquitectura de máquina solo hacía falta reimplementar la máquina-P. Como consecuencia

de esto, solo una pequeña parte del intérprete tenía que ser reescrita hacia muchas

arquitecturas.

En los años 1980, Anders Hejlsberg escribió el compilador Blue Label Pascal para la

Nascom-2. Más tarde fue a trabajar para Borland y reescribió su compilador que se

convirtió en Turbo Pascal para la IBM PC. Este nuevo compilador se vendió por $49, un

precio orientado a la distribución masiva.

El económico compilador de Borland tuvo una larga influencia en la comunidad de Pascal

que comenzó a utilizar principalmente en el IBM PC. En busca de un lenguaje estructurado

muchos aficionados al PC reemplazaron el BASIC por este producto. Dado que Turbo

Pascal, solo estaba disponible para una arquitectura, traducía directamente hacia el código

máquina del Intel 8088, logrando construir programas que se ejecutaban mucho más

rápidamente que los producidos en los esquemas interpretados.

Durante los años 1990, estuvo disponible la tecnología para construir compiladores que

pudieran producir código para diferentes arquitecturas de hardware. Esto permitió que los

compiladores de Pascal tradujeran directamente al código de la arquitectura en que

corrieran.

Con Turbo Pascal versión 5.5, Borland, agregó Programación orientada a objetos a

Pascal.

Sin embargo, Borland después decidió mejorar esa extensión del lenguaje introduciendo su

producto Delphi, diseñado a partir de estándar Object Pascal propuesto por Apple como

base. Borland también lo llamó Object Pascal en las primeras versiones, pero cambió el

nombre a lenguaje de programación Delphi en sus últimas versiones.

Compiladores disponibles públicamente


Varios compiladores de Pascal están disponibles para el uso del público en general:

Epox

Compilador GNU Pascal (GPC), escrito en C, basado en GNU Compiler Collection (GCC).

Se distribuye bajo licencia GPL.

Free Pascal está escrito en Pascal (el compilador está creado usando Free Pascal), es un

compilador estable y potente. También distribuido libremente bajo la licencia GPL. Este

sistema permite mezclar código Turbo Pascal con código Delphi, y soporta muchas

plataformas y sistemas operativos.

Turbo Pascal fue el compilador Pascal dominante para PCs durante los Años 1980 y hasta

principios de los Años 1990, muy popular debido a sus magníficas extensiones y tiempos

de compilación sumamente cortos. Actualmente, versiones viejas de Turbo Pascal (hasta la

7.0) están disponibles para descargarlo gratuito desde el sitio de Borland (es necesario

registrarse).

Delphi es un producto tipo RAD (Rapid Application Development) de Borland. Utiliza el

lenguaje de programación Delphi, descendiente de Pascal, para crear aplicaciones para la

plataforma Windows. Las últimas versiones soportan compilación en la plataforma .NET.

Kylix es la versión más nueva de Borland reiterando la rama de Pascal de sus productos.

Es descendiente de Delphi, con soporte para el sistema operativo Linux y una librería de

objetos mejorada (CLX). El compilador y el IDE están disponibles para uso no comercial.

Actualmente este proyecto está descontinuado.

Lazarus es un clon de Delphi, basado en Free Pascal es Software libre.

Información obtenida de  http://www.ecured.cu/Pascal


Imagen del programa Free Pascal


Tutorial introductorio al Free Pascal








 




  



miércoles, 8 de junio de 2016

Categorias de Lenguajes de Programacion

Los lenguajes de programación pueden, en líneas generales, dividirse en dos categorías:

lenguajes interpretados

lenguajes compilados

 

Lenguaje interpretado

 
Un lenguaje de programación es, por definición, diferente al lenguaje máquina. Por lo tanto,
 
debe traducirse para que el procesador pueda comprenderlo. Un programa escrito en un
 
lenguaje interpretado requiere de un programa auxiliar (el intérprete), que traduce los
 
comandos de los programas según sea necesario.

Lenguaje compilado


Un programa escrito en un lenguaje "compilado" se traduce a través de un programa

anexo llamado compilador que, a su vez, crea un nuevo archivo independiente que no

necesita ningún otro programa para ejecutarse a sí mismo. Este archivo se llama

ejecutable.
 
Un programa escrito en un lenguaje compilado posee la ventaja de no necesitar un
 
programa anexo para ser ejecutado una vez que ha sido compilado. Además, como sólo es
 
necesaria una traducción, la ejecución se vuelve más rápida.
 
Sin embargo, no es tan flexible como un programa escrito en lenguaje interpretado, ya que
 
cada modificación del archivo fuente (el archivo comprensible para los seres humanos: el
 
archivo a compilar) requiere de la compilación del programa para aplicar los cambios.
 
Por otra parte, un programa compilado tiene la ventaja de garantizar la seguridad del
 
código fuente. En efecto, el lenguaje interpretado, al ser directamente un lenguaje legible,
 
hace que cualquier persona pueda conocer los secretos de fabricación de un programa y,
 
de ese modo, copiar su código o incluso modificarlo. Por lo tanto, existe el riesgo de que los
 
derechos de autor no sean respetados. Por otro lado, ciertas aplicaciones aseguradas
 
necesitan confidencialidad de código para evitar las copias ilegales (transacciones
 
bancarias, pagos en línea, comunicaciones seguras...)
 

Lenguajes intermediarios

 
Algunos lenguajes pertenecen a ambas categorías (LISP, Java, Python...) dado que el
 
programa escrito en estos lenguajes puede, en ciertos casos, sufrir una fase de compilación
 
intermediaria, en un archivo escrito en un lenguaje ininteligible (por lo tanto diferente al
 
archivo fuente ) y no ejecutable (requeriría un interprete). Los applets Java, pequeños
 
programas que a menudo se cargan en páginas web, son archivos compilados que sólo
 
pueden ejecutarse dentro de un navegador web (son archivos con la extensión .class).