jueves, 24 de enero de 2013

Lenguajes de programación con tipos fuertes vs débiles



Tipo débil
Tipo fuerte
Permite que un valor de un tipo pueda ser tratado como de otro tipo
Cualquier intento de llevar una operación sobre el tipo equivocado, causa un error
Permiten un gran número de conversaciones de tipo implícitas. Puede ocultar errores de programación
No permite un gran número de conversaciones
Ejemplo: Javascript
Ejemplo: C
Tipado débil
Tipado fuerte
A=2
B= “2”
Concatenar (A,B) retorna “22”
Sumar (A,B) {retorna 4}
A=2
B= “2”
Concatenar (A,B) { error de tipo}
Sumar (A,B) {error de tipos}
Concatenar (srt (A),(B)) {retorna “22”}
Sumar (A, int (B)) { retorna 4}

Clasificación de lenguajes de programación



1)      Nivel abstracto: según el nivel de abstracción, es decir el nivel de cercanía a la máquina.
a.       Lenguajes de bajo nivel: La programación se realiza teniendo muy en cuenta las características del procesador. Por ejemplo: lenguaje ensamblador.
b.      Lenguajes de nivel medio: Permiten un mayor grado de abstracción pero al mismo tiempo mantienen algunas cualidades de los lenguajes de bajo nivel. Ejemplo: C.
c.       Lenguajes de alto nivel: Más parecidos al lenguaje humano. Manejan conceptos, tipos de datos, etc., de una manera cercana al pensamiento humano ignorante (abstrayéndose) del funcionamiento de la máquina. Ejemplo: Java, Ruby.
Hay quienes sólo consideran a los lenguajes de alto y de bajo nivel, en ese caso, C es considerado de alto nivel.
2)      Propósito: según el tipo de problemas a tratar con ellos.
a.       Lenguajes de propósito general: Aptos para todo tipo de tareas. Ejemplo:  C.
b.      Lenguajes de propósito específico: hechos para un objetivo muy concreto. Ejemplo: Csound (para crear ficheros de audio.
c.       Lenguajes de programación de sistemas: diseñados para realizar sistemas operativos o drivers. Ejemplo: C.
d.      Lenguajes de script: para realizar tareas varias de control y auxiliares. Antiguamente eran los llamados, lenguajes de procesamiento por lotes (batch) o JCL (Job Control Languages). Se subdividen e varias clases (de Shell, de GUI, de programación web, etc.)
3)      Evolución histórica: con el paso del tiempo, se va incrementando el nivel de abstracción, pero en la práctica los de una generación no terminan de sustituir a los de la anterior.
a.    Lenguajes de primera generación (1GL): Código máquina.
b.      Lenguajes de segunda generación (2GL): Lenguajes ensamblados.
c.       Lenguajes de tercera generación (3GL): La mayoría de los lenguajes modernos, diseñador para facilitar la programación a los humanos. Ejemplo: Java.
d.      Lenguajes de cuarta generación (4 GL): diseñados con un propósito concreto, o sea, para abordar un tipo concreto de problemas. Ejemplos: NATURAL.
e.      Lenguajes de quinta generación (5GL): la intención es que el programador establezca el que problema ha de ser resuelto y las condiciones a reunir, y que la máquina lo resuelva. Se usa en inteligencia artificial. Ejemplo: Prolog.
4)      Manera de ejecutarse: Según la manera de ejecutarse.
a.       Lenguajes compiladores: un programa traductor que traduce el código del programa (código fuente) en código máquina (código objeto). Otro programa, el enlazador, unirá los ficheros de código objeto del programa principal con los de las librerías para producir el programa ejecutable. Ejemplo: C.
b.      Lenguajes interpretados: Un programa (interprete), ejecuta las instrucciones del programa de manera directa: ejemplo: Lisp.

