Bienvenidos al Blog de la Informática y el Software Libre

domingo, 11 de noviembre de 2012

TESIS SOBRE LA CAÍDA DE LOS DOMINIOS .VE

Las causas de la falla ocurrida el día lunes 28 de Mayo de 2012 con los dominios .ve, que desactivó a unas 217 mil páginas venezolanas (incluyendo bancos, ministerios y organismos del Estado), tiene que analizarse y corregirse.


 En principio, se manejan 2 Versiones o Tesis sobre lo acontecido:

El ministro Arreaza aseguró en su Twitter que la falla se debió a un "problema eléctrico" en los servidores de DNS, lo que indicaría que no hay plantas eléctricas de emergencia ni servidores de respaldo en tan importante servicio. (Versión Oficial)

Empleados de NIC.ve informan más bien que la falla se presentó por un posible ataque de "hackers" (un ataque de negación de servicio a través de comandos WHOIS) en contra de los servidores DNS de NIC.ve, que causó que se llenara un disco duro de los servidores, causando su colapso.


Cualquiera que haya sido la causa, obviamente hay un problema de desidia y falta de prevención. Si un ataque como estos se realizara el 7 de octubre, día de las elecciones presidenciales, dejaría fuera del aire no sólo a las páginas web de organismos y medios del Estado (como AVN, RNV, VTV, YVKE Mundial, Minci y varios otros), sino a la mismísima página del Consejo Nacional Electoral, llenándonos de rumores e incertidumbre

FUENTE:     Luiggino Bracci
                     Grupo de Conocimiento Libre COLIBRIS

domingo, 30 de noviembre de 2008

LENGUAJES DE PROGRAMACIÓN

Un lenguaje de programación es un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y el significado de sus elementos y expresiones, y es utilizado para controlar el comportamiento físico y lógico de una máquina.

Un lenguaje de programación permite a uno o más programadores especificar de manera precisa sobre qué datos debe operar una computadora, cómo estos datos deben ser almacenados o transmitidos y qué acciones debe tomar bajo una variada gama de circunstancias. Todo esto, a través de un lenguaje que intenta estar relativamente próximo al lenguaje humano o natural, tal como sucede con el lenguaje Léxico. Una característica relevante de los lenguajes de programación es precisamente que más de un programador puedan tener un conjunto común de instrucciones que puedan ser comprendidas entre ellos para realizar la construcción del programa de forma colaborativa.

Los procesadores usados en las computadoras son capaces de entender y actuar según lo indican programas escritos en un lenguaje fijo llamado lenguaje de máquina. Todo programa escrito en otro lenguaje puede ser ejecutado de dos maneras:
  • Mediante un programa que va adaptando las instrucciones conforme son encontradas. A este proceso se lo llama interpretar y a los programas que lo hacen se los conoce como intérpretes.
  • Traduciendo este programa al programa equivalente escrito en lenguaje de máquina. A ese proceso se lo llama compilar y al programa traductor se le denomina compilador.

Una vez que se identifica una tarea y se conoce el algoritmo para resolverla, el programador debe codificarlo en una lista de instrucciones, propias de algún lenguaje de computación. Los programas pueden ser escritos en cualquier lenguaje de la amplia gama disponibles. La escogencia del más adecuado dependerá de factores como la experiencia del programador con un lenguaje, determinar cuál contemplará menores trabas según el tipo de programa, la flexibilidad y la compatibilidad del programa como resultado del lenguaje usado.



TIPOS DE LENGUAJES DE PROGRAMACIÓN:


Los lenguajes de programación se pueden clasificar atendiendo a varios criterios:
  • Según el nivel de abstracción
  • Según la forma de ejecución
  • Según el paradigma de programación que poseen cada uno de ellos


Según su Nivel de Abstracción:


Lenguajes Maquina

El lenguaje máquina es el único que entiende directamente la computadora, utiliza el alfabeto binario que consta de los dos únicos símbolos 0 y 1, denominados bits (abreviatura inglesa de dígitos binarios). Fue el primer lenguaje utilizado en la programación de computadoras, pero dejó de utilizarse por su dificultad y complicación, siendo sustituido por otros lenguajes más fáciles de aprender y utilizar, que además reducen la posibilidad de cometer errores.

