Está en la página 1de 10

La teora de los lenguajes de programacin dice que existen 6 tipos de lenguajes (nota: 6 TIPOS, no 6 lenguajes) llamados comunmente "Paradigmas

de Programacin", y se refieren en la forma o el fundamento terico sobre el cual estn soportados. Est divididos en 2 grupos: Imperativos y Declarativos. Los imperativos estn basados en instrucciones (le dices al programa que debe hacer) y los declarativos estn basados en hechos o estatutos (le dices al programa que s lo que quieres de resultado) --- Imperativos *** Programacin Estructurada Paradigma de programacin en el cual el programa est hecho a partir de instrucciones secuenciales de una por una o en bloques (funciones), y as el problema que el programa debe resolver ser solucionado. Se dice que la programacin estructurada es la forma ms primitiva de programar; se us desde mucho antes que la informtica moderna: la maquina de Babbage ya era programada de sta manera. Lenguajes de este tipo: Ensamblador, C, PHP (estructurado), Shell Scripting *** Programacin Orientada a Objetos. Paradigma de programacin en el que el programa se resuelve a base de crear entidades .. Es decir, gira a travs de objetos, los cuales se mandan mensajes entre ellos (mtodos). El problema ya no gira en el "como resolver" el problema sino en "quienes lo resuelven" Lenguajes de este tipo: Smalltalk, Java, C# *** Programacin Visual. Paradigma de programacin basado en flujos de trabajo. Implica representar a travs de iconografa abstracta operaciones concretas dentro del sistema. Sera algo as como: Tengo mi editor que es un lienzo (tipo Paint), dibujo un cuadrado, un rombo, otros dos cuadrados y un cilindro.. como si fuera un diagrama de flujo.. Y ese programa solicitara datos al usuario, validara, realiza dos reglas de negocio y almacena en base de datos los resultados. Lenguajes de este tipo: ninguno conocido (Nota: Visual Basic y Delphi NO SON PROGRAMACION VISUAL) --- Declarativos *** Programacin Lgica: Paradigma de programacin basada en algun concepto de la teora de lgica y conjuntos. Ejemplo: Prolog, que est basado en clusulas de Horn. *** Programacin Funcional: Paradigma de programacin que est basado en algun fundamento matemtico. Ejemplo: Lisp, que est basado en el Calculo Lambda de Alonzo Church (1939) *** Programacin de Dominio Especfico: Cualquier lenguaje no cubierto por los paradigmas anteriores. Se consideran declarativos porque cualquier otra cosa que implique instrucciones u rdenes, estn cubiertos por alguno (o varios) de los paradigmas imperativos. Ejemplos: XML, HTML, SQL.

bueno, creo que la pregunta es medio difcil de responder. supongo que hay miles de miles de lenguajes, cada uno con sus caractersticas, dificultades y propsito, pero hay unos cuantos tipos de lenguajes de programacin. * Los lenguajes estructurados. Lenguajes generalmente antiguos en los que las funciones y los datos estaban separados. Ejemplos: C, Pascal, Fortran, ADA, etc. * Los lenguajes orientados a objetos: Donde los datos y las operaciones donde los datos se abstraen como entidades nicas denominadas objetos. Entre los lenguajes orientados a objetos hay los basados en clases: C++, C#, Java, Objective-C, etc. y los basados en prototipos (me dicen por ah que Python y SmallTalk son de esta onda). * Los lenguajes funcionales: Gofer, Haskell, F# * Los lenguajes lgicos: Prolog etc.

Qu es Java?
Java es toda una tecnologa orientada al desarrollo de software con el cual podemos realizar cualquier tipo de programa. Hoy en da, la tecnologa Java ha cobrado mucha importancia en el mbito de Internet gracias a su plataforma J2EE. Pero Java no se queda ah, ya que en la industria para dispositivos mviles tambin hay una gran acogida para este lenguaje. La tecnologa Java est compuesta bsicamente por 2 elementos: el lenguaje Java y su plataforma. Con plataforma nos referimos a la mquina virtual de Java (Java Virtual Machine). Java tambin es un lenguaje de programacin. En la actualidad es un lenguaje muy extendido y cada vez cobra ms importancia tanto en el mbito de Internet como en la informtica en general. Est desarrollado por la compaa Sun Microsystems con gran dedicacin y siempre enfocado a cubrir las necesidades tecnolgicas ms punteras.