También los hay mixtos como Java, que primero pasan por una fase de compilación en la que el código fuente se transforma en “bytecode”, puede ser ejecutado luego en ordenadores con distintas arquitecturas (procesadores) todos que tengan instalados la misma “máquina virtual”.
5)      Manera de abordar la tarea a realizar.
a.       Lenguajes imperativos: Indican como hay que hacer la tarea, es decir, expresan los pasos a realizar. Ejemplo: C.
b.      Lenguajes declarativos: Indican que hay que hacer. Ejemplo: Lisp
6)  Paradigma de programación: El paradigma de programación es el estilo de programación empleado. Algunos lenguajes soportan varios paradigmas, y otros sólo uno. Se puede decir que históricamente han ido apareciendo para facilitar la tarea de programar según el tipo de problema a abordar, o para facilitar el mantenimiento del software, o por otra cuestión similar, por lo que todos corresponden a lenguajes de alto nivel (o nivel medio), estando los lenguajes ensambladores “atados” a la arquitectura de su procesador correspondiente. Los principales son: 
a.       Lenguajes de programación procedural: divide el problema en partes más pequeñas, que serán realizadas por subprogramas. Que se llaman unas a otras para ser ejecutadas. Ejemplo: C y PASCAL.
b.      Lenguajes de programación orientada a objetos: Crean un sistema de clases y objetos siguiendo el ejemplo del mundo real, en el que unos objetos realizan acciones y se comunican con otros objetos. Ejemplos: C++.
c.       Lenguajes de programación funcional: la tarea se realiza evaluando las funciones (como en matemáticas), de manera recursiva. Ejemplo: Lisp.
d.      Lenguajes de programación lógica: la tarea a realizar se expresa empleando lógica formal matemática. Expresa que computar. Ejemplo: Prolog.
7)      Lugar de ejecución: Sistema distribuido según donde se ejecute.
a.       Lenguaje de servidor: Su ejecución es en el servidor. Ejemplo: Ada.
b.      Lenguaje de cliente: Se ejecutan en el cliente. Ejemplo: JavaScript.
8)      Concurrencia: Según admitan o no concurrencia de procesos.
a.       Lenguajes concurrentes. Ejemplo: Ada.
concurrentes. Ejemplo: C.
9)      Interactividad: según la interactividad del programa con el usuario u otros programas:
a.      Lenguajes orientados a sucesos: El flujo del programa es controlado por la interacción con el usuario o por mensajes de otros programas/sistema operativo, como editores de texto, interfaces gráficos de usuario (GUI) o Kernels. Ejemplo: VisualBasic.
b.      Lenguajes no orientados a sucesos: El flujo del programa no depende de sucesos exteriores, sino que se conoce de antemano, siendo los procesos batch, el ejemplo más claro.
10)   Realización visual: según la realización visual del programa.
a.   Lenguajes de programación visual: El programa se realiza moviendo bloques de construcción de programas (objetos visuales) en un interfaz adecuado para ello. No confundir con entornos de programación visual, como Microsoft Visual Studio. Ejemplo: Mindscript.
b.      Lenguajes de programación textual: el código del programa se realiza escribiéndolo. Ejemplo: C.
11)   Determinismo: Según se pueda predecir o no el siguiente estado del programa a partir del estado actual.
a.     Lenguajes deterministas: Ejemplo, Todos los anteriores.
b.      Lenguajes probabilístico o no determinista: Sirve para explorar grandes espacios de búsqueda, (como gramática),  en la investigación teórica de hipercomputación. Ejemplo: mutt.
12)   Productividad: Se caracterizan por tener virtudes útiles o productivas, u oscuras y enrevesadas.
13)   Lenguajes útiles o productivos: sus virtudes en cuanto a eficiencia, sencillez, claridad, productividad, etc.
14)   Lenguajes esotéricos o exóticos: Inventados con la intención de ser los más raros, oscuros, difíciles, simples y/o retorcidos de los lenguajes, para diversión y entretenimiento de frikis programadores. A veces exploran nuevas ideas de programación. Ejemplo: Branfuck.



domingo, 13 de enero de 2013

Lenguaje de promación Pascal


Pascal


El lenguaje de programación en Pascal, es un lenguaje de alto nivel, y de propósito general, lo cual quiere decir que se puede utilizar para cualquier tipo de propósitos. El lenguaje de programación en Pascal se considera un lenguaje estructurado, sencillo y práctico para todos aquellos usuarios que se inician en el mundo de la programación, ya que fue creado con fines de aprendizaje.
Al ser un Pascal lenguaje estructurado, sirve de base para cualquier otro lenguaje de alto nivel, por estas características es utilizado en las universidades e institutos de educación para inicializar a los futuros ingenieros en sistemas o informática.

