Você está na página 1de 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
y procesamiento. Por consiguiente debemos refinar un poco ms nuestra
definicin de algoritmo para hacerla aplicable de manera efectiva en el mbito de
la informtica.
El algoritmo es un conjunto de pasos, instrucciones o acciones que se deben
seguir para resolver un problema. Existen una gran cantidad de algoritmos, hay
que escoger el ms efectivo. Hay dos tipos de algoritmos que son
los cualitativos y cuantitativos, cualitativos son

todos

aquellos

pasos

instrucciones descritos por medio de palabras que sirven para llegar a la obtencin
de una respuesta o solucin de un problema, y cuantitativos son todos aquellos
pasos o instrucciones que involucran clculos numricos para llegar a un resultado
satisfactorio.
Caractersticas:
Tiene que ser preciso.
Tiene que estar bien definido.
Tiene que ser finito.
La programacin es adaptar el algoritmo al ordenador.
El algoritmo es independiente segn donde lo implemente.

Definicin: Un algoritmo se entiende como una sucesin finita de pasos que debe
cumplir las siguientes especificaciones:
Cada paso del algoritmo debe estar bien definido: Esto significa que la definicin
de un paso debe ser suficientemente clara, para que una persona pueda
entenderla y realizarla. Si bien no se puede dar un criterio determinado para
decidir si un paso est bien definido, debemos apelar al sentido comn para
decidir que un paso est especificado sin ambigedades.
Un algoritmo debe tener un principio y un fin: Un programa es un algoritmo escrito
con un objetivo: conseguir un resultado. No tiene sentido crear un programa que
espere ~ segundos (infinitos segundos) y luego escriba en pantalla "Hola Mundo!",
del mismo modo que un algoritmo debe tener un principio bien definido (tampoco
tiene sentido el algoritmo "haz nada, y luego escribe Hola Mundo!")

Modelos computacionales
Un modelo computacional es un modelo matemtico en las ciencias de la
computacin que requiere extensos recursos computacionales para estudiar el
comportamiento de un sistema complejo por medio de la simulacin por
computadora. El sistema bajo estudio es a menudo un sistema complejo no lineal
para el cual las soluciones analticas simples e intuitivas no estn fcilmente
disponibles. En lugar de derivar una solucin analtica matemtica para el
problema, la experimentacin es hecha con el modelo cambiando los parmetros
del sistema en la computadora, y se estudian las diferencias en el resultado de los
experimentos. Las teoras de la operacin del modelo se pueden derivar/deducir
de estos experimentos de computacionales.
Ejemplos de modelos de computacionales comunes son modelos de el pronstico
del tiempo, modelos del Earth Simulator, modelos de simulador de vuelo, modelos
de plegamiento molecular de protenas, y modelos de red neuronal.

Se considera a los algoritmos al conjunto de pasos ordenados, que permiten


resolver un problema bajo una secuencia lgica, es decir, que tenga inicio y fin
(sentido concreto).
Programas: Algoritmos para ser ejecutados por un ordenador
Un ordenador o computadora est, desde que se enciende hasta que se apaga
totalmente, ejecutando un algoritmo. Por lo general, estos algoritmos, escritos para
que los entienda una mquina, terminan siendo vagos y confusos para la mayora
de quienes no han estudiado programacin. Una mquina no puede entender
"escribe Hola Mundo!" porque no sabe lo que es "escribe" ni lo que es una letra o
un espacio, ni lo que es una pantalla. En cambio, puede entender "mov eax,
0x23afb31" (escribir en el registro eax el nmero 0x23afb31), aunque nosotros no.
Un 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 mquina, e incluso en ensamblador,
se crearon diferentes lenguajes de programacin, ms o menos parecidos al
ingls actual y a cmo se redacta un algoritmo. Estos lenguajes proveen de cosas
tan complejas para una mquina como los bucles for. Los compiladores se
encargan de traducir esos ficheros al lenguaje ensamblador que corresponda, el
ensamblador de traducirlos a lenguaje mquina y el enlazador de juntar todo ese
cdigo mquina en un solo archivo, el programa. Y el microprocesador, se encarga
de ir encendiendo o apagando transistores segn lo que le diga el cdigo
mquina. Es fcil entender el lenguaje de alto nivel en comparacin al lenguaje
maquina pero de la evolucin surgieron.

LENGUAJE DE PROGRAMACIN
Qu es el lenguaje de programacin?
Un lenguaje de programacin es un lenguaje diseado para describir el conjunto
de acciones consecutivas que un equipo debe ejecutar. Por lo tanto, un lenguaje

de programacin es un modo prctico para que los seres humanos puedan dar
instrucciones a un equipo.
Por otro lado, el trmino "lenguaje natural" define un medio de comunicacin
compartido por un grupo de personas (por ejemplo: ingls o francs).
Los 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. Se trata de dos conceptos totalmente diferentes. Un lenguaje de
programacin es muy estricto:
A cada instruccin le corresponde una accin de procesador.
El lenguaje utilizado por el procesador se denomina lenguaje mquina.
El lenguaje de programacin tiene varias ventajas:

