Welcome to Scribd, the world's digital library. Read, publish, and share books and documents. See more ➡
Download
Standard view
Full view
of .
Add note
Save to My Library
Sync to mobile
Look up keyword
Like this
54Activity
×
0 of .
Results for:
No results containing your search query
P. 1
Programación

Programación

Ratings: (0)|Views: 11,503|Likes:
Published by api-3695723

More info:

Published by: api-3695723 on Nov 26, 2009
Copyright:Attribution Non-commercial

Availability:

Read on Scribd mobile: iPhone, iPad and Android.
download as PDF, DOC, TXT or read online from Scribd
See More
See less

03/18/2014

pdf

text

original

Programaci\u00f3n
Lenguajes de programaci\u00f3n

Al desarrollarse las primeras computadoras electr\u00f3nicas, se vio la necesidad de programarlas, es decir, de almacenar en memoria la informaci\u00f3n sobre la tarea que iban a ejecutar. Las primeras se usaban como calculadoras simples; se les indicaban los pasos de c\u00e1lculo, uno por uno.

John Von Neumann desarroll\u00f3 el modelo que lleva su nombre, para describir este concepto de
"programa almacenado". En este modelo, se tiene una abstracci\u00f3n de la memoria como un
conjunto de celdas, que almacenan simplemente n\u00fameros. Estos n\u00fameros pueden representar dos
cosas: los datos, sobre los que va a trabajar el programa; o bien, el programa en s\u00ed.

\u00bfC\u00f3mo es que describimos un programa como n\u00fameros? Se ten\u00eda el problema de representar las
acciones que iba a realizar la computadora, y que la memoria, al estar compuesta por switches
correspondientes al concepto de bit, solamente nos permit\u00eda almacenar n\u00fameros binarios.

La soluci\u00f3n que se tom\u00f3 fue la siguiente: a cada acci\u00f3n que sea capaz de realizar nuestra
computadora, asociarle un n\u00famero, que ser\u00e1 su c\u00f3digo de operaci\u00f3n (opcode). Por ejemplo, una
calculadora programable simple podr\u00eda asignar los opcodes:

1 = SUMA, 2 = RESTA, 3 = MULTIPLICA, 4 = DIVIDE.
Supongamos que queremos realizar la operaci\u00f3n 5 * 3 + 2, en la calculadora descrita arriba. En
memoria, podr\u00edamos "escribir" el programa de la siguiente forma:

Localidad Opcode Significado Comentario 0 5 5 En esta localidad, tenemos el primer n\u00famero de la f\u00f3rmula 1 3 * En esta localidad, tenemos el opcode que representa la multiplicaci\u00f3n. 2 3 3 En esta localidad, tenemos el segundo n\u00famero de la f\u00f3rmula 3 1 + En esta localidad, tenemos el opcode que representa la suma. 4 2 2 En esta localidad, tenemos el \u00faltimo n\u00famero de la f\u00f3rmula

Podemos ver que con esta representaci\u00f3n, es simple expresar las operaciones de las que es capaz
el hardware (en este caso, nuestra calculadora imaginaria), en la memoria.

La descripci\u00f3n y uso de los opcodes es lo que llamamos lenguaje de m\u00e1quina . Es decir, la lista de
c\u00f3digos que la m\u00e1quina va a interpretar como instrucciones, describe las capacidades de
programaci\u00f3n que tenemos de ella; es el lenguaje m\u00e1s primitivo, depende directamente del
hardware, y requiere del programador que conozca el funcionamiento de la m\u00e1quina al m\u00e1s bajo
nivel.

los lenguajes m\u00e1s primitivos fueron los lenguajes de m\u00e1quina. Esto, ya que el hardware se
desarroll\u00f3 antes del software, y adem\u00e1s cualquier software finalmente tiene que expresarse en el
lenguaje que maneja el hardware.

