SlideShare una empresa de Scribd logo
1 de 23
Autor: Luis Heladio Garzón Rodríguez
OBJETIVO GENERAL
Propender porque el estudiante se apropie del conocimiento de conceptos sobre
programación y los paradigmas de programación, fundamentales en su formación
como ingeniero.
OBJETIVOS ESPECIFICOS
 Comprender los conceptos fundamentales de la programación y su importancia.
 Conocer sobre los lenguajes de programación la evolución histórica, clasificación, y
sus diferencias.
 Conocer los atributos de un buen lenguaje de programación.
 Comprender los modelos básicos de los paradigmas de programación.
 Diferenciar los paradigmas de programación y su importancia.
 Profundizar mediante la investigación de los conceptos aquí tratados de parte del
estudiante.
CONCEPTOS FUNDAMENTALES DE PROGRAMACIÓN
Es necesario conocer conceptos sobre programación para consolidar fundamentos, que
le permitan comprender para desempeñarse con éxito en el ámbito de la programación
de computadores, como parte del proceso de aprendizaje, para asimilar y
familiarizarse con palabras y conceptos que serán parte del bagaje de conocimientos
necesarios en esta disciplina.
1. CONCEPTOS BASICOS
Datos
Información
Programa
Lenguaje de programación
Interpretador
Compilador
Software
Procesamiento de datos
1.1 DATOS
Los datos son la materia prima de la información. Los datos son atributos o
características relacionadas con un individuo, objeto, evento o suceso.
Son ejemplos de datos: nombre, descripción, fecha de nacimiento, estatura, cantidad
de horas laboradas, peso etc., relacionadas con una persona empleado o funcionario.
También se puede definir atributos sobre equipos de cómputo como: marca,
descripción, parte, modelo, referencia, etc.
UNIDAD I
INTRODUCCIÓN A LOS PRADIGMAS DE PROGRAMACIÓN
Autor: Luis Heladio Garzón Rodríguez
Es necesario clasificar los datos que se va a utilizar en un programa, con el fin de
optimizar la utilización de la memoria del computador. Para ello se debe tener en
cuenta criterios como:
a. Utilización: Identificar claramente que papel desempeñara o qué uso se dará
al dato dentro del programa. Se debe analizar si realizara alguna operación
aritmética con él, o si por el contrario solo contendrá un valor informativo.
b. Contenido: Analizar que valores posibles puede almacenar el dato. En este
caso y para algunos casos, se puede precisar los valores, para poderlos validar
al momento de su captura por un dispositivo externo.
c. Tamaño: Para todos los datos es necesario tener en cuenta el número de bytes
que puede ocupar. Implica tener en cuenta el rango de valores que puede
aceptar de acuerdo a la clasificación que se elija. Esto puede variar de acuerdo
al lenguaje de programación utilizado. Esta practica es muy importante porque
ayuda en el propósito de administrar adecuadamente la memoria principal del
computador.
Los datos en su forma básica o simple se clasifican en:
Numéricos
Carácter
Lógicos
Datos Numéricos
Dato numérico es aquel cuyo valor y contenido esta compuesto por dígitos numéricos.
Un dato numérico puede utilizado en operaciones aritméticas.
Pero los datos numéricos se clasifican a su vez en:
http://msdn.microsoft.com/es-es/library/ae55hdtk(VS.80).aspx
https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C/Tipos_de_datos
http://progra.usm.cl/apunte/materia/tipos.html
Enteros
Un dato numérico entero, contiene valores que no tienen parte decimal.
Reales
Datos cuyos valores pueden contener parte o fracción decimal. Esta clasificación en la
mayoría de lenguajes de programación actual, ofrecen subclasificaciones, que permiten
mayor precisión para el almacenamiento de valores.
En java existe tipos de datos específicos, que en algunos casos difieren y en otros
casos coinciden con otros lenguajes de programación. La clasificación de tipos de datos
en Java se puede observar en:
http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=419:tipos-de-datos-java-
tipos-primitivos-int-boolean-y-objeto-string-array-o-arreglo-variables-cu00621b&catid=68:curso-aprender-
programacion-java-desde-cero&Itemid=188
Se puede encontrar otras clasificaciones en los datos numéricos, dependiendo del
lenguaje de programación:
Autor: Luis Heladio Garzón Rodríguez
Otros sitios de interés
https://sites.google.com/site/programacion1electronica/netbeans/tipos-de-datos
Datos Carácter o cadena
Se clasifica en este tipo de dato a los datos cuyo valor esta compuesto por caracteres,
que pueden formar una cadena (de caracteres) que contenga uno o mas. También se
conocen con el nombre de datos alfanuméricos, por que su valor contiene una
combinación de letras, números y/o símbolos especiales.
Aunque se puede realizar operaciones aritméticas entre cadenas, su resultado no será
el esperado de acuerdo al operador escogido. Por ejemplo sean las cadenas dato_1 y
dato_2, se desea realizar una suma de sus contenidos y almacenarlo en dato_3.
1. Supongamos que se asigna valores a los datos: dato_1 = „145‟ y dato_2 =
„862‟
2. Ahora si se propone la instrucción suma asignando a dato_3 el resultado:
dato_3 = dato_1 + dato_2
3. Lo que realmente se obtiene como valor almacenado en dato_3 no es la suma
de 145 mas 862, sino la cadena „145862‟, lo que en programación se conoce
como concatenar cadenas de caracteres.
Profundice más al respecto.
1. Funciones básicas con cadenas:
https://www.manualweb.net/java/funciones-basicas-con-cadenas/
2. Datos Booleanos, caracteres, cadenas de texto:
http://www.aprendeaprogramar.com/mod/resource/view.php?id=210
3. Cadenas de caracteres y ejemplos:
http://www.tutorialesprogramacionya.com/javaya/detalleconcepto.php?codigo=86&pu
nto=&inicio=
Datos Estructurados
Este pertenece al tipo de datos definidos por el usuario. En el que se permite
configurar una combinación de datos de diferente tipo, que no esta predefinido en el
lenguaje de programación.
En el paradigma de programación estructurada se les nombraba como registros. En el
paradigma de programación orientada a objetos, se conocen como objetos.
Es importante profundizar mas sobre este tipo de dato y sus variantes de acuerdo al
paradigma de programación y el lenguaje de programación.
1.2 INFORMACIÓN
Es el resultado que se obtiene del tratamiento de datos a través de procedimientos
manuales o automatizados mediante aplicativos de software, que ofrecen solución a
necesidades o solicitudes especificas, que permitan el entendimiento de alguna
situación o sirvan para la toma de decisiones.
Autor: Luis Heladio Garzón Rodríguez
En este link encontrara mas sobre la definición de información
http://es.wikipedia.org/wiki/Informaci%C3%B3n
Es necesario e importante que investigue mas definiciones al respecto
1.3 PROGRAMA
Un programa es un conjunto de instrucciones, órdenes u operaciones, escritas en un
lenguaje de programación ordenadas lógica y secuencialmente, elaborada o diseñado
por una persona para dar solución a una necesidad o problema especifico, con el fin
producir resultados o información, que el ordenador es capaz de entender y realizar en
el orden correcto. El programa debe ser de fácil utilización.
Los programas se pueden escribir o codificar en diferentes lenguajes de programación.
1.4 LENGUAJE DE PROGRAMACIÓN
Los programas que ejecutan los ordenadores tienen que escribirse siguiendo unas
normas determinadas de manera que el ordenador entienda de qué instrucciones
consta y de qué manera tiene que ejecutarlas. Este conjunto de normas se denomina
lenguaje de programación. De la misma manera que las personas se comunican entre
ellas mediante un lenguaje, los lenguajes de programación permiten la comunicación
entre las personas y los ordenadores, y también entre ordenadores.
Existe una multitud de lenguajes diferentes, cada uno pensado y adaptado a una
necesidad específica. Los hay desde los más próximos al funcionamiento físico del
ordenador, los lenguajes de bajo nivel, hasta los que intentan reproducir modelos de la
realidad, con diferentes grados de abstracción, y sin tener en cuenta el hardware que
pueda haber, los lenguajes de alto nivel.
1.4.1 Lenguajes de bajo nivel
1.4.1.1 Lenguaje máquina
El lenguaje máquina consiste en el conjunto de instrucciones que un determinado
procesador es capaz de entender y ejecutar. Cada procesador tiene su propio lenguaje
máquina y son notables las diferencias entre los distintos modelos de procesadores.
Las instrucciones se refieren a movimientos de datos entre las distintas partes de la
CPU del ordenador: la memoria, los registros, canales de entrada/salida, etc. y es
necesario especificar las direcciones concretas y el número de bytes que hay que
operar. Es decir, especifican exactamente qué tiene que hacer el ordenador, pero es
enormemente complicado y difícil de utilizar. Es el único lenguaje que entiende
realmente el ordenador, de manera que cualquier otro tiene que traducirse a lenguaje
máquina.
1.4.1.2 Lenguaje ensamblador
El lenguaje ensamblador puede considerarse de bajo nivel porque está orientado al
lenguaje máquina. Sus instrucciones son muy similares a las del lenguaje máquina,
pero, en vez de códigos y números en binario, utiliza símbolos mnemotécnicos y cifras
Autor: Luis Heladio Garzón Rodríguez
decimales. De esta manera, el significado de cada instrucción es más evidente y, por lo
tanto, más fácil de recordar y utilizar que la sucesión de ceros y unos del lenguaje
máquina. Cada modelo de ordenador tiene su propio lenguaje ensamblador. Una
herramienta denominada ensamblador convierte los códigos de lenguaje ensamblador
en un programa binario en un proceso bastante sencillo denominado ensamblaje.
1.4.2 Lenguajes de alto nivel
Los lenguajes de alto nivel están más orientados al problema que tienen que resolver
que a la máquina. Por esta razón, son independientes del ordenador y, por lo tanto,
pueden ser utilizados en cualquier tipo de máquina.
Un programa escrito en un lenguaje de alto nivel, programa fuente, debe traducirse al
lenguaje máquina del ordenador que tiene que ejecutarlo. Existen dos maneras
diferentes de realizar esta traducción:
 Interpretación que se lleva a término con un intérprete del lenguaje en
cuestión. Este programa lee cada instrucción del programa fuente, la traduce a
código máquina y hace que la ejecute el ordenador de manera inmediata. Es un
proceso relativamente lento y, por tanto, se utiliza para aplicaciones pequeñas
y que no requieren gran velocidad. Algunos lenguajes interpretados conocidos
son BASIC con sus variantes, lenguajes de procesamiento de comandos de los
sistemas operativos o lenguajes de acceso a bases de datos como SQL.
SQL
SQL (Structured Query Language) es un lenguaje no estrictamente de
programación. Se trata de un lenguaje para interrogar y procesar información en
una base de datos relacional.
Fue desarrollado por IBM para las bases de datos de sus mainframes.
Los mandos SQL se pueden utilizar para trabajar interactivamente con una base
de datos o para insertarlos en un lenguaje de programación, para hacer de
interfaz con una base de datos.
Algunos de los sistemas de gestión de bases de datos que utilizan SQL son DB2,
SQL/DS, Oracle, Sybase, SQLbase, INFORMIX e Ingres.
El siguiente ejemplo de SQL selecciona clientes con un límite de crédito de, por lo
menos, 100.000 u.m. y los ordena de más a menos crédito:
SELECT NOMBRE, CIUDAD, CODIGOPOSTAL
FROM CLIENTE
WHERE LIMITECREDITO >= 100000
ORDER BY LIMITECREDITO DESC
 Compilación. Un programa denominado compilador traduce todo el
programa fuente a código máquina, con el que se obtiene el programa
objeto, que puede ejecutarse tantas veces como sea necesario sin tener que
Autor: Luis Heladio Garzón Rodríguez
traducir cada vez. El proceso de compilación es tedioso y lento y se debe
renovar cada vez que se hace un cambio en el programa fuente, pero, a
cambio, el programa objeto se ejecuta a la velocidad más alta posible. Es la
opción adecuada para aplicaciones complejas.
Los lenguajes más utilizados caen dentro de esta categoría, por ejemplo
FORTRAN, COBOL, IMS, Pascal, C y C++.
FORTRAN
El lenguaje FORTRAN (Formula Translation) data de los años cincuenta y todavía
se utiliza en determinados ámbitos.
Su punto fuerte es el cálculo matemático, especialmente con coma flotante, es
decir, la computación con números reales, de gran precisión. En cambio, no
dispone de construcciones por programación modular ni de estructuras de control
avanzadas.
A lo largo de los años se ha estandarizado varias veces, y las versiones más
conocidas son FORTRAN I, FORTRAN II, FORTRAN IV, FORTRAN 77 y,
actualmente, FORTRAN 90.
Ha sido el lenguaje más utilizado para cálculos científicos complejos, modelos de
ingeniería, estadística y procesamiento de señal. También es muy adaptable a
hardware especializado, como por ejemplo superordenadores y ordenadores
paralelos.
Un ejemplo de cálculo matemático con FORTRAN:
PROGRAM Rad
! Simple FORTRAN program
REAL P,R,C
IF (.NOT. (R = 0.0)) THEN
P = 3.1415926
R = 2.5
C = P * R
PRINT *, "C = ", C
END IF
END
COBOL
COBOL (Common Business-Oriented Language) es un lenguaje orientado a la
resolución de las necesidades de bancos y otras entidades financieras,
administraciones, fábricas o cualquier gran organización que tenga que gestionar
un volumen de datos importante.
COBOL tiene una sintaxis recargada que intenta parecerse al lenguaje inglés. Uno
de sus puntos fuertes es la generación de informes, ya que permite especificar
una gran variedad de formatos de salida.
Autor: Luis Heladio Garzón Rodríguez
Un programa en COBOL consta de cuatro divisiones:
 Identificación: permite identificar el programa, su objetivo, el autor y otros
datos similares.
 Entorno: enumera los recursos físicos que el programa puede necesitar para
facilitar, así, la portabilidad entre ordenadores.
 Datos: declara los datos del programa.
 Procedimientos: indica cómo se tienen que procesar los datos.
