Los mtodos numricos son tcnicas mediante las cuales es posible formular problemas de tal forma que sean resueltas con operaciones aritmticas, Aunque hay muchos tipos de mtodos numricos todos comparten una caracterstica comn, llevan cabo un buen nmero de tediosos clculos aritmticos. Los mtodos numricos nos vuelven aptos para entender esquemas numricos a fin de resolver problemas matemticos, de ingeniera y cientficos en una computadora, reducir esquemas numricos bsicos, escribir programas y resolverlos en una computadora y usar correctamente el software existente para dichos mtodos y no solo aumenta nuestra habilidad para el uso de computadoras sino que tambin amplia la pericia matemtica y la comprensi6n de los principios cientficos bsicos.
- LA RAZON DE SU ESTUDIO
Los mtodos numricos nos vuelven aptos para entender esquemas numricos a fin de resolver problemas matemticos, de ingeniera y cientficos en una computadora, reducir esquemas numricos bsicos, escribir programas y resolverlos en una computadora y usar correctamente el software existente para dichos mtodos y no solo aumenta nuestra habilidad para el uso de computadoras sino que tambin amplia la pericia matemtica y la comprensi6n de los principios cientficos bsicos.
1.2- PASOS A LA SOLUCION DE UN PROBLEMA MATEMATICO, CON ENFOQUE ALGORITMICO
Estructura de un Algoritmo
Todo algoritmo consta de tres secciones principales: Entrada: Es la introduccin de datos para ser transformados.
Proceso: Es el conjunto de operaciones a realizar para dar solucin al problema.
Salida: Son los resultados obtenidos a travs del proceso.
EJEMPLO 1
EJEMPLO 2 Sean los puntos P=(a,b) y Q=(c,d) que definen una recta, encontrar un segmento de recta perpendicular a la anterior que pasa por el punto medio de los puntos dados.
Inicio PASO 1. Colocar los nmeros el primero encima del segundo, de tal manera que las unidades, decenas, centenas, etc., de los nmeros queden alineadas. Trazar una lnea debajo del segundo nmero. PASO 2. Empezar por la columna ms a la derecha. PASO 3. Sumar los dgitos de dicha columna. PASO 4. Si la suma es mayor a 9 anotar un 1 encima de la siguiente columna a la izquierda y anotar debajo de la lnea las unidades de la suma. Si no es mayor anotar la suma debajo de la lnea. PASO 5. Si hay ms columnas a la izquierda, pasar a la siguiente columna a la izquierda y volver a 3. PASO 6. El nmero debajo de la lnea es la solucin. Fin ALGORITMO: Inicio
PASO 1. Trazar un crculo con centro en el punto P que pase por el punto Q.
PASO 2. Trazar un crculo con centro en el punto Q que pase por el punto P.
PASO 3. Trazar un segmento de recta entre los puntos de interseccin de las circunferencias trazadas.
Fin. El segmento de recta trazada es el buscado.
1.3- DEFINICION Y TIPOS DE ERRORES
DEFINICIN DE ERROR
Los errores numricos se generan con el uso de aproximaciones para representar las operaciones y cantidades matemticas. Esto incluye errores de truncamiento que resultan de representar aproximadamente un procedimiento matematico exacto, y los errores de redondeo, que resultan de presentar aproximadamente nmeros exactos. Para los tipos de errores, la relacin entre el resultado exacto o verdadero y el aproximado esta dado por :
Valor verdadero = valor aproximado + error ( Ec.1 )
Reordenando la ecuacin Ec.1, se encuentra que el error numrico es igual a la diferencia entre el valor verdadero y el valor aproximado esto es :
Ev = valor verdadero valor aproximado
Donde Ev se usa para redondear el valor exacto del error. Se incluye el subndice v par dar a entender que se trata del verdadero error. Un defecto es que muchas veces no se toma en consideracin el orden de magnitud del valor que se esta probando . Por ejemplo, un error de un centmetro es mucho mas significativo si se esta midiendo un remache que un puente. Una manera de medir las magnitudes de las cantidades que se estn evaluendo es normalizar el error respecto al valor verdadero, como en:
Error relativo fraccional = error / valor verdadero Donde: Error = valor verdadero valor aproximado. El error relativo tambin se puede multiplicar por el 100% para expresarlo como Ev = (error verdadero/ valor verdadero ) 100;Donde Ev denota el error relativo porcentual. El subndice v significa la normalizacin del error al valor verdadero .
Para los mtodos numricos el valor verdadero nicamente se conocer cuando se habla de funciones que se pueden resolver analticamente. Sin embargo, en aplicaciones reales, no se conoce la respuesta verdadera. En estos casos, normalizar el error es una alternativa usando la mejor estimacin posible del valor verdadero, esto es a la aproximacin misma, como: Ea = (error aproximado/ valor aproximado)100 Donde el subndice a significa que el error est normalizado a un valor aproximado . Uno de los retos a que se enfrentas los mtodos numricos es el de determinar estimaciones del error en ausencia de conocimiento de los valores verdaderos. El error se calcula como la diferencia entre la aproximacin previa y la actual. Por lo tanto, el error relativo porcentual est dado por Ea =abs( ((aproximacin actual- aproximacin previa )/ aproximacin actual) 100) Si se cumple la relacin anterior , entonces se considera que el resultado obtenido esta dentro del nivel aceptable, es decir, aun error previamente fijado(Es): Abs(Ea) <>
ERRORES DE REDONDEO
Los errores de redondeo se deben a que las computadoras solo guardan un numero finito de cifras significativas durante un calculo. Las computadoras realizan esta funcin de maneras diferentes; esta tcnica de retener solo los primeros siete trminos se llam truncamiento en el ambiente de computacin. De preferencia se llamara de corte, para distinguirlo de los errores de truncamiento. Un corte ignora los trminos restantes de la representacin decimal completa.
La mayor parte de las computadoras tienen entre 7 y 14 cifras significativas, los errores de redondeo pareceran no ser muy importantes. Sin embargo, hay dos razones del por qu pueden resultar crticos en algunos mtodos numricos: 1) Ciertos mtodos requieren cantidades extremadamente grandes para obtener una respuesta. Adems, estos clculos a menudo dependen entre si, es decir, los clculos posteriores son dependientes de los anteriores. En consecuencia, aunque un error de redondeo individual puede ser muy pequeo, el efecto de acumulacin en el transcurso de la gran cantidad de clculos puede ser significativo. 2) El efecto de redondeo puede ser exagerado cuando se llevan a cabo operaciones algebraicas que emplean nmeros muy pequeos y muy grandes al mismo tiempo. Ya que este caso se presenta en muchos mtodos numricos, el error de redondeo puede resultar de mucha importancia.
ERRORES DE TRUNCAMIENTO
Los errores de truncamiento son aquellos que resultan al usar una aproximacin en lugar de un procedimiento matemtico exacto. Estos tipos de errores son evaluados con una formulacin matemtica: la serie de Taylor. Taylor es una formulacin para predecir el valor de la funcin en Xi+1 en trminos de la funcin y de sus derivadas en una vecindad del punto Xi. Siendo el termino final: Rn= (((n+1) ())/(n+1)!)hn+1 En general, la expansin en serie de Taylor de n-simo orden es exacta par aunpolinomio de n-simo orden. Para otras funciones continuas diferenciables, como las exponenciales o senoidales, no se obtiene una estimacin exacta mediante un numero finito de trminos. Cada una de los trminos adicionales contribuye al mejoramiento de la aproximacin, aunque sea un poco
ERROR NUMERICO TOTAL
El error numrico total es la suma de los errores de redondeo y de truncamiento. La nica forma de minimizar los errores de redondeo es la de incrementar el nmero de cifras significativas de la computadora.
Representacin grafica de las ventajas y desventajas entre errores de redondeo y truncamiento que en ocasiones influyen en el curso de un mtodo numrico. El punto ptimo muestra donde el error de redondeo comienza a negar los beneficios dados por la reduccin del tamao de paso.
ERRORES POR EQUIVOCACIN
En los primeros aos de la computacin los resultados numricos errneos fueron atribuidos algunas veces al mal funcionamiento de la computadora misma. Hoy dia esta fuente de error es muy improbable y la mayor parte de las equivocaciones se atribuye a errores humanos. Las equivocaciones ocurren a cualquier nivel del proceso de modelacin matematica y pueden contribuir con todas las otras componentes del error. Las equivocaciones, por lo general se pasan por alto en la discucin del mtodo numrico. Esto sin duda prueba el hecho de que los errores de torpeza son, hasta cierto punto inevitables.
ERRORES DE FORMULACIN
Los errores de formulacin o de modelamiento degeneran en lo que se podra considerar como un modelo matemtico incompleto, ya que si se esta usando un modelo deficiente, ningn mtodo numrico generara los resultados adecuados.
1.4- SOLUCION ANALITICA Y SOLUCION EMPIRICA
1.5- COMSEPTO DE EXACTITUD Y PRECISION Y CIFRAS SIGNIFICATIVAS
PRECISIN Y EXACTITUD: En ingeniera, ciencia, industria, estadstica, exactitud y precisin no son equivalentes. Es importante resaltar que la automatizacin de diferentes pruebas o tcnicas puede producir un aumento de la precisin. Esto se debe a que con dicha automatizacin, lo que logramos es una disminucin de los errores manuales o su correccin inmediata.
Precisin: se refiere a la dispersin del conjunto de valores obtenidos de mediciones repetidas de una magnitud. Cuanto menor es la dispersin mayor la precisin. Una medida comn de la variabilidad es la desviacin estndar de las mediciones y la precisin se puede estimar como una funcin de ella.
Exactitud: se refiere a cun cerca del valor real se encuentra el valor medido. En trminos estadsticos, la exactitud est relacionada con el sesgo de una estimacin. Cuanto menor es el sesgo ms exacto es una estimacin. Tambin se refiere a la aproximacin de un numero o de una medida al valor verdadero que se supone representa. Cuando expresamos la exactitud de un resultado se expresa mediante el error absoluto que es la diferencia entre el valor experimental y el valor verdadero. Tambin es la mnima variacin de magnitud que puede apreciar un instrumento.
CIFRA SIGNIFICATIVA
El concepto de cifra significativa lo podemos definir como aquella que aporta informacin no ambigua ni superflua acerca de una determinada medida experimental, son cifras significativas de un numero vienen determinadas por su error. Son cifras que ocupan una posicin igual o superior al orden o posicin de error.Cuando se emplea un nmero en un clculo, debe haber seguridad de que pueda usarse con confianza. El concepto de cifras significativas tiene dos implicaciones importantes en el estudio de los mtodos numricos.
1.- Los mtodos numricos obtienen resultados aproximados. Por lo tanto, se debe desarrollar criterios para especificar que tan precisos son los resultados obtenidos.
2.- Aunque ciertos nmeros representan nmero especficos, no se pueden expresar exactamente con un nmero finito de cifras.
1.6- COMSEPTO DE PROGRAMA , LENGUAJE DE PROGRAMACION Y PROGRAMMA EXTRUCTURADO
CONSEPTO DE PROGRAMA
Un programa de computadora es un conjunto de instrucciones que producirn la ejecucin de una determinada tarea.En esencia, un programa es un medio para llegar a un fin. El fin ser normalmente definido como la informacin necesaria para solucionar un problema. En conclusin programa es el proceso para solucionar un problema.
El desarrollo de un programa requiere las siguientes fases:
Definicin y anlisis del problema Diseo de algoritmo Diagrama de flujo Diagrama N S Pseudo cdigo. Codificacin del programa. Depuracin y verificacin del programa. Documentacin. Mantenimiento.
CONSEPTOS LENGUAJES DE PROGRAMACION Un lenguaje de programacin es un lenguaje que puede ser utilizado para controlar el comportamiento de una mquina, particularmente una computadora. Consiste en un conjunto de reglas sintcticas y semnticas que definen su estructura y el significado de sus elementos, respectivamente. Aunque muchas veces se usa lenguaje de programacin y lenguaje informtico como si fuesen sinnimos, no tiene por qu ser as, ya que los lenguajes informticos engloban a los lenguajes de programacin y a otros ms, como, por ejemplo, el HTML.Segn la forma de ejecucin
LENGUAJES COMPILADOS Naturalmente, un programa que se escribe en un lenguaje de alto nivel tambin tiene que traducirse a un cdigo que pueda utilizar la mquina. Los programas traductores que pueden realizar esta operacin se llaman compiladores. stos, como los programas ensambladores avanzados, pueden generar muchas lneas de cdigo de mquina por cada proposicin del programa fuente. Se requiere una corrida de compilacin antes de procesar los datos de un problema. Los compiladores son aquellos cuya funcin es traducir un programa escrito en un determinado lenguaje a un idioma que la computadora entienda (lenguaje mquina con cdigo binario). Al usar un lenguaje compilado (como lo son los lenguajes del popular Visual Studio de Microsoft), el programa desarrollado nunca se ejecuta mientras haya errores, sino hasta que luego de haber compilado el programa, ya no aparecen errores en el cdigo. LENGUAJES INTERPRETADOS Se puede tambin utilizar una alternativa diferente de los compiladores para traducir lenguajes de alto nivel. En vez de traducir el programa fuente y grabar en forma permanente el cdigo objeto que se produce durante la corrida de compilacin para utilizarlo en una corrida de produccin futura, el programador slo carga el programa fuente en la computadora junto con los datos que se van a procesar. A continuacin, un programa intrprete, almacenado en el sistema operativo del disco, o incluido de manera permanente dentro de la mquina, convierte cada proposicin del programa fuente en lenguaje de mquina conforme vaya siendo necesario durante el proceso de los datos. No se graba el cdigo objeto para utilizarlo posteriormente. La siguiente vez que se utilice una instruccin, se le debe interpretar otra vez y traducir a lenguaje mquina. Por ejemplo, durante el procesamiento repetitivo de los pasos de un ciclo, cada instruccin del ciclo tendr que volver a ser interpretado cada vez que se ejecute el ciclo, lo cual hace que el programa sea ms lento en tiempo de ejecucin (porque se va revisando el cdigo en tiempo de ejecucin) pero ms rpido en tiempo de diseo (porque no se tiene que estar compilando a cada momento el cdigo completo). El intrprete elimina la necesidad de realizar una corrida de compilacin despus de cada modificacin del programa cuando se quiere agregar funciones o corregir errores; pero es obvio que un programa objeto compilado con antelacin deber ejecutarse con mucha mayor rapidez que uno que se debe interpretar a cada paso durante una corrida de produccin. PROGRAMACIN ESTRUCTURADA
La programacin estructurada es un estilo con el cual el se busca que el programador elabore programas sencillos y fciles de entender. Para ello, la programacin estructurada hace uso de tres estructuras bsicas de control. stas son: Estructura Secuencial Estructura Selectiva Estructura Repetitiva ( Iterativa)
La programacin estructurada se basa un teorema fundamental, el cual afirma que cualquier programa, no importa el tipo de trabajo que ejecute, puede ser elaborado utilizando nicamente las tres estructuras bsicas (secuencia, seleccin, iteracin).
Estructura Secuencial Indica que las instrucciones de un programa se ejecutan una despus de la otra, en el mismo orden en el cual aparecen en el programa. Se representa grficamente como una caja despus de otra, ambas con una sola entrada y una nica salida. Las cajas A y B pueden ser definidas para ejecutar desde una simple instruccin hasta un mdulo o programa completo, siempre y cuando stos tambin sean programas apropiados.
Estructura Selectiva Tambin conocida como la estructura SI-VERDADERO-FALSO, plantea la seleccin entre dos alternativas con base en el resultado de la evaluacin de una condicin; equivale a la instruccin IF de todos los lenguajes de programacin y se representa grficamente de la siguiente manera:
En el diagrama de flujo anterior, C es una condicin que se evala; A es la accin que se ejecuta cuando la evaluacin de esta condicin resulta verdadera y B es la accin ejecutada cuando el resultado de la evaluacin indica falso. La estructura tambin tiene una sola entrada y una sola salida; y las funciones A y B tambin pueden ser cualquier estructura bsica o conjunto de estructuras.
Estructura Repetitiva (Iterativa) Tambin llamada la estructura HACER-MIENTRAS-QUE, corresponde a la ejecucin repetida de una instruccin mientras que se cumple una determinada condicin. El diagrama de flujo para esta estructura es el siguiente: Aqu el bloque A se ejecuta repetidamente mientras que la condicin C se cumpla o sea cierta. Tambin tiene una sola entrada y una sola salida; igualmente A puede ser cualquier estructura bsica o conjunto de estructuras.
1.7- CARACTERSTICAS TCNICAS DE UNA SPER COMPUTADORA ( kum balan )
La supercomputadora Kan Balam, es una computadora HP con capacidad 7.113 teraflops, cuenta con 1,368 procesadores AMD Opteron de 2.6 GHz y 3016 GB de Rama distribuidos en 337 nodos de clculo cada uno con 8GB y dos procesadores duales y en 5 nodos especializados con 64 GB de ram, sus sistema operativo es GNU/Linux, cuenta tambin con 768 discos duros de 200gb proporcionando un total de 150 TB.Sus nodos de procesamiento se comunican con el sistema de almacenamiento mediante una red de alta velocidad conectada por 576 puertos y dos switches logrando una velocidad de 10 GBpsEst ubicada en la Ciudad de Mxico, en las instalaciones de la UNAM de ciudad universitaria dentro del edificio de la DGTIC. Entre sus usos se encuentra un proyecto para evitar la fuga de cerebros del pas, haciendo un llamado a los investigadores que estn laborando fuera del pas por falta de infraestructura; tambin la ocupan diferentes facultades y ciencias de la universidad tales como Astrofsica, fsica de partculas, qumica cuntica, geologa e ingeniera ssmica.En ella trabajan 190 usuarios, de 31 dependencias universitarias, quienes desarrollan 90 proyectos de investigacin en temas como la modelacin de la calidad del aire, superconductividad, prediccin de estructuras de protenas, tectnica, interaccin de ADN con elementos atmosfricos, frmacos, dinmica interestelar, nano ciencias y algoritmos genticos, entre muchos ms.Como conclusin puedo sealar que Kambalam no solo puso a la UNAM nuevamente a la vanguardia de tecnologa, tambin brida las herramientas tcnicas necesarias para que los investigadores de la UNAM puedan competir con el resto del mundo.
1.8- CLASIFICACIN DE SOFTWARE
BASE DE DATOS
CLASIFICACION
Las bases de datos pueden clasificarse de varias maneras, de acuerdo al criterio elegido para su clasificacin:
Segn la variabilidad de los datos almacenado
Bases de datos estticas: stas son bases de datos de slo lectura, utilizadas primordialmente para almacenar datos histricos que posteriormente se pueden utilizar para estudiar el comportamiento de un conjunto de datos a travs del tiempo, realizar proyecciones y tomar decisiones.
Bases de datos dinmicas: stas son bases de datos donde la informacin almacenada se modifica con el tiempo, permitiendo operaciones como actualizacin y adicin de datos, adems de las operaciones fundamentales de consulta. Un ejemplo de esto puede ser la base de datos utilizada en un sistema de informacin de una tienda de abarrotes, una farmacia, un videoclub, etc.
Segn el contenido
Bases de datos bibliogrficas: Solo contienen un surrogante (representante) de la fuente primaria, que permite localizarla. Un registro tpico de una base de datos bibliogrfica contiene informacin sobre el autor, fecha de publicacin, editorial, ttulo, edicin, de una determinada publicacin, etc. Puede contener un resmen o extracto de la publicacin original, pero nunca el texto completo.Almacenan las fuentes primarias, como por ejemplo, todo el contenido de todas las ediciones de una coleccin de revistas cientficas.
Algunos modelos con frecuencia utilizados en las bases de datos:
Base de datos jerrquica: estas son bases de datos que, como su nombre indica, almacenan su informacin en una estructura jerrquica. En este modelo los datos se organizan en una forma similar a un rbol (visto al revs), en donde un nodo padre de informacin puede tener varios hijos. El nodo que no tiene padres es llamado raz, y a los nodos que no tienen hijos se los conoce como hojas.Las bases de datos jerrquicas son especialmente tiles en el caso de aplicaciones que manejan un gran volumen de informacin y datos muy compartidos permitiendo crear estructuras estables y de gran rendimiento.
Base de datos de red: ste es un modelo ligeramente distinto del jerrquico; su diferencia fundamental es la modificacin del concepto de nodo: se permite que un mismo nodo tenga varios padres (posibilidad no permitida en el modelo jerrquico).Fue una gran mejora con respecto al modelo jerrquico, ya que ofreca una solucin eficiente al problema de redundancia de datos; pero, aun as, la dificultad que significa administrar la informacin en una base de datos de red ha significado que sea un modelo utilizado en su mayora por programadores ms que por usuarios finales.
Base de datos relacional: Su idea fundamental es el uso de "relaciones". Estas relaciones podran considerarse en forma lgica como conjuntos de datos llamados "tuplas", la mayora de las veces se conceptualiza de una manera ms fcil de imaginar.
En este modelo, el lugar y la forma en que se almacenen los datos no tienen relevancia (a diferencia de otros modelos como el jerrquico y el de red). Esto tiene la considerable ventaja de que es ms fcil de entender y de utilizar para un usuario espordico de la base de datos. La informacin puede ser recuperada o almacenada mediante "consultas" que ofrecen una amplia flexibilidad y poder para administrar la informacin.
El lenguaje ms habitual para construir las consultas a bases de datos relacionales es Structured Query Language o Lenguaje Estructurado de Consultas, un estndar implementado por los principales motores o sistemas de gestin de bases de datos relacionales.Durante su diseo, una base de datos relacional pasa por un proceso al que se le conoce como normalizacin de una base de datosBases de datos orientadas a objetos. Este modelo, bastante reciente, y propio de los modelos informticos orientados a objetos, trata de almacenar en la base de datos los objetos.
CLASIFICACIN DE LENGUAJES DE PROGRAMACIN Un lenguaje de programacin es un lenguaje inventado para controlar una mquina, (normalmente, un ordenador). Hay muchsimos, de toda clase de tipos y caractersticas, inventados para facilitar el abordaje de distintos problemas, el mantenimiento del software, su reutilizacin, mejorar la productividad, etc. Los lenguajes de programacin se pueden clasificar segn varios criterios. He encontrado doce en total: Nivel de abstraccin, propsito, evolucin histrica, manera de ejecutarse, manera de abordar la tarea a realizar, paradigma de programacin, lugar de ejecucin, concurrencia, interactividad, realizacin visual, determinismo y productividad. Hay que tener en cuenta tambin, que en la prctica, la mayora de lenguajes no pueden ser puramente clasificados en una categora, pues surgen incorporando ideas de otros lenguajes y de otras filosofas de programacin, pero no importa al establecer las clasificaciones, pues el autntico objetivo de las mismas es mostrar los rangos, las posibilidades y tipos de lenguajes que hay. 1. Nivel de abstraccin. Segn el nivel de abstraccin, o sea, segn el grado de cercana a la mquina: Lenguajes de bajo nivel: La programacin se realiza teniendo muy en cuenta las caractersticas del procesador. Ejemplo: Lenguajesensamblador. Lenguajes de nivel medio: Permiten un mayor grado de abstraccin pero al mismo tiempo mantienen algunas cualidades de los lenguajes de bajo nivel. Ejemplo: C puede realizar operaciones lgicas y de desplazamiento con bits, tratar todos los tipos de datos como lo que son en realidad a bajo nivel (nmeros), etc. Lenguajes de alto nivel: Ms parecidos al lenguaje humano. Manejan conceptos, tipos de datos, etc., de una manera cercana al pensamiento humano ignorando (abstrayndose) del funcionamiento de la mquina. Ejemplos: Java, Ruby. Hay quien slo considera lenguajes de bajo nivel y de alto nivel, (en ese caso, C es considerado de alto nivel).
Segn el propsito, es decir, el tipo de problemas a tratar con ellos: Lenguajes de propsito general: Aptos para todo tipo de tareas: Ejemplo: C. Lenguajes de propsito especfico: Hechos para un objetivo muy concreto. Ejemplo: Csound (para crear ficheros de audio). Lenguajes de programacin de sistemas: Diseados para realizar sistemas operativos o drivers. Ejemplo: C. 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 programacin web, etc.). Ejemplos: bash (shell), mIRC script, JavaScript (programacin web). 3. Evolucin histrica. Con el paso del tiempo, se va incrementando el nivel de abstraccin, pero en la prctica, los de una generacin no terminan de sustituir a los de la anterior: Lenguajes de primera generacin (1GL): Cdigo mquina. Lenguajes de segunda generacin (2GL): Lenguajes ensamblador. Lenguajes de tercera generacin (3GL): La mayora de los lenguajes modernos, diseados para facilitar la programacin a los humanos. Ejemplos: C, Java. Lenguajes de cuarta generacin (4GL): Diseados con un propsito concreto, o sea, para abordar un tipo concreto de problemas. Ejemplos:NATURAL, Mathematica. Lenguajes de quinta generacin (5GL): La intencin es que el programador establezca el qu problema ha de ser resuelto y las condiciones a reunir, y la mquina lo resuelve. Se usan en inteligencia artificial. Ejemplo: Prolog. 4. Manera de ejecutarse. Segn la manera de ejecutarse: Lenguajes compilados: Un programa traductor traduce el cdigo del programa (cdigo fuente) en cdigo mquina (cdigo objeto). Otro programa, el enlazador, unir los ficheros de cdigo objeto del programa principal con los de las libreras para producir el programa ejecutable. Ejemplo: C. Lenguajes interpretados: Un programa (intrprete), ejecuta las instrucciones del programa de manera directa. Ejemplo: Lisp. Tambin los hay mixtos, como Java, que primero pasan por una fase de compilacin en la que el cdigo fuente se transforma en bytecode, y este bytecode puede ser ejecutado luego (interpretado) en ordenadores con distintas arquitecturas (procesadores) que tengan todos instalados la mismamquina virtual Java. 5. Manera de abordar la tarea a realizar. Segn la manera de abordar la tarea a realizar, pueden ser: Lenguajes imperativos: Indican cmo hay que hacer la tarea, es decir, expresan los pasos a realizar. Ejemplo: C. Lenguajes declarativos: Indican qu hay que hacer. Ejemplos: Lisp, Prolog. Otros ejemplos de lenguajes declarativos, pero que no son lenguajes de programacin, son HTML (para describir pginas web) oSQL (para consultar bases de datos). 6. Paradigma de programacin. El paradigma de programacin es el estilo de programacin empleado. Algunos lenguajes soportan varios paradigmas, y otros slo uno. Se puede decir que histricamente han ido apareciendo para facilitar la tarea de programar segn el tipo de problema a abordar, o para facilitar el mantenimiento del software, o por otra cuestin 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 programacin procedural: Divide el problema en partes ms pequeas, que sern realizadas por subprogramas (subrutinas, funciones, procedimientos), que se llaman unas a otras para ser ejecutadas. Ejemplos: C, Pascal. Lenguajes de programacin 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. Ejemplos:C++, Java. Lenguajes de programacin funcional: La tarea se realiza evaluando funciones, (como en Matemticas), de manera recursiva. Ejemplo: Lisp. Lenguajes de programacin lgica: La tarea a realizar se expresa empleando lgica formal matemtica. Expresa qu computar. Ejemplo: Prolog. Hay muchos paradigmas de programacin: Programacin genrica, programacin reflexiva, programacin orientada a procesos, etc. 7. Lugar de ejecucin. En sistemas distribuidos, segn dnde se ejecute: Lenguajes de servidor: Se ejecutan en el servidor. Ejemplo: PHP es el ms utilizado en servidores web. Lenguajes de cliente: Se ejecutan en el cliente. Ejemplo: JavaScript en navegadores web. 8. Concurrencia. Segn admitan o no concurrencia de procesos, esto es, la ejecucin simultnea de varios procesos lanzados por el programa: Lenguajes concurrentes. Ejemplo: Ada. Lenguajes no concurrentes. Ejemplo: C. 9. Interactividad. Segn la interactividad del programa con el usuario u otros programas: Lenguajes orientados a sucesos: El flujo del programa es controlado por la interaccin con el usuario o por mensajes de otros programas/sistema operativo, como editores de texto, interfaces grficos de usuario (GUI) o kernels. Ejemplo: VisualBasic, lenguajes de programacin declarativos. 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 ms claro (actualizaciones de bases de datos, colas de impresin de documentos, etc.). Ejemplos: Lenguajes de programacin imperativos. 10. Realizacin visual. Segn la realizacin visual o no del programa: Lenguajes de programacin visual: El programa se realiza moviendo bloques de construccin de programas (objetos visuales) en un interfaz adecuado para ello. No confundir con entornos de programacin visual, como Microsoft Visual Studio y sus lenguajes de programacin textuales (como Visual C#). Ejemplo: Mindscript. Lenguajes de programacin textual: El cdigo del programa se realiza escribindolo. Ejemplos: C, Java, Lisp. 11. Determinismo. Segn se pueda predecir o no el siguiente estado del programa a partir del estado actual: Lenguajes deterministas. Ejemplos: Todos los anteriores. Lenguajes probabilsticos o no deterministas: Sirven para explorar grandes espacios de bsqueda, (como gramticas), y en la investigacin terica de hipercomputacin. Ejemplo: mutt (generador de texto aleatorio). 12. Productividad. Segn 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 pblicas y/o en la enseanza. Ejemplos: Cualquier lenguaje de uso habitual (C, Java, C++, Lisp, Python, Ruby, ). Lenguajes esotricos o exticos: Inventados con la intencin de ser los ms raros, oscuros, difciles, simples y/o retorcidos de los lenguajes, para diversin y entretenimiento de frikis programadores. A veces exploran nuevas ideas en programacin. Ejemplo: Brainfuck.
CLASIFICACION DEL SISTEMA OPERATIVO
Con el paso del tiempo, los Sistemas Operativos fueron clasificndose de diferentes maneras, dependiendo del uso o de la aplicacin que se les daba. A continuacin se mostrarn diversos tipos de Sistemas Operativos que existen en la actualidad, con algunas de sus caractersticas: Sistemas Operativos de multiprogramacin (o Sistemas Operativos demultitarea). Es el modo de funcionamiento disponible en algunos sistemas operativos, mediante el cual una computadora procesa varias tareas al mismo tiempo. Existen varios tipos de multitareas. La conmutacin de contextos (context Switching) es un tipo muy simple de multitarea en el que dos o ms aplicaciones se cargan al mismo tiempo, pero en el que solo se esta procesando la aplicacin que se encuentra en primer plano (la que ve el usuario).En la multitarea cooperativa, la que se utiliza en el sistema operativo Macintosh. Funciona en los Sistemas Operativos como UNIX, Windows 95, Windows 98, Windows NT, MAC- OS, OS/2, soportan la multitarea. Sistema Operativo Monotareas. Los sistemas operativos monotareas son ms primitivos y es todo lo contrario al visto anteriormente, es decir, solo pueden manejar un proceso en cada momento o que solo puede ejecutar las tareas de una en una. Por ejemplo cuando la computadora esta imprimiendo un documento, no puede iniciar otro proceso ni responder a nuevas instrucciones hasta que se termine la impresin. Sistema Operativo Monousuario. Los sistemas monousuarios son aquellos que nada ms puede atender a un solo usuario, gracias a las limitaciones creadas por el hardware, los programas o el tipo de aplicacin que se este ejecutando. Estos tipos de sistemas son muy simples, porque todos los dispositivos de entrada, salida y control dependen de la tarea que se esta utilizando, esto quiere decir, que las instrucciones que se dan, son procesadas de inmediato; ya que existe un solo usuario. Y estn orientados principalmente por los microcomputadores. Sistema Operativo Multiusuario. Es todo lo contrario a monousuario; y en esta categora se encuentran todos los sistemas que cumplen simultneamente las necesidades de dos o ms usuarios, que comparten mismos recursos. Este tipo de sistemas se emplean especialmente en redes. En otras palabras consiste en el fraccionamiento del tiempo (timesharing). Sistemas Operativos por lotes. Los Sistemas Operativos por lotes, procesan una gran cantidad de trabajos con poca o ninguna interaccin entre los usuarios y los programas en ejecucin. Se renen todos los trabajos comunes para realizarlos al mismo tiempo, evitando la espera de dos o ms trabajos como sucede en el procesamiento en serie. Estos sistemas son de los ms tradicionales y antiguos, y fueron introducidos alrededor de 1956 para aumentar la capacidad de procesamiento de los programas. Sistemas Operativos de tiempo real. Los Sistemas Operativos de tiempo real son aquellos en los cuales no tiene importancia el usuario, sino los procesos. Por lo general, estn subutilizados sus recursos con la finalidad de prestar atencin a los procesos en el momento que lo requieran. se utilizan en entornos donde son procesados un gran nmero de sucesos o eventos. Sistemas Operativos de tiempo compartido. Permiten la simulacin de que el sistema y sus recursos son todos para cada usuario. El usuario hace una peticin a la computadora, esta la procesa tan pronto como le es posible, y la respuesta aparecer en la terminal del usuario. Sistemas Operativos distribuidos. Permiten distribuir trabajos, tareas o procesos, entre un conjunto de procesadores. Puede ser que este conjunto de procesadores est en un equipo o en diferentes, en este caso es trasparente para el usuario. Existen dos esquemas bsicos de stos. Un sistema fuertemente acoplado es a es aquel que comparte la memoria y un reloj global, cuyos tiempos de acceso son similares para todos los procesadores. En un sistema dbilmente acoplado los procesadores no comparten ni memoria ni reloj, ya que cada uno cuenta con su memoria local. Sistemas Operativos de red. Son aquellos sistemas que mantienen a dos o ms computadoras unidas atravs de algn medio de comunicacin (fsico o no), con el objetivo primordial de poder compartir los diferentes recursos y la informacin del sistema. El primer Sistema Operativo de red estaba enfocado a equipos con un procesador Motorola 68000, pasando posteriormente a procesadores Intel como Novell Netware. Sistemas Operativos paralelos. En estos tipos de Sistemas Operativos se pretende que cuando existan dos o ms procesos que compitan por algn recurso se puedan realizar o ejecutar al mismo tiempo. En UNIX existe tambin la posibilidad de ejecutar programas sin tener que atenderlos en forma interactiva, simulando paralelismo (es decir, atender de manera concurrente varios procesos de un mismo usuario). As, en lugar de esperar a que el proceso termine de ejecutarse (como lo hara normalmente), regresa a atender al usuario inmediatamente despus de haber creado el proceso.