Caractersticas de Java
Una de las principales caractersticas por las que Java se ha hecho muy famoso es que es un lenguaje independiente de la plataforma. Eso quiere decir que si hacemos un programa en Java podr funcionar en cualquier ordenador del mercado. Es una ventaja significativa para los desarrolladores de software, pues antes tenan que hacer un programa para cada sistema operativo, por ejemplo Windows, Linux, Apple, etc. Esto lo consigue porque se ha creado una Mquina de Java para cada sistema que hace de puente entre el sistema operativo y el programa de Java y posibilita que este ltimo se entienda perfectamente.

La independencia de plataforma es una de las razones por las que Java es interesante para Internet, ya que muchas personas deben tener acceso con ordenadores distintos. A su vez, Java est desarrollndose incluso para distintos tipos de dispositivos adems del ordenador como mviles, agendas y en general para cualquier "cosa" que se le ocurra a la industria. Lo que favoreci el crecimiento y difusin del lenguaje Java es su capacidad de que el cdigo funcione sobre cualquier plataforma de software y hardware. Esto significa que nuestro mismo programa escrito para Linux puede ser ejecutado en Windows sin ningn problema. Adems es un lenguaje orientado a objetos que resuelve los problemas en la complejidad de los sistemas, entre otras. Esto agiliza el proceso de desarrollo substancialmente, suponiendo que usted va a lanzar un producto para diversos sistemas operativos(Windows,Linux,AIX,Solaris) y procesadores( Sparc, x86(Intel), HPUX , Alpha )... el realizarlo para cada combinacin posible sera una magna obra de Ingeniera, si utiliza Java puede concentrar sus esfuerzos unicamente en un producto, y debido a que existen diversos JRE: Para Linux, Solaris, Windows y otros sistemas operativos, deja los detalles especficos de Plataforma (JVM) al JRE y concentra sus esfuerzos en un solo producto.

El recolector de basura
Un argumento en contra de lenguajes como C++ es que los programadores se encuentran con la carga aadida de tener que administrar la memoria solicitada dinmicamente de forma manual: En C++, el desarrollador puede asignar memoria en una zona conocida como heap (montculo) para crear cualquier objeto, y posteriormente desalojar el espacio asignado cuando desea borrarlo. Un olvido a la hora de desalojar memoria previamente solicitada puede llevar a una fuga de memoria, ya que el sistema operativo seguir pensando que esa zona de memoria est siendo usada por una aplicacin cuando en realidad no es as. As, un programa mal diseado podra consumir una cantidad desproporcionada de memoria. Adems, si una misma regin de memoria es desalojada dos veces el programa puede volverse inestable y llevar a un eventual cuelgue. No obstante, se debe sealar que C++ tambin permite crear objetos en la pila de llamadas de una funcin o bloque, de forma que se libere la memoria (y se ejecute el destructor del objeto) de forma automtica al finalizar la ejecucin de la funcin o bloque. En Java, este problema potencial es evitado en gran medida por el recolector automtico de basura (o automatic garbage collector). El programador determina cundo se crean los objetos y el entorno en tiempo de ejecucin de Java (Java runtime) es el responsable de gestionar el ciclo de vida de los objetos. El programa, u otros objetos pueden tener localizado un objeto mediante una referencia a ste (que, desde un punto de vista de bajo nivel es una direccin de memoria). Cuando no quedan referencias a un objeto, el recolector de basura de Java borra el objeto, liberando as la memoria que ocupaba previniendo posibles fugas (ejemplo: un objeto creado y nicamente usado dentro de un mtodo slo tiene entidad dentro de ste; al salir del mtodo el objeto es eliminado). An as, es posible que se produzcan fugas de memoria si el cdigo almacena referencias a objetos que ya no son necesarioses decir, pueden an ocurrir, pero en un

nivel conceptual superior. En definitiva, el recolector de basura de Java permite una fcil creacin y eliminacin de objetos, mayor seguridad y puede que ms rpida que en C++. La recoleccin de basura de Java es un proceso prcticamente invisible al desarrollador. Es decir, el programador no tiene conciencia de cundo la recoleccin de basura tendr lugar, ya que sta no tiene necesariamente que guardar relacin con las acciones que realiza el cdigo fuente. Debe tenerse en cuenta que la memoria es slo uno de los muchos recursos que deben ser gestionados.

JAVA

