- ¿Qué es una
computadora? - Organización de la
computadora - Procesamiento por lotes,
multiprogramación y tiempo
compartido - Computación
personal, computación distribuida y
computación - Lenguajes de máquina,
lenguajes ensambladores y lenguaje de alto
nivel - La historia de
C - La biblioteca
estándar de C - Otros lenguajes de alto
nivel - Programación
estructurada - Los fundamentos del entorno
de C - Claves generales en la
implementación de C - C
Concurrente - Programación orientada a
objetos C++
¿Qué es una computadora?
Una computadora es un dispositivo capaz de
ejecutar cálculos y tomar decisiones lógicas a
velocidades millones y a veces miles de millones de veces
más rápidas de lo que pueden hacerlo los seres
humanos. Por ejemplo, muchas de las computadoras personales de hoy día,
pueden
ejecutar decenas de millones de adiciones por segundo. Una
persona
utilizando una calculadora de escritorio pudiera requerir
décadas para completar el mismo número de
cálculos de lo que puede ejecutar una computadora
personal
poderosa en sólo un segundo. (Puntos a considerar:
¿cómo sabría si la persona sumó
correctamente las cifras?, ¿cómo sabría
si la
computadora sumó correctamente las cifras?) Hoy
día las supercomputadoras más rápidas
pueden ejecutar cientos de miles de millones de sumas por
segundo ¡aproximadamente laníos cálculos podrían
ejecutar cientos de miles de personas en un ano! y en los
laboratorios de investigación ya están en
funcionamiento computadoras de trillones de instrucciones por
segundo.Las computadoras procesan datos bajo el
control de
un conjunto de instrucciones que se
conocen como programas de
computación. Estos programas de
computación guían a la computadora a Ira ves de
conjuntos
ordenados de acciones,
especificados por personas a las que se conoce como
programadores de computadora.Los varios dispositivos (como el teclado,
la pantalla, los discos, la memoria
y las unidades
procesadoras) que conforman un sistema de
computación se conocen como el hardware.
Los
programas de computación que se ejecutan en una
computadora se conocen como el software. Los
costos del
hardware han venido reduciéndose de forma
drástica en años recientes, hasta el punto que
las computadoras personales se han convertido en
mercancía. Desafortunadamente, los costos de desarrollo
de software han ido creciendo continuamente, conforme los
programadores cada día desarrollan aplicaciones
más poderosas y complejas, sin la capacidad de hacer
mejorías paralelas en la tecnología del desarrollo del
software.- Organización de la
computadora
Si no se toman en cuenta las diferencias en apariencia
física,
virtualmente todas las computadoras pueden ser concebidas como
divididas en seis unidades lógicas o secciones. Estas
son:
- Unidad de entrada. Esta es la sección
"de recepción" de la computadora. Obtiene información (datos y programas de
computadora) a partir de varios dispositivos
de entrada y pone esta información a la
disposición de las otras unidades, de tal forma que la
información pueda ser procesada. La mayor parte de la
información se introduce en las computadoras hoy
día a través de teclados de tipo maquina de
escribir. - Unidad de salida. Esta es la sección
"de embarques" de la computadora. Toma la información
que ha sido procesada por la computadora y la coloca en
varios dispositivos de salida para dejar la
información disponible para su uso fuera de la
computadora. La mayor parte de la información sale de
las computadoras hoy día mediante despliegue en
pantallas o mediante impresión en papel. - Unidad de memoria.
Esta es la sección de "almacén" de rápido acceso y de
capacidad relativamente baja de la computadora. Retiene
información que ha sido introducida a través de
la unidad de entrada, de tal forma que esta
información pueda estar de inmediato disponible para
su proceso
cuando sea necesario. La unidad de memoria también
retiene información ya procesada, hasta que dicha
información pueda ser colocada por la unidad de salida
en dispositivos de salida. La unidad de memoria se conoce a
menudo como memoria o memoria primaria. - Unidad aritmética y lógica (ALU). Esta es la
sección de "fabricación" de la computadora. Es
responsable de la ejecución de cálculos como es
suma, resta, multiplicación y división.
Contiene los mecanismos de decisión que permiten que
la computadora, por ejemplo, compare dos elementos existentes
de la unidad de memoria para determinar si son o no
iguales. - Unidad de procesamiento central (CPU).
Esta es la sección "administrativa" de la computadora.
Es el coordinador de la computadora que es responsable de la
supervisión de la operación de
las demás secciones. El CPU le indica a la unidad de
entrada cuando debe leerse la información y colocarse
en la unidad de memoria, le indica al ALU cuándo
deberá utilizar información de la unidad de
memoria en cálculos, y le indica a la unidad de salida
cuándo enviar información de la unidad de
memoria a ciertos dispositivos de salida. - Unidad de almacenamiento secundario. Esta es la
sección de "almacén" a largo plazo de alta
capacidad de la computadora. Los programas o los datos que no
se estén utilizando de forma activa por otras
unidades, están por lo regular colocados en
dispositivos de almacenamiento secundario (como discos) en
tanto se necesiten otra vez, es posible que sean horas,
días, meses o inclusive años
después.
- Procesamiento por lotes,
multiprogramación y tiempo
compartido
Las primeras computadoras sólo eran capaces
de ejecutar un trabajo o
tarea a la vez. Esta forma de operación de las
computadoras, a menudo se conoce como procesamiento por lotes
de un solo usuario. La computadora ejecuta un programa a la
vez al procesar datos en grupos o en
lotes. En estos sistemas
primarios, los usuarios por lo general entregaban sus
trabajos al centro de
cómputo en paquetes de tarjetas
perforadas. Los usuarios a menudo tenían que esperar
horas e inclusive días, antes que se les devolvieran
impresiones a sus escritorios.Conforme las computadoras se hicieron más
poderosas, se hizo evidente que el procesamiento por lotes de
un solo usuario rara vez utilizaba los recursos
de la computadora de manera eficazmente. En vez de ello, se
pensó que muchos trabajos o tareas podían hacer
que compartieran los recursos de la computadora para obtener
mejor utilización. Esto se conoce como
multiprogramación. La multiprogramación implica
la operación "simultánea" de muchos trabajos en
una computadora. La computadora comparte sus recursos entre
los trabajos que compiten por su atención. En el caso de los primeros
sistemas de multiprogramación, los usuarios aún
entregaban los trabajos en paquetes de tárjelas
perforadas, y tenían que esperar horas o días
para los resultados.En los años 60, varios grupos en la industria
y en las universidades se hicieron pioneros en el concepto de
tiempo compartido. El tiempo compartido es un caso especial
de la multiprogramación, en el cual los usuarios
tienen acceso a la computadora a través de
dispositivos de entrada, salida o terminales. En un sistema
típico de computadora a tiempo compartido, pudieran
existir docenas e inclusive cíenlos de usuarios,
compartiendo a la vez la computadora. La computadora de
hecho, no ejecuta las órdenes de todos los usuarios en
forma simultánea. En vez de ello, ejecuta una
pequeña porción del trabajo de un usuario, y de
inmediato pasa a darle servicio
al siguiente. La computadora hace esto tan aprisa, que puede
darle servicio a cada usuario varias veces por segundo. Por
lo tanto, los usuarios parece que estuvieran ejecutando su
trabajo de forma simultanea.cliente/servidor
En 1977, Apple Computer popularizó el
fenómeno de la computación personal. Al
principio, era el sueño de los aficionados a la
computación. Las computadoras se hicieron lo bastante
económicas para que las personas las adquirieran para
su uso personal o de negocios.
En 1981, IBM, el fabricante mas grande del inundo do
computadoras, introdujo la computadora personal IBM.
Literalmente de la noche a In mañana, la
computación personal se legitimizó en negocios,
industrias
y organizaciones gubernamentales.Pero estas computadoras eran unidades
"independientes", las personas hacían el trabajo
en sus propias máquinas y a continuación
transportaban discos de ida y vuelta para compartir la
información. Aunque las primeras computadoras
personales no eran lo bastante poderosas para compartirse
entre varios usuarios, estas máquinas podían
ser enlazadas juntas en redes de
computación, a veces mediante líneas
telefónicas y otras en redes de área local
dentro de una organización. Esto condujo al
fenómeno de la computación
distribuida, en la cual la carga de trabajo de
computación de una organización, en vez de ser
ejecutada de manera estrictamente en alguna
instalación central de cómputo, se distribuye
sobre la red a los lugares donde
en realidad se ejecuta el trabajo de la
organización. Las computadoras personales eran lo
bastante poderosas para manejar las necesidades de
cómputo de usuarios individuales, así como para
manejar las tareas básicas de comunicación, de pasar la
información electrónicamente de ida y
vuelta.Hoy día las computadoras personales
más potentes son tan poderosas como las
máquinas de
un millón de dólares de hace una década.
Las máquinas de escritorio más poderosas que se
conocen como estaciones de trabajo proporcionan a
usuarios individuales enormes capacidades. La
información puede compartirse, con facilidad a
través de redes de cómputo, donde algunas
computadoras denominadas servidores de archivo ofrecen
un almacén común de programas y de datos, que
pueden ser utilizados por computadoras cliente
distribuidas a lodo lo largo de la red, y de ahí el
termino de computación cliente/servicio.
C y C++ se han convertido en los lenguajes de elección
para escribir software para sistemas
operativos, para redes de computación y para
aplicaciones distribuidas cliente/servidor.- Computación personal,
computación distribuida y
computaciónLos programadores escriben instrucciones en
diferentes lenguajes de
programación, algunos
comprensibles de forma directa por la computadora y otros que
requieren pasos intermedios de traducción. Existen hoy día
cientos de lenguajes de computadora. Estos pueden ser
categorizados en tres tipos generales:1-Lenguajes maquina
2-Lenguaje ensambladores
3-Lenguajes de alto nivel
Cualquier computadora solo puede entender
directamente su propio lenguaje de maquina. El
lenguaje de maquina es "el
lenguaje natural"de una computadora particular. Esta
relacionado íntimamente con el diseño hardware. Los lenguajes de
maquina por lo general consisten, en cadenas de
números (es decir reducidas a unos y a ceros)que
instruyen en las computadoras para que ejecuten sus operaciones
más elementales. Los lenguajes de maquina son
dependientes de la maquina, es decir, en particular
pueden ser utilizados en solo un tipo de computadoras. Son
difíciles de manejar por los seres humanos.Conforme las computadoras se hicieron más
populares, se hizo aparente que la programación en lenguaje de maquina era
demasiado lenta y tediosa. En vez de de utilizar las cadenas
de números que las computadoras pueden entender de
forma directa, los programadores empezaron a hacer
abreviaturas similares al ingles. Estas abreviaturas
similares al ingles formaron la base de los los lenguajes
de ensambladores. Se desarrollaron programas de
traducción denominados ensambladores para
convertir los lenguajes ensamblador a lenguaje de maquina a la
velocidad
de las computadoras.Para acelerar el proceso de programación de
desarrollaron lenguajes de alto nivel, en los cuales
se podían escribir simples enunciados para poder
llevar a cabo tareas sustanciales. Los programadores de
traducción que convierten los programas de lenguaje
alto nivel al lenguaje de maquina se llaman
compiladores. Los programas de alto nivel le permite a
los programadores escribir instrucciones que parecen
prácticamente como el ingles de todos los días
y contiene notaciones matemáticas. Un programa de nomina
escrito en un lenguaje de alto nivel pudiera contener un
enunciado como el siguiente:Grosspay = basepay + overtimepay
- Lenguajes de máquina, lenguajes
ensambladores y lenguaje de
alto nivel
Los lenguajes de alto nivel son mucho más
deseables desde el punto de vista del programador que los
lenguajes de maquina o ensambladores. C y C++ son, de entre
los lenguajes de alto nivel, los más poderosos y
más utilizados.C evoluciono a partir de dos lenguajes previos,
BCPI, y B.BCPL fue desarrollado en 1967 por Martín
Richards, como lenguaje para escribir software y compiladores de sistemas
operativos.El lenguaje C
fue derivado del lenguaje B por Dennis Ritchie y al inicio se
implanto una computadora PDP-11 de DEC. C al inicio de hizo
muy conocido como lenguaje de desarrollo de sistema
operativo UNÍS . Hoy DIA, virtualmente todos los
sistemas principales están escritos en C y/o
C++.Con un diseño cuidadoso, es posible escribir
programas en C que sean portátiles hacia la mayor
parte de las computadoras.Hacia fines de los 70, C había evolucionado a
lo que hoy se conoce como C "tradicional". La
publicación en 1978 del libro de
Kernighan y de Ritchie, The C Programming Language ,
atrajo gran atención sobre este lenguaje..La Expansión rápida de C trajo consigo
muchas variantes. Estas eran similares, pero a menudo no eran
compatibles.Dado que C es un lenguaje independiente del hardware
y ampliamente disponible, las aplicaciones que están
escritas en C pueden ejecutarse con poca o ninguna
modificación en una amplia gama de sistemas distino de
computo.- La historia de
CLos programas C consisten de módulos o piezas
que se denominan funciones.
Usted puede programar todas las funciones que necesita para
formar un programa C, pero la mayor parte de los
programadores de C aprovechan una gran recopilación de
funciones existentes, que se conocen como Biblioteca
estándar C. Para aprender el "universo" C,
de hecho existen dos partes. El primero es aprender el
lenguaje C
mismo, y el segundo aprender como utilizar las funciones de
la Biblioteca estándar C. - La biblioteca
estándar de CSe han desarrollado cientos de lenguajes de alto
nivel, pero solo unos pocos han alcanzado una amplia
aceptación. FORTRAN fue desarrollado por IBM entre
1954 y 1957. FORTRAN es aun muy utilizado.COBOL fue desarrollado en 1959 por un grupo de
fabricantes de computadoras y de usuarios industriales y de
gobierno.
Hoy DIA mas de la mitad del software de negocios se programa
aun en COBOL.
PASCAL fue
diseñado casi al mismo tiempo que C. Se
concibió para uso académico, - Otros lenguajes de alto
nivelDurante los años 60, el desarrollo de
software se encotro con severas dificultades. Los programas
de entrega del software se retrasaban, sus costos
excedían en gran medida los presupuestos, y los productos
terminados no eran confiables. La actividad de
investigación de los años 60 dio como resultado
la evolución de la programación
estructurada- un método disciplinado de escribir
programas que sean claros, que se demuestre que son correctos
y fáciles de modificar.Uno de los resultados más tangibles de esta
investigación, fue el desarrollo en 1971 hecho por el
profesor
Nicklaus Wirth del lenguaje de programación Pascal.
Pascal fue diseñado par4a la enseñanza de la programación
estructurada en entorno académicos, y se
convirtió con rapidez en el lenguaje introductorio de
programación de la mayor parte de las
universidades.ADA fue desarrollado bajo el patrocinio del
Departamento de Defensa de los Estados
Unidos (DOD) durante los años 70 y principios de
los 80.DOD deseaba un solo lenguaje que pudiera llenar sus
objetivos.
Pascal fue seleccionado como base, pero el lenguaje final
ADA.A Lady Lovelace se le da por lo general crédito de haber escrito el primer
programa de computación del mundo a principios de
1800. Una capacidad importante de Ada se conoce como
multitareas.Otros lenguajes muy utilizados de alto nivel que
hemos analizado incluyendo C y C++ permiten al programador
escribir programas que solo ejecuten una actividad a la
vez, - Programación
estructuradaTodos los sistemas de C consisten, de tres partes:
el entorno, el lenguaje y la biblioteca estandar
C.Los programas C casi siempre pasan a través
de 6 fases para su ejecución. Estas fases son: Editar,
procesar, compilar; enlazar, cargar y ejecutar.La primera fase consiste en editar un archivo.
El programa a continuación se almacena en un
dispositivo de almacenamiento secundario, como seria un
disco. Los nombres de archivo de los programas C deben
terminar con la extensión.c. - Los fundamentos del entorno de
CComo C es un lenguaje bastante difícil,
muchas veces los programadores con experiencia toman esta
particularidad para generar formas muy complicadas y
extrañas de este lenguaje. Esto en realidad es una
mala práctica de programación; ya que hace que
los programas sean difíciles de probar y depurar. Por
eso, para mantener la claridad de los programas que hacemos
debemos guiarnos por algunas buenas
prácticas.- Práctica
sana de programación Escribir los programas de una manera simple y
sencilla. Esto se conoce como KIS (del inglés "keep it simple"). NO "le
saque punta al lenguaje" intentando "rarezas"Para mantener la portabilidad de los programas
escritos en C, aunque puede resultar difícil por
que existen algunas sutilezas del lenguaje del ANSI C que
no lo hacen compatible con versiones anteriores
así como con versiones posteriores a este tipo de
lenguaje. Por lo que nuevamente para que exista la mayor
portabilidad del programa escrito se debe mantener
simple.- Sugerencia de
portabilidadHay que leer los manuales de la versión C que se
está utilizando y tener en cuenta la gran cantidad
de características que C contiene y estar seguro
de estarlas utilizando de forma correcta. - Práctica
sana de programación 2 - Práctica
sana de programación 3
Su computadora y su compilador son buenos maestros.
Si no está seguro de cómo funciona una
característica de C, escriba un programa de muestra con
la característica, compile y ejecute el programa y vea
qué es lo que ocurre. La práctica es la base de
la buena programación. - Práctica
- Claves generales en la
implementación de C - C Concurrente
Otras versiones de C se han desarrollado tras
continuos esfuerzos, como ser en los laboratorios Bell que
desarrollaron la forma C Concurrente, un superconjunto de C
que incluye capacidades de especificación de
actividades múltiples en paralelo. Este tipo de
lenguajes y las funciones de sistemas operativos que dan
soporte a paralelismo de aplicaciones a aplicaciones de
usuarios, se harán cada vez más populares en
esta década conforme vaya aumentando el uso de
multiprocesadores- Programación orientada a objetos
C++
Otro superconjunto de C es C++, que fue desarrollado por
Stroustrup en los laboratorios Bell. C++ Proporciona un nuevo
número de características que engalanan el lenguaje
C. Pero la gran característica es la programación
orientada a objetos.
Los objetos son componentes de software reutilizable que
modelan elementos del mundo real. Se crean este tipo de versiones
por la busqueda de nuevos software que sean rápidos,
correctos y económicos, porque la demanda de
este tipo de software es muy grande.
Los desarrolladores están descubriendo que,
utilizando este tipo de programación
orientada a objetos, se logra que los grupos de desarrollo de
software sean de 10 a100 veces más productivos que antes
con las antiguas técnicas
de programación.
Se lograron desarrollar muchos lenguajes orientados a
objetos pero el más popular de nuestra época tiende
a ser C++. Claro está que lo más conveniente es
primero aprender C para luego estudiar C++
César Affonso
BACHILLERATO
TECNOLÓGICO DE INFORMATICA