COBOL se definió en 1960 y ha tenido varias revisiones. La más actual incluye
características de orientación a objetos y estructuras de control sofisticadas en un
intento de modernizar el lenguaje y no perder toda la inversión en software
realizada, ya que se calcula que es el lenguaje con que se han programado más
líneas de código.
Los programas en COBOL acostumbran a ser bastante largos y sobrecargados, ya
que cualquier pequeño procedimiento requiere muchas líneas. A continuación se
presenta un ejemplo simplificado para calcular comisiones de vendedores:
IDENTIFICATION DIVISION.
PROGRAM-ID. COMISION-VENDEDOR.
AUTHOR. DEPT-INFO.
ENVIRONMENT DIVISION.
INPUT-OUTPUT SECTION.
FILE-CONTROL.
SELECT FICHERO-VENDEDORES ASSIGN TO DISK
ACCESS MODE IS RANDOM ORGANIZATION IS RELATIVE
RELATIVE KEY IS NUMERO.
SELECT FICHERO-VENTAS ASSIGN TO TAPE RESERVE NO AREAS
ACCESS MODE IS SEQUENTIAL ORGANIZATION IS SEQUENTIAL.
DATA DIVISION.
FILE SECTION.
FD FICHERO-VENDEDORES LABEL RECORD IS STANDARD
RECORDING MODE IS V
RECORD CONTAINS 30 TO 60 CHARACTERS
DATA RECORD IS VENDEDORES.
01 VENDEDORES
02 NOMBRE PICTURE X(50).
02 NUMERO PICTURE 9(10).
FD FICHERO-VENTAS LABEL RECORD IS STANDARD
RECORDING MODE IS F
RECORD CONTAINS 8
DATA RECORD IS VENTA.
01 VENTA PICTURE 9(8).
WORKING STORAGE SECTION.
77 PCT PICTURE 9(6).
77 TOTAL PICTURE 9(6).
PROCEDURE DIVISION.
INICIO.
OPEN INPUT FICHERO-VENDEDORES INPUT FICHERO-VENTAS.
CLAVE.
ADD 1 TO NUMERO.
LECTURA.
Autor: Luis Heladio Garzón Rodríguez
READ FICHERO-VENDEDORES INVALID KEY GO TO FINAL-PROG.
READ FICHERO-VENTAS AT END GO TO FINAL-PROG.
CALCUL.
DIVIDE VENTA INTO 100 GIVING PCT.
MULTIPLY PCT BY 40 GIVING TOTAL.
RESULTADO.
DISPLAY NUMERO UPON PRINTER.
DISPLAY TOTAL UPON PRINTER.
GOTO CLAVE.
FINAL-PROG.
CLOSE FICHERO-VENDEDORES AND FICHERO-VENTAS.
STOP RUN.
IMS
El sistema IMS (Information Management System) se utiliza para consultar bases
de datos; tuvo una gran expansión en los años setenta. Se trata de un producto
de IBM para las bases de datos de mainframes sobre el sistema MVS.
IMS/DB (IMS/Data Base) es la base de datos que funciona en un entorno de
proceso por lotes.
IMS/DC (IMS/Data Communications) es un programa necesario cuando se utiliza
interactivamente, y también permite acceder a bases de datos DB2.
PASCAL
Pascal es un lenguaje diseñado inicialmente para enseñar a programar. Como tal
lenguaje educativo, presenta una estructura perfectamente académica de la
programación estructurada. Requiere una programación detallada: todos los
tipos, datos y subrutinas se tienen que declarar antes de utilizarlos. Está
fuertemente estructurado en bloques, y cada uno de los cuales permite declarar
datos y funciones y también otros bloques de nivel inferior. Así se pueden
estructurar los datos y los procedimientos en tantos niveles como resulte
necesario.
Es un lenguaje apropiado para aplicaciones genéricas, aunque en muchas áreas
se ha sustituido por lenguajes orientados a objetos como C++ y Java.
C
C es, probablemente, uno de los lenguajes más utilizados actualmente. Es un
lenguaje estructurado, pero también permite una programación de bajo nivel, lo
cual lo hace adecuado para sistemas operativos (como Unix) y como software de
control de periféricos, aunque se utiliza en todo un tipo de aplicaciones, incluso
en las de más alto nivel, como por ejemplo, librerías gráficas.
C permite escribir rápidamente un código muy optimizado y más portable que en
ensamblador.
Autor: Luis Heladio Garzón Rodríguez
El lenguaje C dispone de un conjunto completo de operadores aritméticos,
estructuras de datos sencillas, subrutinas, estructuras de control convencionales,
punteros en memoria, un potente procesador de macros y un amplio conjunto de
librerías. Tiene un primer nivel de modularización, de manera que los datos
pueden tener un ámbito global o local en la función donde se han definido.
También es un lenguaje fuertemente tipificado, es decir, que requiere declarar
todos los datos con su tipo.
Las distintas versiones de C se estandarizaron en 1990 en el denominado ANSI-C.
Ejemplo de programa que cuenta el número de caracteres de un texto y escribe
el resultado por pantalla:
#include <stdio.h>
main(int argc, char *argv[])
{
int cmp;
for( cmp = 0; argv[0][cmp]!=0; cmp++ );
printf("%d caracteresn", cmp);
}
C++
C++ es la evolución a orientación a objetos del lenguaje C. Tiene una sintaxis
muy parecida a la de C, con varias extensiones para soportar clases, herencia y
otras características de orientación a objetos.
C++ evolucionó rápidamente para convertirse en un lenguaje independiente;
actualmente es muy popular para el desarrollo de aplicaciones.
C++ ofrece muchas de las estructuras de programación orientada a objetos:
herencia múltiple, tipificación estricta, memoria dinámica, patrones genéricos,
polimorfismo, control de excepciones y sobrecarga de operadores.
Como derivado de C, dispone de todas sus propiedades, pero también ha
heredado sus defectos, como por ejemplo, los punteros en memoria.
C++ es uno de los lenguajes orientados a objetos más utilizados y de los más
perfeccionados. A pesar de esto, no tiene algunas de las características que se
consideran imprescindibles en un lenguaje orientado a objetos de última
generación (concurrencia, persistencia y garbage collection), aunque sus
compiladores pueden generar programas muy compactos y que se ejecutan con
mucha eficiencia.
Como todos los lenguajes de programación orientada a objetos, su estructura
principal es la que define una clase, es decir, el tipo de un objeto.
A continuación se presenta un ejemplo de clase:
Autor: Luis Heladio Garzón Rodríguez
class cercle: public forma
{
int radi;// datos de la clase
float area()// métodos de la clase
{ ... }
}
Y un sencillo programa que escribe un mensaje de saludo por pantalla:
#include <iostream.h>
#include <String.h>
main(int argc, char *argv[])
{
String *s;
s = new String("Hola!");
cout << *s << endl;
cout << "Longitud del texto:" << s->length() << endl;
}
Últimamente han aparecido algunos lenguajes que se alejan de este modelo en
diferentes sentidos. Todos ellos se utilizan en la programación en entornos
relacionados con Internet, que presentan características especiales.
El lenguaje Java, por ejemplo, tiene un modo de traducción a lenguaje máquina
mixto. En una primera fase se compila en un código máquina universal que
posteriormente es interpretado y ejecutado por un programa específico. Este
programa puede utilizarse desde cualquier navegador de Internet, y permite
distribuir programas objetos por red que pueden ejecutarse en cualquier
ordenador.
Java
Java es un lenguaje desarrollado por Sun orientado a objetos con una sintaxis
parecida a la de C++.
Tiene un conjunto de prestaciones bastante amplio: herencia, tipificación de
datos estricta, modularidad, control de excepciones, polimorfismo, concurrencia,
carga dinámica de librerías, garbage collection y una amplia colección de librerías
estándar. En cambio, no incluye algunas características que podrían comprometer
su simplicidad y seguridad, como punteros, herencia múltiple, sobrecarga de
operadores o un preprocesador de macros.
Como lenguaje orientado a objetos, su estructura fundamental es la clase, que se
lleva hasta las últimas consecuencias: en Java no puede haber datos o funciones
globales, todas deben estar asociadas a una clase. Las clases se pueden agrupar
en paquetes que facilitan mucho la portabilidad de sus aplicaciones. Todos los
paquetes están organizados en una estructura jerárquica que evita la aparición de
distintas variantes para la misma funcionalidad.
Autor: Luis Heladio Garzón Rodríguez
Java se compila en un código independiente de la plataforma, bytecode, que
posteriormente es interpretado por una aplicación, la "máquina virtual de Java".
Hay una definición formal del bytecode que asegura la portabilidad.
Java, además de resultar adecuado para programar aplicaciones normales,
permite desarrollar programas hospedados en servidores web. Estos programas
se llaman applets. Tienen la capacidad de ser distribuidos por la red en forma de
bytecode y poderse ejecutar en cualquier plataforma. Presentan varias
restricciones para evitar problemas de seguridad.
El mayor inconveniente de Java es que tiene un rendimiento bajo, ya que, al
tener que ser interpretado por la máquina virtual, su velocidad de ejecución es
lenta.
A continuación, se presenta un ejemplo de applet escrito en Java:
import java.applet.*;
import java.awt.*;
public class AppletHola extends Applet
{
// Este método visualiza el mensaje
public void paint(Graphis g)
{
g.drawString("Hola!",25,50);
}
}
Para poder visualizar este applet en un servidor, hay que incluirlo en una página
web utilizando HTML.
Otro tipo de lenguajes es el grupo formado por HTML, XML, ASP, etc. Algunos, como
HTML y XML, no son tanto lenguajes para programar como para dar formado a
documentos para ser visualizados en un navegador. Con el tiempo, han desarrollado
mecanismos para integrar en el propio documento pequeños programas con lenguajes
como Java y similares. Por otra parte, ASP es un lenguaje enfocado a generar
documentos en HTML de manera automática.
HTML
HTML (HyperText Markup Language) no es exactamente un lenguaje de
programación, es un lenguaje para dar formato a documentos web.
Las páginas web se escriben con etiquetas de HTML insertadas en el texto. Estas
etiquetas definen párrafos, tipos de letras y elementos gráficos, así como enlaces
a otras páginas web. Por otro lado, permite incluir pequeños programas en forma
de applets escritos con lenguajes de programación, como Java o JavaScript. Estos
programas añaden animaciones y objetos móviles a las páginas web y les dan un
aspecto muy dinámico.
Autor: Luis Heladio Garzón Rodríguez
HTML es una derivación simplificada de SGML (Standard Generalized Markup
Language) que se utiliza en la publicación de documentos. Un subconjunto de
SGML, conocido como XML, permite ampliar HTML con etiquetas definidas por el
programador. Se espera que sea el nuevo estándar para documentos de web.
A continuación, se muestra una página web para visualizar el applet que se ha
puesto como ejemplo en JAVA:
<HTML><HEAD>
<TITLE> El applet Hola </TITLE>
</HEAD>
<BODY>
<APPLET code="AppletHola" width=150 height=100>
</APPLET>
</BODY></HTML>
El mecanismo CGI script (Common Gateway Interface script) consiste en pequeños
programas escritos en lenguajes denominados de scripting como Perl o Tcl, pero
también en C o C++, con la función de hacer de puente entre páginas web y otros
programas del servidor web.
Sirve, por ejemplo, para que los datos entrados en una página web se puedan enviar
al servidor remoto y hacer una búsqueda en una base de datos y, a continuación,
enviar los resultados de nuevo hacia el usuario.
El programa CGI, que se denomina script, reside en el servidor.
Los CGI scripts han sido el primer mecanismo que ha permitido a las páginas web
interactuar con bases de datos u otras aplicaciones. Sin embargo, a medida que
Internet ha evolucionado, se han desarrollado otras herramientas para hacer más
eficiente este procedimiento. Un ejemplo es el lenguaje ASP (Active Server Pages) de
Microsoft.
ASP consiste en un programa que el servidor puede ejecutar para generar páginas
HTML que se envían al cliente. Puesto que el programa ASP se ejecuta cada vez que el
cliente pide la página, ésta puede incluir información dinámica y actualizada.
Hay otro género de lenguajes que se alejan del esquema que entiende un programa
como una secuencia de instrucciones. Normalmente, son lenguajes interpretados con
la particularidad de que el proceso de interpretación es el responsable de aplicar el
modelo en que se basa el lenguaje. Los más conocidos son Prolog y Lisp.
 Prolog modela el problema como un conjunto de reglas y restricciones, de cuya
aplicación sale la solución.
 Lisp se basa únicamente en el concepto de funciones como una operación que
hay que realizar sobre unos operandos (o argumentos) y que da un resultado,
que a su vez puede utilizarse como un argumento para otra función.
Ambos lenguajes se utilizan para investigación y desarrollo en inteligencia artificial.
1.5 SOFTWARE
Autor: Luis Heladio Garzón Rodríguez
Se entiende por software el conjunto de programas (o instrucciones) que el procesador
del ordenador va ejecutando secuencialmente y que permiten, básicamente, controlar
el hardware. En realidad, la funcionalidad que aporta el software en un sistema
informático se sitúa en todos los niveles, desde el más básico, consistente en hacer
funcionar el hardware, hasta el nivel del usuario.
En el nivel más básico, el software controla las diferentes unidades del procesador, la
memoria y los periféricos y todas las señales eléctricas que permiten conectarlo entre
sí.
En el nivel más alto, tiene la función de presentar al usuario una interfaz que le facilite
su interacción con el ordenador. Esta interfaz tiene que diseñarse de manera que
permita a la persona trabajar con objetos de alto nivel y que tengan alguna relación
con su mundo real. De esta manera, no necesita estar pendiente de los numerosos
detalles técnicos necesarios para que el hardware funcione. Es el software el que
enlaza ambos niveles. Esta capacidad de permitir abstraer al usuario de los detalles del
hardware es fundamental para poder trabajar con eficiencia con un sistema
informático.
Entre ambos niveles hay varias piezas de software organizadas en capas de manera
que cada una añade un nivel más de abstracción entre el hardware y el nivel del
usuario. Puede apreciarse una división entre el software que realiza las funciones más
genéricas y básicas del sistema, llamado de infraestructura básica y el software de
aplicaciones, que se centra en la resolución de las necesidades concretas de los
usuarios.
 Software de infraestructura básica
 Software de aplicaciones
 Sistema operativo
 Ofimática
1.5.1 Software de infraestructura básica
Es el que realiza las funciones más básicas de un sistema de información, que cuentan
no sólo el control del hardware, sino de todos aquellos subsistemas que forman una
base sobre la cual las aplicaciones de usuario puedan funcionar. Básicamente, es lo
que se conoce como sistema operativo, pero también incluye otras piezas utilizadas
por la mayoría de las aplicaciones como, por ejemplo, el sistema de correo electrónico
o el de acceso a bases de datos.
Toda organización necesita incluir muchos productos de software de infraestructura
básica. Los riesgos de intentar desarrollar en la organización estos productos son muy
grandes, ya que son tecnológicamente complejos y requerirían un grado de
especialización elevado y, por lo tanto, el coste de desarrollo sería muy importante.
Por esto, lo recomendado es adquirir productos de mercado. No sólo resulta más
económico, sino que también las empresas fabricantes verifican su calidad, garantizan
la compatibilidad con otros productos y son capaces de seguir el ritmo de evolución de
la tecnología, ya que tienen todos sus recursos dedicados a esto.
1.5.2 Software de aplicaciones
Autor: Luis Heladio Garzón Rodríguez
Al contrario que el software de infraestructura básica, el de aplicaciones necesita en su
diseño y construcción conocer cómo es el usuario y su manera de actuar, de entender
la organización y lo que espera obtener de los sistemas informáticos.
La utilización de paquetes comerciales para cubrir las necesidades del software de
aplicaciones es recomendable, aunque no siempre es posible, ya que muchas
características pueden ser específicas de la organización. En estos casos, la
organización tiene que asumir el desarrollo del software específico.
1.5.3 Sistema operativo
El sistema operativo comprende la capa más básica del software de infraestructura.
Provee las funciones clásicas que permiten a las aplicaciones abstraerse de los detalles
del hardware:
 Control del procesador y de la memoria.
 Ejecución de programas y control de procesos. El sistema operativo se encarga
de crear y destruir procesos y de asignar recursos a cada uno de ellos, como
por ejemplo el tiempo de proceso, la memoria y la comparición de los
periféricos. Cuando hay varios procesos ejecutándose al mismo tiempo
(multiproceso), el sistema operativo tiene que arbitrar una manera ordenada y
equilibrada para que cada proceso acceda a los diferentes recursos en orden y
sin excluir a los otros procesos.
 Controladores de los periféricos. El sistema operativo tiene que generar las
señales necesarias para controlar a los periféricos y ofrecer una manera de
acceso adecuada para las aplicaciones.
 Sistema de ficheros. Es la abstracción (en ficheros y directorios) que utilizan los