Java es un lenguaje de programacin orientado a objetos, desarrollado por Sun Microsystems a principios de los aos 90. El lenguaje en s mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos ms simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulacin directa de punteros o memoria. Realmente JAVA es un lenuaje bastante sencillo una ves que se "practica" varias veces ... de hecho es el "secreto" de casi todos los lenguajes de programacion es la practica Las aplicaciones Java estn tpicamente compiladas en un bytecode, aunque la compilacin en cdigo mquina nativo tambin es posible. En el tiempo de ejecucin, el bytecode es normalmente interpretado o compilado a cdigo nativo para la ejecucin, aunque la ejecucin directa por hardware del bytecode por un procesador Java tambin es posible.

La implementacin original y de referencia del compilador, la mquina virtual y las bibliotecas de clases de Java fueron desarrollados por Sun Microsystems en 1995. Desde entonces, Sun ha controlado las especificaciones, el desarrollo y evolucin del lenguaje a travs del Java Community Process, si bien otros han desarrollado tambin implementaciones alternativas de estas tecnologas de Sun, algunas incluso bajo licencias de software libre.

Entre diciembre de 2006 y mayo de 2007, Sun Microsystems liber la mayor parte de sus tecnologas Java bajo la licencia GNU GPL, de acuerdo con las especificaciones del Java Community Process, de tal forma que prcticamente todo el Java de Sun es ahora software libre (aunque la biblioteca de clases de Sun que se requiere para ejecutar los programas Java an no lo es).

Java es un lenguaje de programacin orientado a objetos, desarrollado por Sun Microsystems a principios de los aos 90. El lenguaje en s mismo toma mucha de su sintaxis de C y C++, pero tiene un modelo de objetos ms simple y elimina herramientas de bajo nivel, que suelen inducir a muchos errores, como la manipulacin directa de punteros o memoria.

Las aplicaciones Java estn tpicamente compiladas en un bytecode, aunque la compilacin en cdigo mquina nativo tambin es posible. En el tiempo de ejecucin, el bytecode es normalmente interpretado o compilado a cdigo nativo para la ejecucin, aunque la ejecucin directa por hardware del bytecode por un procesador Java tambin es posible.

La implementacin original y de referencia del compilador, la mquina virtual y las bibliotecas de clases de Java fueron desarrollados por Sun Microsystems en 1995. Desde entonces, Sun ha controlado las especificaciones, el desarrollo y evolucin del lenguaje a travs del Java Community Process, si bien otros han desarrollado tambin implementaciones alternativas de estas tecnologas de Sun, algunas incluso bajo licencias de software libre.

Entre diciembre de 2006 y mayo de 2007, Sun Microsystems liber la mayor parte de sus tecnologas Java bajo la licencia GNU GPL, de acuerdo con las especificaciones del Java Community Process, de tal forma que prcticamente todo el Java de Sun es ahora software libre (aunque la biblioteca de clases de Sun que se requiere para ejecutar los programas Java an no lo es).

Historia
[editar] Desarrollo inicial
El desarrollo inicial de C se llev a cabo en los Laboratorios Bell de AT&T entre 1969 y 1973; segn Ritchie, el periodo ms creativo tuvo lugar en 1972. Se le dio el nombre "C" porque muchas de sus caractersticas fueron tomadas de un lenguaje anterior llamado "B". Hay muchas leyendas acerca del origen de C y el sistema operativo con el que est ntimamente relacionado, Unix. Algunas de ellas son:

El desarrollo de C fue el resultado del deseo de los programadores de jugar con Space Travel. Haban estado jugando en el mainframe de su compaa, pero debido a su poca capacidad de proceso y al tener que soportar 100 usuarios, Thompson y Ritchie no tenan suficiente control sobre la nave para evitar colisiones con los asteroides. Por ese motivo decidieron portar el juego a un PDP-7 de la oficina que no se utilizaba; pero esa mquina no tena sistema operativo, as que decidieron escribir uno. Finalmente decidieron portar el sistema operativo del PDP-11 que haba en su oficina, pero era muy costoso, pues todo el cdigo estaba escrito en lenguaje ensamblador. Entonces decidieron usar un lenguaje de alto nivel y porttil para que el sistema operativo se pudiera portar fcilmente de un ordenador a otro. Consideraron usar B, pero careca de las funcionalidades necesarias para aprovechar algunas caractersticas avanzadas del PDP-11. Entonces empezaron a crear un nuevo lenguaje, C. La justificacin para obtener el ordenador original que se us para desarrollar Unix fue crear un sistema que automatizase el archivo de patentes. La versin original de Unix se desarroll en lenguaje ensamblador. Ms tarde, el lenguaje C se desarroll para poder reescribir el sistema operativo.