Los circuitos microprogramables son sistemas digitales, lo que significa que trabajan con dos únicos niveles de tensión. Dichos niveles, por abstracción, se simbolizan con el cero, 0, y el uno, 1, por eso el lenguaje de máquina sólo utiliza dichos signos. Esto permite el empleo de las teorías del álgebra booleana y del sistema binario en el diseño de este tipo de circuitos y en su programación.

Claude Elwood Shannon, en su Analysis of Relay and Switching Circuits, y con sus experiencias en redes de conmutación, sentó las bases para la aplicación del álgebra de Boole a las redes de conmutación.

Una red de conmutación es un circuito de interruptores eléctricos que al cumplir ciertas combinaciones booleanas con las variables de entrada, define el estado de la salida. Este concepto es el núcleo de las puertas lógicas, las cuales son, por su parte, los ladrillos con que se construyen sistemas lógicos cada vez más complejos

Están escritos de manera que sean directamente legibles por la máquina (computadora), ya que sus instrucciones son cadenas binarias (0 y 1). Da la posibilidad de cargar (transferir un programa a la memoria) sin la necesidad de realizar una traducción posterior, lo que supone una velocidad de ejecución superior pero con poca fiabilidad y dificultad para verificar y efectuar la o actualización de los programas.


Lenguajes de Bajo Nivel

Los lenguajes de bajo nivel son lenguajes de programación que se acercan al funcionamiento de una computadora. El lenguaje de más bajo nivel por excelencia es el código es el ensamblador. Las instrucciones en lenguaje ensamblador son instrucciones conocidas como nemotécnicos. Por ejemplo, nemotécnicos típicos de operaciones aritméticas son: en inglés, ADD, SUB, DIV, etc.; en español, SUM,RES,DIV,etc.

Un lenguaje de programación de bajo nivel es el que proporciona poca o ninguna abstracción del microprocesador de un ordenador. Consecuentemente es fácilmente trasladado a lenguaje de máquina.

En general se utiliza este tipo de lenguaje para programar controladores (drivers).

La programación en un lenguaje de bajo nivel como el lenguaje de la máquina o el lenguaje simbólico tiene ciertas ventajas:
  • Mayor adaptación al equipo.
  • Posibilidad de obtener la máxima velocidad con mínimo uso de memoria.

Pero también tiene importantes inconvenientes:
  • Imposibilidad de escribir código independiente de la máquina.
  • Mayor dificultad en la programación y en la comprensión de los programas.
  • El programador debe conocer más de un centenar de instrucciones.
  • Es necesario conocer en detalle la arquitectura de la máquina.

Características:
  • Se trabaja a nivel de instrucciones, es decir, su programación es al más fino detalle.
  • Está orientado a la máquina.

El lenguaje de programación de primera generación (por sus siglas en inglés, 1GL), es el lenguaje de código máquina. Es el único lenguaje que un microprocesador entiende de forma nativa. El lenguaje máquina no puede ser escrito o leído usando un editor de texto, y por lo tanto es raro que una persona lo use directamente.

El lenguaje de programación de segunda generación (por sus siglas en inglés, 2GL), es el lenguaje ensamblador. Se considera de segunda generación porque, aunque no es lenguaje nativo del microprocesador, un programador de lenguaje ensamblador debe conocer la arquitectura del microprocesador (como por ejemplo las particularidades de sus registros o su conjunto de instrucciones).


Lenguajes de Medio Nivel

Lenguaje de medio nivel es un lenguaje de programación informática que se encuentran entre los lenguajes de alto nivel y los lenguajes de bajo nivel.

Hay lenguajes de programación que son considerados por algunos expertos como lenguajes de medio nivel (como es el caso del lenguaje C) al tener ciertas características que los acercan a los lenguajes de bajo nivel pero teniendo, al mismo tiempo, ciertas cualidades que lo hacen un lenguaje más cercano al humano y, por tanto, de alto nivel.

Suelen ser clasificados muchas veces de alto nivel, pero permiten ciertos manejos de bajo nivel. Son precisos para ciertas aplicaciones como la creación de sistemas operativos, ya que permiten un manejo abstracto (independiente de la máquina, a diferencia del ensamblador), pero sin perder mucho del poder y eficiencia que tienen los lenguajes de bajo nivel.