sistemas operativos para organizar el espacio de almacenamiento de los discos
y otros soportes de información y permitir un acceso adecuado por parte de las
aplicaciones.
 Control de usuarios. En sistemas que permiten un uso diferenciado para
usuarios diferentes (multiusuario), es necesario establecer métodos para
identificar a cada usuario y para permitir a cada uno realizar las operaciones y
acceder a los recursos que tengan autorizados.
Últimamente, también se incluyen en el sistema operativo funciones de más alto nivel
que se han convertido en estándares:
 Controlador de las comunicaciones por red, correo electrónico y acceso a
Internet.
 Herramientas de administración. Los administradores del sistema son las
personas encargadas de mantener y gestionar los recursos del sistema
operativo. Las herramientas de administración facilitan su trabajo en temas
como la gestión de los usuarios y recursos y la monitorización del rendimiento
del sistema.
 Compiladores y librerías dinámicas. Muchos sistemas ofrecen herramientas y
métodos estándar para ayudar en la programación de aplicaciones.
 Control de la interfaz gráfica. La gestión de todos los objetos (ventanas, menús,
iconos, etc.) que aparecen en una pantalla es bastante compleja, así como su
utilización por parte de las aplicaciones. Los sistemas que ofrecen una interfaz
Autor: Luis Heladio Garzón Rodríguez
de uso para las aplicaciones también son una gran ayuda para los
programadores.
Todos estos mecanismos proporcionan un nivel de funcionalidad que simplifica mucho
el desarrollo de aplicaciones, ya que permite a los analistas y programadores
concentrarse en lo que es esencial en la aplicación.
A lo largo del tiempo se ha desarrollado una multitud de sistemas
operativos con orientaciones muy diferentes. Como tantos otros temas en
informática, los sistemas operativos a menudo se presentan en familias
que los fabricantes van haciendo que evolucionen a lo largo del tiempo.
Una de las líneas de sistemas operativos más conocidas es el sistema por
excelencia de los PC. Se trata del sistema Windows, desarrollado por
Microsoft. Esta línea empezó con el MS-DOS. Era un sistema bastante
limitado y con una interfaz únicamente de texto. Cuando Microsoft vio que
era necesario ampliarlo y añadirle una interfaz gráfica, desarrolló
Windows, que hasta el momento presenta varias versiones: 3.11, 95/98 y
Milenium en la versión doméstica y NT y 2000 en la profesional.
El sistema operativo de los Macintosh presenta una evolución más lineal
que Windows, puesto que desde el primer momento ya tenía un entorno
gráfico. Actualmente, coexisten las versiones 8, 9 y 10.
En el campo de las workstations, el sistema más utilizado es Unix, que
presenta diferentes versiones según los fabricantes. Es un sistema
operativo con gran número de funcionalidades y con una gran flexibilidad
que le ha permitido adaptarse perfectamente a los ordenadores más
avanzados. Siempre han existido versiones de Unix para la arquitectura
PC, pero últimamente ha aparecido una versión que ha ganado gran
popularidad: Linux.
1.5.4 Ofimática
Se entiende por software de ofimática un conjunto de herramientas pensadas para
facilitar toda una serie de tareas administrativas habituales en oficinas: creación de
documentos, esquemas gráficos, cálculos financieros y otros, archivos de datos,
gestión de la agenda, etc. Las más importantes son los procesadores de textos,
editores gráficos, hojas de cálculo y bases de datos. Una característica importante es
que todas estas herramientas están diseñadas para trabajar en coordinación. Así, por
ejemplo, utilizan menús y combinaciones de teclas iguales para las mismas funciones o
permiten al usuario traspasar textos y gráficos de una a otra de una manera fácil y
rápida. Por otra parte, la generalización de las redes ha impuesto otras herramientas
como estándares dentro de las oficinas: el correo electrónico, que está desplazando al
fax, y los navegadores de Internet.
El paquete de oficina más popular es el Microsoft Office.
 El procesador de textos es una herramienta que facilita la creación y edición de
documentos. También se conoce como editor de textos. Permite la manipulación de
documentos con textos y muchos ellos también admiten trabajar con varios tipos
Autor: Luis Heladio Garzón Rodríguez
de gráficos. Según su sofisticación, tienen varios formatos para el texto: tipo y
tamaño de letra, negrita, subrayado, colores, etc. Muchos disponen de
herramientas y funciones auxiliares como correctores ortográficos, diseño de tablas
o generadores automáticos de índices.
 Las herramientas de diseño gráfico son herramientas especializadas en la creación
de documentos con alto contenido gráfico, como pósters para exposiciones o
transparencias y diapositivas para presentaciones. Los tipos de gráficos que
incluyen van desde dibujos lineales a imágenes digitalizadas. Algunos de los más
sencillos es Power Point, que pertenece al paquete de Microsoft Office. Otros más
sofisticados son Corel Draw y Photoshop.
Existen herramientas de diseño gráfico muy especializadas en varios campos de la
ingeniería que permiten diseñar componentes electrónicos, piezas mecánicas,
edificios, etc. Disponen de numerosas funciones de manipulación de objetos
gráficos de dos y tres dimensiones y también de generación de vistas o escenas 3
D. Una de las más utilizadas, sobre todo en arquitectura, es Autocad.
 Las hojas de cálculo son programas que sirven para calcular y visualizar tablas de
cifras. La zona de trabajo es una cuadrícula de filas y columnas que definen celdas
donde se coloca la información. También permiten hacer gráficas de los datos. La
característica que les da una gran potencia es incluir fórmulas basadas en los datos
de las celdas y una función de recálculo automático de manera que, cuando se
modifica un dato, todas las fórmulas que dependen del mismo se vuelven a
calcular. Las hojas de cálculo más conocidas son Microsoft Excel y Lotus 1-2-3.
 Las bases de datos son conjuntos ordenados de información. La información se
organiza en tablas, y cada fila de las mismas se denomina registro y contiene
varios campos. Las diferentes tablas que pueden formar la base de datos pueden
relacionarse entre sí mediante un sistema de punteros e índices. Esto permite
buscar información relacionada, pero repartida en varias tablas. Las bases de datos
que utilizan este esquema de organización se denominan relaciónales.
Por extensión, también se conocen como bases de datos los programas que
gestionan y permiten acceder a la información que se almacena, pero el nombre
más exacto sería gestor de bases de datos.
Existen gestores de bases de datos de distinta complejidad. Los más sencillos tienen
una capacidad reducida (pero suficiente para muchas aplicaciones de oficina), como
por ejemplo Microsoft Access. Las más completas gestionan grandes volúmenes de
datos con eficiencia, rápido acceso e implementan mecanismos de integridad de los
datos frente a accesos simultáneos de varios usuarios y sistemas de seguridad contra
la pérdida de información. Quizá una de las más conocidas es Oráculo.
1.6 El procesamiento de datos
Procesar información quiere decir realizar una serie de operaciones, tanto aritméticas
como de almacenamiento y transmisión de datos para solucionar un problema, ya sea
de cálculo científico, comercial o de cualquier tipo.
Autor: Luis Heladio Garzón Rodríguez
Estas operaciones pueden hacerse manualmente o con máquinas. Hasta hace
relativamente poco tiempo, todos estos cálculos se hacían manualmente (incluso
existía el oficio de calculador, una persona especializada en realizar operaciones
matemáticas con rapidez y corrección).
En el siglo XIX aparecieron las primeras máquinas de calcular mecánicas y en la
segunda mitad del siglo XX, las calculadoras electrónicas y los ordenadores.
El uso de máquinas, sean del tipo que sean, proporciona una mayor rapidez y fiabilidad
en la obtención de los datos deseados.
Tradicionalmente, el cálculo numérico, tanto aplicado a la ciencia, la ingeniería o a las
finanzas, ha sido la causa del desarrollo de la computación: a medida que las
máquinas de calcular han ganado potencia, se han podido plantear cálculos cada vez
más complejos.
Paralelamente a la creciente complejidad de los cálculos numéricos pudo plantearse la
toma de decisiones que tenía en cuenta más variables y, además, con más rapidez: los
tradicionales archivos de papel dejaron paso a los actuales sistemas de bases de datos
y a los sistemas automáticos de ayuda a la toma de decisiones.
La miniaturización de los circuitos electrónicos, que conserva una gran potencia de
cálculo, ha permitido incorporar sistemas de control a máquinas de todo tipo, que se
destinan a controlar todo tipo de procesos industriales, desde líneas de producción de
cualquier artículo, hasta control de entornos donde parámetros como temperatura,
presión, radiación, etc. requieren una gran precisión y seguridad. Por ejemplo, un
ordenador puede comprobar características de los productos que se están produciendo,
y si no son las deseadas, encontrar que falla en la producción y corregirlo.
En este campo aparecieron las primeras aplicaciones prácticas del concepto de robot,
entendido como un dispositivo mecánico capaz de realizar un trabajo especializado de
manera automática. Las imágenes de robots como seres artificiales de amplias
capacidades aún son un concepto futurista, aunque la técnica de la robótica y la
informática cada vez lo están acercando más.
Un último campo en que el procesamiento de la información es de gran ayuda es el de
la creatividad y el arte. No es sólo una herramienta que facilita la creación de todo tipo
de manifestaciones artísticas (libros, revistas, publicidad, cuadros, música...), sino que
incluso ha propiciado nuevos géneros artísticos, como los sistemas multimedia que
combinan en un único producto sonido, imagen y otros medios de comunicación.
HISTORIA DE LOS LENGUAJES DE PROGRAMACIÓN
La historia de los lenguajes de computadores se remonta al tiempo de la creación de
las primeras maquinas, concebidas para la automatización de procesos, y su evolución
se puede decir se ha sido consecuencia de la misma evolución que han sufrido las
computadoras.
Autor: Luis Heladio Garzón Rodríguez
En este sentido es importante resaltar que los lenguajes de programación se clasifican
por generaciones o por el nivel.
Las generaciones están relacionadas con la evolución de las computadoras.
Revise los link suministrados a continuación para profundizar sobre el tema
http://www.desarrolloweb.com/articulos/2358.php
https://www.maestrodelacomputacion.net/historia-de-los-lenguajes-de-programacion/
ATRIBUTOS DE UN BUEN LENGUAJE DE PROGRAMACIÓN
Un buen lenguaje de programación debe satisfacer características como:
Integridad conceptual
Claridad
Simplicidad
Unidad
Legibilidad
Las diferencias semánticas deben verse reflejadas en diferencias sintácticas
Ortogonalidad.
Capacidad de combinar varias características del lenguaje de todas las formas posibles,
y que cada una de esas combinaciones tenga significado
Pocas excepciones y casos especiales que recordar
Aspecto negativo: Combinaciones incoherentes o ineficientes
Naturalidad para la aplicación
Un lenguaje debe suministrar estructuras de datos, operaciones, y estructuras de
control apropiadas al tipo de problemas al que se aplicará, así como una sintaxis en la
que se puedan expresar de forma natural las soluciones a tales problemas
Soporte para la abstracción
Facilidad para la verificación de programas
Entorno de programación
Portabilidad de los programas
Homogeneidad en el tratamiento externo e interno de los conceptos
Coste de uso
Coste de ejecución de programas
Coste de traducción
Coste de creación, prueba y uso de programas
Coste de mantenimiento de programas
Buena definición
Sintaxis y semántica sean precisas, in ambiguas, legibles, comprensibles
y, a ser posible, formales
MODELOS BASICOS DE PARADIGMAS DE LOS LENGUAJES DE
PROGRAMACIÓN
Autor: Luis Heladio Garzón Rodríguez
Se entiende por paradigma de programación un modelo que sirve como una guía al
programador para diseñar aplicaciones. Se pueden referir tanto a métodos de
programación como a maneras de estructurar la información y los diferentes
elementos que componen una aplicación.
Su potencia reside en que se han utilizado muchas veces en aplicaciones distintas, lo
cual ha permitido descartar a los que no son adecuados y mejorar los que ofrecían
buenas soluciones. Para un programador, seguir estos modelos representa una
garantía de la calidad del producto final y una mayor eficiencia, ya que trabajará con
un método sobradamente comprobado.
 Modelo Von Neumann
 Programación estructurada
 Programación orientada a objetos
 Modelo cliente-servidor
 Modelo Von Neumann
El modelo Von Neumann, propuesto por el matemático del mismo nombre, define las
bases de la computación y de los ordenadores actuales. Propone que los programas y
datos se representen en código binario, que haya un centro de control que ejecute el
programa secuencialmente o con saltos según indiquen las instrucciones y que acceda
y trabaje con los datos almacenados en dispositivo de memoria.
Muchos lenguajes siguen este esquema con más o menos nivel de abstracción,
notablemente los lenguajes más conocidos. Algunos de los que se apartan del modelo
Von Neumann son los lenguajes funcionales (Lisp) y lógicos (Prolog).
 Programación estructurada o modular
Esta técnica propone una estructura lógica para escribir un programa. Los datos se
agrupan en estructuras de manera que las relaciones entre ellos queden reforzadas por
la propia forma en que se agrupan. Los procedimientos grandes se rompen en rutinas
o funciones más pequeñas y modulares.
Se desaconsejan las instrucciones de saltos incondicionales, los famosos GOTO, porque
oscurecen el flujo de control del programa, al no quedar constancia de cómo se ha
llegado hasta aquel punto. En cambio, cuando desde un programa se llama a una
función, el sistema de control registra el punto del programa desde donde se hace el
llamamiento para poder volver al mismo cuando la función acaba. Finalmente, las
rutinas que tratan con datos relacionados pueden agruparse en módulos. Así, el
objetivo final es descomponer un programa en módulos, lo cual facilita su verificación y
depuración, ya que cada uno puede probarse por separado.
Esta organización es imprescindible para poder desarrollar aplicaciones de cierta
complejidad y tamaño. Los lenguajes más antiguos (por ejemplo FORTRAN, COBOL o
BASIC) requieren una disciplina por parte del programador para utilizar un esquema
modular. En cambio, todos los lenguajes posteriores imponen, por su estructura
sintáctica, la organización del código en funciones y, por lo tanto, modular.
Autor: Luis Heladio Garzón Rodríguez
 Programación orientada a objetos
La evolución del modelo de programación modular es la programación orientada a
objetos. Sin duda, es una de las técnicas más complejas. De hecho, más que una
técnica representa una manera nueva de encarar la programación.
Antes de la orientación a objetos, un programa era, como ya se ha explicado, una
secuencia lógica de instrucciones que seguía el ordenador. Por lo tanto, el énfasis se
ponía en las instrucciones, en la manera en que tenían que tratarse los datos. En
cambio, la programación orientada a objetos se concentra en los datos,
estructurándolos en objetos claramente definidos y en cómo tienen que manipularse.
Los programas se construyen en términos de los objetos que define el problema, y
utilizan funciones o métodos que operan con estos objetos.
En resumidas cuentas, un objeto representa un concepto del problema con un conjunto
de datos y de métodos. Los datos del objeto sólo se pueden manipular con los métodos
definidos. De esta manera, un objeto pasa a ser una estructura compacta con unos
puntos de acceso muy definidos y permite, por lo tanto, ser utilizado en diferentes
aplicaciones con gran facilidad. Esta capacidad de reutilizar un código representa un
gran ahorro de tiempo de programación.
Otro beneficio de este esquema es que se puede definir un objeto en términos de
otros, de manera que el nuevo objeto puede aprovechar los datos y métodos de los ya
existentes, con lo cual se consigue, de nuevo, reutilizar código. Este mecanismo se
llama herencia.
La gran mayoría de los lenguajes modernos siguen el modelo de orientación a objetos.
Tal es el caso de los ya mencionados C++ y Java, y también otros lenguajes como
Javascript o Perl.
 Modelo cliente-servidor