Es mucho ms fcil de comprender que un lenguaje mquina:

Permite mayor portabilidad, es decir que puede adaptarse fcilmente para

ejecutarse en diferentes tipos de equipos.

Tipos de Lenguaje de Programacin


El ordenador slo entiende un lenguaje conocido como cdigo binario o cdigo
mquina, consistente en ceros y unos. Es decir, slo utiliza 0 y 1 para codificar
cualquier accin.
Los lenguajes ms prximos a la arquitectura hardware se denominan lenguajes
de bajo nivel y los que se encuentran ms cercanos a los programadores y
usuarios se denominan lenguajes de alto nivel.
Lenguajes de bajo nivel

Son lenguajes totalmente dependientes de la mquina, es decir que el programa


que se realiza con este tipo de lenguajes no se puede migrar o utilizar en otras
mquinas.
Al estar prcticamente diseados a medida del hardware, aprovechan al mximo
las caractersticas del mismo.
Dentro de este grupo se encuentran:

El lenguaje maquina: este lenguaje ordena a la mquina las operaciones

fundamentales para su funcionamiento. Consiste en la combinacin de 0's y 1's


para formar las ordenes entendibles por el hardware de la mquina. Este lenguaje
es mucho ms rpido que los lenguajes de alto nivel. La desventaja es que son
bastantes difciles de manejar y usar, adems de tener cdigos fuente enormes
donde encontrar un fallo es casi imposible.

El lenguaje ensamblador es un derivado del lenguaje mquina y est

formado por abreviaturas de letras y nmeros llamadas mnemotcnicos. Con la


aparicin de este lenguaje se crearon los programas traductores para poder pasar
los programas escritos en lenguaje ensamblador a lenguaje mquina. Como
ventaja con respecto al cdigo mquina es que los cdigos fuentes eran ms
cortos y los programas creados ocupaban menos memoria. Las desventajas de
este lenguaje siguen siendo prcticamente las mismas que las del lenguaje
ensamblador, aadiendo la dificultad de tener que aprender un nuevo lenguaje
difcil de probar y mantener.
Lenguajes de alto nivel
Son aquellos que se encuentran ms cercanos al lenguaje natural que al lenguaje
mquina.
Estn dirigidos a solucionar problemas mediante el uso de EDD's.
Nota: EDD's son las abreviaturas de Estructuras Dinmicas de Datos, algo muy
utilizado en todos los lenguajes de programacin. Son estructuras que pueden

cambiar de tamao durante la ejecucin del programa. Nos permiten crear


estructuras de datos que se adapten a las necesidades reales de un programa.
Se tratan de lenguajes independientes de la arquitectura del ordenador. Por lo
que, en principio, un programa escrito en un lenguaje de alto nivel, lo puedes
migrar de una mquina a otra sin ningn tipo de problema.
Estos

lenguajes

permiten

al

programador

olvidarse

por

completo

del

funcionamiento interno de la maquina/s para la que estn diseando el programa.


Tan solo necesitan un traductor que entiendan el cdigo fuente como las
caractersticas de la mquina.
Suelen usar tipos de datos para la programacin y hay lenguajes de propsito
general (cualquier tipo de aplicacin) y de propsito especfico (como FORTRAN
para trabajos cientficos).
Lenguajes de Medio nivel
Se trata de un trmino no aceptado por todos, pero que seguramente habrs odo.
Estos lenguajes se encuentran en un punto medio entre los dos anteriores. Dentro
de estos lenguajes podra situarse C ya que puede acceder a los registros del
sistema, trabajar con direcciones de memoria, todas ellas caractersticas de
lenguajes de bajo nivel y a la vez realizar operaciones de alto nivel.
Generaciones
La evolucin de los lenguajes de programacin se puede dividir en 5 etapas o
generaciones.

Primera generacin: lenguaje mquina.

Segunda generacin: se crearon los primeros lenguajes ensambladores.

Tercera generacin: se crean los primeros lenguajes de alto nivel. Ej. C,

Pascal, Cobol

Cuarta generacin. Son los lenguajes capaces de generar cdigo por si

solos, son los llamados RAD, con lo cuales se pueden realizar aplicaciones sin ser
un experto en el lenguaje. Aqu tambin se encuentran los lenguajes orientados a
objetos, haciendo posible la reutilizacin d partes del cdigo para otros programas.
Ej. Visual, Natural Adabes

Quinta generacin: aqu se encuentran los lenguajes orientados a la

inteligencia artificial. Estos lenguajes todava estn poco desarrollados. Ej. LISP
Principales lenguajes de nivel alto