Una característica distintiva, por ejemplo, que convierte a C en un lenguaje de medio nivel y al Pascal en un lenguaje de alto nivel es que en el primero es posible manejar las letras como si fueran números (en Pascal no), y por el contrario en Pascal es posible concatenar las cadenas de caracteres con el operador suma y copiarlas con la asignación (en C es el usuario el responsable de llamar a las funciones correspondientes).


Lenguajes de Alto Nivel

A finales de los años 1950 surgió un nuevo tipo de lenguajes de programación que evitaba estos inconvenientes, a costa de ceder un poco en las ventajas. Estos lenguajes se llaman "de tercera generación" o "de alto nivel", en contraposición a los "de bajo nivel" o "de nivel próximo a la máquina".

Los lenguajes de alto nivel son normalmente fáciles de aprender porque están formados por elementos de lenguajes naturales, como el inglés. En BASIC, uno de los lenguajes de alto nivel más conocidos, los comandos como "IF CONTADOR = 10 THEN" pueden utilizarse para pedir a la computadora que pare si el CONTADOR es igual a 10. Esta forma de trabajar puede dar la sensación de que las computadoras parecen comprender un lenguaje natural; en realidad lo hacen de una forma rígida y sistemática, sin que haya cabida, por ejemplo, para ambigüedades o dobles sentidos.

Los lenguajes de programación de alto nivel se caracterizan por expresar los algoritmos de una manera adecuada a la capacidad cognitiva humana, en lugar de a la capacidad ejecutora de las máquinas. En los primeros lenguajes de alto nivel la limitación era que se orientaban a un área específica y sus instrucciones requerían de una sintaxis predefinida.

Se clasifican como lenguajes procedimentales. Una limitación de los lenguajes de alto nivel es que se requiere de ciertos conocimientos de programación para realizar las secuencias de instrucciones lógicas. Los lenguajes de muy alto nivel se crearon para que el usuario común pudiese solucionar tal problema de procesamiento de datos de una manera más fácil y rápida.



Según la forma de ejecución:


Lenguajes Compiladores

Naturalmente, un programa que se escribe en un lenguaje de alto nivel también tiene que traducirse a un código que pueda utilizar la máquina. Los programas traductores que pueden realizar esta operación se llaman compiladores. Éstos, como los programas ensambladores avanzados, pueden generar muchas líneas de código de máquina por cada proposición del programa fuente. Se requiere una compilación antes de ejecutar las instrucciones de un problema.

Un lenguaje compilado es término un tanto impreciso para referirse a un lenguaje de programación que típicamente se implementa mediante un compilador. Esto implica que una vez escrito el programa, éste se traduce a partir de su código fuente por medio de un compilador en un archivo ejecutable para una determinada plataforma (por ejemplo Solaris para Sparc, Windows NT para Intel, etc.).

Un compilador es un programa que permite traducir el código fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (típicamente lenguaje máquina). De esta manera un programador puede diseñar un programa en un lenguaje mucho más cercano a como piensa un ser humano, para luego compilarlo a un programa más manejable por una computadora.

También en el siglo XIX el matemático e inventor británico Charles Babbage elaboró los principios de la computadora digital moderna. Inventó una serie de máquinas, como la máquina diferencial, diseñadas para solucionar problemas matemáticos complejos. Muchos historiadores consideran a Babbage y a su socia, la matemática británica Augusta Ada Byron (1815-1852), hija del poeta inglés Lord Byron, como a los verdaderos inventores de la computadora digital moderna. La tecnología de aquella época no era capaz de trasladar a la práctica sus acertados conceptos; pero una de sus invenciones, la máquina analítica, ya tenía muchas de las características de un ordenador moderno. Incluía una corriente, o flujo de entrada en forma de paquete de tarjetas perforadas, una memoria para guardar los datos, un procesador para las operaciones matemáticas y una impresora para hacer permanente el registro.