La idea principal del modelo cliente-servidor es que existe un repositorio central, como
por ejemplo una base de datos, cuya información se distribuye bajo pedido al conjunto
de nodos que acceden al mismo. La clave del funcionamiento de este modelo es que el
repositorio de información está centralizado de manera que los cambios que se hacen
se propagan automáticamente a los clientes que piden la información en cuestión.
El ordenador donde reside la información y el software que la distribuye recibe el
nombre de servidor, mientras que la máquina que se comunica con el servidor, obtiene
la información y la visualiza para el usuario final recibe el nombre de cliente.
La construcción de aplicaciones basadas en el modelo cliente-servidor es relativamente
sencilla. A pesar de esto, hay que tener en cuenta algunos problemas que aparecen
cuando un solo servidor tiene que atender las peticiones de muchos clientes de manera
simultánea. Se refieren tanto a problemas de acceso concurrente a los datos como a
problemas de velocidad.
Cuando un servidor tiene que atender peticiones de consulta de información de
diferentes clientes al mismo tiempo, tiene que asegurar que se atiende a todos por
igual y que ninguno debe esperar mucho más tiempo que los demás.
Autor: Luis Heladio Garzón Rodríguez
Los clientes, por otro lado, también pueden hacer peticiones para modificar los datos
del servidor o para añadir otros nuevos. En este caso, el servidor tiene que asegurar
que los datos de un cliente no se sobre-escriban a los de otro, o que mientras se hace
una modificación no se pierda ningún dato, es decir, el servidor tiene que asegurarse
de la coherencia de sus propios datos. Por esto, los clientes modifican los datos en
operaciones denominadas transacciones, en las que se asegura que todas las
modificaciones se hacen completamente o que si hay una cancelación, no se realiza
ninguna y los datos quedan intactos.
El problema de la velocidad aparece cuando centenares de clientes quieren acceder al
mismo servidor y éste, literalmente, no da abasto. Para solucionar este problema hay
diversas opciones:
 La más inmediata es utilizar máquinas de más potencia, pero a la larga esto
siempre acaba resultando insuficiente.
 Una mejor solución es optimizar el software del servidor para reducir al máximo
los posibles retrasos, o para pasar al lado del cliente procesamientos de los
datos que no sean estrictamente para su acceso o modificación. éste es un
buen método porque cada vez más los ordenadores clientes suelen disponer de
más capacidad de cálculo.
Las aplicaciones basadas en el modelo cliente-servidor pueden llegar a tener gran
complejidad, por lo cual se estructuran en varias capas, de manera que cada una
resuelve una pequeña parte del problema y el conjunto ofrece la solución global.
Actualmente, este modelo se emplea en un gran número de aplicaciones, desde
sistemas bancarios, de crédito y financieros hasta la distribución de cualquier tipo de
datos. La red Internet sería el ejemplo más claro.
NUEVOS PARADIGMAS DE PROGRAMACIÓN
Un paradigma de programación provee (y determina) la visión y métodos de un
programador en la construcción de un programa o subprograma.
Diferentes paradigmas resultan en diferentes estilos de programación y en diferentes
formas de pensar la solución de problemas (una aplicación se construye con la solución
de múltiples “problemas”).
Tipos de paradigmas de programación más comunes:
El paradigma imperativo o por procedimientos es considerado el más común y
está representado, por ejemplo, por el C o por BASIC.
El paradigma funcional está representado por la familia de lenguajes (en particular
Scheme), ML o Haskell.
Autor: Luis Heladio Garzón Rodríguez
El paradigma lógico un ejemplo es PROLOG.
El paradigma orientado a objetos un lenguaje completamente orientado a objetos
es Smalltalk.
Paradigma imperativo o por procedimientos
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.
La programación en el paradigma imperativo consiste en determinar qué datos son
requeridos para el cálculo, asociar a esos datos unas direcciones de memoria, y
efectuar paso a paso una secuencia de transformaciones en los datos almacenados, de
forma que el estado final represente el resultado correcto.
Ejemplos de lenguajes imperativos:
 BASIC
 C
 C#
 C++
 Fortran
 Pascal
 Java
 Perl
 PHP
 Lua
Paradigma Funcional
La Programación funcional es un paradigma de programación declarativa basado en la
utilización de funciones matemáticas.
El objetivo del paradigma funcional es conseguir lenguajes expresivos y
matemáticamente elegantes, en los que no sea necesario bajar al nivel de la máquina
para describir el proceso llevado a cabo por el programa, y evitando el concepto de
estado del cómputo. La secuencia de computaciones llevadas a cabo por el programa
se regiría única y exclusivamente por la reescritura de definiciones más amplias a otras
cada vez más concretas y definidas, usando lo que se denominan definiciones dirigidas.
Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante en
el cual se pueda manejar más fácilmente y así los programas sean menos extensos y
complejos.
Autor: Luis Heladio Garzón Rodríguez
Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer las
necesidades del usuario con respecto a operaciones matemáticas y convertirse en un
lenguaje más expresivo.
Paradigma Lógico
La programación lógica consiste en la aplicación del corpus de conocimiento sobre
lógica para el diseño de lenguajes de programación; no debe confundirse con la
disciplina de la lógica computacional.
La programación lógica comprende dos paradigmas de programación: la programación
declarativa y la programación funcional. La programación declarativa gira en torno al
concepto de predicado, o relación entre elementos. La programación funcional se basa
en el concepto de función (que no es más que una evolución de los predicados), de
corte más matemático.
Paradigma Orientado a Objetos
La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) es un
paradigma de programación que usa objetos y sus interacciones para diseñar
aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo
herencia, modularidad, polimorfismo y encapsulamiento. Su uso se popularizó a
principios de la década de 1990. Actualmente son muchos los lenguajes de
programación que soportan la orientación a objetos.
La programación orientada a objetos es una nueva forma de programar que trata de
encontrar una solución a estos problemas. Introduce nuevos conceptos, que superan y
amplían conceptos antiguos ya conocidos.

Más contenido relacionado

La actualidad más candente

Paradigmas de programacion
Paradigmas de programacionParadigmas de programacion
Paradigmas de programacionWil Mer
 
Paradigma de poo
Paradigma de pooParadigma de poo
Paradigma de poopixeleante
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programaciónOver Rattlehead
 
Lenguajes de programación: Paradigmas de Programación
Lenguajes de programación: Paradigmas de ProgramaciónLenguajes de programación: Paradigmas de Programación
Lenguajes de programación: Paradigmas de ProgramaciónLuis Fernando Aguas Bucheli
 
PARADIGMA IMPERATIVO
PARADIGMA IMPERATIVOPARADIGMA IMPERATIVO
PARADIGMA IMPERATIVOFredy Olaya
 
LENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACIONLENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACIONDIEGO BAROJA
 
Tabla comparativa de paradigma de programacion estruturada y pradigma de prog...
Tabla comparativa de paradigma de programacion estruturada y pradigma de prog...Tabla comparativa de paradigma de programacion estruturada y pradigma de prog...
Tabla comparativa de paradigma de programacion estruturada y pradigma de prog...jose francisco arenas jimenez
 
3 paradigmas
3 paradigmas3 paradigmas
3 paradigmasalithu1
 
Paradigma de Programación Orientado a Objetos
Paradigma de Programación Orientado a ObjetosParadigma de Programación Orientado a Objetos
Paradigma de Programación Orientado a ObjetosAlberto Blumberg
 
Paradigmas de Programación
Paradigmas de ProgramaciónParadigmas de Programación
Paradigmas de ProgramaciónJose Sanchez
 
Programación Orientada a Aspectos (POA)
Programación Orientada a Aspectos (POA)Programación Orientada a Aspectos (POA)
Programación Orientada a Aspectos (POA)Walter Javier Franck
 
Lenguaje de programacion de c++
Lenguaje de programacion de c++Lenguaje de programacion de c++
Lenguaje de programacion de c++zoymar graterol
 
Tabla comparativa de paradigmas de programacion
Tabla comparativa de paradigmas de programacionTabla comparativa de paradigmas de programacion
Tabla comparativa de paradigmas de programacionMarioS1093
 
Programacion
ProgramacionProgramacion
Programacioncace10
 

La actualidad más candente (20)

Paradigmas de programacion
Paradigmas de programacionParadigmas de programacion
Paradigmas de programacion
 
Programación!! . .
Programación!! . .Programación!! . .
Programación!! . .
 
Paradigmas de la programación
Paradigmas de la programación Paradigmas de la programación
Paradigmas de la programación
 
Paradigma de poo
Paradigma de pooParadigma de poo
Paradigma de poo
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programación
 
Lenguajesprog
LenguajesprogLenguajesprog
Lenguajesprog
 
Lenguajes de programación: Paradigmas de Programación
Lenguajes de programación: Paradigmas de ProgramaciónLenguajes de programación: Paradigmas de Programación
Lenguajes de programación: Paradigmas de Programación
 
PARADIGMA IMPERATIVO
PARADIGMA IMPERATIVOPARADIGMA IMPERATIVO
PARADIGMA IMPERATIVO
 
LENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACIONLENGUAJES DE PROGRAMACION
LENGUAJES DE PROGRAMACION
 
Tabla comparativa de paradigma de programacion estruturada y pradigma de prog...
Tabla comparativa de paradigma de programacion estruturada y pradigma de prog...Tabla comparativa de paradigma de programacion estruturada y pradigma de prog...
Tabla comparativa de paradigma de programacion estruturada y pradigma de prog...
 
3 paradigmas
3 paradigmas3 paradigmas
3 paradigmas
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programación
 
Paradigma de Programación Orientado a Objetos
Paradigma de Programación Orientado a ObjetosParadigma de Programación Orientado a Objetos
Paradigma de Programación Orientado a Objetos
 
Int a la computacion
Int a la computacionInt a la computacion
Int a la computacion
 
Paradigmas de Programación
Paradigmas de ProgramaciónParadigmas de Programación
Paradigmas de Programación
 
Paradigmas de programación
Paradigmas de programaciónParadigmas de programación
Paradigmas de programación
 
Programación Orientada a Aspectos (POA)
Programación Orientada a Aspectos (POA)Programación Orientada a Aspectos (POA)
Programación Orientada a Aspectos (POA)
 
Lenguaje de programacion de c++
Lenguaje de programacion de c++Lenguaje de programacion de c++
Lenguaje de programacion de c++
 
Tabla comparativa de paradigmas de programacion
Tabla comparativa de paradigmas de programacionTabla comparativa de paradigmas de programacion
Tabla comparativa de paradigmas de programacion
 
Programacion
ProgramacionProgramacion
Programacion
 

Similar a Introducción a los paradigmas de programación

Clase 1 de introduccion a la programacion
Clase 1 de introduccion a la programacionClase 1 de introduccion a la programacion
Clase 1 de introduccion a la programacionjoel210696
 
Analista-programador Cobol - Módulo 1.3
Analista-programador Cobol - Módulo 1.3Analista-programador Cobol - Módulo 1.3
Analista-programador Cobol - Módulo 1.3natachaceleste
 
Unidad 3
Unidad 3Unidad 3
Unidad 3tf94
 
Introduccion a la programación I Parte
Introduccion a la programación I Parte Introduccion a la programación I Parte
Introduccion a la programación I Parte Yelixa Araque Angulo
 
Introduccion a la Programación I parte
Introduccion a la Programación I parte Introduccion a la Programación I parte
Introduccion a la Programación I parte Yelixa Araque Angulo
 
Introduccion a los lenguajes de programacion
Introduccion a los lenguajes de programacionIntroduccion a los lenguajes de programacion
Introduccion a los lenguajes de programacionlupitagarcia07
 
Manual de Programación c/c++ Ricky Bonilla
Manual de Programación c/c++ Ricky BonillaManual de Programación c/c++ Ricky Bonilla
Manual de Programación c/c++ Ricky BonillaEstudiantes ISI_UCA
 
tecnologia 1.pdf
tecnologia 1.pdftecnologia 1.pdf
tecnologia 1.pdfElenaAragn3
 
Programación
ProgramaciónProgramación
ProgramaciónGraceelml
 
diana estefania huertas villota
diana estefania huertas villotadiana estefania huertas villota
diana estefania huertas villotadiana
 
Lenguajes de bases de datos
Lenguajes  de bases de datos Lenguajes  de bases de datos
Lenguajes de bases de datos Anita Ortiz
 
Wiki glosario tecnico_ingles_jhon_jairorincon_jimmyalbertomartinez
Wiki glosario tecnico_ingles_jhon_jairorincon_jimmyalbertomartinezWiki glosario tecnico_ingles_jhon_jairorincon_jimmyalbertomartinez
Wiki glosario tecnico_ingles_jhon_jairorincon_jimmyalbertomartinezJhon Rincon
 
Programac io n pdf
Programac io n pdfProgramac io n pdf
Programac io n pdfjose peralta
 
Tema1
Tema1Tema1
Tema1UH
 
Tema1
Tema1Tema1
Tema1UH
 
Tema1
Tema1Tema1
Tema1UH
 

Similar a Introducción a los paradigmas de programación (20)

Clase 1 de introduccion a la programacion
Clase 1 de introduccion a la programacionClase 1 de introduccion a la programacion
Clase 1 de introduccion a la programacion
 
Analista-programador Cobol - Módulo 1.3
Analista-programador Cobol - Módulo 1.3Analista-programador Cobol - Módulo 1.3
Analista-programador Cobol - Módulo 1.3
 
Programeichon de milagro
Programeichon de milagroProgrameichon de milagro
Programeichon de milagro
 
Unidad 3
Unidad 3Unidad 3
Unidad 3
 
Introduccion a la programación I Parte
Introduccion a la programación I Parte Introduccion a la programación I Parte
Introduccion a la programación I Parte
 
Introduccion a la Programación I parte
Introduccion a la Programación I parte Introduccion a la Programación I parte
Introduccion a la Programación I parte
 
Introduccion a los lenguajes de programacion
Introduccion a los lenguajes de programacionIntroduccion a los lenguajes de programacion
Introduccion a los lenguajes de programacion
 
Manual de Programación c/c++ Ricky Bonilla
Manual de Programación c/c++ Ricky BonillaManual de Programación c/c++ Ricky Bonilla
Manual de Programación c/c++ Ricky Bonilla
 
tecnologia 1.pdf
tecnologia 1.pdftecnologia 1.pdf
tecnologia 1.pdf
 
tecnologia 1.pdf
tecnologia 1.pdftecnologia 1.pdf
tecnologia 1.pdf
 
Glosario de terminos
Glosario de terminosGlosario de terminos
Glosario de terminos
 
Mario martinez alvarez
Mario martinez alvarezMario martinez alvarez
Mario martinez alvarez
 
Programación
ProgramaciónProgramación
Programación
 
diana estefania huertas villota
diana estefania huertas villotadiana estefania huertas villota
diana estefania huertas villota
 
Lenguajes de bases de datos
Lenguajes  de bases de datos Lenguajes  de bases de datos
Lenguajes de bases de datos
 
Wiki glosario tecnico_ingles_jhon_jairorincon_jimmyalbertomartinez
Wiki glosario tecnico_ingles_jhon_jairorincon_jimmyalbertomartinezWiki glosario tecnico_ingles_jhon_jairorincon_jimmyalbertomartinez
Wiki glosario tecnico_ingles_jhon_jairorincon_jimmyalbertomartinez
 