En 1973, el lenguaje C se haba vuelto tan potente que la mayor parte del kernel Unix, originalmente escrito en el lenguaje ensamblador PDP-11/20, fue reescrita en C. ste fue uno de los primeros ncleos de sistema operativo implementados en un lenguaje distinto al ensamblador. (Algunos casos anteriores son el sistema Multics, escrito en PL/I, y Master Control Program para el B5000 de Burroughs, escrito en ALGOL en 1961).

[editar] El C de Kernighan y Ritchie


En 1978, Ritchie y Brian Kernighan publicaron la primera edicin de El lenguaje de programacin C, tambin conocido como La biblia de C. Este libro fue durante aos la especificacin informal del lenguaje. El lenguaje descrito en este libro recibe habitualmente el nombre de "el C de Kernighan y Ritchie" o simplemente "K&R C" (La segunda edicin del libro cubre el estndar ANSI C, descrito ms abajo.) Kernighan y Ritchie introdujeron las siguientes caractersticas al lenguaje:

El tipo de datos struct. El tipo de datos long int. El tipo de datos unsigned int. Los operadores =+ y =- fueron sustituidos por += y -= para eliminar la ambigedad sintctica de expresiones como i=-10, que se podra interpretar bien como i =- 10 o bien como i = -10.

El C de Kernighan y Ritchie es el subconjunto ms bsico del lenguaje que un compilador debe de soportar. Durante muchos aos, incluso tras la introduccin del ANSI C, fue considerado "el mnimo comn denominador" en el que los programadores deban programar cuando deseaban que sus programas fueran transportables, pues no todos los compiladores soportaban completamente ANSI, y el cdigo razonablemente bien escrito en K&R C es tambin cdigo ANSI C vlido. En estas primeras versiones de C, las nicas funciones que necesitaban ser declaradas si se usaban antes de la definicin de la funcin eran las que retornaban valores no enteros. Es decir, se presupona que una funcin que se usaba sin declaracin previa (prototipo) devolvera un entero. Ejemplo de llamada que requiere declaracin previa (prototipo):
long int cierta_funcion(); int llamando_funcion() { long int ret; ret = cierta_funcion(); }

Ejemplo de llamada que no requiere declaracin previa:


int llamando_funcion() { int ret; ret = alguna_otra_funcion(); } int alguna_otra_funcion() { return 0; }

Dado que el lenguaje C de K&R no inclua ninguna informacin sobre los argumentos de las funciones, no se realizaba comprobacin de tipos en los parmetros de las funciones, aunque algunos compiladores lanzan mensajes de advertencia si se llamaba a una funcin con un nmero incorrecto de argumentos. A su vez, para indicar los parmetros que se utilizaban en una funcin, estos se declaraban de la siguiente manera:2
int main() { return callme(1, "c"); } int callme(i, s) int i; char *s; { /*....*/ }

En los aos siguientes a la publicacin del C de Kernighan y Ritchie, se aadieron al lenguaje muchas caractersticas no oficiales, que estaba soportadas por los compiladores de AT&T, entre otros. Algunas de estas caractersticas eran:

Funciones void y el tipo de datos void *. Funciones que retornaban tipos de datos struct o union (en lugar de punteros). Asignacin de tipos de datos struct. Calificador const, que hace que un objeto sea de slo lectura. Una biblioteca estndar, que incorporaba la mayora de las funcionalidades implementadas por varios desarrolladores de compiladores. Enumeraciones.

[editar] ANSI C e ISO C


Artculo principal: ANSI C

A finales de la dcada de 1970, C empez a sustituir a BASIC como lenguaje de programacin de microcomputadores predominante. Durante la dcada de 1980 se empez a usar en los IBM PC, lo que increment su popularidad significativamente. Al mismo tiempo, Bjarne Stroustrup empez a trabajar con algunos compaeros de Bell Labs para aadir funcionalidades de programacin orientada a objetos a C. El lenguaje que crearon, llamado C++, es hoy en da el lenguaje de programacin de aplicaciones ms comn en el sistema operativo Microsoft Windows; mientras que C sigue siendo ms popular en el entorno Unix. Otro lenguaje que se desarroll en esa poca, Objective C, tambin aadi caractersticas de programacin orientada a objetos a C. Aunque hoy en da no es tan popular como C++, se usa para desarrollar aplicaciones Cocoa para Mac OS X. En 1983, el Instituto Nacional Estadounidense de Estndares organiz un comit, X3j11, para establecer una especificacin estndar de C. Tras un proceso largo y arduo, se complet el estndar en 1989 y se ratific como el "Lenguaje de Programacin C" ANSI X3.159-1989. Esta versin del lenguaje se conoce a menudo como ANSI C, o a veces como C89 (para distinguirla de C99).