El lenguaje de programación Pascal, es idóneo en el estudio y definición de las estructuras de datos, su fácil definición lo hace manejable para un programador novato.
Con la programación en Pascal, se pueden realizar desde programas formales, rutinas, utilitarios, hasta cualquier clase de video juegos.
Programación en Pascal es un lenguaje de sintaxis sencilla, muy estructurado y que comprueba exhaustivamente todo tipo de datos.
El mejor de los propósitos de programación en Pascal es que enseña buenas formas de programación, con lo cual se utiliza mucho en la enseñanza, por todos los motivos nominados anteriormente, por su sencillez, su estructuración y su facilidad de lectura y entendimiento.
Existen varios dialectos locales de programación en Pascal, entre ellas el Turbo Pascal, el cual acepta instrucciones de Pascal.
El lenguaje de programación Pascal es un lenguaje de alto nivel y propósito general (aplicable a una gran cantidad de aplicaciones diversas) desarrollado por el profesor suizo Niklaus Wirth (Instituto tecnológico de Zurich, Suiza). El propósito de Wirth era crear un lenguaje para la enseñanza de técnicas de programación a estudiantes universitarios. Pero a medida que pasaban los años, Pascal se iba convirtiendo en un estándar en el mundo de la programación.
Una versión preliminar del lenguaje apareció en 1968 y el primer compilador totalmente completo apareció a finales de 1970. Desde entonces, muchos compiladores han sido construídos y están disponibles para diferentes máquinas. Durante muchos años, el libro Pascal User Manual and Report , publicado por Wirth y Kathleen Jensen en 1974, ha servido de facto como estándar de todas las versiones.
Las diferentes versiones ofrecían interpretaciones ligeramente diferentes que impedían la compatibilidad entre ellas. Por estas razones, diferentes proyectos se iniciaron para producir una definición estándar del lenguaje y culminaron en dos estándar: uno de la Internacional Standard Organization (ISO) en 1982 y otro por un comité conjunto del American National Standards Institute (ANSI) y del Institute of Electrical and Electronics Engineers (IEEE). Estas dos versiones o definiciones se conocen como ISO Pascal y ANSI/IEEE Pascal, (free Pascal es otra versión)  y difieren en algunos aspectos no especialmente significativos. Sin embargo, una versión no estándar se ha popularizado considerablemente: Turbo Pascal (marca registrada por Borland International, Inc.). Esta versión ha contribuido en gran medida a la popularización del lenguaje Pascal.

C

Lenguaje de programación C


El lenguaje C es fruto de un lenguaje de programación anterior, el lenguaje B, desarrollado por Ken Thompson, en los Laboratorios Bell en 1970, con la idea de recodificar el sistema operativo UNIX que, hasta esa fecha, se programaba directamente en ensamblador, con el inconveniente de estar vinculado a máquinas concretas (según el juego de instrucciones de cada máquina). Por tanto, se hacía necesario un lenguaje que permitiese al programador abstraerse de la capa hardware y conseguir una mayor portabilidad del código, algo que se realizó en B (basándose en el BCPL de Martin Richard de 1967).

Poco más tarde, también en los Laboratorios Bell, Dennis Ritchie se pone a trabajar en el diseño de un nuevo lenguaje de programación basado en el lenguaje B de Ken Thompson y al que aportó tipos y estructuras de datos que consiguiesen clarificar la programación y obtener un lenguaje mucho más eficiente, así nació el lenguaje de programación C. Ritchie diseñó, desde 1970 a 1972 junto a Brian Kernighan, un lenguaje que permitía realizar una programación estructurada en la que se podían economizar las expresiones a usar y con el que los desarrolladores podrían contar con un buen conjunto de operadores y tipos de datos para programar tanto en alto como en bajo nivel de manera simultánea. Entre sus características:
§  Núcleo de lenguaje simple que incluye funciones matemáticas y de manejo de archivos proporcionadas por bibliotecas
§  Lenguaje flexible que permitía programar de manera estructurada y no estructurada
§  Inclusión de un sistema de tipos que impedía la realización de operaciones sin sentido
§  Acceso a memoria de bajo nivel mediante el uso de punteros
§  Conjunto reducido de palabras reservadas
§  Paso de parámetros a funciones por valor
§  Tipos de datos agregados (struct) que permitían combinar, bajo un mismo tipo, datos de tipos distintos y manejarlos como uno solo.