La taxonomía de los tipos de compiladores no es excluyente, por lo que puede haber compiladores que se adscriban a varias categorías:
  • Compiladores cruzados: generan código para un sistema distinto del que están funcionando.
  • Compiladores optimizadores: realizan cambios en el código para mejorar su eficiencia, pero manteniendo la funcionalidad del programa original.
  • Compiladores de una sola pasada: generan el código máquina a partir de una única lectura del código fuente.
  • Compiladores de varias pasadas: necesitan leer el código fuente varias veces antes de poder producir el código máquina.
  • Compiladores JIT (Just In Time): forman parte de un intérprete y compilan partes del código según se necesitan.

Pauta de creación de un compilador: En las primeras épocas de la informática, el software de los compiladores era considerado como uno de los más complejos existentes.

Los primeros compiladores se realizaron programándolos directamente en lenguaje máquina o en ensamblador. Una vez que se dispone de un compilador, se pueden escribir nuevas versiones del compilador (u otros compiladores distintos) en el lenguaje que compila ese compilador.

Actualmente existen herramientas que facilitan la tarea de escribir compiladores ó intérpretes informáticos. Estas herramientas permiten generar el esqueleto del analizador sintáctico a partir de una definición formal del lenguaje de partida, especificada normalmente mediante una gramática formal y barata, dejando únicamente al programador del compilador la tarea de programar las acciones semánticas asociadas.
Al usar un lenguaje compilado (como lo son, por ejemplo, los lenguajes del popular Visual Studio de Microsoft), el programa desarrollado nunca se podrá ejecutar mientras haya errores, sino hasta que tras haber compilado el programa, ya no aparecen errores en el código.


Lenguajes Ensambladores

El lenguaje ensamblador es un tipo de lenguaje de bajo nivel utilizado para escribir programas informáticos, y constituye la representación más directa del código máquina específico para cada arquitectura de computadoras legible por un programador.

Fue usado ampliamente en el pasado para el desarrollo de software, pero actualmente sólo se utiliza en contadas ocasiones, especialmente cuando se requiere la manipulación directa del hardware o se pretenden rendimientos inusuales de los equipos.

Un ensamblador crea código objeto traduciendo instrucciones mnemónicas a códigos operativos e interpretando los nombres simbólicos para direcciones de memoria y otras entidades. El uso de referencias simbólicas es una característica básica de los ensambladores, evitando tediosos cálculos y direccionamiento manual después de cada modificación del programa. La mayoría de los ensambladores también incluyen facilidades para crear macros, a fin de generar series de instrucciones cortas que se ejecutan en tiempo real, en lugar de utilizar subrutinas.

Los ensambladores son por lo general más fáciles de programar que los compiladores de lenguajes de alto nivel, y han estado disponibles desde la década de 1950. Los ensambladores modernos, especialmente para arquitecturas basadas en RISC, como por ejemplo MIPS, SPARC y PA-RISC optimizan las instrucciones para explotar al máximo la eficiencia de segmentación[2] del CPU.


Los ensambladores de alto nivel ofrecen posibilidades de abstracción que incluyen:
  • Control avanzado de estructuras.
  • Procedimientos de alto nivel, declaración de funciones.
  • Tipos de datos que incluyen estructuras, registros, uniones, clases y conjuntos.
  • Sofisticado procesamiento de macros.

Un programa escrito en lenguaje ensamblador consiste en una serie de instrucciones que corresponden al flujo de órdenes ejecutables que pueden ser cargadas en la memoria de una computadora. Por ejemplo, un procesador x86 puede ejecutar la siguiente instrucción binaria como se expresa en código de máquina:

  • Binario: 10110000 01100001 (Hexadecimal: 0xb061)
La representación equivalente en lenguaje ensamblador es más fácil de recordar:

  • MOV al, 061h
Esta instrucción significa: Mueva el valor hexadecimal 61 (97 decimal) al registro "al".


Lenguajes Interpretadores

Se conoce como lenguaje interpretado a un lenguaje de programación que fue diseñado para ser ejecutado por medio de un intérprete, en contraste con los lenguajes compilados. También se les conoce como lenguajes de script. Muchos autores rechazan la clasificación de lenguajes de programación entre interpretados y compilados, considerando que el modo de ejecución (por medio de intérprete o de compilador) del programa escrito en el lenguaje es independiente del propio lenguaje.

