lunes, 30 de enero de 2012


 Tarea 3 -
Comentar sobre una aplicación de la computación.
Yo opino que una de las aplicaciones mas importantes de la computacion es la comunicacion ya que, gracias a las computadoras, millones de personas pueden estar en contacto con sus familiares o amigos e incluso llevar a cabo transacciones de compra/venta, ya sea en algunos metros o en kilometros de distancia, esto ha agilizado mucho nuestra sociedad al en gran parte de sus aspectos: socialmente, economicamente, culturalmente, etc. y gracias a la computadora nustra sociedad es lo que hoy es.
 
1.-Clasificacion de los lenguajes de programación.
Tipos de clasificacion:
1. Nivel de abstracción.
Según el nivel de abstracción, o sea, según el grado de cercanía a la máquina:
  • Lenguajes de bajo nivel: La programación se realiza teniendo muy en cuenta las características del procesador.
  • Lenguajes de nivel medio: Permiten un mayor grado de abstracción pero al mismo tiempo mantienen algunas cualidades de los lenguajes de bajo nivel.
  • Lenguajes de alto nivel: Más parecidos al lenguaje humano. Manejan conceptos, tipos de datos, etc., de una manera cercana al pensamiento humano ignorando (abstrayéndose) del funcionamiento de la máquina.
2. Propósito.
Según el propósito, es decir, el tipo de problemas a tratar con ellos:
  • Lenguajes de propósito general: Aptos para todo tipo de tareas:
  • Lenguajes de propósito específico: Hechos para un objetivo muy concreto.
  • Lenguajes de programación de sistemas: Diseñados para realizar sistemas operativos o drivers.
  • Lenguajes de script: Para realizar tareas varias de control y auxiliares. Antiguamente eran los llamados lenguajes de procesamiento por lotes (batch) o JCL (“Job Control Languages”). Se subdividen en varias clases (de shell, de GUI, de programación web, etc.).
3. Evolución histórica.
Con el paso del tiempo, se va incrementando el nivel de abstracción, pero en la práctica, los de una generación no terminan de sustituir a los de la anterior:
  • Lenguajes de primera generación (1GL): Código máquina.
  • Lenguajes de segunda generación (2GL): Lenguajes ensamblador.
  • Lenguajes de tercera generación (3GL): La mayoría de los lenguajes modernos, diseñados para facilitar la programación a los humanos.
  • Lenguajes de cuarta generación (4GL): Diseñados con un propósito concreto, o sea, para abordar un tipo concreto de problemas.
  • Lenguajes de quinta generación (5GL): La intención es que el programador establezca el qué problema ha de ser resuelto y las condiciones a reunir, y la máquina lo resuelve. Se usan en inteligencia artificial.
4. Manera de ejecutarse.
Según la manera de ejecutarse:
  • Lenguajes compilados: Un programa traductor traduce el código del programa (código fuente) en código máquina (código objeto). Otro programa, el enlazador, unirá los ficheros de código objeto del programa principal con los de las librerías para producir el programa ejecutable.
  • Lenguajes interpretados: Un programa (intérprete), ejecuta las instrucciones del programa de manera directa.
También los hay mixtos, que primero pasan por una fase de compilación en la que el código fuente se transforma en “bytecode”, y este “bytecode” puede ser ejecutado luego (interpretado) en ordenadores con distintas arquitecturas (procesadores) que tengan todos instalados la misma “máquina virtual” Java.

5. Manera de abordar la tarea a realizar.
Según la manera de abordar la tarea a realizar, pueden ser:
  • Lenguajes imperativos: Indican cómo hay que hacer la tarea, es decir, expresan los pasos a realizar.
  • Lenguajes declarativos: Indican qué hay que hacer.
6. Paradigma de programación.
El paradigma de programación es el estilo de programación empleado. Algunos lenguajes soportan varios paradigmas, y otros sólo uno. Se puede decir que históricamente han ido apareciendo para facilitar la tarea de programar según el tipo de problema a abordar, o para facilitar el mantenimiento del software, o por otra cuestión similar, por lo que todos corresponden a lenguajes de alto nivel (o nivel medio), estando los lenguajes ensambladores “atados” a la arquitectura de su procesador correspondiente. Los principales son:
  • Lenguajes de programación procedural: Divide el problema en partes más pequeñas, que serán realizadas por subprogramas (subrutinas, funciones, procedimientos), que se llaman unas a otras para ser ejecutadas.
  • Lenguajes de programación orientada a objetos: Crean un sistema de clases y objetos siguiendo el ejemplo del mundo real, en el que unos objetos realizan acciones y se comunican con otros objetos.
  • Lenguajes de programación funcional: La tarea se realiza evaluando funciones, (como en Matemáticas), de manera recursiva.
  • Lenguajes de programación lógica: La tarea a realizar se expresa empleando lógica formal matemática. Expresa qué computar.
Hay muchos paradigmas de programación: Programación genérica, programación reflexiva, programación orientada a procesos, etc.
7. Lugar de ejecución.
En sistemas distribuidos, según dónde se ejecute:
  • Lenguajes de servidor: Se ejecutan en el servidor. web.
  • Lenguajes de cliente: Se ejecutan en el cliente.
