3. BIOS
La BIOS (sigla en inglés de basic input/output system),fue inventado por Gary Kildall el
creador del sistema operativo CP/M en 1975, siendo el nombre de un archivo del sistema.
Las máquinas con CP/M usualmente tenían una ROM muy simple que hacía que la
unidad de diskette leyera datos desde su primera posición de memoria donde se
encontraba la primera instrucción del archivo BIOS que se encargaba de configurar el
sistema o programa.
Funcionamiento
Después de un reset o del encendido, el procesador ejecuta la instrucción que encuentra
en el llamado vector de reset (16 bytes antes de la instrucción máxima direccionable en el
caso de los procesadores x86), allí se encuentra la primera línea de código del BIOS: es
una instrucción de salto incondicional, que remite a una dirección más baja en la BIOS. En
los PC más antiguos el procesador continuaba leyendo directamente en la memoria ROM
las instrucciones (dado que esa memoria era de la misma velocidad de la RAM),
ejecutando las rutinas POST para verificar el funcionamiento del sistema y
posteriormente cargando un sistema operativo (de 16 bits) en la RAM, que
compartiría funcionalidades de la BIOS.
De acuerdo a cada fabricante del BIOS, realizará procedimientos diferentes,
pero en general se carga una copia del firmware hacia la memoria RAM, dado que esta
última es más rápida. Desde allí se realiza la detección y la configuración de los diversos
dispositivos que pueden contener un sistema operativo. Mientras se realiza el proceso de
búsqueda de un SO, el programa del BIOS ofrece la opción de acceder a la RAM-CMOS
Marcos Chan Balam
4. BIOS
del sistema donde el usuario puede configurar varias características del sistema por
ejemplo el reloj de tiempo real. La información contenida en la RAM-CMOS es utilizada
durante la ejecución del BIOS para configurar dispositivos como ventiladores, buses y
controladores.
Características
La Bios no está preparada para ser manejada de forma manual por completo, la mayoría
de sus settings son automáticos. Entre estos podemos incluir el manejo de latencias, que
sólo nos permite modificar el Cas Latency, el resto es inmodificable. En el caso del CPU y
Memorias, podemos modificar sus voltajes, su multiplicador y el LDT (desde 200mhz
hasta 1Ghz).
Como la placa maneja también un motor integrado de gráficos, éste nos deja compartir
memoria desde 16MB hasta 128MB (16MB, 32MB, 64MB y 128MB).
El menú de memoria nos permite cambiar el timingmode entre Auto o manual. Al
seleccionar Manual, tenemos acceso a la velocidad de memoria y el Tcl. Lo que si es raro
encontrar, es que podemos setear nuestras memorias a una velocidad superior a la de
nuestro procesador, ya que ésta nos permite llegar hasta 250 Mhz.
TimingMode Auto o Manual
MemClockindexcalue 100Mhz, 133Mhz, 166Mhz, 200Mhz, 216Mhz,
(Mhz) 233Mhz, 250Mhz
Cas Latency 2, 2.5, 3
Marcos Chan Balam
5. BIOS
Si la bios nos permite poder exigir un poco tanto a memorias como al procesador,
¿Por HammerFid Control Start up - desde 4x hasta el máximo permitido por tu procesador
qué
no Hammer Vid control Start up, desde 0.825v hasta 1.55v
intent CPU Clock 200Mhz - 250Mhz
arlo DIMM Voltaje Adjust 2.55 - 2.7v
más
adelante?
Sin embargo, tenemos poco voltaje tanto en memorias como procesador. En resumen no
es una placa overclockera y está diseñada para un uso cotidiano sin mayor esfuerzo por
parte del usuario. Pero bueno nada se pierde con intentar, y lo mostraremos al final del
review. Ahora pasaremos a las pruebas por defecto en el sistema y la respuesta a altas
exigencias.
Actualización
Para una referencia de tarjeta madre el fabricante puede publicar varias revisiones del
BIOS, en las cuales se solucionan problemas detectados en los primeros lotes, se
codifican mejores controladores o se da soporte a nuevos procesadores. La actualización
de este firmware puede ser realizado con algún programa para quemar una nueva versión
directamente desde el sistema operativo, los programas son propietarios de cada
compañía desarrolladora del firmware y por lo general pueden conseguirse en internet
junto al BIOS propiamente dicho. La actualización del BIOS es percibida como riesgosa
dado que una falla en el procedimiento conduce a que la tarjeta madre no arranque.
Debido a ello algunos fabricantes usan sistemas como el bootblock que es una porción de
BIOS que está protegida y que no es actualizable como el resto del firmware.
Marcos Chan Balam
6. Sistema Operativo
SISTEMA OPERATIVO
Un sistema Operativo (SO) es en sí mismo un programa de computadora.
Sin embargo, es un programa muy especial, quizá el más complejo e
importante en una computadora. El SO despierta a la computadora y hace
que reconozca a la CPU, la memoria, el tecla do, el sistema de vídeo y las
unidades de disco.
Además, proporciona la facilidad para que los usuarios se comuniquen con
la computadora y sirve de plataforma a partir de la cual se corran programas
de aplicación.
Los sistemas operativos más conocidos son los siguientes:
DOS: El famoso DOS, que quiere decir Disk OperatingSystem
(sistema operativo de disco), es más conocido por los nombres de
PC-DOS y MS-DOS. MS-DOS fue hecho por la compañía de
software Microsoft y es en esencia el mismo SO que el PC-DOS.
La razón de su continua popularidad se debe al aplastante volumen
de software disponible y a la base instalada de computadoras con
procesador Intel.
Cuando Intel liberó el 80286, DOS se hizo tan popular y firme en el mercado que
DOS y las aplicaciones DOS representaron la mayoría del mercado de software
para PC. En aquel tiempo, la compatibilidad IBM, fue una necesidad para que los
productos tuvieran éxito, y la "compatibilidad IBM" significaba computadoras que
corrieran DOS tan bien como las computadoras IBM lo hacían.
Aún con los nuevos sistemas operativos que han salido al mercado, todavía el
DOS es un sólido contendiente en la guerra de los SO.
Windows 3.1: Microsoft tomo una decisión, hacer un sistema operativo que
tuviera una interfaz gráfica amigable para el usuario, y como resultado obtuvo
Windows. Este sistema muestra íconos en la pantalla que representan diferentes
archivos o programas, a los cuales se puede accesar al darles doble click con el
puntero del mouse. Todas las aplicaciones elaboradas para Windows se parecen,
por lo que es muy fácil aprender a usar nuevo software una vez aprendido las
bases.
Windows 95: En 1995, Microsoft introdujo una nueva y mejorada versión del
Windows 3.1. Las mejoras de este SO incluyen soporte multitareas y arquitectura
de 32 bits, permitiendo así correr mejores aplicaciónes para mejorar la eficacia del
trabajo.
Windows NT: Esta versión de Windows se especializa en las redes y servidores.
Con este SO se puede interactuar de forma eficaz entre dos o más computadoras.
OS/2: Este SO fue hecho por IBM. Tiene soporte de 32 bits y su interfaz es muy
buena. El problema que presenta este sistema operativo es que no se le ha dad el
apoyo que se merece en cuanto a aplicaciones se refiere. Es decir, no se han
creado muchas aplicaciones que aprovechen las características de el SO, ya que
la mayoría del mercado de software ha sido monopolizado por Windows.
Mac OS: Las computadoras Macintosh no serían tan populares como lo son si no
tuvieran el Mac OS como sistema operativo de planta. Este sistema operativo es
Marcos Chan Balam
7. Sistema Operativo
tan amigable para el usuario que cualquier persona puede aprender a usarlo en
muy poco tiempo. Por otro lado, es muy bueno para organizar archivos y usarlos
de manera eficaz. Este fue creado por Apple Computer, Inc.
UNIX: El sistema operativo UNIX fue creado por los laboratorios Bell de AT&T en
1969 y es ahora usado como una de las bases para la supercarretera de la
información. Unix es un SO multiusuario y multitarea, que corre en diferentes
computadoras, desde supercomputadoras, Mainframes, Minicomputadoras,
computadoras personales y estaciones de trabajo. Esto quiere decir que muchos
usuarios puede estar usando una misma computadora por medio de terminales o
usar muchas de ellas.
Definición
Un sistema operativo (SO) es un programa o conjunto de programas que en un sistema
informático gestiona los recursos de hardware y provee servicios a los programas de
aplicación, ejecutándose en modo privilegiado respecto de los restantes.
Función
Uno de los propósitos del sistema operativo que gestiona el núcleo intermediario consiste
en gestionar los recursos de localización y protección de acceso del hardware, hecho que
alivia a los programadores de aplicaciones de tener que tratar con estos detalles. La
mayoría de aparatos electrónicos que utilizan microprocesadores para funcionar, llevan
incorporado un sistema operativo (teléfonos móviles, reproductores de DVD,
computadoras, radios, enrutadores, etc.). En cuyo caso, son manejados mediante una
Interfaz Gráfica de Usuario, un gestor de ventanas o un entorno de escritorio, si es un
celular, mediante una consola o control remoto si es un DVD y, mediante una línea de
comandos o navegador web si es un enrutador.
Características
El sistema operativo tiene las siguientes características:
1. Conveniencia. Un Sistema Operativo hace más conveniente el uso de una
computadora.
Marcos Chan Balam
8. Sistema Operativo
2. Eficiencia. Un Sistema Operativo permite que los recursos de la computadora se
usen de la manera más eficiente posible.
3. Habilidad para evolucionar. Un Sistema Operativo deberá construirse de manera
que permita el desarrollo, prueba o introducción efectiva de nuevas funciones del
sistema sin interferir con el servicio.
4. Encargado de administrar el hardware. El Sistema Operativo se encarga de
manejar de una mejor manera los recursos de la computadora en cuanto a
hardware se refiere, esto es, asignar a cada proceso una parte del procesador
para poder compartir los recursos.
5. Relacionar dispositivos (gestionar a través del kernel). El Sistema Operativo se
debe encargar de comunicar a los dispositivos periféricos, cuando el usuario así lo
requiera.
6. Organizar datos para acceso rápido y seguro.
7. Manejar las comunicaciones en red. El Sistema Operativo permite al usuario
manejar con alta facilidad todo lo referente a la instalación y uso de las redes de
computadoras.
8. Procesamiento por bytes de flujo a través del bus de datos.
9. Facilitar las entradas y salidas. Un Sistema Operativo debe hacerle fácil al usuario
el acceso y manejo de los dispositivos de Entrada/Salida de la computadora.
10. Técnicas de recuperación de errores.
11. Evita que otros usuarios interfieran. El Sistema Operativo evita que los usuarios se
bloqueen entre ellos, informándoles si esa aplicación está siendo ocupada por otro
usuario.
12. Generación de estadísticas.
13. Permite que se puedan compartir el hardware y los datos entre los usuarios.
Respaldo y Actualización
Respaldo
Los backup o también conocidos como copia de seguridad, es un proceso en el cual el
usuario guarda la información de tal manera que lo almacenara en algún dispositivo de
almacenamiento y que sea tecnológicamente disponible, como por ejemplo: CD-ROM,
Blue Ray, discos virtuales o tan solo en el disco duro, esto se hace por si ocurre alguna
perdida de información, se pueda recuperar fácilmente.
Los backups usualmente son usados por algún desastre que ocurra en nuestro sistema
Marcos Chan Balam
9. Sistema Operativo
operativo, ya sea por un virus o por un borrado de los archivos de nuestro sistema, otra de
las razones para utilizar backup es que sirven para restaurar los ficheros que se hayan
borrado o se hayan dañado accidentalmente y también en las empresas o negocios los
backup cumplen un rol muy importante ya que además que es muy útil es obligatorio, ya
que algunas agencias de impuestos requieren esta información como un control del tipo
presupuestario, estas las suelen hacer en cintas magnéticas, pero para información
común tal solo se debe utilizar disquetes, CD-ROM, discos zip, USB o algún centro de
respaldo por Internet.
El concepto de almacenar los datos tiene que llevar una estrategia de cómo va a ser
organizada, ya que debe ser ordenada deacuerdo a algún criterio, para lograr esto se
puede utilizar desde una hoja de papel registrándolo como un inventario, donde se
pueden anotar la fecha de grabación, hasta una sofisticada base de datos relacional.
Pero también se pueden hacer uso de software que están dedicados a hacer backups, se
pueden encontrar programas dedicados a este fin pero de uso domestico ya que los
software de nivel para un nivel mas avanzado son un poco complicados de configurar,
empecemos por Acronis True Image, este programa sirve para crear una copia exacta del
disco duro, o también solo una parte, y permite restaurar instantáneamente la maquina
con el sistema operativo, tus aplicaciones y tus datos. Además también puedes guardar tu
música, videos, fotos, email, contactos y tareas programadas. Lo puedes descargar desde
este enlace www.acronis.com.
Otro programa que es muy bueno es el Norton Ghost 12, este programa es toda una suite
que tiene muchas herramientas entre las cuales podemos encontrar, copia de respaldo
incrementables, compresión y cifrados avanzados, tiene buen tratamiento con de los
puntos de restauración. Para descargarlo tienes que ir a este enlace
(http://www.symantec.com/es/mx/norton/
products/overview.jsp?pcid=br&pvid=ghost12 ).
Otro programa muy importante para hacer backups es el RoxioBackonTrack, este destaca
por su sencillez pero Acosta de quitar algunas funciones, se pueden añadir los archivos y
de la misma manera organizándolo en alguna categoría como por ejemplo por temas, ya
sea música, fotos, videos, etc. Para hacer el proceso de recuperación lo hace de una
forma muy simple, basta con ir al icono de restaurar archivos e indicar la ruta donde el
backup se encuentra guardado, lo puedes descargar desde aquí, www.roxio.com
Ahora las pérdidas de información son cosas del pasado ya que con estos programas
muy útiles es muy fácil poder hacer un backup.
Actualización
Marcos Chan Balam
10. Sistema Operativo
Puede decirse que el Sistema Operativo es un programa que permite que otros
programas puedan ejecutarse, ofreciéndoles todo lo que ellos necesitan para funcionar
correctamente. Es claro entonces que es el programa más importante de todos, por lo que
resulta primordial mantenerlo siempre actualizado para tener la certeza de contar siempre
con la mejor versión disponible. Todos los demás programas de tu equipo lo van a
agradecer.
Los fabricantes de Sistemas Operativos, como Microsoft con Windows, mantienen una
permanente estrategia de mejora de sus productos, y si llegan a descubrir alguna falla, de
inmediato la corrigen.
Estas mejoras están disponibles sin costo en los sitios Web de los fabricantes para que
los usuarios las descarguen fácilmente.
Pasos para actualizarlo.
Las actualizaciones de seguridad ayudan a proteger el
equipo frente a virus, gusanos y otras amenazas a
medida que se descubren. Los sistemas operativos de
Windows® cuentan con la característica de
actualizaciones automáticas, que se puede utilizar para
descargar las actualizaciones de seguridad más
recientes de forma automática. En este paso se indicará
cómo activar Actualizaciones automáticas. También se indicará cómo actualizar el equipo
con actualizaciones de software anteriores.
Activa la característica Actualizaciones automáticas
Importante: La característica Actualizaciones automáticas que se va a activar sólo
descargará actualizaciones futuras de Microsoft. Windows Update seguirá siendo
necesario para actualizarse una vez activada Actualizaciones automáticas. (Al final de
este paso se indicará la forma de hacerlo.)
1 Haz clic en Inicio y, después en Panel de control.
2 Haz clic en Rendimiento y mantenimiento.
3 Haz clic en Sistema.
4 Haz clic en Actualizaciones automáticas y, a continuación, selecciona Mantener mi
equipo al día.
5 Selecciona una opción. Microsoft recomienda encarecidamente seleccionar la
opción Descargar automáticamente las actualizaciones e instalarlas en la
programación especificada y establecer una hora de actualización diaria.
Elige Descargar automáticamente las actualizaciones e instalarlas en la programación
especificada.
Importante: Puedes programar la descarga de Actualizaciones automáticas a cualquier
hora del día. Recuerda que el equipo debe estar activado a la hora programada. (Se
Marcos Chan Balam
11. Sistema Operativo
recomienda seleccionar una hora a la que no estés utilizando el equipo para otras
tareas.)
6 Si eliges que se te notifiquen las Actualizaciones automáticas en el paso 5, aparecerá
un globo de notificación cada vez que haya disponibles nuevas descargas para instalar.
Haz click en el globo de notificación para revisar e instalar las actualizaciones.
A continuación, actualízate con Windows Update
Ahora que se ha activado la característica Actualizaciones automáticas se recibirán todas
las actualizaciones críticas de forma automática. Sin embargo, Actualizaciones
automáticas no descarga las actualizaciones anteriores o aquellas que no sean críticas.
Puedes utilizar estas instrucciones a fin de poner el equipo al día con actualizaciones de
seguridad anteriores y obtener actualizaciones futuras que no sean críticas.
1 Marca esta página.
2 Ve a Windows UpDate (http://windowsupdate.microsoft.com).
3 Sigue las instrucciones que aparecen en el sitio de Windows UpDate para revisar y
seleccionar descargas.
4 Cuando hayas terminado, vuelve a esta página y ve al paso 3.
Sugerencia: Algunas descargas requerirán que reinicies el equipo después de la
instalación. Asegúrate de volver a Windows UpDate después de reiniciar y comprobar si
existen actualizaciones adicionales. Puede que tengas que repetir esta acción en varias
ocasiones para asegurarte de que dispones de todas las descargas más recientes.
Importante: Si utilizas productos de
Microsoft Office (incluidos Microsoft
Word, Microsoft Excel y Microsoft
PowerPoint), visita el sitio de Office
Update a fin de instalar las versiones
Marcos Chan Balam
13. Lenguaje de Programación
LENGUAJE DE PROGRAMACIÓN
Tipos de Lenguaje de Programación
1. LENGUAJES DE MÁQUINA
El lenguaje máquina de una computadora consta de cadenas de números binarios (ceros
y unos) y es el único que "entienden" directamente los procesadores. Todas las
instrucciones preparadas en cualquier lenguaje de máquina tienen por lo menos dos
partes. La primera es el comando u operación, que dice a la computadora cuál es la
función que va a realizar. Todas las computadoras tienen un código de operación para
cada una de sus funciones. La segunda parte de la instrucción es el operando, que indica
a la computadora dónde hallar o almacenar los datos y otras instrucciones que se van a
manipular; el número de operandos de una instrucción varía en las distintas
computadoras. En una computadora de operando único, el equivalente binario de
"SUMAR 0814" podría hacer que se sume el valor que se encuentra en la localidad de
almacenamiento o dirección 0814 al valor que se encuentra en la unidad aritmética lógica.
En una máquina de dos operandos, la representación binaria de "SUMAR 0814 8672"
podría hacer que se sume el valor que está en la localidad 8672 al valor que está en la
dirección 0814. El formato de operando único es popular en las microcomputadoras más
pequeñas; la estructura de dos operandos se encuentra en casi todas las demás
máquinas.
Según los estándares actuales, las primeras computadoras eran poco tolerantes. Los
programadores tenían que traducir las instrucciones de manera directa a la forma de
lenguaje de máquina que comprendían las computadoras. Por ejemplo, un programador
que escribiera la instrucción "SUMAR 0814" para una de las primeras máquinas IBM
hubiera escrito:
000100000000000000000000000010111000
Además de recordar las docenas de códigos
numéricos para los comandos del conjunto de
instrucciones de la máquina, el programador
tenía que conocer las posiciones donde se
almacenan los datos y las instrucciones. La
codificación inicial muchas veces requería
meses, por lo que era costosa y era frecuente
que originara errores. Revisar las instrucciones
para localizar errores era casi tan tedioso como
escribirlas por primera vez. Además, si era necesario modificar un programa
posteriormente, la tarea podía llevarse meses.
2. LENGUAJES ENSAMBLADORES
A principios de la década de 1950, y con el fin de facilitar la labor de los programadores,
se desarrollaron códigos nemotécnicos para las operaciones y direcciones simbólicas. La
palabra nemotécnico se refiere a una ayuda para la memorización. Uno de los primeros
Marcos Chan Balam
14. Lenguaje de Programación
pasos para mejorar el proceso de preparación de programas fue sustituir los códigos de
operaciones numéricos del lenguaje de máquina por símbolos alfabéticos, que son los
códigos nemotécnicos. Todas las computadoras actuales tienen códigos nemotécnicos
aunque, naturalmente, los símbolos que se usan varían en las diferentes marcas y
modelos. La computadora sigue utilizando el lenguaje de máquina para procesar los
datos, pero los programas ensambladores traducen antes los símbolos de código de
operación especificados a sus equivalentes en lenguaje de máquina.
Este procedimiento preparó avances posteriores. Si la computadora era capaz de traducir
símbolos convenientes en operaciones básicas, ¿por qué no hacer también que realizara
otras funciones rutinarias de codificación, como la asignación de direcciones de
almacenamiento a los datos? La técnica de direccionamiento simbólico permite expresar
una dirección no en términos de su localización numérica absoluta, sino en términos de
símbolos convenientes para el programador.
Durante las primeras etapas del direccionamiento simbólico, el programador asigna un
nombre simbólico y una dirección real a un dato. Por ejemplo, el programador podría
asignar el valor total de mercancía adquirida durante un mes por un cliente de una tienda
de departamentos a la dirección 0063, y darle el nombre simbólico
TOTAL. Se podría asignar el valor de la mercancía devuelta sin
usar durante el mes a la dirección 2047 y dársele el nombre
simbólico CRÉDITO. Así, durante el resto del programa, el
programador se referirá a los nombres simbólicos, más que a las
direcciones, cuando fuera preciso procesar estos datos. Por
ejemplo, se podría escribir la instrucción "S CRÉDITO TOTAL"
para restar el valor de las mercancías devueltas del importa total
de compras para obtener el importe de la factura mensual del
cliente. A continuación, el programa ensamblador traduciría la
instrucción simbólica a esta cadena de bits:
Más adelante se hizo otra mejora. Se dejó a la computadora la tarea de asignar y recordar
las direcciones de las instrucciones. Lo único que tenía que hacer el programador era
indicar a la computadora la dirección de la primera instrucción, y el programa
ensamblador se encargaba de almacenar, de manera automática, todas las demás en
forma secuencial a partir de ese punto. Así, si se agregaba más tarde otra instrucción al
programa, no era necesario modificar las direcciones de todas las instrucciones que
seguían al punto de inserción (como tendría que hacerse en el caso de programas
escritos en lenguaje de máquina). En vez de ello, el procesador ajustaba
automáticamente las localidades de memoria la próxima vez que se ejecutaba el
programa.
En la actualidad, los programadores no asignan números de dirección reales a los datos
simbólicos, simplemente especifican dónde quieren que se coloque la primera localidad
del programa, y el programa ensamblador se encarga de lo demás: asigna localidades
tanto para las instrucciones como para los datos.
Marcos Chan Balam
15. Lenguaje de Programación
Estos programas de ensamble, o ensamblador, también permite a la computadora
convertir las instrucciones en lenguaje ensamblador del programador en su propio código
de máquina. Un programa de instrucciones escrito en lenguaje ensamblador por un
programador se llama programa fuente. Después de que el ensamblador convierte el
programa fuente en código de máquina a éste se le denomina programa objeto. Para los
programadores es más fácil escribir instrucciones en un lenguaje ensamblador que en
códigos de lenguajes de máquina, pero es posible que se requieran dos corridas de
computadora antes de que se puedan utilizar las instrucciones del programa fuente para
producir las salidas deseadas.
Los lenguajes ensambladores tienen ventajas sobre los lenguajes de máquina. Ahorran
tiempo y requieren menos atención a detalles. Se incurren en menos errores y los que se
cometen son más fáciles de localizar. Además, los programas en lenguaje ensamblador
son más fáciles de modificar que los programas en lenguaje de máquina. Pero existen
limitaciones. La codificación en lenguaje ensamblador es todavía un proceso lento. Una
desventaja importante de estos lenguajes es que tienen una orientación a la máquina. Es
decir, están diseñados para la marca y modelo específico de procesador que se utiliza, y
es probable que, para una máquina diferente, se tengan que volver a codificar los
programas.
3. LENGUAJES DE ALTO NIVEL
Los primeros programas ensambladores producían sólo una instrucción en lenguaje de
máquina por cada instrucción del programa fuente. Para agilizar la codificación, se
desarrollaron programas ensambladores que podían producir una cantidad variable de
instrucciones en lenguaje de máquina por cada instrucción del programa fuente. Dicho de
otra manera, una solamacroinstrucción podía producir varias líneas de código en lenguaje
de máquina. Por ejemplo, el programador podría escribir "LEER ARCHIVO", y el programa
traductor produciría una serie detallada de
instrucciones al lenguaje de máquina previamente
preparadas, con lo que se copiaría un registro del
archivo que estuviera leyendo el dispositivo de
entrada a la memoria principal. Así, el
programador no se tenía que ocupar de escribir
una instrucción por cada operación de máquina
realizada.
El desarrollo de las técnicas nemotécnicas y las
macroinstrucciones condujo, a su vez, al desarrollo
de lenguajes de alto nivel que a menudo están
orientados hacia una clase determinada de problemas de proceso. Por ejemplo, se han
diseñado varios lenguajes para procesar problemas científico-matemático, asimismo han
aparecido otros lenguajes que hacen hincapié en las aplicaciones de proceso de archivos.
A diferencia de los programas de ensamble, los programas en lenguaje de alto nivel se
pueden utilizar con diferentes marcas de computadores sin tener que hacer
modificaciones considerables. Esto permite reducir sustancialmente el costo de la
reprogramación cuando se adquiere equipo nuevo. Otras ventajas de los lenguajes de alto
nivel son:
Marcos Chan Balam
16. Lenguaje de Programación
Son más fáciles de aprender que los lenguajes ensambladores.
Se pueden escribir más rápidamente.
Permiten tener mejor documentación.
Son más fáciles de mantener.
Un programador que sepa escribir programas en uno de estos lenguajes no está
limitado a utilizar un solo tipo de máquina.
4. LENGUAJES COMPILADOS
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 corrida de compilación antes de
procesar los datos de un problema.
Los compiladores son aquellos cuya función es traducir un programa escrito en un
determinado lenguaje a un idioma que la computadora entienda (lenguaje máquina con
código 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 código.
5. LENGUAJES INTERPRETADOS
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 corrida de compilación para
utilizarlo en una corrida de producció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 proceso de los datos. No
se graba el código objeto para utilizarlo posteriormente.
La siguiente vez que se utilice una instrucción, se le debe interpretar otra vez y traducir a
lenguaje máquina. Por ejemplo, durante el procesamiento repetitivo de los pasos de un
ciclo, cada instrucción del ciclo tendrá que volver a ser interpretado cada vez que se
ejecute el 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
Marcos Chan Balam
17. Lenguaje de Programación
intérprete elimina la necesidad de realizar una corrida de 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 corrida de
producción.
6. LENGUAJES DE PROGRAMACIÓN DECLARATIVOS
Se les conoce como lenguajes declarativos en ciencias computacionales a aquellos
lenguajes de programación en los cuales se le indica a la computadora qué es lo que se
desea obtener o qué es lo que se esta buscando, por ejemplo: Obtener los nombres de
todos los empleados que tengan más de 32 años. Eso se puede lograr con un lenguaje
declarativo como SQL.
La programación declarativa es una forma de programación que implica la descripción de
un problema dado en lugar de proveer una solución para dicho problema, dejando la
interpretación de los pasos específicos para llegar a dicha solución a un intérprete no
especificado. La programación declarativa adopta, por lo tanto, un enfoque diferente al de
la programación imperativa tradicional.
En otras palabras, la programación declarativa provee el "qué", pero deja el "cómo"
liberado a la implementación particular del
intérprete. Por lo tanto se puede ver que la
programación declarativa tiene dos fases bien
diferenciadas, la declaración y la interpretación.
Es importante señalar que a pesar de hacer
referencia a intérprete, no hay que limitarse a
"lenguajes interpretados" en el sentido habitual del
término, sino que también se puede estar
trabajando con "lenguajes compilados".
Definición
Un lenguaje de programación es un idioma artificial diseñado para expresar procesos que
pueden ser llevadas a cabo por máquinas como las computadoras. Pueden usarse para
crear programas que controlen el comportamiento físico y lógico de una máquina, para
expresar algoritmos con precisión, o como modo de comunicación humana.1 Está formado
por un conjunto de símbolos y reglas sintácticas y semánticas que definen su estructura y
el significado de sus elementos y expresiones. Al proceso por el cual se escribe, se
prueba, se depura, se compila y se mantiene el código fuente de un programa informático
se le llama programación.
También la palabra programación se define como el proceso de creación de un programa
de computadora, mediante la aplicación de procedimientos lógicos, a través de los
siguientes pasos:
El desarrollo lógico del programa para resolver un problema en particular.
Marcos Chan Balam
18. Lenguaje de Programación
Escritura de la lógica del programa empleando un lenguaje de programación
específico (codificación del programa).
Ensamblaje o compilación del programa hasta convertirlo en lenguaje de máquina.
Prueba y depuración del programa.
Desarrollo de la documentación.
Existe un error común que trata por sinónimos los términos 'lenguaje de programación' y
'lenguaje informático'. Los lenguajes informáticos engloban a los lenguajes de
programación y a otros más, como por ejemplo HTML (lenguaje para el marcado de
páginas web que no es propiamente un lenguaje de programación, sino un conjunto de
instrucciones que permiten diseñar el contenido de los documentos).
Función
Permite especificar de manera precisa sobre qué datos debe operar una computadora,
cómo 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. Una característica relevante de los
lenguajes de programación es precisamente que más de un programador pueda usar un
conjunto común de instrucciones que sean comprendidas entre ellos para realizar la
construcción de un programa de forma colaborativa.
Las funciones se crearon para evitar tener que repetir constantemente fragmentos de
código. Una función podría considerarse como una variable que encierra código dentro de
si. Por lo tanto cuando accedemos a dicha variable (la función) en realidad lo que estamos
es diciendo al programa que ejecute un determinado código predefinido anteriormente.
Todos los lenguajes de programación tienen algunos elementos de formación primitivos
para la descripción de los datos y de los procesos o transformaciones aplicadas a estos
datos (tal como la suma de dos números o la selección de un elemento que forma parte
de una colección). Estos elementos primitivos son definidos por reglas sintácticas y
semánticas que describen su estructura y significado respectivamente.
Características
• Facilitan la tarea de programación, ya que disponen de formas adecuadas que permiten
ser leídas y escritas por personas.
• Los lenguajes de programación representan en forma simbólica y en manera de un texto
los códigos que podrán ser leídos por una persona.
• Son independientes de las computadoras a utilizar.
• Describe el conjunto de acciones consecutivas que un equipo debe ejecutar.
Marcos Chan Balam
19. Lenguaje de Programación
• permite mayor portabilidad
Podemos distinguir un lenguajes de programación dependiendo del tipo al que
pertenezca. Existen varios tipos de lenguaje de programación:
1. Imperativos
2. Funcionales
3. Lógicos
4. Orientado a objetos
Los lenguajes imperativos se caracterizan por el hecho de que el significado de un
programa no es más que un conjunto de instrucciones o órdenes que le indican al
computador cómo debe realizar una tarea. Un ejemplo de este tipo de ódenes pueden ser:
“dame esto”, “suma esto”, etc.
Los lenguajes funcionales estan constituidos únicamente por definiciones de funciones
matemáticas. No utiliza las asignaciones (más adelante lo veremos) ni son construcciones
estructuradas.
Los lenguajes lógicos se caracterizan por el uso de la lógica de predicados.
Por último, los lenguajes orientados a objetos, se caracteriza por el uso de objetos y sus
iteracciones para diseñar aplicaciones y programas.
En este curso trataremos con un lenguaje imperativo. A continuación vamos a conocer
sus elementos.
Elementos de los lenguajes imperativos:
– Los datos: elemento de información que puede obtener un valor dentro de un conjunto
de valores.
Para llevar a cabo el almacenamiento de datos dentro de la memória, se utilizan una série
de elementos o entidades: las constantes y las variables. A continuación se define cada
una de ellas:
- Constantes: almacenan un dato que permanecerá intacto o constante en la memoria
durante la duración de la ejecución de un programa.
- Variables: almacenan un dato el valor del cual puede variar en la memoria durante el
tiempo de ejecucuión del programa.
Marcos Chan Balam
21. Sintaxis
SINTAXIS
Con frecuencia se resaltan los elementos
de la sintaxis con colores diferentes para
facilitar su lectura. Este ejemplo está escrito
en Python.
A la forma visible de un lenguaje de
programación se le conoce como sintaxis.
La mayoría de los lenguajes de
programación son puramente textuales, es
decir, utilizan secuencias de texto que
incluyen palabras, números y puntuación,
de manera similar a los lenguajes naturales
escritos. Por otra parte, hay algunos
lenguajes de programación que son más gráficos en su naturaleza, utilizando relaciones
visuales entre símbolos para especificar un programa.
La sintaxis de un lenguaje de programación describe las combinaciones posibles de los
símbolos que forman un programa sintácticamente correcto. El significado que se le da a
una combinación de símbolos es manejado por su semántica (ya sea formal o como parte
del código duro de la referencia de implementación). Dado que la mayoría de los
lenguajes son textuales, este artículo trata de la sintaxis textual.
La sintaxis de los lenguajes de programación es definida generalmente utilizando una
combinación de expresiones regulares (para la estructura léxica) y la Notación de Backus-
Naur (para la estructura gramática). Este es un ejemplo de una gramática simple, tomada
de Lisp:
expresión ::= átomo | lista
átomo ::= número | símbolo
número ::= [+-]? ['0'-'9']+
símbolo ::= ['A'-'Z'] ['a'-'z'].*
lista ::= '(' expresión* ')'
Con esta gramática se especifica lo siguiente:
una expresión puede ser un átomo o una lista;
un átomo puede ser un número o un símbolo;
un número es una secuencia continua de uno o más dígitos decimales, precedido
opcionalmente por un signo más o un signo menos;
un símbolo es una letra seguida de cero o más caracteres (excluyendo espacios);
y
una lista es un par de paréntesis que abren y cierran, con cero o más expresiones
en medio.
Algunos ejemplos de secuencias bien formadas de acuerdo a esta gramática:
Marcos Chan Balam
22. Sintaxis
'12345', '()', '(a b c232 (1))'
No todos los programas sintácticamente correctos son semánticamente correctos.
Muchos programas sintácticamente correctos tienen inconsistencias con las reglas del
lenguaje; y pueden (dependiendo de la especificación del lenguaje y la solidez de la
implementación) resultar en un error de traducción o ejecución. En algunos casos, tales
programas pueden exhibir un comportamiento indefinido. Además, incluso cuando un
programa está bien definido dentro de un lenguaje, todavía puede tener un significado que
no es el que la persona que lo escribió estaba tratando de construir.
Usando el lenguaje natural, por ejemplo, puede no ser posible asignarle significado a una
oración gramaticalmente válida o la oración puede ser falsa:
"Las ideas verdes y descoloridas duermen furiosamente" es una oración bien
formada gramaticalmente pero no tiene significado comúnmente aceptado.
"Juan es un soltero casado" también está bien formada gramaticalmente pero
expresa un significado que no puede ser verdadero.
El siguiente fragmento en el lenguaje C es sintácticamente correcto, pero ejecuta una
operación que no está definida semánticamente (dado que p es un apuntador nulo, las
operaciones p->real y p->im no tienen ningún significado):
complex *p = NULL;
complexabs_p = sqrt (p->real * p->real + p->im * p->im);
Si la declaración de tipo de la primera línea fuera omitida, el programa dispararía un error
de compilación, pues la variable "p" no estaría definida. Pero el programa sería
sintácticamente correcto todavía, dado que las declaraciones de tipo proveen información
semántica solamente.
La gramática necesaria para especificar un lenguaje de programación puede ser
clasificada por su posición en la Jerarquía de Chomsky. La sintaxis de la mayoría de los
lenguajes de programación puede ser especificada utilizando una gramática Tipo-2, es
decir, son gramáticas libres de contexto. Algunos lenguajes, incluyendo a Perl y a Lisp,
contienen construcciones que permiten la ejecución durante la fase de análisis. Los
lenguajes que permiten construcciones que permiten al programador alterar el
comportamiento de un analizador hacen del análisis de la sintaxis un problema sin
decisión única, y generalmente oscurecen la separación entre análisis y ejecución. En
contraste con el sistema de macros de Lisp y los bloques BEGIN de Perl, que pueden
tener cálculos generales, las macros de C son meros reemplazos de cadenas, y no
requieren ejecución de código.
Marcos Chan Balam