En 1990, el estndar ANSI (con algunas modificaciones menores) fue adoptado por la Organizacin Internacional para la Estandarizacin (ISO) en el estndar ISO/IEC 9899:1990. Esta versin se conoce a veces como C90. No obstante, "C89" y "C90" se refieren en esencia al mismo lenguaje. Uno de los objetivos del proceso de estandarizacin del ANSI C fue producir una extensin al C de Kernighan y Ritchie, incorporando muchas funcionalidades no oficiales. Sin embargo, el comit de estandarizacin incluy tambin muchas funcionalidades nuevas, como prototipos de funcin, y un preprocesador mejorado. Tambin se cambi la sintaxis de la declaracin de parmetros para hacerla semejante a la empleada habitualmente en C++:
main(argc, argv) int argc; char **argv; { ... }

pas a ser
int main(int argc, char *argv[]) { ... }

ANSI C est soportado hoy en da por casi la totalidad de los compiladores. La mayora del cdigo C que se escribe actualmente est basado en ANSI C. Cualquier programa escrito slo en C estndar sin cdigo que dependa de un hardware determinado funciona correctamente en cualquier plataforma que disponga de una implementacin de C compatible. Sin embargo, muchos programas han sido escritos de forma que slo pueden compilarse en una cierta plataforma, o con un compilador concreto, esto puede ser debido a diversos motivos:

La utilizacin de bibliotecas no estndar, como interfaces grficas de usuario. El uso de compiladores que no cumplen las especificaciones del estndar. El uso de tipos de datos suponiendo que tendrn el mismo tamao u orden de los bits en todas las plataformas.

La macro __STDC__ puede usarse para dividir el cdigo en secciones ANSI y K&R para el compilador.
# if __STDC__ extern int getopt(int,char * const *,const char *); # else extern int getopt(); # endif

Algunos programadores recomiendan usar "#if __STDC__", como en el ejemplo, en lugar de "#ifdef __STDC__" porque algunos compiladores le asignan el valor cero a __STDC__ para indicar que no son compatibles con ANSI.

[editar] C99

Tras el proceso de estandarizacin de ANSI, la especificacin del lenguaje C permaneci relativamente estable durante algn tiempo, mientras que C++ sigui evolucionando. Sin embargo, el estndar continu bajo revisin a finales de la dcada de 1990, lo que llev a la publicacin del estndar ISO 9899:1999 en 1999. Este estndar se denomina habitualmente "C99". Se adopt como estndar ANSI en marzo de 2000. Las nuevas caractersticas de C99 incluyen:

Funciones inline. Las variables pueden declararse en cualquier sitio (como en C++), en lugar de poder declararse slo tras otra declaracin o al comienzo de una declaracin compuesta. Muchos tipos de datos, incluyendo long long int (para reducir el engorro de la transicin de 32 bits a 64 bits), un tipo de datos booleano, y un tipo complex que representa nmeros complejos. Arrays de longitud variable. Soporte para comentarios de una lnea que empiecen con //, como en BCPL o en C++, caracterstica para la que muchos compiladores haban dado soporte por su cuenta. muchas funciones nuevas, como snprintf() muchos headers nuevos, como stdint.h.

Una consideracin importante es que hasta la publicacin de este estndar, C haba sido mayormente un subconjunto estricto del C++. Era muy sencillo "actualizar" un programa de C hacia C++ y mantener ese cdigo compilable en ambos lenguajes. Sin embargo, el nuevo estndar agrega algunas caractersticas que C++ no admite, como por ejemplo los inicializadores estticos de estructuras. Tambin define al tipo "bool" de una manera que no es exactamente la del C++. El compilador GCC, entre muchos otros, soportan hoy en da la mayora de las nuevas caractersticas de C99. Sin embargo, este nuevo estndar ha tenido poca acogida entre algunos desarrolladores de compiladores, como Microsoft y Borland, que se han centrado en C++. Brandon Bray, de Microsoft, dijo a este respecto:
"En general, hemos visto poca demanda de muchas caractersticas de C99. Algunas caractersticas tienen ms demanda que otras, y consideraremos incluirlas en versiones futuras siempre que sean compatibles con C++."3

También podría gustarte