8. Concurrencia.
Según admitan o no concurrencia de procesos, esto es, la ejecución simultánea de varios procesos lanzados por el programa:
  • Lenguajes concurrentes.
  • Lenguajes no concurrentes.
9. Interactividad.
Según la interactividad del programa con el usuario u otros programas:
  • Lenguajes orientados a sucesos: El flujo del programa es controlado por la interacción con el usuario o por mensajes de otros programas/sistema operativo, como editores de texto, interfaces gráficos de usuario (GUI) o kernels.
  • Lenguajes no orientados a sucesos: El flujo del programa no depende de sucesos exteriores, sino que se conoce de antemano, siendo los procesos batch el ejemplo más claro (actualizaciones de bases de datos, colas de impresión de documentos, etc.).
10. Realización visual.
Según la realización visual o no del programa:
  • Lenguajes de programación visual: El programa se realiza moviendo bloques de construcción de programas (objetos visuales) en un interfaz adecuado para ello. No confundir con entornos de programación visual, como Microsoft Visual Studio y sus lenguajes de programación textuales (como Visual C#).
  • Lenguajes de programación textual: El código del programa se realiza escribiéndolo.
11. Determinismo.
Según se pueda predecir o no el siguiente estado del programa a partir del estado actual:
  • Lenguajes deterministas.
  • Lenguajes probabilísticos o no deterministas: Sirven para explorar grandes espacios de búsqueda, (como gramáticas), y en la investigación teórica de hipercomputación.
12. Productividad.
Según se caractericen por tener virtudes útiles o productivas, u oscuras y enrevesadas:
  • Lenguajes útiles o productivos: Sus virtudes en cuanto a eficiencia, sencillez, claridad, productividad, etc., motiva que sean utilizados en empresas, administraciones públicas y/o en la enseñanza.
  • Lenguajes esotéricos o exóticos: Inventados con la intención de ser los más raros, oscuros, difíciles, simples y/o retorcidos de los lenguajes, para diversión y entretenimiento de frikis programadores. A veces exploran nuevas ideas en programación.
                     http://qbitacora.wordpress.com/2007/09/21/clasificacion-de-lenguajes-de-programacion/
2.-Describir breve historia de Linux.
En él año 1991 un estudiante de ciencias de la computación de nombre Linus Torvalds desarrollo un núcleo para computadoras con arquitectura de procesador Intel x86, qué mimetizaba muchas de las funciones de UNIX y lo lanzó en forma de código abierto bajo él nombre de LINUX.
  Hacia 1991, cuando la primera versión del núcleo Linux fue liberada, el proyecto GNU había producido varios de los componentes del sistema operativo, incluyendo un intérprete de comandos, una biblioteca C y un compilador. Entonces, el núcleo creado por Linus Torvalds , llenó el hueco final que el sistema operativo GNU exigía. Linus nunca anunció la versión 0.01 de Linux (agosto 1991), esta versión no era ejecutable, solamente incluía los principios del nucleo del sistema, estaba escrita en lenguaje ensamblador y asumía que uno tenía acceso a un sistema Minix para su compilación. El 5 de octubre de 1991, Linus anuncio la primera versión versión 0.02 . Con esta versión Linus pudo ejecutar Bashy gccpero no mucho mas funcionaba
  Después de la versión 0.03 , Linus salto en la numeración hasta la 0.10 , más programadores a lo largo y ancho del internet empezaron a trabajar en el proyecto y después de revisiones, Linus incremento el numero de version hasta la 0.95 (marzo 1992). En Diciembre de 1993 el nucleo del sistema estaba en la versión 0.99 y la versión 1.0 , llego el 14 de marzo de 1994.
  Actualmente, el núcleo se encuentra en la versión 1.1 parche 52, y se acerca la 1.2.2 Hoy Linux es ya un clónico de UNIX completo, capaz de ejecutar X Window, TCP/IP, Emacs,
UUCP y software de correo y News.  Mucho software de libre distribución ha sido ya portado a
Linux, y están empezando a aparecer aplicaciones comerciales.  El hardware soportado es mucho mayor que en las primeras versiones del núcleo. Mucha gente ha ejecutado tests de rendimiento en sus sistemas Linux 486 y se han encontrado que son comparables a las estaciones de trabajo de gama media de Sun Microsystems y Digital.
http://www.buenastareas.com/ensayos/Resumen-De-La-Historia-De-Linux/1305160.html
http://www.slideshare.net/eduann/historia-de-linux
http://jjlinux.tripod.com/linux/historia.html

3.-Describa que es un algoritmo y de tres ejemplos sencillos.
 es un conjunto preescrito de instrucciones o reglas bien definidas, ordenadas y finitas que permite realizar una actividad mediante pasos sucesivos que no generen dudas a quien deba realizar dicha actividad.
                                                                                http://es.wikipedia.org/wiki/Algoritmo

No hay comentarios:

Publicar un comentario