El lenguaje C ofrecía diversos tipos de datos: "CHAR" (carácter), "INT" (enteros), "FLOAT" (números reales en precisión simple), y "DOUBLE" (números reales en precisión doble) a los que posteriormente se añadieron los tipos "SHORT" (números enteros de tamaño menor a un INT), "LONG" (números enteros de tamaño mayor a un INT), "UNSIGNED" (Enteros sin signo), y "ENUMERACIONES" que junto a las estructuras, las uniones y las tablas y matrices componían un variado juego de tipos de datos con los que abordar múltiples problemas.
El lenguaje C se hizo muy popular en los años 80 puesto que comenzó a desplazar a BASIC, los compiladores se hicieron muy populares y, además, de empezarse a usar en los IBM PC. En paralelo, Bjarne Stroustrup (que también trabajaba en los Laboratorios Bell) desarrolla C++, complementando C con clases y funciones virtuales, tipos genéricos y expresiones de ADA y un motor de objetos que permitía combinar la programación imperativa de C con la programación orientada a objetos.
En 1983, el Instituto Nacional Estadounidense de Estándares (ANSI) organizó un comité, X3j11, para establecer una especificación estándar de C que, tras un proceso largo, completó el estándar en 1989 (ANSI X3.159-1989), el C89. En 1990, la Organización Internacional para la Estandarización (ISO) tomó el C89 en el estándar ISO/IEC 9899:1990, conocido por C90 (el C 3.0, C++ 5.5 son otras versiones). El lenguaje C permaneció estable, mientras que C++ siguió evolucionando, hasta que en 1999 volvió a revisarse con la ISO 9899:1999.
El Lenguaje C se ha utilizado mucho para para la programación en sistemas UNIX aunque también se ha utilizado en el desarrollo de sistemas operativos como Windows o GNU/Linux y en el desarrollo de aplicaciones de escritorio como GIMP. Tampoco es raro verlo en sistemas empotrados (control de procesos industriales, ascensores, sistemas de monitorización, etc) o como base de kits de desarrollo de micro controladores (abstrayendo al usuario de la programación en ensamblador). Además, como decía al inicio, es un lenguaje muy especial dentro del mundo de la ingeniería puesto que se sigue enseñando en los primeros cursos de estos estudios y nunca ha dejado de ser utilizado.

COBOL

COBOL



El Cobol (del inglés: Common Business Oriented Language, o Lenguaje Común Orientado a Negocios) se invento en 1959 por el grupo de la armada de los Estados Unidos formado por Grace Hopper  William Selden, Gertrude Tierney, Howard Bromberg, Howard Discount, Vernon Reeves y Jean E. Sammet. Nació con el objetivo de ser un lenguaje de programación versátil, que pudiese ser usado en cualquier computador.
En los años 60 era muy difícil que el software creado para una máquina concreta sirviese para otra diferente. Porque la mayoría de estas computadoras eran incompatibles entre sí. Con el Cobol se quería conseguir este lenguaje de programación que fue compatible con los principales modelos de computadoras.
Se quería además conseguir con este nuevo lenguaje de programación que estuviese destinado a los negocios, concretamente a lo que conocemos como informática de gestión. Así nació el Cobol, como un lenguaje de programación compatible con la mayoría de las computadoras y destinado principalmente a la gestión.
Otra de las virtudes que tiene el Cobol es su sintaxis. Su código es muy sencillo basado en el idioma inglés. El Cobol es actualmente uno de los lenguajes de programación más usados. Un ejemplo claro lo tenemos en la gran demanda de programadores de Cobol que tuvo lugar para la adaptaciones de aplicaciones informáticas al año 2000 y al Euro.
Por estas razones podemos decir que el Cobol es un lenguaje de programación que nada tiene que enviar a otros como el Visual Basic, Delphi, etc. El Cobol cuenta con entornos de programación gráficos, nos permite hacer aplicaciones con una interfaz gráfica con SQL incrustada para que podamos tener acceso a la mayoría de las bases de datos SQL del mercado. El Cobol es ideal para el desarrollo de aplicaciones que soporten un gran número de usuarios.

Visual Basic


Visual Basic



Es un lenguaje de programación desarrollado por los estadounidenses John Kemeny y Thomas Kurtz en el Dartmouth College. La versión original del lenguaje Basic fue creada en el año1964, ganándose una enorme popularidad gracias sobre todo a dos implementaciones, Tiny BASIC y Microsoft BASIC, que convirtieron a este lenguaje en la primera lengua franca de los microordenadores. Otras importantes implementaciones han sido CBASIC (BASIC Compilado), Integer y Applesoft BASIC (para el Apple II), GW-BASIC (para computadoras personales), Turbo BASIC (de Borland) y Microsoft QuickBASIC. El lenguaje ha cambiado en el transcurso de los años pues nació con el objetivo de servir como lenguaje para aquellas personas que deseaban introducirse por primera vez en el mundo de la programación, y luego fue sufriendo modificaciones, hasta que en 1978 se estableció el Basic estándar.


