Documente Academic
Documente Profesional
Documente Cultură
¿Qué es un paradigma?
Siempre escuchamos hablar de paradigmas de programación, que si el estructurado, que si
el orientado a objetos, pero pocas veces se entiende con exactitud qué es un paradigma.
Por ejemplo,
O quizá, son un asco para las matemáticas como yo y tuvieron que emplear la
famosa “chicharronera” y obtuvieron de la misma forma x1 = 3 y x2 = -4.
Estas fueron dos formas distintas de razonamiento, sin embargo, ambas llegaron al mismo
resultado, a la solución de un problema.
Lo mismo pasa con los lenguajes de programación, habrá algunos para los cuales un
problema se plantee de cierta manera y otros para los que se use otra, pero el resultado
siempre es y debería ser el mismo.
Tipos de paradigmas
Paradigma imperativo:
Describe la programación como una secuencia instrucciones o comandos que
cambian el estado de un programa. El código máquina en general está basado en
el paradigma imperativo. Su contrario es el paradigma declarativo. En este
paradigma se incluye el paradigma procedimental (procedural) entre otros.
Lenguajes de programación
Los primeros lenguajes imperativos fueron los lenguajes de máquina de los
computadores originales. En estos lenguajes, las instrucciones fueron muy
simples, lo cual hizo la implementación de hardware fácil, pero obstruyendo la
creación de programas complejos. Los lenguajes imperativos de alto nivel
usan variables y sentencias más complejas, pero aún siguen el mismo paradigma
cuando modifican los contenidos de las variables. Fortran, cuyo desarrollo fue
iniciado en 1954 por John Backus en IBM, fue el primer gran lenguaje de
programación en superar los obstáculos presentados por el código de máquina en
la creación de programas complejos.
Algunos ejemplos de lenguajes de programación imperativos (o que son usados
idiomáticamente en estilo imperativo a pesar de ofrecer otros estilos) son:
BASIC
C
D1
Fortran
Pascal
Pauscal en español
Perl
PHP
Lua
Java
Python
Go
simple basic
Javascript
Paradigma declarativo
No se basa en el cómo se hace algo (cómo se logra un objetivo paso a paso), sino
que describe (declara) cómo es algo. En otras palabras, se enfoca en describir las
propiedades de la solución buscada, dejando indeterminado el algoritmo (conjunto
de instrucciones) usado para encontrar esa solución. Es más complicado de
implementar que el paradigma imperativo, tiene desventajas en la eficiencia, pero
ventajas en la solución de determinados problemas.
Es poco usado en la industria y es más popular en la academia debido a su
similitud con el lenguaje matemático, en mi opinión, para ser un programador de
este paradigma, se necesita una preparación más sólida, pues se necesitan dominar
algunos temas abstractos como: lógica, recursión, definición de funciones,
inducción estructural, entre otras.
Lenguajes de programación
Haskell
Prolog
Racket
OCaml
Scheme
Coq
Clojure
JavaScript (Hibrido)
Python (Hibrido)
Ruby (Hibrido)
Por otro lado, los programas del paradigma declarativo, son vistos como una serie
de definiciones al puro estilo matemático y la solución del problema consiste en
usar todas estas definiciones en conjunto para obtener un resultado. A diferencia
del paradigma imperativo, aquí el programador se centra en el qué son las cosas.
En un ejemplo de la vida cotidiana:
Supongamos que existen dos cafeterías en una calle. Por un lado tenemos a “La
Imperativa”:
Cuando se pide un café, el encargado buscará la definición para ese tipo de café y
con base en este, preparará un café que satisfaga la definición.
Un café, es aquel que cumple con… y con…
El zoo de los paradigmas
Módulos Procedimental
Procedimientos
Estructurado Declarativo
Control de flujo
Acciones Funcional
Orientado a Eventos
Lógico
Relación
Datos Programación
Genérica Concurrente
LENGUAJES DE PROGRAMACIÓN
Introducción
Ya sabemos que un lenguaje de programación es una forma de representar un algoritmo
de tal forma que es comprensible tanto para el humano como para el ordenador; con
anterioridad se han mostrado algunos ejemplos de algoritmos escritos en el lenguaje
FORTRAN (que es el que se utilizará durante el curso), sin embargo, no se han dado
detalles sobre la forma en que un ordenador manipula un algoritmo en un lenguaje de
programación ni las características de los distintos lenguajes existentes.
Antes de explicar todos esos detalles y presentar de una forma más clara las
características fundamentales del lenguaje FORTRAN conviene entender, de manera
muy básica, la forma en que funcionan los ordenadores electrónicos, cómo representan
la información y cómo representan y ejecutan las instrucciones de un algoritmo.
Memoria
Usuario
El código binario
Los ordenadores utilizan internamente el código binario (base 2) puesto que es el sistema
más fácilmente implementarle con la actual tecnología electrónica; así, la mínima
información que puede manipular un ordenador electrónico es un dígito binario, también
llamado bit: 0 y 1. Los bits pueden agruparse formando unidades superiores:
23=8 bits forman un byte, octeto o carácter (más adelante veremos el porqué
de este nombre).
210 = 1024 bytes = 213 bits forman un kilobyte o K. Un kilobyte permite
almacenar, aproximadamente, 10 mensajes SMS (mensajes de teléfonos
móviles).
210 = 1024 kilobytes = 220 bytes = 223 bits forman un megabyte o mega.
Un megabyte es aproximadamente el tamaño de un disquete (un disquete
dispone de 1.44 MB de espacio).
210 = 1024 megabytes = 220 kilobytes = 230 bytes = 233 bits forman un
gigabyte o giga. Un gigabyte puede almacenar una biblioteca de 1000
volúmenes o 150 minutos de audio. El código genético de un ser humano
ocupa apenas 3 gigabytes.
210 = 1024 gigabytes = 220 megabytes = 230 kilobytes = 240 bytes = 243 bits
forman un terabyte o tera. Un terabyte puede almacenar más de 100 días
de audio.
El sistema binario permite representar cualquier número natural (con tal de disponer de
suficientes dígitos); por ejemplo el número binario 10010110 se corresponde al número
150 decimales:
10010110 = 1·27 + 0·26 + 0·25 + 1·24 + 0·23 + 1·22 + 1·21 + 0·20 = 128 + 0 + 0
+ 16 + 0 + 4 + 2 +0 = 150
Para convertir un número decimal a binario basta con realizar una serie de divisiones en
cascada como se muestra en el ejemplo que sigue:
150 2
75 2
0
1 37 2
1 18 2
2
0 9 2 1 2
1 0
0 1 1 0 1 0 0 1
20 21 22 23 24 25 26 27
10010110
Lenguajes de programación
El lenguaje máquina
Hasta el momento se ha visto la forma en que es posible representar de forma adecuada
datos en un ordenador; dichos datos se almacenarán en la memoria y se trabajará con
ellos en la Unidad Aritmética. Sabemos que la Unidad de Control también recupera
instrucciones de la memoria y realiza acciones más sencillas según indique cada
instrucción.
Aunque no entraremos en detalles es necesario que el alumno sepa que la Unidad de
Control “entiende” un conjunto de instrucciones o léxico limitado; dichas instrucciones
irán codificadas en binario e indicarán, además de la acción a realizar (por ejemplo,
“sumar”) los datos con los que se va a trabajar (por ejemplo, direcciones de memoria
donde hay datos almacenados).
Este conjunto de instrucciones codificadas en binario comprensibles por la unidad de
control se conoce con el nombre de “lenguaje máquina”; se trata del lenguaje de
programación más básico que existe y es el único que entiende un ordenador.
Resulta extraordinariamente tedioso programar directamente en código máquina, como
ejemplo se muestran dos instrucciones en un código máquina (el lenguaje máquina
depende del ordenador, no hay uno único):
0000 0000 0010 0000 0000 0000 0010 0000
1110 0010 0010 0001 0000 0000 0010 0000
La primera instrucción permite sumar dos números enteros y almacenar el resultado en
una tercera posición mientras que la segunda permite restar dos números reales y
almacenar el resultado en una tercera posición. Está claro, ¿verdad?
En los primeros tiempos del desarrollo de los ordenadores era necesario programarlos
directamente de esta forma, sin embargo, eran máquinas extraordinariamente limitadas,
con muy pocas instrucciones por lo que aún era posible; en la actualidad esto es
completamente irrealizable por lo que es necesario utilizar lenguajes más fácilmente
comprensibles para los humanos que deben ser traducidos a código máquina para su
ejecución.
El lenguaje ensamblador
Los lenguajes ensambladores son en esencia una versión simbólica de los lenguajes
máquina; por cada instrucción de la máquina o cada elemento capaz de almacenar datos
se crea un símbolo que puede utilizar el programador; así, las instrucciones anteriores se
escribirían.
Aunque aún es bastante críptico resulta más sencillo programar en un lenguaje de este
tipo que en código máquina. Los ensambladores fueron desarrollados de forma muy
temprana y recibieron este nombre porque las instrucciones básicas del lenguaje
ensamblador eran en realidad pequeños programas escritos directamente en código
máquina; así cuando un programador debía escribir un nuevo programa con ese lenguaje
en realidad estaba “ensamblando” código máquina reutilizable.
Una característica tanto de los lenguajes ensambladores como del código máquina es
que son totalmente dependientes del ordenador: un programa en código máquina (o en
ensamblador) sólo funciona en un tipo de ordenador y no en otro; la ventaja es que al
estar perfectamente adaptados a una máquina concreta son programas muy rápidos que
permiten que el programador aproveche todas y cada una de las características del
ordenador.
FORTRAN, Pascal, C, C++ o Java son ejemplos de lenguajes de alto nivel; todos ellos
comparten muchas similitudes entre sí por lo que una vez aprendido un lenguaje de
El lenguaje FORTRAN
Bibliografía
Ritchie, D. M. (2000). El lenguaje de programación. Ciudad de México, México.