La programaci\u00f3n en esos momentos era sumamente tediosa, pues el programador ten\u00eda que
"bajarse" al nivel de la m\u00e1quina y decirle, paso a pasito, cada punto de la tarea que ten\u00eda que
realizar. Adem\u00e1s, deb\u00eda expresarlo en forma num\u00e9rica; y por supuesto, este proceso era propenso
a errores, con lo que la productividad del programador era muy limitada. Sin embargo, hay que
recordar que en estos momentos, simplemente a\u00fan no exist\u00eda alternativa.

El primer gran avance que se dio, como ya se coment\u00f3, fue la abstracci\u00f3n dada por el Lenguaje
Ensamblador, y con \u00e9l, el nacimiento de las primeras herramientas autom\u00e1ticas para generar el
1

c\u00f3digo m\u00e1quina. Esto redujo los errores triviales, como pod\u00eda ser el n\u00famero que correspond\u00eda a
una operaci\u00f3n, que son sumamente engorrosos y dif\u00edciles de detectar, pero f\u00e1ciles de cometer. Sin
embargo, a\u00fan aqu\u00ed es f\u00e1cil para el programador perderse y cometer errores de l\u00f3gica, pues debe
bajar al nivel de la forma en que trabaja el CPU, y entender bien todo lo que sucede dentro de \u00e9l.

Con el desarrollo en los 50s y 60s de algoritmos de m\u00e1s elevado nivel, y el aumento de poder del
hardware, empezaron a entrar al uso de computadoras cient\u00edficos de otras ramas; ellos conoc\u00edan
mucho de F\u00edsica, Qu\u00edmica y otras ramas similares, pero no de Computaci\u00f3n, y por supuesto, les
era sumamente complicado trabajar con lenguaje Ensamblador en vez de f\u00f3rmulas. As\u00ed, naci\u00f3 el
concepto de Lenguaje de Alto Nivel, con el primer compilador de FORTRAN (FORmula
TRANslation), que, como su nombre indica, inici\u00f3 como un "simple" esfuerzo de traducir un
lenguaje de f\u00f3rmulas, al lenguaje ensamblador y por consiguiente al lenguaje de m\u00e1quina. A partir
de FORTRAN, se han desarrollado innumerables lenguajes, que siguen el mismo concepto: buscar
la mayor abstracci\u00f3n posible, y facilitar la vida al programador, aumentando la productividad,
encarg\u00e1ndose los compiladores o int\u00e9rpretes de traducir el lenguaje de alto nivel, al lenguaje de
computadora.

Hay que notar la existencia de lenguajes que combinan caracter\u00edsticas de los de alto nivel y los de
bajo nivel (es decir, Ensamblador). Mi ejemplo favorito es C: contiene estructuras de programaci\u00f3n
de alto nivel, y la facilidad de usar librer\u00edas que tambi\u00e9n son caracter\u00edsticas de alto nivel; sin
embargo, fue dise\u00f1ado con muy pocas instrucciones, las cuales son sumamente sencillas, f\u00e1ciles
de traducir al lenguaje de la m\u00e1quina; y requiere de un entendimiento apropiado de c\u00f3mo funciona
la m\u00e1quina, el uso de la memoria, etc\u00e9tera. Por ello, muchas personas consideramos a lenguajes
como C (que fue dise\u00f1ado para hacer sistemas operativos), lenguajes de nivel medio.

Java