Más adelante, en 1987, llegó una de las versiones más populares del lenguaje: QuickBasic0; las primeras versiones eran interpretadas y no estructuradas. Las más recientes son estructuradas, y generalmente compiladas. En esos tiempos, BASIC solía enseñarse a los programadores principiantes porque era “fácil” de utilizar y de comprender, y además porque contiene los mismos conceptos fundamentales que muchos otros lenguajes considerados más “difíciles”, como Pascal, C y COBOL, las cuales a su vez, eran muy populares entre los programadores, mientras que había una especie de desprecio hacia Basic, por tratarse de un lenguaje “para principiantes”.
En contraste, hace poco más de 14 años, el proceso de construir una sencilla aplicación basada en Microsoft Windows solía ser algo complicado, difícil y largo. Ese año, Visual Basic 1.0 vio la luz, y revolucionó el desarrollo de aplicaciones para Windows, especialmente por su facilidad y por la rapidez con la que permite crearlas. Si bien muchas personas hicieron de Visual Basic una realidad, un empelado de Microsoft, llamado Alan Cooper, fue considerado el verdadero padre del lenguaje. Hoy con más de 14 años del lenguaje en el mercado, Alan es considerado una eminencia.
Inicialmente, Visual Basic fue pensado para ser un producto muy táctico. Microsoft tenía varias iniciativas en el desarrollo que lideraba Visual Basic 1.0, todas fueron pensadas para convertirse en las herramientas de programación a largo plazo, estratégicas, gráficas y orientadas a objetos. Como siempre ocurre con los productos en su versión 1.0, el equipo de Visual Basic 1.0 fue forzado a cortar características de su larga lista de ideas para entregar realmente el producto al mercado. Consecuentemente, la primera versión incluyó poco más que la tecnología Embedded Basic que había sido desarrollada originalmente en Microsoft QuickBasic 4.0 (el código “p” y compilador de Microsoft) y una herramienta compiladora de diseño simple originalmente diseñada para Windows 3.0 pero que nunca fue utilizada para tal fin. Aproximadamente 12 meses después, el desarrollo y mejora de la versión 1.0 comenzó, Microsoft sacó al mercado una herramienta desarrolladora para cubrir la exigencia en ese momento del mercado cuyo nombre en clave fue “Thunder”(Trueno).


Desde este inicio bastante desfavorable vino un resultado igualmente difícil de comprender: un impacto en la industria informática tan profundo que cambió para siempre el curso del desarrollo del software y creó una explosión en el mercado de las aplicaciones de Windows. Cuando solamente un pequeño y selecto grupo de personas, era capaz de desarrollar aplicaciones para Windows, Visual Basic 1.0 representó un cambio gigantesco en el diseño de aplicaciones.
Innegablemente radical en su puesta en práctica, implementación y capacidades, Visual Basic 1.0 se propagó a través de la comunidad en cuestión de pocos meses. Poco después del “shock” inicial de fiebre por Visual Basic, un pequeño pero fuerte grupo de seguidores comenzó a transformar las bibliotecas de código que tenían con sus características, métodos y  eventos, y a exponerlos como componentes de Visual Basic llamados VBXs, o los controles personalizados. Después de poco tiempo, la producción de estos componentes reutilizables creció de una comunidad especializada a una industria que crecía de vendedores de controles, y ayudó a Visual Basic a pasar de ser un logro de software a convertirse en un descubrimiento tecnológico.


A partir de la versión 3, ya se incluían herramientas para el acceso a datos y una interfaz gráfica más cómoda e intuitiva. Después llego la versión 4, que podía compilar ejecutables tanto de 16 bits como de 32; y, finalmente, el exilio a los 32 bits arribo con las versiones 5 y 6. Actualmente, Visual Basic combina la sencillez de Basic con el poder de un lenguaje de programación visual que permite desarrollar robustas aplicaciones de 32 bits. Visual Basic ya no es solo un lenguaje para los más novatos, sino que representa una excelente alternativa para programadores de todos los niveles.


Cuando aún no había pasado un año de su salida inicial al mercado ,Visual Basic ya había evolucionado rápidamente a un kit desarrollador altamente estratégico. Microsoft había comenzado a utilizar Visual Basic internamente en algunos de sus propios proyectos que estaba desarrollando. A medida que la demanda de Visual Basic aumentaba, quedaba claro que los desarrolladores requerirían un  Visual Basic mejor y más capacitado. Para tratar a esta necesidad creciente, Microsoft anunció la disponibilidad de Visual Basic 2.0 en noviembre de 1992. La segunda versión de Visual Basic, distribuida en la edición estándar y profesional, proveía a los desarrolladores un funcionamiento perceptiblemente mejorado y mayor capacidad para crear aplicaciones de tamaño mayor y más sofisticadas. Incluía también una ayuda para mejorar la puesta a punto y depuración, proveía de la capacidad de conectarse a bases de datos mediante ODBC, y nuevas y productivas herramientas, por ejemplo,  la ventana de propiedades, sintaxis del código en color, y completo soporte para un Interfaz de Múltiples Documentos (MDI).