Programac io n pdf
Programac io n pdfProgramac io n pdf
Programac io n pdf
 
Tema1
Tema1Tema1
Tema1
 
Tema1
Tema1Tema1
Tema1
 
Tema1
Tema1Tema1
Tema1
 

Más de Jose Sanchez

Sanchez_Jose_Semana8.pdf
Sanchez_Jose_Semana8.pdfSanchez_Jose_Semana8.pdf
Sanchez_Jose_Semana8.pdfJose Sanchez
 
Database miningguide
Database miningguideDatabase miningguide
Database miningguideJose Sanchez
 
Maquinas de vectores
Maquinas de vectoresMaquinas de vectores
Maquinas de vectoresJose Sanchez
 
Ensayo tutoria 1 sep
Ensayo tutoria 1 sepEnsayo tutoria 1 sep
Ensayo tutoria 1 sepJose Sanchez
 
Algoritmos para aplicar data mining
Algoritmos para aplicar data miningAlgoritmos para aplicar data mining
Algoritmos para aplicar data miningJose Sanchez
 
Segunda condicional
Segunda condicionalSegunda condicional
Segunda condicionalJose Sanchez
 
Aprenda Java como si estuviera en primero
Aprenda Java como si estuviera en primeroAprenda Java como si estuviera en primero
Aprenda Java como si estuviera en primeroJose Sanchez
 
Preguntas generadoras(1)
Preguntas generadoras(1)Preguntas generadoras(1)
Preguntas generadoras(1)Jose Sanchez
 
Actividad de Aprendizaje
Actividad de AprendizajeActividad de Aprendizaje
Actividad de AprendizajeJose Sanchez
 
Herramientas de Programación
Herramientas de ProgramaciónHerramientas de Programación
Herramientas de ProgramaciónJose Sanchez
 
Paradigma de Programación Orientada a Objetos
Paradigma de Programación Orientada a ObjetosParadigma de Programación Orientada a Objetos
Paradigma de Programación Orientada a ObjetosJose Sanchez
 
Personal introduction
Personal introductionPersonal introduction
Personal introductionJose Sanchez
 
Unit 1 jose martin sanchez cardoso
Unit 1 jose martin sanchez cardosoUnit 1 jose martin sanchez cardoso
Unit 1 jose martin sanchez cardosoJose Sanchez
 

Más de Jose Sanchez (20)

Sanchez_Jose_Semana8.pdf
Sanchez_Jose_Semana8.pdfSanchez_Jose_Semana8.pdf
Sanchez_Jose_Semana8.pdf
 
Database miningguide
Database miningguideDatabase miningguide
Database miningguide
 
Maquinas de vectores
Maquinas de vectoresMaquinas de vectores
Maquinas de vectores
 
Ensayo tutoria 1 sep
Ensayo tutoria 1 sepEnsayo tutoria 1 sep
Ensayo tutoria 1 sep
 
Algoritmos para aplicar data mining
Algoritmos para aplicar data miningAlgoritmos para aplicar data mining
Algoritmos para aplicar data mining
 
Data mining
Data mining Data mining
Data mining
 
Segunda condicional
Segunda condicionalSegunda condicional
Segunda condicional
 
Unit 8
Unit 8Unit 8
Unit 8
 
Aprenda Java como si estuviera en primero
Aprenda Java como si estuviera en primeroAprenda Java como si estuviera en primero
Aprenda Java como si estuviera en primero
 
Preguntas generadoras(1)
Preguntas generadoras(1)Preguntas generadoras(1)
Preguntas generadoras(1)
 
Taller n°1(1)
Taller n°1(1)Taller n°1(1)
Taller n°1(1)
 
Actividad de Aprendizaje
Actividad de AprendizajeActividad de Aprendizaje
Actividad de Aprendizaje
 
Herramientas de Programación
Herramientas de ProgramaciónHerramientas de Programación
Herramientas de Programación
 
Paradigma de Programación Orientada a Objetos
Paradigma de Programación Orientada a ObjetosParadigma de Programación Orientada a Objetos
Paradigma de Programación Orientada a Objetos
 
Unidad 6
Unidad 6Unidad 6
Unidad 6
 
The thirty
The thirtyThe thirty
The thirty
 
Resumen 39 steps
Resumen 39 stepsResumen 39 steps
Resumen 39 steps
 
My daily routine
My daily routineMy daily routine
My daily routine
 
Personal introduction
Personal introductionPersonal introduction
Personal introduction
 
Unit 1 jose martin sanchez cardoso
Unit 1 jose martin sanchez cardosoUnit 1 jose martin sanchez cardoso
Unit 1 jose martin sanchez cardoso
 

Último

FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdf
FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdfFLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdf
FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdfYuriFuentesMartinez2
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenadanielaerazok
 
El uso de las tic en la vida continúa , ambiente positivo y negativo.
El uso de las tic  en la vida continúa , ambiente positivo y negativo.El uso de las tic  en la vida continúa , ambiente positivo y negativo.
El uso de las tic en la vida continúa , ambiente positivo y negativo.ayalayenifer617
 
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptxPRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptxRodriguezLucero
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfOscarBlas6
 
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsxactividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx241532171
 
CamposGarcia_MariaMagdalena_M1S3AI6.pptx
CamposGarcia_MariaMagdalena_M1S3AI6.pptxCamposGarcia_MariaMagdalena_M1S3AI6.pptx
CamposGarcia_MariaMagdalena_M1S3AI6.pptx241518192
 
Producto académico 03 - Habilidades Comunicativas.pptx
Producto académico 03 - Habilidades Comunicativas.pptxProducto académico 03 - Habilidades Comunicativas.pptx
Producto académico 03 - Habilidades Comunicativas.pptx46828205
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenajuniorcuellargomez
 
3Mayo2023 Taller construcción de Prototipos.pptx
3Mayo2023 Taller construcción de Prototipos.pptx3Mayo2023 Taller construcción de Prototipos.pptx
3Mayo2023 Taller construcción de Prototipos.pptxadso2024sena
 
Tema 1 - Fundamentos de gestión contable.pptx
Tema 1 - Fundamentos de gestión contable.pptxTema 1 - Fundamentos de gestión contable.pptx
Tema 1 - Fundamentos de gestión contable.pptxchinojosa17
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAdanielaerazok
 
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptxrodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptxssuser61dda7
 
Fisica General.pdf ESCUELA D QUIMICA E INGENIERIA
Fisica General.pdf ESCUELA D QUIMICA E INGENIERIAFisica General.pdf ESCUELA D QUIMICA E INGENIERIA
Fisica General.pdf ESCUELA D QUIMICA E INGENIERIAcoloncopias5
 
GRUPO 10 SOFTWARE DE EL CAMPO DE LA SAULD
GRUPO 10 SOFTWARE DE EL CAMPO DE LA SAULDGRUPO 10 SOFTWARE DE EL CAMPO DE LA SAULD
GRUPO 10 SOFTWARE DE EL CAMPO DE LA SAULDLeslie Villar
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webDecaunlz
 
GRUPO 5 Software en el campo de la salud.pptx
GRUPO 5 Software en el campo de la salud.pptxGRUPO 5 Software en el campo de la salud.pptx
GRUPO 5 Software en el campo de la salud.pptxNicolas Villarroel
 
2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdfFernandaHernandez312615
 
libro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdflibro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdfFAUSTODANILOCRUZCAST
 

Último (19)

FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdf
FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdfFLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdf
FLUIDEZ-Teatro-Leido-4to-Grado-El-leon-y-el-raton- (1).pdf
 
Institucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalenaInstitucion educativa la esperanza sede la magdalena
Institucion educativa la esperanza sede la magdalena
 
El uso de las tic en la vida continúa , ambiente positivo y negativo.
El uso de las tic  en la vida continúa , ambiente positivo y negativo.El uso de las tic  en la vida continúa , ambiente positivo y negativo.
El uso de las tic en la vida continúa , ambiente positivo y negativo.
 
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptxPRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
PRIMARIA 1. RESUELVE PROBLEMAS DE FORMA MOVIMIENTO Y LOCALIZACIÓN 2 (2).pptx
 
COMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdfCOMPETENCIAS CIUDADANASadadadadadadada .pdf
COMPETENCIAS CIUDADANASadadadadadadada .pdf
 
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsxactividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
actividad.06_crea_un_recurso_multimedia_M01_S03_M01.ppsx
 
CamposGarcia_MariaMagdalena_M1S3AI6.pptx
CamposGarcia_MariaMagdalena_M1S3AI6.pptxCamposGarcia_MariaMagdalena_M1S3AI6.pptx
CamposGarcia_MariaMagdalena_M1S3AI6.pptx
 
Producto académico 03 - Habilidades Comunicativas.pptx
Producto académico 03 - Habilidades Comunicativas.pptxProducto académico 03 - Habilidades Comunicativas.pptx
Producto académico 03 - Habilidades Comunicativas.pptx
 
institucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalenainstitucion educativa la esperanza sede magdalena
institucion educativa la esperanza sede magdalena
 
3Mayo2023 Taller construcción de Prototipos.pptx
3Mayo2023 Taller construcción de Prototipos.pptx3Mayo2023 Taller construcción de Prototipos.pptx
3Mayo2023 Taller construcción de Prototipos.pptx
 
Tema 1 - Fundamentos de gestión contable.pptx
Tema 1 - Fundamentos de gestión contable.pptxTema 1 - Fundamentos de gestión contable.pptx
Tema 1 - Fundamentos de gestión contable.pptx
 
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENAINSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
INSTITUCION EDUCATIVA LA ESPERANZA SEDE MAGDALENA
 
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptxrodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
rodriguez_DelAngel_MariaGPE_M1S3AL6.pptx
 
Fisica General.pdf ESCUELA D QUIMICA E INGENIERIA
Fisica General.pdf ESCUELA D QUIMICA E INGENIERIAFisica General.pdf ESCUELA D QUIMICA E INGENIERIA
Fisica General.pdf ESCUELA D QUIMICA E INGENIERIA
 
GRUPO 10 SOFTWARE DE EL CAMPO DE LA SAULD
GRUPO 10 SOFTWARE DE EL CAMPO DE LA SAULDGRUPO 10 SOFTWARE DE EL CAMPO DE LA SAULD
GRUPO 10 SOFTWARE DE EL CAMPO DE LA SAULD
 
Buscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la webBuscadores, SEM SEO: el desafío de ser visto en la web
Buscadores, SEM SEO: el desafío de ser visto en la web
 
GRUPO 5 Software en el campo de la salud.pptx
GRUPO 5 Software en el campo de la salud.pptxGRUPO 5 Software en el campo de la salud.pptx
GRUPO 5 Software en el campo de la salud.pptx
 
2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf2º SOY LECTOR PART 2- MD  EDUCATIVO (6).pdf
2º SOY LECTOR PART 2- MD EDUCATIVO (6).pdf
 
libro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdflibro de Ciencias Sociales_6to grado.pdf
libro de Ciencias Sociales_6to grado.pdf
 