Se puede también 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 código objeto que se produce durante la compilación para utilizarlo en una ejecución futura, el programador sólo carga el programa fuente en la computadora junto con los datos que se van a procesar. A continuación, un programa intérprete, almacenado en el sistema operativo del disco, o incluido de manera permanente dentro de la máquina, convierte cada proposición del programa fuente en lenguaje de máquina conforme vaya siendo necesario durante el procesamiento de los datos. El código objeto no se graba para utilizarlo posteriormente.

La siguiente vez que se utilice una instrucción, se la deberá interpretar otra vez y traducir a lenguaje máquina. Por ejemplo, durante el procesamiento repetitivo de los pasos de un ciclo o bucle, cada instrucción del bucle tendrá que volver a ser interpretada en cada ejecución repetida del ciclo, lo cual hace que el programa sea más lento en tiempo de ejecución (porque se va revisando el código en tiempo de ejecución) pero más rápido en tiempo de diseño (porque no se tiene que estar compilando a cada momento el código completo). El intérprete elimina la necesidad de realizar una compilación después de cada modificación del programa cuando se quiere agregar funciones o corregir errores; pero es obvio que un programa objeto compilado con antelación deberá ejecutarse con mucha mayor rapidez que uno que se debe interpretar a cada paso durante una ejecución del código.

Un intérprete es un programa informático capaz de analizar y ejecutar otros programas, escritos en un lenguaje de alto nivel. Los intérpretes se diferencian de los compiladores en que mientras estos traducen un programa desde su descripción en un lenguaje de programación al código máquina del sistema destino, los primeros (los interpretes) sólo realizan la traducción a medida que sea necesario, típicamente, instrucción por instrucción, y normalmente no guardan el resultado de dicha traducción.

Los programas interpretados suelen ser más lentos que los compilados debido a la necesidad de traducir el programa mientras se ejecuta, pero a cambio son más flexibles como entornos de programación y depuración (lo que se traduce, por ejemplo, en una mayor facilidad para reemplazar partes enteras del programa o añadir módulos completamente nuevos), y permiten ofrecer al programa interpretado un entorno no dependiente de la máquina donde se ejecuta el intérprete, sino del propio intérprete (lo que se conoce comúnmente como máquina virtual).

Comparando su actuación con la de un ser humano, un compilador equivale a un traductor profesional que, a partir de un texto, prepara otro independiente traducido a otra lengua, mientras que un intérprete corresponde al intérprete humano, que traduce de viva voz las palabras que oye, sin dejar constancia por escrito.

En la actualidad, uno de los entornos más comunes de uso de los intérpretes informáticos es Internet, debido a la posibilidad que estos tienen de ejecutarse independientemente de la plataforma.



Según el Paradigma de Programación:


Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software. No es mejor uno que otro, sino que cada uno tiene ventajas y desventajas. Dependiendo de la situación un paradigma resulta más apropiado que otro.


Atendiendo al paradigma de programación, se pueden clasificar los lenguajes en:
  • El paradigma imperativo o por procedimientos (describe la programación en términos del estado del programa y sentencias que cambian dicho estado) es considerado el más común y está representado, por ejemplo, por el lenguaje C o por BASIC.
  • El paradigma funcional (paradigma de programación declarativa basado en la utilización de funciones matemáticas) está representado por la familia de lenguajes LISP (en particular Scheme), ML o Haskell.
  • El paradigma lógico (consiste en la aplicación del corpus de conocimiento sobre lógica para el diseño de lenguajes de programación), un ejemplo es PROLOG.
  • El paradigma orientado a objetos (usa objetos y sus interacciones para diseñar aplicaciones y programas de computadora). Un lenguaje completamente orientado a objetos es Smalltalk.

Si bien puede seleccionarse la forma pura de estos paradigmas a la hora de programar, en la práctica es habitual que se mezclen, dando lugar a la programación multiparadigma.

Actualmente el paradigma de programación más usado debido a múltiples ventajas respecto a sus anteriores, es la programación orientada a objetos.


Otros paradigmas que cabe mencionar son:
  • Programación Estructurada o Declarativa
  • Programación Dirigida por Eventos
  • Programación Modular
  • Programación Orientada a Aspectos
  • Programación con Restricciones
  • Programación por Capas
  • Programación a Nivel de Valores

sábado, 22 de noviembre de 2008

