evolución de algoritmos y programación
TRANSCRIPT
-
7/24/2019 Evolucin de Algoritmos y Programacin
1/10
Evolucin de Algoritmos y Programacin
Qu es un algoritmo?
Por algoritmo, se entiende a un conjunto finito de instrucciones que se deben
seguir para resolver un problema. No obstante, desde el punto de vista de la
programacin de ordenadores, la definicin del algoritmo como la especificacin
de una serie de pasos, es incompleta. Debe observarse que los ordenadores son
equipos que tienen limitaciones fsicas en cuanto a capacidad de almacenamiento
! procesamiento. Por consiguiente debemos refinar un poco m"s nuestra
definicin de algoritmo para #acerla aplicable de manera efectiva en el "mbito de
la inform"tica.
$l algoritmo es un conjunto de pasos, instrucciones o acciones que se deben
seguir para resolver un problema. $%isten una gran cantidad de algoritmos, #a!
que escoger el m"s efectivo. &a! dos tipos de algoritmos que son
los cualitativos ! cuantitativos, cualitativos son todos aquellos pasos o
instrucciones descritos por medio de palabras que sirven para llegar a la obtencin
de una respuesta o solucin de un problema, ! cuantitativos son todos aquellos
pasos o instrucciones que involucran c"lculos numricos para llegar a un resultado
satisfactorio.
Caractersticas:
'iene que ser preciso.
'iene que estar bien definido.
'iene que ser finito.
(a programacin es adaptar el algoritmo al ordenador.
$l algoritmo es independiente seg)n donde lo implemente.
https://es.wikipedia.org/wiki/es:algoritmohttps://es.wikipedia.org/wiki/es:algoritmo -
7/24/2019 Evolucin de Algoritmos y Programacin
2/10
Definicin* +n algoritmo se entiende como una sucesin finita de pasos que debe
cumplir las siguientes especificaciones*
ada paso del algoritmo debe estar bien definido* $sto significa que la definicinde un paso debe ser suficientemente clara, para que una persona pueda
entenderla ! reali-arla. i bien no se puede dar un criterio determinado para
decidir si un paso est" bien definido, debemos apelar al sentido com)n para
decidir que un paso est" especificado sin ambig/edades.
+n algoritmo debe tener un principio ! un fin* +n programa es un algoritmo escrito
con un objetivo* conseguir un resultado. No tiene sentido crear un programa que
espere 0 segundos 1infinitos segundos2 ! luego escriba en pantalla 3&ola 4undo53,
del mismo modo que un algoritmo debe tener un principio bien definido 1tampoco
tiene sentido el algoritmo 3#a- nada, ! luego escribe &ola 4undo532
Modelos computacionales
+n modelo computacional es un modelo matem"tico en las ciencias de la
computacin que requiere e%tensos recursos computacionales para estudiar el
comportamiento de un sistema complejo por medio de la simulacin por
computadora. $l sistema bajo estudio es a menudo un sistema complejo no lineal
para el cual las soluciones analticas simples e intuitivas no est"n f"cilmente
disponibles. $n lugar de derivar una solucin analtica matem"tica para el
problema, la e%perimentacin es #ec#a con el modelo cambiando los par"metros
del sistema en la computadora, ! se estudian las diferencias en el resultado de los
e%perimentos. (as teoras de la operacin del modelo se pueden derivar6deducir
de estos e%perimentos de computacionales.
$jemplos de modelos de computacionales comunes son modelos de el pronstico
del tiempo, modelos del $art# imulator, modelos de simulador de vuelo, modelos
de plegamiento molecular de protenas, ! modelos de red neuronal.
-
7/24/2019 Evolucin de Algoritmos y Programacin
3/10
e considera a los algoritmos al conjunto de pasos ordenados, que permiten
resolver un problema bajo una secuencia lgica, es decir, que tenga inicio ! fin
1sentido concreto2.
Programas* 7lgoritmos para ser ejecutados por un ordenador
+n ordenador o computadora est", desde que se enciende #asta que se apaga
totalmente, ejecutando un algoritmo. Por lo general, estos algoritmos, escritos para
que los entienda una m"quina, terminan siendo vagos ! confusos para la ma!ora
de quienes no #an estudiado programacin. +na m"quina no puede entender
3escribe &ola 4undo53 porque no sabe lo que es 3escribe3 ni lo que es una letra o
un espacio, ni lo que es una pantalla. $n cambio, puede entender 3mov ea%,
8%9:afb:;3 1escribir en el registro ea% el n)mero 8%9:afb:;2, aunque nosotros no.
+n ordenador es solo un circuito electrnico, no funciona a base de magia ni nada
por el estilo.
Debido a lo difcil que es escribir en lenguaje m"quina, e incluso en ensamblador,
se crearon diferentes lenguajes de programacin, m"s o menos parecidos al
ingls actual ! a cmo se redacta un algoritmo. $stos lenguajes proveen de cosas
tan complejas para una m"quina como los bucles for. (os compiladores se
encargan de traducir esos fic#eros al lenguaje ensamblador que corresponda, el
ensamblador de traducirlos a lenguaje m"quina ! el enla-ador de juntar todo ese
cdigo m"quina en un solo arc#ivo, el programa. < el microprocesador, se encarga
de ir encendiendo o apagando transistores seg)n lo que le diga el cdigo
m"quina. $s f"cil entender el lenguaje de alto nivel en comparacin al lenguaje
maquina pero de la evolucin surgieron.
LENGUAJE E P!"G!AMAC#$N
%&u' es el lengua(e de programacin)
+n lenguaje de programacin es un lenguaje dise=ado para describir el conjunto
de acciones consecutivas que un equipo debe ejecutar. Por lo tanto, un lenguaje
http://karengarciahdz.blogspot.mx/2013/02/evolucion-del-lenguaje-c.htmlhttp://karengarciahdz.blogspot.mx/2013/02/evolucion-del-lenguaje-c.htmlhttp://karengarciahdz.blogspot.mx/2013/02/evolucion-del-lenguaje-c.htmlhttp://karengarciahdz.blogspot.mx/2013/02/evolucion-del-lenguaje-c.html -
7/24/2019 Evolucin de Algoritmos y Programacin
4/10
de programacin es un modo pr"ctico para que los seres #umanos puedan dar
instrucciones a un equipo.
Por otro lado, el trmino 3lenguaje natural3 define un medio de comunicacin
compartido por un grupo de personas 1por ejemplo* ingls o francs2.
(os lenguajes que los equipos usan para comunicarse entre ellos no tienen nada
que ver con los lenguajes de programacin> se los conoce como protocolos de
comunicacin. e trata de dos conceptos totalmente diferentes. +n lenguaje de
programacin es mu! estricto*
7 cada instruccin le corresponde una accin de procesador.
$l lenguaje utili-ado por el procesadorse denomina lenguaje m"quina.
$l lenguaje de programacin tiene varias ventajas*
$s muc#o m"s f"cil de comprender que un lenguaje m"quina*
Permite ma!or portabilidad, es decir que puede adaptarse f"cilmente para
ejecutarse en diferentes tipos de equipos.
*ipos de Lengua(e de Programacin
$l ordenador slo entiende un lenguaje conocido como cdigo binario o cdigo
m"quina, consistente en ceros ! unos. $s decir, slo utili-a 8 ! ; para codificar
cualquier accin.
(os lenguajes m"s pr%imos a la arquitectura #ard@are se denominan lenguajes
de bajo nivel ! los que se encuentran m"s cercanos a los programadores !
usuarios se denominan lenguajes de alto nivel.
Lengua(es de +a(o nivel
http://es.kioskea.net/contents/internet/protocol.php3http://es.kioskea.net/contents/internet/protocol.php3http://es.kioskea.net/contents/pc/processeur.php3http://karengarciahdz.blogspot.mx/2013/02/evolucion-del-lenguaje-c.htmlhttp://es.kioskea.net/contents/internet/protocol.php3http://es.kioskea.net/contents/internet/protocol.php3http://es.kioskea.net/contents/pc/processeur.php3http://karengarciahdz.blogspot.mx/2013/02/evolucion-del-lenguaje-c.html -
7/24/2019 Evolucin de Algoritmos y Programacin
5/10
on lenguajes totalmente dependientes de la m"quina, es decir que el programa
que se reali-a con este tipo de lenguajes no se puede migrar o utili-ar en otras
m"quinas.
7l estar pr"cticamente dise=ados a medida del #ard@are, aprovec#an al m"%imolas caractersticas del mismo.
entro de este grupo se encuentran:
$l lenguaje maquina* este lenguaje ordena a la m"quina las operaciones
fundamentales para su funcionamiento. onsiste en la combinacin de 8As ! ;As
para formar las ordenes entendibles por el #ard@are de la m"quina. $ste lenguaje
es muc#o m"s r"pido que los lenguajes de alto nivel. (a desventaja es que son
bastantes difciles de manejar ! usar, adem"s de tener cdigos fuente enormes
donde encontrar un fallo es casi imposible.
$l lenguaje ensamblador es un derivado del lenguaje m"quina ! est"
formado por abreviaturas de letras ! n)meros llamadas mnemotcnicos. on la
aparicin de este lenguaje se crearon los programas traductores para poder pasar
los programas escritos en lenguaje ensamblador a lenguaje m"quina. omo
ventaja con respecto al cdigo m"quina es que los cdigos fuentes eran m"s
cortos ! los programas creados ocupaban menos memoria. (as desventajas de
este lenguaje siguen siendo pr"cticamente las mismas que las del lenguaje
ensamblador, a=adiendo la dificultad de tener que aprender un nuevo lenguaje
difcil de probar ! mantener.
Lengua(es de alto nivel
on aquellos que se encuentran m"s cercanos al lenguaje natural que al lenguaje
m"quina.
$st"n dirigidos a solucionar problemas mediante el uso de $DDAs.
Nota* $DDAs son las abreviaturas de $structuras Din"micas de Datos, algo mu!
utili-ado en todos los lenguajes de programacin. on estructuras que pueden
-
7/24/2019 Evolucin de Algoritmos y Programacin
6/10
cambiar de tama=o durante la ejecucin del programa. Nos permiten crear
estructuras de datos que se adapten a las necesidades reales de un programa.
e tratan de lenguajes independientes de la arquitectura del ordenador. Por lo
que, en principio, un programa escrito en un lenguaje de alto nivel, lo puedesmigrar de una m"quina a otra sin ning)n tipo de problema.
$stos lenguajes permiten al programador olvidarse por completo del
funcionamiento interno de la maquina6s para la que est"n dise=ando el programa.
'an solo necesitan un traductor que entiendan el cdigo fuente como las
caractersticas de la m"quina.
uelen usar tipos de datos para la programacin ! #a! lenguajes de propsito
general 1cualquier tipo de aplicacin2 ! de propsito especfico 1como BC'7N
para trabajos cientficos2.
Lengua(es de Medio nivel
e trata de un trmino no aceptado por todos, pero que seguramente #abr"s odo.
$stos lenguajes se encuentran en un punto medio entre los dos anteriores. Dentro
de estos lenguajes podra situarse !a que puede acceder a los registros del
sistema, trabajar con direcciones de memoria, todas ellas caractersticas de
lenguajes de bajo nivel ! a la ve- reali-ar operaciones de alto nivel.
Generaciones
(a evolucin de los lenguajes de programacin se puede dividir en E etapas o
generaciones.
Primera generacin* lenguaje m"quina.
egunda generacin* se crearon los primeros lenguajes ensambladores.
'ercera generacin* se crean los primeros lenguajes de alto nivel. $j. ,
Pascal, obolF
-
7/24/2019 Evolucin de Algoritmos y Programacin
7/10
uarta generacin. on los lenguajes capaces de generar cdigo por si
solos, son los llamados 7D, con lo cuales se pueden reali-ar aplicaciones sin ser
un e%perto en el lenguaje. 7qu tambin se encuentran los lenguajes orientados a
objetos, #aciendo posible la reutili-acin d partes del cdigo para otros programas.
$j. Gisual, Natural 7dabesF
Quinta generacin* aqu se encuentran los lenguajes orientados a la
inteligencia artificial. $stos lenguajes todava est"n poco desarrollados. $j. (HP
Principales lengua(es de nivel alto
GI.N$'
7da
7(JC(
I7H
K
CIC(
Bortran
Lava
(isp
4odulaM9
Pascal
Perl
P&P
P(6;
P(6Q(
-
7/24/2019 Evolucin de Algoritmos y Programacin
8/10
P!t#on
ub!
4atlab
Principales lengua(es de nivel medio
,istoria del Lengua(e C
$l lenguaje de programacin fue creado por Dennis itc#ie entre ;OO ! ;O:
cuando trabajaba en Iell (aboratories de 7'R' junto con Sen '#ompson en el
dise=o del sistema operativo +NHT. fue creado para poder escribir dic#o sistema
operativo en un lenguaje de alto nivel, independiente del #ard@are donde se
ejecutara.
ontar con un lenguaje de alto nivel permiti el avance de los sistemas operativos,
!a que el mismo cdigo poda ser utili-ado en las distintas plataformas,
propiciando la reutili-acin de cdigo ! reduciendo los tiempos de desarrollo. 7s
es que los sistemas operativos basados en +NHT, el sistema ID, el sistema
JN+6(inu% ! muc#os otros fueron desarrollados en .
7dem"s, con el paso del tiempo se #an desarrollado cientos de bibliotecas que
permiten a los programadores de utili-ar el cdigo desarrollado por otros para la
reali-acin de tareas comunes. $sto, a su ve-, #a propiciado el desarrollo de
aplicaciones en lenguaje .
7ctualmente es imposible contar la cantidad de aplicaciones ! #erramientas
desarrolladas en .
http://karengarciahdz.blogspot.mx/2013/02/evolucion-del-lenguaje-c.htmlhttp://karengarciahdz.blogspot.mx/2013/02/evolucion-del-lenguaje-c.html -
7/24/2019 Evolucin de Algoritmos y Programacin
9/10
Evolucin
7 mediados de los a=os 8s, 4artin ic#ards dise= el lenguaje IP( con la
finalidad de usarlo para escribir soft@are de sistemas operativos ! compiladores.
$n ;OO, Sen '#ompson escribi el (enguaje I, en Iell (aboratories, con el
objetivo de recodificar +NHT 1escrito #asta ese momento en lenguaje
ensamblador2 usando un lenguaje de alto nivel m"s portable ! fle%ible.
Durante los siguientes a=os, Dennis itc#ie modific el lenguaje I, llegando a
crear el lenguaje ! reescribiendo el sistema +NHT en dic#o lenguaje> a=adi
caractersticas nuevas, como son el dise=o de tipos ! las estructuras de datos.
$n ;OU, Dennis itc#ie ! Irian Sernig#an publicaron la primera edicin del libro
$l lenguaje de programacin . $ste libro fue durante a=os la especificacin
informal del lenguaje. $l lenguaje descrito en la primera edicin de este libro, fue
conocido como 3el de Sernig#an ! itc#ie3 o simplemente 3SR 3. $n este libro
se introdujeron nuevas caractersticas al lenguaje* los tipo de datos struct, long int
! unsigned int> los operadores V ! VM fueron sustituidos por V ! MV.
7 mediados de los a=os U8, Ijarne troustrup 1tambin de los laboratorios Iell2,
crea el lenguaje , un lenguaje basado en , con numerosas caractersticas
adicionales, siendo la principal que est" orientado a objetos. i bien se #an creado
muc#os lenguajes basados en , es el que #a permanecido m"s asociado a
.
$n los a=os siguientes a la publicacin del de Sernig#an ! itc#ie, se a=adieron
al lenguaje muc#as caractersticas no oficiales, que estaban presentes en algunos
compiladores ! no en otros. Bue por ello que en ;OUO 7NH 17merican National
tandards Hnstitute2 public el primer est"ndar oficial de , que es conocido como
7NH .
$n este est"ndar se tomaron muc#as de las funcionalidades no oficiales ! se
agregaron funcionalidades nuevas como los prototipos de funcin, ! un
-
7/24/2019 Evolucin de Algoritmos y Programacin
10/10
preprocesador mejorado. 'ambin se cambi la sinta%is de la declaracin de
par"metros de funciones, para que inclu!eran el tipo junto con el nombre.
7l a=o siguiente, en ;OO8 se public la estandari-acin HC del lenguaje. $ste
est"ndar es b"sicamente el est"ndar 7NH, con unas pocas modificaciones deformato. 7 este est"ndar se lo conoce, entonces, como UO, o O8, ! se trata del
mismo lenguaje.
Ias"ndose en el est"ndar 7NH que estaba en preparacin, en ;OUU Sernig#an !
itc#ie publicaron la segunda edicin de su libro, que es a)n #o! utili-ada como
una de las referencias principales del lenguaje.
Durante los siguientes a=os, el lenguaje permaneci sin demasiados cambios.
in embargo, como #aba sucedido antes, los distintos compiladores fueron
incorporando caractersticas adicionales, que otros compiladores no tenan, siendo
la principal influencia.
Bue por ello que a finales de los noventa se decidi revisar el est"ndar de , lo
que llev a la publicacin del est"ndar OO. $ste est"ndar inclu!e varias nuevas
caractersticas como son* las funciones inline> la posibilidad de declarar variables
en cualquier parte del cdigo> los comentarios de una sola lnea utili-ando 66> los
tipos de datos long long int, bool ! comple%, entre otras.
7)n #o! el proceso de evolucin del lenguaje sigue avan-ando, ! desde 988 se
est" trabajando en el armado de un nuevo est"ndar.