Introducción a los paradigmas de programación

  • 1. Autor: Luis Heladio Garzón Rodríguez OBJETIVO GENERAL Propender porque el estudiante se apropie del conocimiento de conceptos sobre programación y los paradigmas de programación, fundamentales en su formación como ingeniero. OBJETIVOS ESPECIFICOS  Comprender los conceptos fundamentales de la programación y su importancia.  Conocer sobre los lenguajes de programación la evolución histórica, clasificación, y sus diferencias.  Conocer los atributos de un buen lenguaje de programación.  Comprender los modelos básicos de los paradigmas de programación.  Diferenciar los paradigmas de programación y su importancia.  Profundizar mediante la investigación de los conceptos aquí tratados de parte del estudiante. CONCEPTOS FUNDAMENTALES DE PROGRAMACIÓN Es necesario conocer conceptos sobre programación para consolidar fundamentos, que le permitan comprender para desempeñarse con éxito en el ámbito de la programación de computadores, como parte del proceso de aprendizaje, para asimilar y familiarizarse con palabras y conceptos que serán parte del bagaje de conocimientos necesarios en esta disciplina. 1. CONCEPTOS BASICOS Datos Información Programa Lenguaje de programación Interpretador Compilador Software Procesamiento de datos 1.1 DATOS Los datos son la materia prima de la información. Los datos son atributos o características relacionadas con un individuo, objeto, evento o suceso. Son ejemplos de datos: nombre, descripción, fecha de nacimiento, estatura, cantidad de horas laboradas, peso etc., relacionadas con una persona empleado o funcionario. También se puede definir atributos sobre equipos de cómputo como: marca, descripción, parte, modelo, referencia, etc. UNIDAD I INTRODUCCIÓN A LOS PRADIGMAS DE PROGRAMACIÓN
  • 2. Autor: Luis Heladio Garzón Rodríguez Es necesario clasificar los datos que se va a utilizar en un programa, con el fin de optimizar la utilización de la memoria del computador. Para ello se debe tener en cuenta criterios como: a. Utilización: Identificar claramente que papel desempeñara o qué uso se dará al dato dentro del programa. Se debe analizar si realizara alguna operación aritmética con él, o si por el contrario solo contendrá un valor informativo. b. Contenido: Analizar que valores posibles puede almacenar el dato. En este caso y para algunos casos, se puede precisar los valores, para poderlos validar al momento de su captura por un dispositivo externo. c. Tamaño: Para todos los datos es necesario tener en cuenta el número de bytes que puede ocupar. Implica tener en cuenta el rango de valores que puede aceptar de acuerdo a la clasificación que se elija. Esto puede variar de acuerdo al lenguaje de programación utilizado. Esta practica es muy importante porque ayuda en el propósito de administrar adecuadamente la memoria principal del computador. Los datos en su forma básica o simple se clasifican en: Numéricos Carácter Lógicos Datos Numéricos Dato numérico es aquel cuyo valor y contenido esta compuesto por dígitos numéricos. Un dato numérico puede utilizado en operaciones aritméticas. Pero los datos numéricos se clasifican a su vez en: http://msdn.microsoft.com/es-es/library/ae55hdtk(VS.80).aspx https://es.wikibooks.org/wiki/Programaci%C3%B3n_en_C/Tipos_de_datos http://progra.usm.cl/apunte/materia/tipos.html Enteros Un dato numérico entero, contiene valores que no tienen parte decimal. Reales Datos cuyos valores pueden contener parte o fracción decimal. Esta clasificación en la mayoría de lenguajes de programación actual, ofrecen subclasificaciones, que permiten mayor precisión para el almacenamiento de valores. En java existe tipos de datos específicos, que en algunos casos difieren y en otros casos coinciden con otros lenguajes de programación. La clasificación de tipos de datos en Java se puede observar en: http://aprenderaprogramar.com/index.php?option=com_content&view=article&id=419:tipos-de-datos-java- tipos-primitivos-int-boolean-y-objeto-string-array-o-arreglo-variables-cu00621b&catid=68:curso-aprender- programacion-java-desde-cero&Itemid=188 Se puede encontrar otras clasificaciones en los datos numéricos, dependiendo del lenguaje de programación:
  • 3. Autor: Luis Heladio Garzón Rodríguez Otros sitios de interés https://sites.google.com/site/programacion1electronica/netbeans/tipos-de-datos Datos Carácter o cadena Se clasifica en este tipo de dato a los datos cuyo valor esta compuesto por caracteres, que pueden formar una cadena (de caracteres) que contenga uno o mas. También se conocen con el nombre de datos alfanuméricos, por que su valor contiene una combinación de letras, números y/o símbolos especiales. Aunque se puede realizar operaciones aritméticas entre cadenas, su resultado no será el esperado de acuerdo al operador escogido. Por ejemplo sean las cadenas dato_1 y dato_2, se desea realizar una suma de sus contenidos y almacenarlo en dato_3. 1. Supongamos que se asigna valores a los datos: dato_1 = „145‟ y dato_2 = „862‟ 2. Ahora si se propone la instrucción suma asignando a dato_3 el resultado: dato_3 = dato_1 + dato_2 3. Lo que realmente se obtiene como valor almacenado en dato_3 no es la suma de 145 mas 862, sino la cadena „145862‟, lo que en programación se conoce como concatenar cadenas de caracteres. Profundice más al respecto. 1. Funciones básicas con cadenas: https://www.manualweb.net/java/funciones-basicas-con-cadenas/ 2. Datos Booleanos, caracteres, cadenas de texto: http://www.aprendeaprogramar.com/mod/resource/view.php?id=210 3. Cadenas de caracteres y ejemplos: http://www.tutorialesprogramacionya.com/javaya/detalleconcepto.php?codigo=86&pu nto=&inicio= Datos Estructurados Este pertenece al tipo de datos definidos por el usuario. En el que se permite configurar una combinación de datos de diferente tipo, que no esta predefinido en el lenguaje de programación. En el paradigma de programación estructurada se les nombraba como registros. En el paradigma de programación orientada a objetos, se conocen como objetos. Es importante profundizar mas sobre este tipo de dato y sus variantes de acuerdo al paradigma de programación y el lenguaje de programación. 1.2 INFORMACIÓN Es el resultado que se obtiene del tratamiento de datos a través de procedimientos manuales o automatizados mediante aplicativos de software, que ofrecen solución a necesidades o solicitudes especificas, que permitan el entendimiento de alguna situación o sirvan para la toma de decisiones.
  • 4. Autor: Luis Heladio Garzón Rodríguez En este link encontrara mas sobre la definición de información http://es.wikipedia.org/wiki/Informaci%C3%B3n Es necesario e importante que investigue mas definiciones al respecto 1.3 PROGRAMA Un programa es un conjunto de instrucciones, órdenes u operaciones, escritas en un lenguaje de programación ordenadas lógica y secuencialmente, elaborada o diseñado por una persona para dar solución a una necesidad o problema especifico, con el fin producir resultados o información, que el ordenador es capaz de entender y realizar en el orden correcto. El programa debe ser de fácil utilización. Los programas se pueden escribir o codificar en diferentes lenguajes de programación. 1.4 LENGUAJE DE PROGRAMACIÓN Los programas que ejecutan los ordenadores tienen que escribirse siguiendo unas normas determinadas de manera que el ordenador entienda de qué instrucciones consta y de qué manera tiene que ejecutarlas. Este conjunto de normas se denomina lenguaje de programación. De la misma manera que las personas se comunican entre ellas mediante un lenguaje, los lenguajes de programación permiten la comunicación entre las personas y los ordenadores, y también entre ordenadores. Existe una multitud de lenguajes diferentes, cada uno pensado y adaptado a una necesidad específica. Los hay desde los más próximos al funcionamiento físico del ordenador, los lenguajes de bajo nivel, hasta los que intentan reproducir modelos de la realidad, con diferentes grados de abstracción, y sin tener en cuenta el hardware que pueda haber, los lenguajes de alto nivel. 1.4.1 Lenguajes de bajo nivel 1.4.1.1 Lenguaje máquina El lenguaje máquina consiste en el conjunto de instrucciones que un determinado procesador es capaz de entender y ejecutar. Cada procesador tiene su propio lenguaje máquina y son notables las diferencias entre los distintos modelos de procesadores. Las instrucciones se refieren a movimientos de datos entre las distintas partes de la CPU del ordenador: la memoria, los registros, canales de entrada/salida, etc. y es necesario especificar las direcciones concretas y el número de bytes que hay que operar. Es decir, especifican exactamente qué tiene que hacer el ordenador, pero es enormemente complicado y difícil de utilizar. Es el único lenguaje que entiende realmente el ordenador, de manera que cualquier otro tiene que traducirse a lenguaje máquina. 1.4.1.2 Lenguaje ensamblador El lenguaje ensamblador puede considerarse de bajo nivel porque está orientado al lenguaje máquina. Sus instrucciones son muy similares a las del lenguaje máquina, pero, en vez de códigos y números en binario, utiliza símbolos mnemotécnicos y cifras
  • 5. Autor: Luis Heladio Garzón Rodríguez decimales. De esta manera, el significado de cada instrucción es más evidente y, por lo tanto, más fácil de recordar y utilizar que la sucesión de ceros y unos del lenguaje máquina. Cada modelo de ordenador tiene su propio lenguaje ensamblador. Una herramienta denominada ensamblador convierte los códigos de lenguaje ensamblador en un programa binario en un proceso bastante sencillo denominado ensamblaje. 1.4.2 Lenguajes de alto nivel Los lenguajes de alto nivel están más orientados al problema que tienen que resolver que a la máquina. Por esta razón, son independientes del ordenador y, por lo tanto, pueden ser utilizados en cualquier tipo de máquina. Un programa escrito en un lenguaje de alto nivel, programa fuente, debe traducirse al lenguaje máquina del ordenador que tiene que ejecutarlo. Existen dos maneras diferentes de realizar esta traducción:  Interpretación que se lleva a término con un intérprete del lenguaje en cuestión. Este programa lee cada instrucción del programa fuente, la traduce a código máquina y hace que la ejecute el ordenador de manera inmediata. Es un proceso relativamente lento y, por tanto, se utiliza para aplicaciones pequeñas y que no requieren gran velocidad. Algunos lenguajes interpretados conocidos son BASIC con sus variantes, lenguajes de procesamiento de comandos de los sistemas operativos o lenguajes de acceso a bases de datos como SQL. SQL SQL (Structured Query Language) es un lenguaje no estrictamente de programación. Se trata de un lenguaje para interrogar y procesar información en una base de datos relacional. Fue desarrollado por IBM para las bases de datos de sus mainframes. Los mandos SQL se pueden utilizar para trabajar interactivamente con una base de datos o para insertarlos en un lenguaje de programación, para hacer de interfaz con una base de datos. Algunos de los sistemas de gestión de bases de datos que utilizan SQL son DB2, SQL/DS, Oracle, Sybase, SQLbase, INFORMIX e Ingres. El siguiente ejemplo de SQL selecciona clientes con un límite de crédito de, por lo menos, 100.000 u.m. y los ordena de más a menos crédito: SELECT NOMBRE, CIUDAD, CODIGOPOSTAL FROM CLIENTE WHERE LIMITECREDITO >= 100000 ORDER BY LIMITECREDITO DESC  Compilación. Un programa denominado compilador traduce todo el programa fuente a código máquina, con el que se obtiene el programa objeto, que puede ejecutarse tantas veces como sea necesario sin tener que
  • 6. Autor: Luis Heladio Garzón Rodríguez traducir cada vez. El proceso de compilación es tedioso y lento y se debe renovar cada vez que se hace un cambio en el programa fuente, pero, a cambio, el programa objeto se ejecuta a la velocidad más alta posible. Es la opción adecuada para aplicaciones complejas. Los lenguajes más utilizados caen dentro de esta categoría, por ejemplo FORTRAN, COBOL, IMS, Pascal, C y C++. FORTRAN El lenguaje FORTRAN (Formula Translation) data de los años cincuenta y todavía se utiliza en determinados ámbitos. Su punto fuerte es el cálculo matemático, especialmente con coma flotante, es decir, la computación con números reales, de gran precisión. En cambio, no dispone de construcciones por programación modular ni de estructuras de control avanzadas. A lo largo de los años se ha estandarizado varias veces, y las versiones más conocidas son FORTRAN I, FORTRAN II, FORTRAN IV, FORTRAN 77 y, actualmente, FORTRAN 90. Ha sido el lenguaje más utilizado para cálculos científicos complejos, modelos de ingeniería, estadística y procesamiento de señal. También es muy adaptable a hardware especializado, como por ejemplo superordenadores y ordenadores paralelos. Un ejemplo de cálculo matemático con FORTRAN: PROGRAM Rad ! Simple FORTRAN program REAL P,R,C IF (.NOT. (R = 0.0)) THEN P = 3.1415926 R = 2.5 C = P * R PRINT *, "C = ", C END IF END COBOL COBOL (Common Business-Oriented Language) es un lenguaje orientado a la resolución de las necesidades de bancos y otras entidades financieras, administraciones, fábricas o cualquier gran organización que tenga que gestionar un volumen de datos importante. COBOL tiene una sintaxis recargada que intenta parecerse al lenguaje inglés. Uno de sus puntos fuertes es la generación de informes, ya que permite especificar una gran variedad de formatos de salida.
  • 7. Autor: Luis Heladio Garzón Rodríguez Un programa en COBOL consta de cuatro divisiones:  Identificación: permite identificar el programa, su objetivo, el autor y otros datos similares.  Entorno: enumera los recursos físicos que el programa puede necesitar para facilitar, así, la portabilidad entre ordenadores.  Datos: declara los datos del programa.  Procedimientos: indica cómo se tienen que procesar los datos. COBOL se definió en 1960 y ha tenido varias revisiones. La más actual incluye características de orientación a objetos y estructuras de control sofisticadas en un intento de modernizar el lenguaje y no perder toda la inversión en software realizada, ya que se calcula que es el lenguaje con que se han programado más líneas de código. Los programas en COBOL acostumbran a ser bastante largos y sobrecargados, ya que cualquier pequeño procedimiento requiere muchas líneas. A continuación se presenta un ejemplo simplificado para calcular comisiones de vendedores: IDENTIFICATION DIVISION. PROGRAM-ID. COMISION-VENDEDOR. AUTHOR. DEPT-INFO. ENVIRONMENT DIVISION. INPUT-OUTPUT SECTION. FILE-CONTROL. SELECT FICHERO-VENDEDORES ASSIGN TO DISK ACCESS MODE IS RANDOM ORGANIZATION IS RELATIVE RELATIVE KEY IS NUMERO. SELECT FICHERO-VENTAS ASSIGN TO TAPE RESERVE NO AREAS ACCESS MODE IS SEQUENTIAL ORGANIZATION IS SEQUENTIAL. DATA DIVISION. FILE SECTION. FD FICHERO-VENDEDORES LABEL RECORD IS STANDARD RECORDING MODE IS V RECORD CONTAINS 30 TO 60 CHARACTERS DATA RECORD IS VENDEDORES. 01 VENDEDORES 02 NOMBRE PICTURE X(50). 02 NUMERO PICTURE 9(10). FD FICHERO-VENTAS LABEL RECORD IS STANDARD RECORDING MODE IS F RECORD CONTAINS 8 DATA RECORD IS VENTA. 01 VENTA PICTURE 9(8). WORKING STORAGE SECTION. 77 PCT PICTURE 9(6). 77 TOTAL PICTURE 9(6). PROCEDURE DIVISION. INICIO. OPEN INPUT FICHERO-VENDEDORES INPUT FICHERO-VENTAS. CLAVE. ADD 1 TO NUMERO. LECTURA.
  • 8. Autor: Luis Heladio Garzón Rodríguez READ FICHERO-VENDEDORES INVALID KEY GO TO FINAL-PROG. READ FICHERO-VENTAS AT END GO TO FINAL-PROG. CALCUL. DIVIDE VENTA INTO 100 GIVING PCT. MULTIPLY PCT BY 40 GIVING TOTAL. RESULTADO. DISPLAY NUMERO UPON PRINTER. DISPLAY TOTAL UPON PRINTER. GOTO CLAVE. FINAL-PROG. CLOSE FICHERO-VENDEDORES AND FICHERO-VENTAS. STOP RUN. IMS El sistema IMS (Information Management System) se utiliza para consultar bases de datos; tuvo una gran expansión en los años setenta. Se trata de un producto de IBM para las bases de datos de mainframes sobre el sistema MVS. IMS/DB (IMS/Data Base) es la base de datos que funciona en un entorno de proceso por lotes. IMS/DC (IMS/Data Communications) es un programa necesario cuando se utiliza interactivamente, y también permite acceder a bases de datos DB2. PASCAL Pascal es un lenguaje diseñado inicialmente para enseñar a programar. Como tal lenguaje educativo, presenta una estructura perfectamente académica de la programación estructurada. Requiere una programación detallada: todos los tipos, datos y subrutinas se tienen que declarar antes de utilizarlos. Está fuertemente estructurado en bloques, y cada uno de los cuales permite declarar datos y funciones y también otros bloques de nivel inferior. Así se pueden estructurar los datos y los procedimientos en tantos niveles como resulte necesario. Es un lenguaje apropiado para aplicaciones genéricas, aunque en muchas áreas se ha sustituido por lenguajes orientados a objetos como C++ y Java. C C es, probablemente, uno de los lenguajes más utilizados actualmente. Es un lenguaje estructurado, pero también permite una programación de bajo nivel, lo cual lo hace adecuado para sistemas operativos (como Unix) y como software de control de periféricos, aunque se utiliza en todo un tipo de aplicaciones, incluso en las de más alto nivel, como por ejemplo, librerías gráficas. C permite escribir rápidamente un código muy optimizado y más portable que en ensamblador.
  • 9. Autor: Luis Heladio Garzón Rodríguez El lenguaje C dispone de un conjunto completo de operadores aritméticos, estructuras de datos sencillas, subrutinas, estructuras de control convencionales, punteros en memoria, un potente procesador de macros y un amplio conjunto de librerías. Tiene un primer nivel de modularización, de manera que los datos pueden tener un ámbito global o local en la función donde se han definido. También es un lenguaje fuertemente tipificado, es decir, que requiere declarar todos los datos con su tipo. Las distintas versiones de C se estandarizaron en 1990 en el denominado ANSI-C. Ejemplo de programa que cuenta el número de caracteres de un texto y escribe el resultado por pantalla: #include <stdio.h> main(int argc, char *argv[]) { int cmp; for( cmp = 0; argv[0][cmp]!=0; cmp++ ); printf("%d caracteresn", cmp); } C++ C++ es la evolución a orientación a objetos del lenguaje C. Tiene una sintaxis muy parecida a la de C, con varias extensiones para soportar clases, herencia y otras características de orientación a objetos. C++ evolucionó rápidamente para convertirse en un lenguaje independiente; actualmente es muy popular para el desarrollo de aplicaciones. C++ ofrece muchas de las estructuras de programación orientada a objetos: herencia múltiple, tipificación estricta, memoria dinámica, patrones genéricos, polimorfismo, control de excepciones y sobrecarga de operadores. Como derivado de C, dispone de todas sus propiedades, pero también ha heredado sus defectos, como por ejemplo, los punteros en memoria. C++ es uno de los lenguajes orientados a objetos más utilizados y de los más perfeccionados. A pesar de esto, no tiene algunas de las características que se consideran imprescindibles en un lenguaje orientado a objetos de última generación (concurrencia, persistencia y garbage collection), aunque sus compiladores pueden generar programas muy compactos y que se ejecutan con mucha eficiencia. Como todos los lenguajes de programación orientada a objetos, su estructura principal es la que define una clase, es decir, el tipo de un objeto. A continuación se presenta un ejemplo de clase:
  • 10. Autor: Luis Heladio Garzón Rodríguez class cercle: public forma { int radi;// datos de la clase float area()// métodos de la clase { ... } } Y un sencillo programa que escribe un mensaje de saludo por pantalla: #include <iostream.h> #include <String.h> main(int argc, char *argv[]) { String *s; s = new String("Hola!"); cout << *s << endl; cout << "Longitud del texto:" << s->length() << endl; } Últimamente han aparecido algunos lenguajes que se alejan de este modelo en diferentes sentidos. Todos ellos se utilizan en la programación en entornos relacionados con Internet, que presentan características especiales. El lenguaje Java, por ejemplo, tiene un modo de traducción a lenguaje máquina mixto. En una primera fase se compila en un código máquina universal que posteriormente es interpretado y ejecutado por un programa específico. Este programa puede utilizarse desde cualquier navegador de Internet, y permite distribuir programas objetos por red que pueden ejecutarse en cualquier ordenador. Java Java es un lenguaje desarrollado por Sun orientado a objetos con una sintaxis parecida a la de C++. Tiene un conjunto de prestaciones bastante amplio: herencia, tipificación de datos estricta, modularidad, control de excepciones, polimorfismo, concurrencia, carga dinámica de librerías, garbage collection y una amplia colección de librerías estándar. En cambio, no incluye algunas características que podrían comprometer su simplicidad y seguridad, como punteros, herencia múltiple, sobrecarga de operadores o un preprocesador de macros. Como lenguaje orientado a objetos, su estructura fundamental es la clase, que se lleva hasta las últimas consecuencias: en Java no puede haber datos o funciones globales, todas deben estar asociadas a una clase. Las clases se pueden agrupar en paquetes que facilitan mucho la portabilidad de sus aplicaciones. Todos los paquetes están organizados en una estructura jerárquica que evita la aparición de distintas variantes para la misma funcionalidad.
  • 11. Autor: Luis Heladio Garzón Rodríguez Java se compila en un código independiente de la plataforma, bytecode, que posteriormente es interpretado por una aplicación, la "máquina virtual de Java". Hay una definición formal del bytecode que asegura la portabilidad. Java, además de resultar adecuado para programar aplicaciones normales, permite desarrollar programas hospedados en servidores web. Estos programas se llaman applets. Tienen la capacidad de ser distribuidos por la red en forma de bytecode y poderse ejecutar en cualquier plataforma. Presentan varias restricciones para evitar problemas de seguridad. El mayor inconveniente de Java es que tiene un rendimiento bajo, ya que, al tener que ser interpretado por la máquina virtual, su velocidad de ejecución es lenta. A continuación, se presenta un ejemplo de applet escrito en Java: import java.applet.*; import java.awt.*; public class AppletHola extends Applet { // Este método visualiza el mensaje public void paint(Graphis g) { g.drawString("Hola!",25,50); } } Para poder visualizar este applet en un servidor, hay que incluirlo en una página web utilizando HTML. Otro tipo de lenguajes es el grupo formado por HTML, XML, ASP, etc. Algunos, como HTML y XML, no son tanto lenguajes para programar como para dar formado a documentos para ser visualizados en un navegador. Con el tiempo, han desarrollado mecanismos para integrar en el propio documento pequeños programas con lenguajes como Java y similares. Por otra parte, ASP es un lenguaje enfocado a generar documentos en HTML de manera automática. HTML HTML (HyperText Markup Language) no es exactamente un lenguaje de programación, es un lenguaje para dar formato a documentos web. Las páginas web se escriben con etiquetas de HTML insertadas en el texto. Estas etiquetas definen párrafos, tipos de letras y elementos gráficos, así como enlaces a otras páginas web. Por otro lado, permite incluir pequeños programas en forma de applets escritos con lenguajes de programación, como Java o JavaScript. Estos programas añaden animaciones y objetos móviles a las páginas web y les dan un aspecto muy dinámico.
  • 12. Autor: Luis Heladio Garzón Rodríguez HTML es una derivación simplificada de SGML (Standard Generalized Markup Language) que se utiliza en la publicación de documentos. Un subconjunto de SGML, conocido como XML, permite ampliar HTML con etiquetas definidas por el programador. Se espera que sea el nuevo estándar para documentos de web. A continuación, se muestra una página web para visualizar el applet que se ha puesto como ejemplo en JAVA: <HTML><HEAD> <TITLE> El applet Hola </TITLE> </HEAD> <BODY> <APPLET code="AppletHola" width=150 height=100> </APPLET> </BODY></HTML> El mecanismo CGI script (Common Gateway Interface script) consiste en pequeños programas escritos en lenguajes denominados de scripting como Perl o Tcl, pero también en C o C++, con la función de hacer de puente entre páginas web y otros programas del servidor web. Sirve, por ejemplo, para que los datos entrados en una página web se puedan enviar al servidor remoto y hacer una búsqueda en una base de datos y, a continuación, enviar los resultados de nuevo hacia el usuario. El programa CGI, que se denomina script, reside en el servidor. Los CGI scripts han sido el primer mecanismo que ha permitido a las páginas web interactuar con bases de datos u otras aplicaciones. Sin embargo, a medida que Internet ha evolucionado, se han desarrollado otras herramientas para hacer más eficiente este procedimiento. Un ejemplo es el lenguaje ASP (Active Server Pages) de Microsoft. ASP consiste en un programa que el servidor puede ejecutar para generar páginas HTML que se envían al cliente. Puesto que el programa ASP se ejecuta cada vez que el cliente pide la página, ésta puede incluir información dinámica y actualizada. Hay otro género de lenguajes que se alejan del esquema que entiende un programa como una secuencia de instrucciones. Normalmente, son lenguajes interpretados con la particularidad de que el proceso de interpretación es el responsable de aplicar el modelo en que se basa el lenguaje. Los más conocidos son Prolog y Lisp.  Prolog modela el problema como un conjunto de reglas y restricciones, de cuya aplicación sale la solución.  Lisp se basa únicamente en el concepto de funciones como una operación que hay que realizar sobre unos operandos (o argumentos) y que da un resultado, que a su vez puede utilizarse como un argumento para otra función. Ambos lenguajes se utilizan para investigación y desarrollo en inteligencia artificial. 1.5 SOFTWARE
  • 13. Autor: Luis Heladio Garzón Rodríguez Se entiende por software el conjunto de programas (o instrucciones) que el procesador del ordenador va ejecutando secuencialmente y que permiten, básicamente, controlar el hardware. En realidad, la funcionalidad que aporta el software en un sistema informático se sitúa en todos los niveles, desde el más básico, consistente en hacer funcionar el hardware, hasta el nivel del usuario. En el nivel más básico, el software controla las diferentes unidades del procesador, la memoria y los periféricos y todas las señales eléctricas que permiten conectarlo entre sí. En el nivel más alto, tiene la función de presentar al usuario una interfaz que le facilite su interacción con el ordenador. Esta interfaz tiene que diseñarse de manera que permita a la persona trabajar con objetos de alto nivel y que tengan alguna relación con su mundo real. De esta manera, no necesita estar pendiente de los numerosos detalles técnicos necesarios para que el hardware funcione. Es el software el que enlaza ambos niveles. Esta capacidad de permitir abstraer al usuario de los detalles del hardware es fundamental para poder trabajar con eficiencia con un sistema informático. Entre ambos niveles hay varias piezas de software organizadas en capas de manera que cada una añade un nivel más de abstracción entre el hardware y el nivel del usuario. Puede apreciarse una división entre el software que realiza las funciones más genéricas y básicas del sistema, llamado de infraestructura básica y el software de aplicaciones, que se centra en la resolución de las necesidades concretas de los usuarios.  Software de infraestructura básica  Software de aplicaciones  Sistema operativo  Ofimática 1.5.1 Software de infraestructura básica Es el que realiza las funciones más básicas de un sistema de información, que cuentan no sólo el control del hardware, sino de todos aquellos subsistemas que forman una base sobre la cual las aplicaciones de usuario puedan funcionar. Básicamente, es lo que se conoce como sistema operativo, pero también incluye otras piezas utilizadas por la mayoría de las aplicaciones como, por ejemplo, el sistema de correo electrónico o el de acceso a bases de datos. Toda organización necesita incluir muchos productos de software de infraestructura básica. Los riesgos de intentar desarrollar en la organización estos productos son muy grandes, ya que son tecnológicamente complejos y requerirían un grado de especialización elevado y, por lo tanto, el coste de desarrollo sería muy importante. Por esto, lo recomendado es adquirir productos de mercado. No sólo resulta más económico, sino que también las empresas fabricantes verifican su calidad, garantizan la compatibilidad con otros productos y son capaces de seguir el ritmo de evolución de la tecnología, ya que tienen todos sus recursos dedicados a esto. 1.5.2 Software de aplicaciones
  • 14. Autor: Luis Heladio Garzón Rodríguez Al contrario que el software de infraestructura básica, el de aplicaciones necesita en su diseño y construcción conocer cómo es el usuario y su manera de actuar, de entender la organización y lo que espera obtener de los sistemas informáticos. La utilización de paquetes comerciales para cubrir las necesidades del software de aplicaciones es recomendable, aunque no siempre es posible, ya que muchas características pueden ser específicas de la organización. En estos casos, la organización tiene que asumir el desarrollo del software específico. 1.5.3 Sistema operativo El sistema operativo comprende la capa más básica del software de infraestructura. Provee las funciones clásicas que permiten a las aplicaciones abstraerse de los detalles del hardware:  Control del procesador y de la memoria.  Ejecución de programas y control de procesos. El sistema operativo se encarga de crear y destruir procesos y de asignar recursos a cada uno de ellos, como por ejemplo el tiempo de proceso, la memoria y la comparición de los periféricos. Cuando hay varios procesos ejecutándose al mismo tiempo (multiproceso), el sistema operativo tiene que arbitrar una manera ordenada y equilibrada para que cada proceso acceda a los diferentes recursos en orden y sin excluir a los otros procesos.  Controladores de los periféricos. El sistema operativo tiene que generar las señales necesarias para controlar a los periféricos y ofrecer una manera de acceso adecuada para las aplicaciones.  Sistema de ficheros. Es la abstracción (en ficheros y directorios) que utilizan los sistemas operativos para organizar el espacio de almacenamiento de los discos y otros soportes de información y permitir un acceso adecuado por parte de las aplicaciones.  Control de usuarios. En sistemas que permiten un uso diferenciado para usuarios diferentes (multiusuario), es necesario establecer métodos para identificar a cada usuario y para permitir a cada uno realizar las operaciones y acceder a los recursos que tengan autorizados. Últimamente, también se incluyen en el sistema operativo funciones de más alto nivel que se han convertido en estándares:  Controlador de las comunicaciones por red, correo electrónico y acceso a Internet.  Herramientas de administración. Los administradores del sistema son las personas encargadas de mantener y gestionar los recursos del sistema operativo. Las herramientas de administración facilitan su trabajo en temas como la gestión de los usuarios y recursos y la monitorización del rendimiento del sistema.  Compiladores y librerías dinámicas. Muchos sistemas ofrecen herramientas y métodos estándar para ayudar en la programación de aplicaciones.  Control de la interfaz gráfica. La gestión de todos los objetos (ventanas, menús, iconos, etc.) que aparecen en una pantalla es bastante compleja, así como su utilización por parte de las aplicaciones. Los sistemas que ofrecen una interfaz
  • 15. Autor: Luis Heladio Garzón Rodríguez de uso para las aplicaciones también son una gran ayuda para los programadores. Todos estos mecanismos proporcionan un nivel de funcionalidad que simplifica mucho el desarrollo de aplicaciones, ya que permite a los analistas y programadores concentrarse en lo que es esencial en la aplicación. A lo largo del tiempo se ha desarrollado una multitud de sistemas operativos con orientaciones muy diferentes. Como tantos otros temas en informática, los sistemas operativos a menudo se presentan en familias que los fabricantes van haciendo que evolucionen a lo largo del tiempo. Una de las líneas de sistemas operativos más conocidas es el sistema por excelencia de los PC. Se trata del sistema Windows, desarrollado por Microsoft. Esta línea empezó con el MS-DOS. Era un sistema bastante limitado y con una interfaz únicamente de texto. Cuando Microsoft vio que era necesario ampliarlo y añadirle una interfaz gráfica, desarrolló Windows, que hasta el momento presenta varias versiones: 3.11, 95/98 y Milenium en la versión doméstica y NT y 2000 en la profesional. El sistema operativo de los Macintosh presenta una evolución más lineal que Windows, puesto que desde el primer momento ya tenía un entorno gráfico. Actualmente, coexisten las versiones 8, 9 y 10. En el campo de las workstations, el sistema más utilizado es Unix, que presenta diferentes versiones según los fabricantes. Es un sistema operativo con gran número de funcionalidades y con una gran flexibilidad que le ha permitido adaptarse perfectamente a los ordenadores más avanzados. Siempre han existido versiones de Unix para la arquitectura PC, pero últimamente ha aparecido una versión que ha ganado gran popularidad: Linux. 1.5.4 Ofimática Se entiende por software de ofimática un conjunto de herramientas pensadas para facilitar toda una serie de tareas administrativas habituales en oficinas: creación de documentos, esquemas gráficos, cálculos financieros y otros, archivos de datos, gestión de la agenda, etc. Las más importantes son los procesadores de textos, editores gráficos, hojas de cálculo y bases de datos. Una característica importante es que todas estas herramientas están diseñadas para trabajar en coordinación. Así, por ejemplo, utilizan menús y combinaciones de teclas iguales para las mismas funciones o permiten al usuario traspasar textos y gráficos de una a otra de una manera fácil y rápida. Por otra parte, la generalización de las redes ha impuesto otras herramientas como estándares dentro de las oficinas: el correo electrónico, que está desplazando al fax, y los navegadores de Internet. El paquete de oficina más popular es el Microsoft Office.  El procesador de textos es una herramienta que facilita la creación y edición de documentos. También se conoce como editor de textos. Permite la manipulación de documentos con textos y muchos ellos también admiten trabajar con varios tipos
  • 16. Autor: Luis Heladio Garzón Rodríguez de gráficos. Según su sofisticación, tienen varios formatos para el texto: tipo y tamaño de letra, negrita, subrayado, colores, etc. Muchos disponen de herramientas y funciones auxiliares como correctores ortográficos, diseño de tablas o generadores automáticos de índices.  Las herramientas de diseño gráfico son herramientas especializadas en la creación de documentos con alto contenido gráfico, como pósters para exposiciones o transparencias y diapositivas para presentaciones. Los tipos de gráficos que incluyen van desde dibujos lineales a imágenes digitalizadas. Algunos de los más sencillos es Power Point, que pertenece al paquete de Microsoft Office. Otros más sofisticados son Corel Draw y Photoshop. Existen herramientas de diseño gráfico muy especializadas en varios campos de la ingeniería que permiten diseñar componentes electrónicos, piezas mecánicas, edificios, etc. Disponen de numerosas funciones de manipulación de objetos gráficos de dos y tres dimensiones y también de generación de vistas o escenas 3 D. Una de las más utilizadas, sobre todo en arquitectura, es Autocad.  Las hojas de cálculo son programas que sirven para calcular y visualizar tablas de cifras. La zona de trabajo es una cuadrícula de filas y columnas que definen celdas donde se coloca la información. También permiten hacer gráficas de los datos. La característica que les da una gran potencia es incluir fórmulas basadas en los datos de las celdas y una función de recálculo automático de manera que, cuando se modifica un dato, todas las fórmulas que dependen del mismo se vuelven a calcular. Las hojas de cálculo más conocidas son Microsoft Excel y Lotus 1-2-3.  Las bases de datos son conjuntos ordenados de información. La información se organiza en tablas, y cada fila de las mismas se denomina registro y contiene varios campos. Las diferentes tablas que pueden formar la base de datos pueden relacionarse entre sí mediante un sistema de punteros e índices. Esto permite buscar información relacionada, pero repartida en varias tablas. Las bases de datos que utilizan este esquema de organización se denominan relaciónales. Por extensión, también se conocen como bases de datos los programas que gestionan y permiten acceder a la información que se almacena, pero el nombre más exacto sería gestor de bases de datos. Existen gestores de bases de datos de distinta complejidad. Los más sencillos tienen una capacidad reducida (pero suficiente para muchas aplicaciones de oficina), como por ejemplo Microsoft Access. Las más completas gestionan grandes volúmenes de datos con eficiencia, rápido acceso e implementan mecanismos de integridad de los datos frente a accesos simultáneos de varios usuarios y sistemas de seguridad contra la pérdida de información. Quizá una de las más conocidas es Oráculo. 1.6 El procesamiento de datos Procesar información quiere decir realizar una serie de operaciones, tanto aritméticas como de almacenamiento y transmisión de datos para solucionar un problema, ya sea de cálculo científico, comercial o de cualquier tipo.
  • 17. Autor: Luis Heladio Garzón Rodríguez Estas operaciones pueden hacerse manualmente o con máquinas. Hasta hace relativamente poco tiempo, todos estos cálculos se hacían manualmente (incluso existía el oficio de calculador, una persona especializada en realizar operaciones matemáticas con rapidez y corrección). En el siglo XIX aparecieron las primeras máquinas de calcular mecánicas y en la segunda mitad del siglo XX, las calculadoras electrónicas y los ordenadores. El uso de máquinas, sean del tipo que sean, proporciona una mayor rapidez y fiabilidad en la obtención de los datos deseados. Tradicionalmente, el cálculo numérico, tanto aplicado a la ciencia, la ingeniería o a las finanzas, ha sido la causa del desarrollo de la computación: a medida que las máquinas de calcular han ganado potencia, se han podido plantear cálculos cada vez más complejos. Paralelamente a la creciente complejidad de los cálculos numéricos pudo plantearse la toma de decisiones que tenía en cuenta más variables y, además, con más rapidez: los tradicionales archivos de papel dejaron paso a los actuales sistemas de bases de datos y a los sistemas automáticos de ayuda a la toma de decisiones. La miniaturización de los circuitos electrónicos, que conserva una gran potencia de cálculo, ha permitido incorporar sistemas de control a máquinas de todo tipo, que se destinan a controlar todo tipo de procesos industriales, desde líneas de producción de cualquier artículo, hasta control de entornos donde parámetros como temperatura, presión, radiación, etc. requieren una gran precisión y seguridad. Por ejemplo, un ordenador puede comprobar características de los productos que se están produciendo, y si no son las deseadas, encontrar que falla en la producción y corregirlo. En este campo aparecieron las primeras aplicaciones prácticas del concepto de robot, entendido como un dispositivo mecánico capaz de realizar un trabajo especializado de manera automática. Las imágenes de robots como seres artificiales de amplias capacidades aún son un concepto futurista, aunque la técnica de la robótica y la informática cada vez lo están acercando más. Un último campo en que el procesamiento de la información es de gran ayuda es el de la creatividad y el arte. No es sólo una herramienta que facilita la creación de todo tipo de manifestaciones artísticas (libros, revistas, publicidad, cuadros, música...), sino que incluso ha propiciado nuevos géneros artísticos, como los sistemas multimedia que combinan en un único producto sonido, imagen y otros medios de comunicación. HISTORIA DE LOS LENGUAJES DE PROGRAMACIÓN La historia de los lenguajes de computadores se remonta al tiempo de la creación de las primeras maquinas, concebidas para la automatización de procesos, y su evolución se puede decir se ha sido consecuencia de la misma evolución que han sufrido las computadoras.
  • 18. Autor: Luis Heladio Garzón Rodríguez En este sentido es importante resaltar que los lenguajes de programación se clasifican por generaciones o por el nivel. Las generaciones están relacionadas con la evolución de las computadoras. Revise los link suministrados a continuación para profundizar sobre el tema http://www.desarrolloweb.com/articulos/2358.php https://www.maestrodelacomputacion.net/historia-de-los-lenguajes-de-programacion/ ATRIBUTOS DE UN BUEN LENGUAJE DE PROGRAMACIÓN Un buen lenguaje de programación debe satisfacer características como: Integridad conceptual Claridad Simplicidad Unidad Legibilidad Las diferencias semánticas deben verse reflejadas en diferencias sintácticas Ortogonalidad. Capacidad de combinar varias características del lenguaje de todas las formas posibles, y que cada una de esas combinaciones tenga significado Pocas excepciones y casos especiales que recordar Aspecto negativo: Combinaciones incoherentes o ineficientes Naturalidad para la aplicación Un lenguaje debe suministrar estructuras de datos, operaciones, y estructuras de control apropiadas al tipo de problemas al que se aplicará, así como una sintaxis en la que se puedan expresar de forma natural las soluciones a tales problemas Soporte para la abstracción Facilidad para la verificación de programas Entorno de programación Portabilidad de los programas Homogeneidad en el tratamiento externo e interno de los conceptos Coste de uso Coste de ejecución de programas Coste de traducción Coste de creación, prueba y uso de programas Coste de mantenimiento de programas Buena definición Sintaxis y semántica sean precisas, in ambiguas, legibles, comprensibles y, a ser posible, formales MODELOS BASICOS DE PARADIGMAS DE LOS LENGUAJES DE PROGRAMACIÓN
  • 19. Autor: Luis Heladio Garzón Rodríguez Se entiende por paradigma de programación un modelo que sirve como una guía al programador para diseñar aplicaciones. Se pueden referir tanto a métodos de programación como a maneras de estructurar la información y los diferentes elementos que componen una aplicación. Su potencia reside en que se han utilizado muchas veces en aplicaciones distintas, lo cual ha permitido descartar a los que no son adecuados y mejorar los que ofrecían buenas soluciones. Para un programador, seguir estos modelos representa una garantía de la calidad del producto final y una mayor eficiencia, ya que trabajará con un método sobradamente comprobado.  Modelo Von Neumann  Programación estructurada  Programación orientada a objetos  Modelo cliente-servidor  Modelo Von Neumann El modelo Von Neumann, propuesto por el matemático del mismo nombre, define las bases de la computación y de los ordenadores actuales. Propone que los programas y datos se representen en código binario, que haya un centro de control que ejecute el programa secuencialmente o con saltos según indiquen las instrucciones y que acceda y trabaje con los datos almacenados en dispositivo de memoria. Muchos lenguajes siguen este esquema con más o menos nivel de abstracción, notablemente los lenguajes más conocidos. Algunos de los que se apartan del modelo Von Neumann son los lenguajes funcionales (Lisp) y lógicos (Prolog).  Programación estructurada o modular Esta técnica propone una estructura lógica para escribir un programa. Los datos se agrupan en estructuras de manera que las relaciones entre ellos queden reforzadas por la propia forma en que se agrupan. Los procedimientos grandes se rompen en rutinas o funciones más pequeñas y modulares. Se desaconsejan las instrucciones de saltos incondicionales, los famosos GOTO, porque oscurecen el flujo de control del programa, al no quedar constancia de cómo se ha llegado hasta aquel punto. En cambio, cuando desde un programa se llama a una función, el sistema de control registra el punto del programa desde donde se hace el llamamiento para poder volver al mismo cuando la función acaba. Finalmente, las rutinas que tratan con datos relacionados pueden agruparse en módulos. Así, el objetivo final es descomponer un programa en módulos, lo cual facilita su verificación y depuración, ya que cada uno puede probarse por separado. Esta organización es imprescindible para poder desarrollar aplicaciones de cierta complejidad y tamaño. Los lenguajes más antiguos (por ejemplo FORTRAN, COBOL o BASIC) requieren una disciplina por parte del programador para utilizar un esquema modular. En cambio, todos los lenguajes posteriores imponen, por su estructura sintáctica, la organización del código en funciones y, por lo tanto, modular.
  • 20. Autor: Luis Heladio Garzón Rodríguez  Programación orientada a objetos La evolución del modelo de programación modular es la programación orientada a objetos. Sin duda, es una de las técnicas más complejas. De hecho, más que una técnica representa una manera nueva de encarar la programación. Antes de la orientación a objetos, un programa era, como ya se ha explicado, una secuencia lógica de instrucciones que seguía el ordenador. Por lo tanto, el énfasis se ponía en las instrucciones, en la manera en que tenían que tratarse los datos. En cambio, la programación orientada a objetos se concentra en los datos, estructurándolos en objetos claramente definidos y en cómo tienen que manipularse. Los programas se construyen en términos de los objetos que define el problema, y utilizan funciones o métodos que operan con estos objetos. En resumidas cuentas, un objeto representa un concepto del problema con un conjunto de datos y de métodos. Los datos del objeto sólo se pueden manipular con los métodos definidos. De esta manera, un objeto pasa a ser una estructura compacta con unos puntos de acceso muy definidos y permite, por lo tanto, ser utilizado en diferentes aplicaciones con gran facilidad. Esta capacidad de reutilizar un código representa un gran ahorro de tiempo de programación. Otro beneficio de este esquema es que se puede definir un objeto en términos de otros, de manera que el nuevo objeto puede aprovechar los datos y métodos de los ya existentes, con lo cual se consigue, de nuevo, reutilizar código. Este mecanismo se llama herencia. La gran mayoría de los lenguajes modernos siguen el modelo de orientación a objetos. Tal es el caso de los ya mencionados C++ y Java, y también otros lenguajes como Javascript o Perl.  Modelo cliente-servidor La idea principal del modelo cliente-servidor es que existe un repositorio central, como por ejemplo una base de datos, cuya información se distribuye bajo pedido al conjunto de nodos que acceden al mismo. La clave del funcionamiento de este modelo es que el repositorio de información está centralizado de manera que los cambios que se hacen se propagan automáticamente a los clientes que piden la información en cuestión. El ordenador donde reside la información y el software que la distribuye recibe el nombre de servidor, mientras que la máquina que se comunica con el servidor, obtiene la información y la visualiza para el usuario final recibe el nombre de cliente. La construcción de aplicaciones basadas en el modelo cliente-servidor es relativamente sencilla. A pesar de esto, hay que tener en cuenta algunos problemas que aparecen cuando un solo servidor tiene que atender las peticiones de muchos clientes de manera simultánea. Se refieren tanto a problemas de acceso concurrente a los datos como a problemas de velocidad. Cuando un servidor tiene que atender peticiones de consulta de información de diferentes clientes al mismo tiempo, tiene que asegurar que se atiende a todos por igual y que ninguno debe esperar mucho más tiempo que los demás.
  • 21. Autor: Luis Heladio Garzón Rodríguez Los clientes, por otro lado, también pueden hacer peticiones para modificar los datos del servidor o para añadir otros nuevos. En este caso, el servidor tiene que asegurar que los datos de un cliente no se sobre-escriban a los de otro, o que mientras se hace una modificación no se pierda ningún dato, es decir, el servidor tiene que asegurarse de la coherencia de sus propios datos. Por esto, los clientes modifican los datos en operaciones denominadas transacciones, en las que se asegura que todas las modificaciones se hacen completamente o que si hay una cancelación, no se realiza ninguna y los datos quedan intactos. El problema de la velocidad aparece cuando centenares de clientes quieren acceder al mismo servidor y éste, literalmente, no da abasto. Para solucionar este problema hay diversas opciones:  La más inmediata es utilizar máquinas de más potencia, pero a la larga esto siempre acaba resultando insuficiente.  Una mejor solución es optimizar el software del servidor para reducir al máximo los posibles retrasos, o para pasar al lado del cliente procesamientos de los datos que no sean estrictamente para su acceso o modificación. éste es un buen método porque cada vez más los ordenadores clientes suelen disponer de más capacidad de cálculo. Las aplicaciones basadas en el modelo cliente-servidor pueden llegar a tener gran complejidad, por lo cual se estructuran en varias capas, de manera que cada una resuelve una pequeña parte del problema y el conjunto ofrece la solución global. Actualmente, este modelo se emplea en un gran número de aplicaciones, desde sistemas bancarios, de crédito y financieros hasta la distribución de cualquier tipo de datos. La red Internet sería el ejemplo más claro. NUEVOS PARADIGMAS DE PROGRAMACIÓN Un paradigma de programación provee (y determina) la visión y métodos de un programador en la construcción de un programa o subprograma. Diferentes paradigmas resultan en diferentes estilos de programación y en diferentes formas de pensar la solución de problemas (una aplicación se construye con la solución de múltiples “problemas”). Tipos de paradigmas de programación más comunes: El paradigma imperativo o por procedimientos es considerado el más común y está representado, por ejemplo, por el C o por BASIC. El paradigma funcional está representado por la familia de lenguajes (en particular Scheme), ML o Haskell.
  • 22. Autor: Luis Heladio Garzón Rodríguez El paradigma lógico un ejemplo es PROLOG. El paradigma orientado a objetos un lenguaje completamente orientado a objetos es Smalltalk. Paradigma imperativo o por procedimientos 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. La programación en el paradigma imperativo consiste en determinar qué datos son requeridos para el cálculo, asociar a esos datos unas direcciones de memoria, y efectuar paso a paso una secuencia de transformaciones en los datos almacenados, de forma que el estado final represente el resultado correcto. Ejemplos de lenguajes imperativos:  BASIC  C  C#  C++  Fortran  Pascal  Java  Perl  PHP  Lua Paradigma Funcional La Programación funcional es un paradigma de programación declarativa basado en la utilización de funciones matemáticas. El objetivo del paradigma funcional es conseguir lenguajes expresivos y matemáticamente elegantes, en los que no sea necesario bajar al nivel de la máquina para describir el proceso llevado a cabo por el programa, y evitando el concepto de estado del cómputo. La secuencia de computaciones llevadas a cabo por el programa se regiría única y exclusivamente por la reescritura de definiciones más amplias a otras cada vez más concretas y definidas, usando lo que se denominan definiciones dirigidas. Todo esto con el objetivo de familiarizar a los estudiantes con un lenguaje elegante en el cual se pueda manejar más fácilmente y así los programas sean menos extensos y complejos.
  • 23. Autor: Luis Heladio Garzón Rodríguez Otro de los objetivos primordiales de dicho paradigma es buscar satisfacer las necesidades del usuario con respecto a operaciones matemáticas y convertirse en un lenguaje más expresivo. Paradigma Lógico La programación lógica consiste en la aplicación del corpus de conocimiento sobre lógica para el diseño de lenguajes de programación; no debe confundirse con la disciplina de la lógica computacional. La programación lógica comprende dos paradigmas de programación: la programación declarativa y la programación funcional. La programación declarativa gira en torno al concepto de predicado, o relación entre elementos. La programación funcional se basa en el concepto de función (que no es más que una evolución de los predicados), de corte más matemático. Paradigma Orientado a Objetos La Programación Orientada a Objetos (POO u OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora. Está basado en varias técnicas, incluyendo herencia, modularidad, polimorfismo y encapsulamiento. Su uso se popularizó a principios de la década de 1990. Actualmente son muchos los lenguajes de programación que soportan la orientación a objetos. La programación orientada a objetos es una nueva forma de programar que trata de encontrar una solución a estos problemas. Introduce nuevos conceptos, que superan y amplían conceptos antiguos ya conocidos.