¿Qué es el SOFTWARE LIBRE?

Software libre (en inglés free software), también conocido comodo open source software (software de código abierto, también llamado de fuentes abiertas), es la denominación del software que brinda libertad a los usuarios sobre su producto adquirido y por tanto, una vez obtenido, puede ser usado, copiado, estudiado, modificado y redistribuido libremente.

Según la Free Software Foundation, el software libre se refiere a la libertad de los usuarios para ejecutar, copiar, distribuir, estudiar, cambiar y mejorar el software; de modo más preciso, se refiere a cuatro libertades de los usuarios del software: la libertad de usar el programa, con cualquier propósito; de estudiar el funcionamiento del programa, y adaptarlo a las necesidades; de distribuir copias, con lo que puede ayudar a otros; de mejorar el programa y hacer públicas las mejoras, de modo que toda la comunidad se beneficie (para la segunda y última libertad mencionadas, el acceso al código fuente es un requisito previo).

El software libre suele estar disponible gratuitamente, o al precio de coste de la distribución a través de otros medios; sin embargo no es obligatorio que sea así, por ende no hay que confundir software libre con "software gratuito" (denominado usualmente freeware), ya que, conservando su carácter de libre, puede ser distribuido comercialmente ("software comercial"). Análogamente, el "software gratuito" incluye en algunas ocasiones el código fuente; no obstante, este tipo de software no es libre en el mismo sentido que el software libre, a menos que se garanticen los derechos de modificación y redistribución de dichas versiones modificadas del programa.

Tampoco debe confundirse software libre con "software de dominio público". Éste último es aquél que no requiere de licencia, pues sus derechos de explotación son para toda la humanidad, porque pertenece a todos por igual. Cualquiera puede hacer uso de él, siempre con fines legales y consignando su autoría original. Este software sería aquél cuyo autor lo dona a la humanidad o cuyos derechos de autor han expirado, tras un plazo contado desde la muerte de éste, habitualmente 70 años. Si un autor condiciona su uso bajo una licencia, por muy débil que sea, ya no es dominio público.


Reseña Histórica:

Entre los años 60 y 70 del Siglo XX, el software no era considerado un producto sino un añadido que los vendedores de los grandes computadores de la época (los mainframes) aportaban a sus clientes para que éstos pudieran usarlos. En dicha cultura, era común que los programadores y desarrolladores de software compartieran libremente sus programas unos con otros. Este comportamiento era particularmente habitual en algunos de los mayores grupos de usuarios de la época, como DECUS (grupo de usuarios de computadoras DEC). A finales de los 70, las compañías iniciaron el hábito de imponer restricciones a los usuarios, con el uso de acuerdos de licencia.

Allá por el 1971, cuando la informática todavía no había sufrido su gran boom, las personas que hacían uso de ella, en ámbitos universitarios y empresariales, creaban y compartían el software sin ningún tipo de restricciones.

Con la llegada de los años 80 la situación empezó a cambiar. Las computadoras más modernas comenzaban a utilizar sistemas operativos privativos, forzando a los usuarios a aceptar condiciones restrictivas que impedían realizar modificaciones a dicho software.

En caso de que algún usuario o programador encontrase algún error en la aplicación, lo único que podía hacer era darlo a conocer a la empresa desarrolladora para que esta lo solucionara. Aunque el programador estuviese capacitado para solucionar el problema y lo desease hacer sin pedir nada a cambio, el contrato le impedía que mejorase el software.

El mismo Richard Stallman encontró varios inconvenientes para solucionar un problema con la impresora de res utilizada en su lugar de trabajo. Con este antecedente, en 1984, Richard Stallman comenzó a trabajar en el proyecto GNU, y un año más tarde fundó la Free Software Foundation (FSF). Stallman introdujo una definición para free software y el concepto de "copyleft", el cual desarrolló para dar a los usuarios libertad y para restringir las posibilidades de apropiación del software.

jueves, 30 de octubre de 2008

Tipos de Memoria

La memoria es un bloque fundamental del computador, cuya misión consiste en almacenar los datos y las instrucciones. Viene determinada por la capacidad de direccionamiento del CPU (Unidad Central de Procesamiento).


Según su clasificación las memorias pueden dividirse en:

- Convencional: Es aquella que puede separarse en 2 áreas: el área de memoria del sistema y el área de memoria del usuario.

- Extendida: Son aquellas que tienen la capacidad de direccionar una gran cantidad de memoria.

- Expandida: Es aquella que utiliza una serie de bancos de memoria de circuitos integrados.

- Volátil: Es aquella que pierde la información cuando se apaga el sistema.

- No Volátil: Son todas aquellas que permiten la manipulación de la información contenida en un sistema.


Memoria Principal: Es la unidad central del sistema que almacena la información en forma de programas y datos.


RAM: Memoria de Acceso Aleatorio (Random Access Memory). Se llama de acceso aleatorio porque el procesador accede a la información que está en la memoria en cualquier punto sin tener que acceder a la información anterior y posterior. Es la memoria que se actualiza constantemente mientras el ordenador está en uso y que pierde sus datos cuando el ordenador se apaga.

Tipos de Memoria RAM:

1) DRAM (Dynamic Random Access Memory: Es la memoria de acceso aleatorio dinámica. Está organizada en direcciones de memoria (Addresses) que son reemplazadas muchas veces por segundo. Es la memoria de trabajo, por lo que a mayor cantidad de memoria, más datos se pueden tener en ella y más aplicaciones pueden estar funcionando simultáneamente, y por supuesto a mayor cantidad mayor velocidad de proceso, pues los programas no necesitan buscar los datos continuamente en el disco duro, el cual es muchísimo más lento.

2) SRAM (Static Random Access Memory): Memoria estática de acceso aleatorio es la alternativa a la DRAM. No necesita tanta electricidad para su refresco y reemplazo de las direcciones y funciona más rápido porque no está reemplazando constantemente las instrucciones y los valores almacenados en ella. La desventaja es su altísimo coste comparado con la DRAM. Puede almacenar y recuperar los datos rápidamente y se conoce normalmente como memoria cahé.

3) VRAM (video RAM): Memoria de propósito especial usada por los adaptadores de vídeo. A diferencia de la convencional memoria RAM, la VRAM puede ser accedida por dos diferentes dispositivos de forma simultánea. Esto permite que un monitor pueda acceder a la VRAM para las actualizaciones de la pantalla al mismo tiempo que un procesador gráfico suministra nuevos datos. VRAM permite mejores rendimientos gráficos aunque es más cara que la una RAM normal.

4) SIMM ( Single In Line Memory Module): Un tipo de encapsulado consistente en una pequeña placa de circuito impreso que almacena chips de memoria, y que se inserta en un zócalo SIMM en la placa madre o en la placa de memoria. Los SIMMs son más fáciles de instalar que los antiguos chips de memoria individuales, y a diferencia de ellos son medidos en bytes en lugar de bits.

5) DIMM (Dual In Line Memory): Un tipo de encapsulado, consistente en una pequeña placa de circuito impreso que almacena chips de memoria, que se inserta en un zócalo DIMM en la placa madre y usa generalmente un conector de 168 contactos.

6) DIP (Dual In Line Package): Un tipo de encapsulado consistente en almacenar un chip de memoria en una caja rectangular con dos filas de pines de conexión en cada lado.

7) RAM Disk: Se refiere a la RAM que ha sido configurada para simular un disco duro. Se puede acceder a los ficheros de un RAM disk de la misma forma en la que se acceden a los de un disco duro. Sin embargo, los RAM disk son aproximadamente miles de veces más rápidos que los discos duros, y son particularmente útiles para aplicaciones que precisan de frecuentes accesos a disco. Los RAM disk pierden su contenido una vez que la computadora es apagada.


ROM: Estas letras son las siglas de Read Only Memory (memoria de solo lectura) y eso es exactamente lo que es, una memoria que se graba en el proceso de fabricación con una información que está ahí para siempre, para lo bueno y lo malo. No podemos escribir en ella pero podemos leer cada posición la veces que queramos. Se trata de la memoria interna de la máquina, que el procesador lee para averiguar el qué, el cuándo y el cómo de una multitud de tareas diferentes; por ejemplo: lee las diversas instrucciones binarias que se necesitan cada vez que se teclea un carácter por el teclado, o cada vez que se tiene que presentar algo en pantalla.