VB.NET

Ada

ALGOL

BASIC

C#

COBOL

Fortran

Java

Lisp

Modula-2

Pascal

Perl

PHP

PL/1

PL/SQL

Python

Ruby

Matlab

Principales lenguajes de nivel medio

C++

Historia del Lenguaje C


El lenguaje de programacin C fue creado por Dennis Ritchie entre 1969 y 1973
cuando trabajaba en Bell Laboratories de AT&T junto con Ken Thompson en el
diseo del sistema operativo UNIX. C fue creado para poder escribir dicho sistema
operativo en un lenguaje de alto nivel, independiente del hardware donde se
ejecutara.
Contar con un lenguaje de alto nivel permiti el avance de los sistemas operativos,
ya que el mismo cdigo poda ser utilizado en las distintas plataformas,
propiciando la reutilizacin de cdigo y reduciendo los tiempos de desarrollo. As
es que los sistemas operativos basados en UNIX, el sistema BSD, el sistema
GNU/Linux y muchos otros fueron desarrollados en C.
Adems, con el paso del tiempo se han desarrollado cientos de bibliotecas que
permiten a los programadores de C utilizar el cdigo desarrollado por otros para la
realizacin de tareas comunes. Esto, a su vez, ha propiciado el desarrollo de
aplicaciones en lenguaje C.
Actualmente es imposible contar la cantidad de aplicaciones y herramientas
desarrolladas en C.

Evolucin
A mediados de los aos 60s, Martin Richards dise el lenguaje BCPL con la
finalidad de usarlo para escribir software de sistemas operativos y compiladores.
En 1969, Ken Thompson escribi el Lenguaje B, en Bell Laboratories, con el
objetivo de recodificar UNIX (escrito hasta ese momento en lenguaje
ensamblador) usando un lenguaje de alto nivel ms portable y flexible.
Durante los siguientes aos, Dennis Ritchie modific el lenguaje B, llegando a
crear el lenguaje C y reescribiendo el sistema UNIX en dicho lenguaje; aadi
caractersticas nuevas, como son el diseo de tipos y las estructuras de datos.
En 1978, Dennis Ritchie y Brian Kernighan publicaron la primera edicin del libro
El lenguaje de programacin C. Este libro fue durante aos la especificacin
informal del lenguaje. El lenguaje descrito en la primera edicin de este libro, fue
conocido como "el C de Kernighan y Ritchie" o simplemente "K&R C". En este libro
se introdujeron nuevas caractersticas al lenguaje: los tipo de datos struct, long int
y unsigned int; los operadores =+ y =- fueron sustituidos por += y -=.
A mediados de los aos 80, Bjarne Stroustrup (tambin de los laboratorios Bell),
crea el lenguaje C++, un lenguaje basado en C, con numerosas caractersticas
adicionales, siendo la principal que est orientado a objetos. Si bien se han creado
muchos lenguajes basados en C, C++ es el que ha permanecido ms asociado a
C.
En los aos siguientes a la publicacin del C de Kernighan y Ritchie, se aadieron
al lenguaje muchas caractersticas no oficiales, que estaban presentes en algunos
compiladores y no en otros. Fue por ello que en 1989 ANSI (American National
Standards Institute) public el primer estndar oficial de C, que es conocido como
ANSI C.
En este estndar se tomaron muchas de las funcionalidades no oficiales y se
agregaron funcionalidades nuevas como los prototipos de funcin, y un

preprocesador mejorado. Tambin se cambi la sintaxis de la declaracin de


parmetros de funciones, para que incluyeran el tipo junto con el nombre.
Al ao siguiente, en 1990 se public la estandarizacin ISO del lenguaje. Este
estndar es bsicamente el estndar ANSI, con unas pocas modificaciones de
formato. A este estndar se lo conoce, entonces, como C89, o C90, y se trata del
mismo lenguaje.
Basndose en el estndar ANSI que estaba en preparacin, en 1988 Kernighan y
Ritchie publicaron la segunda edicin de su libro, que es an hoy utilizada como
una de las referencias principales del lenguaje.
Durante los siguientes aos, el lenguaje C permaneci sin demasiados cambios.
Sin embargo, como haba sucedido antes, los distintos compiladores fueron
incorporando caractersticas adicionales, que otros compiladores no tenan, siendo
C++ la principal influencia.
Fue por ello que a finales de los noventa se decidi revisar el estndar de C, lo
que llev a la publicacin del estndar C99. Este estndar incluye varias nuevas
caractersticas como son: las funciones inline; la posibilidad de declarar variables
en cualquier parte del cdigo; los comentarios de una sola lnea utilizando //; los
tipos de datos long long int, bool y complex, entre otras.
An hoy el proceso de evolucin del lenguaje sigue avanzando, y desde 2007 se
est trabajando en el armado de un nuevo estndar.

Você também pode gostar