El lenguaje de programaci\u00f3n Java, fue dise\u00f1ado por la compa\u00f1\u00eda Sun Microsystems Inc, con el prop\u00f3sito de crear un lenguaje que pudiera funcionar en redes computacionales heterog\u00e9neas ( redes de computadoras formadas por m\u00e1s de un tipo de computadora, ya sean PC, MAC's, estaciones de trabajo, etc.),y que fuera independiente de la plataforma en la que se vaya a ejecutar. Esto significa que un programa de Java puede ejecutarse en cualquier m\u00e1quina o plataforma. El lenguaje fue dise\u00f1ado con las siguientes caracter\u00edsticas en mente:

\u2022

Simple. Elimina la complejidad de los lenguajes como "C" y da paso al contexto de los
lenguajes modernos orientados a objetos. Orientado a Objetos. La filosof\u00eda de
programaci\u00f3n orientada a objetos es diferente a la programaci\u00f3n convencional.

\u2022
Familiar. Como la mayor\u00eda de los programadores est\u00e1n acostumbrados a programar en C o
en C++, el sintaxis de Java es muy similar al de estos.
\u2022

Robusto. El sistema de Java maneja la memoria de la computadora por ti. No te tienes que preocupar por apuntadores, memoria que no se est\u00e9 utilizando, etc. Java realiza todo esto sin necesidad de que uno se lo indique.

\u2022

Seguro. El sistema de Java tiene ciertas pol\u00edticas que evitan se puedan codificar virus con este lenguaje. Existen muchas restricciones, especialmente para los applets, que limitan lo que se puede y no puede hacer con los recursos cr\u00edticos de una computadora.

\u2022

Portable. Como el c\u00f3digo compilado de Java (conocido como byte code) es interpretado, un programa compilado de Java puede ser utilizado por cualquier computadora que tenga implementado el interprete de Java.

\u2022

Independiente a la arquitectura. Al compilar un programa en Java, el c\u00f3digo resultante un
tipo de c\u00f3digo binario conocido como byte code. Este c\u00f3dido es interpretado por diferentes
computadoras de igual manera, solamente hay que implementar un int\u00e9rprete para cada
plataforma. De esa manera Java logra ser un lenguaje que no depende de una arquitectura
computacional definida.

2
\u2022
Multithreaded. Un lenguaje que soporta multiples threads es un lenguaje que puede
ejecutar diferentes l\u00edneas de c\u00f3digo al mismo tiempo.
\u2022
Interpretado. Java corre en m\u00e1quina virtual, por lo tanto es interpretado.
\u2022

Din\u00e1mico. Java no requiere que compiles todas las clases de un programa para que este funcione. Si realizas una modificaci\u00f3n a una clase Java se encarga de realizar un Dynamic Bynding o un Dynamic Loading para encontrar las clases.

Java puede funcionar como una aplicaci\u00f3n sola o como un "applet", que es un peque\u00f1o programa hecho en Java. Los applets de Java se pueden "pegar" a una p\u00e1gina de Web (HTML), y con esto puedes tener un programa que cualquier persona que tenga un browser compatible podr\u00e1 usar.

Nota: Diferencia entre Java y CGI La diferencia es esencialmente simple, un CGI se ejecuta en el
servidor mientras que un programa en Java se ejecuta en la m\u00e1quina del usuario.

Java funciona de la siguiente manera: El compilador de Java deja el programa en un Pseudo-
c\u00f3digo (no es c\u00f3digo maquinal) y luego el int\u00e9rprete de Java ejecuta el programa (lo que se conoce
como el "Java Virtual Machine"). Por eso Java es multiplataforma, existe un int\u00e9rprete para cada
m\u00e1quina diferente. Nota: El c\u00f3digo maquinal es el c\u00f3digo binario que la computadora entiende y
puede ejecutar.

Para entender bien como funciona un applet de Java vean el siguiente ejemplo:
1. Existe un c\u00f3digo de Java en un servidor de Web. (Los c\u00f3digos de Java se caracterizan por
tener la extensi\u00f3n *.class).
2. Una persona en Internet, con un browser compatible con Java, realiza una conecci\u00f3n al

servidor.
3. El servidor env\u00eda el documento HTML y el c\u00f3digo en Java (*.class).
4. En la computadora del usuario remoto llegan ambos, y la M\u00e1quina Virtual de Java, que

est\u00e1 en el browser, transforma el c\u00f3digo Java en un c\u00f3digo que entienda la m\u00e1quina local y
se ejecuta el programa dentro de la p\u00e1gina de Web.
5. Si el usuario realiza otra conexi\u00f3n a otro URL o se sale del browser, el programa se deja
de ejecutar y en la computadora no queda rastro de el.
3

Activity (54)

You've already reviewed this. Edit your review.
1 thousand reads
1 hundred reads
Claudio Grone liked this
Paola Rey liked this
paolitakg liked this

You're Reading a Free Preview

Download
/*********** DO NOT ALTER ANYTHING BELOW THIS LINE ! ************/ var s_code=s.t();if(s_code)document.write(s_code)//-->