- PROM: Viene de Programable Read Only Memory (memoria programable de solo lectura ). Es un dispositivo de almacenamiento solo de lectura que se puede reprogramar después de su manufactura por medio de equipo externo. Los PROM son generalmente pastillas de circuitos integrados.

- EPROM: La memoria EPROM (la E viene de Erasable −borrable−) es una ROM que se puede borrar totalmente y luego reprogramarse, aunque en condiciones limitadas. Las EPROM son mucho más económicas que las PROM porque pueden reutilizarse.

- EEPROM: Aún mejores que las EPROM son las EEPROM (PROM eléctricamente borrables) también llamadas EAROM (ROM eléctricamente alterables), que pueden borrarse mediante impulsos eléctricos, sin necesidad de que las introduzcan en un receptáculo especial para exponerlos a luz ultravioleta.

VENENSAT-1, el Futuro Tecnológico de Venezuela

En cadena nacional de radio y televisión, los venezolanos siguieron de cerca el lanzamiento del satélite "Simón Bolívar", en cuya construcción el Estado invirtió en total 480 millones de dólares.

Alrededor de las 12:25 pm, hora venezolana, luego de un retraso de unos 17 minutos, se abrieron los brazos rotatorios que sujetaban el cohete a la torre de lanzamiento y comenzó el despegue de la nave que llevó al Venesat-1 a la órbita, desde la que alcanzará la altura prevista, a 78 grados oeste, a 35.786 kilómetros de la Tierra, en 5 a 10 días.

El lanzamiento, inicialmente previsto para el primero de noviembre, fue adelantado gracias las favorables condiciones meteorológicas y también para contar con un par de días más en caso de que cambiaran repentinamente.

A través de las pantallas se siguieron los casi 25 minutos que precedieron al lanzamiento, que tuvo lugar en la localidad de Xichang, en China. El país asiático accedió a llevar a cabo la construcción del satélite Simón Bolívar -cuyo nombre técnico es Venesat 1- y transferir los conocimientos técnicos necesarios a 90 ingenieros y especialistas venezolanos como parte de un convenio binacional.

También pudo apreciarse al presidente Hugo Chávez observando la transmisión, acompañado por el presidente de Bolivia, Evo Morales, en lo que será una de las bases terrestres que operará el satélite, ubicada en el estado Bolívar.

Al finalizar la cuenta regresiva, se pudo ver reflejada en todas las caras la alegría gnerada por el exitoso lanzamiento, que expandirá la capacidad de telecomunicaciones de Venezuela, dándole acceso a 24 canales de televisión, 24 frecuencias radiales y espacio para las operaciones de comunicaciones del gobierno.


Una vez concretado el lanzamiento, se transmitieron imágenes generadas por computador a partir de datos enviados por el propio satélite en tiempo real, que mostraron cómo se fueron despegando los tres motores del cohete (de nombre 'Larga marcha 3') que impulsaron el aparato hasta su órbita final. Despegada la segunda parte del tercer motor y con todos los indicadores mostrando normalidad en los parámetros, se dio por finalizado el lanzamiento.

En ese momento se produjo la extensión de los paneles solares del satélite, a través de los cuales recibirá la energía necesaria para su funcionamiento. Inmediatamente, la ministra venezolana de Ciencia y Tecnología, Nuris Orihuela, quien presenció el despegue desde la base en Xichang, recibió de los científicos chinos el manual con los parámetros para el manejo del satélite.


Desde que se concibió el proyecto, en el año 2003, las autoridades venezolanas han asegurado que el uso del
satélite Simón Bolívar será estrictamente social, y que para tal uso lo pondrán a la orden de los países latinoamericanos y caribeños.

Desde Caracas, la ministra del Poder Popular para las Telecomunicaciones y la Informática, Socorro Hernández, informó que durante el primer trimestre del año próximo se pondrán en marcha los servicios de telecomunicaciones que generará el Satélite Simón Bolívar (Venesat-1)
.

Asimismo, destacó: “Tenemos todo el levantamiento de las necesidades de comunicación e información que requieren de los diferentes entes públicos, así como también algunas necesidades de la cooperación nacional, para ir dando respuesta, ya que ahora contamos con un nuevo satélite”.