Programación en Pascal/Nociones generales
Quienquiera que quiera o necesite aprender a programar, necesita saber el funcionamiento básico, a bajo nivel, de una computadora.
Difícilmente puede aprenderse a programar, por ejemplo, si no se sabe que es un bit, como se organiza la memoria del ordenador, o cual es el cometido del procesador, el bus, la tarjeta gráfica, etc.
Empecemos por lo más básico:
Como se mide la capacidad
[editar]De la misma manera que la masa se mide en gramos, y el volumen en litros, la lógica y la información se mide en bits.
En español, a la ingeniería que trata del procesamiento de la información se le llama informática. Siendo estrictos, no es necesario usar un ordenador para hacer informática, pero es prácticamente el único medio usable moderno que se tiene para hacerlo, por lo que, en la práctica, la asociación informática / ordenadores es indisoluble.
La capacidad de un ordenador, y de su memoria, se mide también en bits. Un bit en un ordenador, al igual que en la lógica y la filosofía, mide una sola cosa: si es cierto o falso. Dicho de otro modo, si está lleno o vacio. Si es cero o uno.
Al uso de ceros y unos exclusivamente para representar la información, se le llama sistema binario.
Como es posible que solo con unos y ceros el sistema pueda funcionar
[editar]Es una gran pregunta que se hacen todos los que quieren aprender informática. La explicación no es tan complicada.
Observa, por ejemplo, como contamos nosotros. Medimos casi todo en números. Si algo no es un número, se puede transformar y buscar su equivalente en número.
Nuestro sistema humano es decimal. Coincide con el número de dedos que tenemos en las manos y los pies. Puedes imaginar que es decimal porque el hombre primitivo observaba sus dedos, y asociaba lo que veía contando dedos.
¿Y qué sucede cuando se acaban los dedos? Que hay que empezar de nuevo, recordando en la mente que ya han transcurrido 10. Así, por ejemplo, el 11 son todos los dedos de las manos más uno mas, el 100 son todos los dedos repetidos 10 veces, etc.
Esta capacidad de contar, que parece tan simple, es lo que ha traído la tecnología al ser humano. Sin ello, seguiríamos en la edad de piedra.
El ordenador, sin embargo, no puede tener 10 dedos. Está hecho con transistores. Los transistores son pequeños circuitos que solo entienden dos cosas: que pase la corriente, o que no pase. Por lo tanto, el ordenador solo tiene dos dedos.
Entonces, empezamos a contar... 0, 1, ops! no hay más. Entonces, el siguiente tendrá que ser... 10. Si, 10. Hemos llegado al final de los dedos y tenemos que empezar a recordar el siguiente acarreo. Entonces, el equivalene a nuestro sistema puede ser así:
Decimal | Binario |
0 | 0 |
1 | 1 |
2 | 10 |
3 | 11 |
4 | 100 |
5 | 101 |
6 | 110 |
7 | 111 |
8 | 1000 |
Y así podemos seguir contando hasta que nos aburramos. Como ves, con solo ceros y unos, es posible representar cualquier número.
Entonces, ¿cómo es que yo veo letras y gráficos a través de la pantalla y no ceros y unos?
[editar]Porque la computadora transforma los ceros y los unos en información que la tarjeta gráfica procesa, y a su vez, esa información procesada es transformada en impulsos eléctricos que a su vez hacen encender los pixeles del monitor.
La función de los programas es transformar esa información imposible de procesar por un humano, en algo útil y entendible.
Además, no solo es posible transformarlo en imagen, también en sonido, en movimiento a través de robots, etc.
Tamaño del bus
[editar]El siguiente concepto importante en informática es el número de bits de la computadora. Por ejemplo, habrás oido decir que "este ordenador es de 32 bits", o si es más moderno dirán "es de 64 bits". También es común oirlo en otros electrodomésticos, como videoconsolas, o incluso reproductores de DVD, ordenadores de abordo de los coches y cosas similares.
¿Significa eso que una computadora de 32bits solo puede almacenar 32bits?
No, por Dios... con eso no habría ni para empezar. :-)
Significa que el bus de esa máquina es de 32bits.
El bus son los cables por donde viaja la información internamente. Imagina que son una especie de raíles (rieles) electrónicos por donde circula la electricidad. Un ordenador de 32bits tendrá 32 raíles paralelos. Eso quiere decir que el ordenador es capaz de trabajar con 32 bits simultaneamente. Si necesita más bits, necesitará pedir otros 32, y luego otros 32, y así indefinidamente. Decimos, entonces, que es de 32 bits porque trabaja en bloques de 32 bits.
Es fácil imaginar que, de cuantos más bits se trate, más grandes serán los números que pueda manejar. Para entender esto, observa la siguiente tabla:
Bits | Número máximo en decimal |
1 | 2 |
2 | 4 |
4 | 16 |
8 | 256 |
16 | 65536 |
32 | 4294967296 |
64 | 18446744073709551616 |
Como ves, con 64 bits se puede representar un número realmente inmenso. ¡Imagina con 128 bits!
Además, la mayoría de los procesadores permiten segmentar el bus. Es decir, si es de 32 bits, se puede dividir en dos de 16bits, y estos de 16 bits, en otros de 8 bits. Normalmente hay un límite. En los actuales PCs, el tamaño mínimo de dato es 8 bits. Además, existe otra limitación, y es que aunque esté dividido, la computadora tiene que trabajar con direcciones de memoria siempre de su tamaño máximo (aprenderás que es esto en la lección dedicada a los punteros), por lo que al final lo que se pueda ganar en velocidad, se pierde en cantidad de memoria desperdiciada.
Capacidad de memoria
[editar]La capacidad de memoria es archiconocida. Cuando vamos a comprar un ordenador, manejamos datos que ya nos resultan de uso común. Si tienes interés por aprender a programar, seguro que ya sabes que significa:
1 Terabyte = 1024 Gigabyte.
1 Gigabyte = 1024 Megabytes.
1 Megabyte = 1024 Kilobytes.
1 Kilobyte = 1024 bytes.
1 byte = 8 bits.
El dato importante aquí es este último.
Recuerda: 1 byte son 8 bits. byte se lee "bait" en español, mientras que bit se lee simplemente "bit". |
Fíjate, siempre son 1024, no 1000. ¿Por qué? Porque , no 1000. Y usamos el 2 como base porque es un sistema binario, no decimal.
Los discos duros, la memoria, etc, se mide en bytes o sus unidades superiores.
De la misma manera, existen Gigabits, Megabits, Kilobits, etc. Se refieren a bits a secas. Se utilizan para medir la transferencia de datos. Por ejemplo, una ADSL de 1Mbit tiene una capacidad de transmisión máxima de 128Kbytes (en la práctica menos debido a la redundancia de protocolos). De ahí que nuestros navegadores web, cuando descargan datos, parezcan en principio que marcan datos que no son los que hemos contratado. A las compañías de telecomunicaciones les viene muy bien esta convección, pues al usuario que no entiende le da la impresión de ser más veloz de lo que realmente es...
Y todo esto se abrevia, por ejemplo, Kb es kilobits, pero KB (con la B mayúscula) son kilobytes... como ves, un pequeño follón que complica aún más la forma de medir. Pero necesitas saber todo esto si quieres ser programador.
Como funciona el hardware
[editar]Entendemos por hardware los distintos componentes que forman la computadora, físicamente.
Ya hemos dicho que hay un procesador y un bus. El bus comunica a la memoria y a los dispositivos con el procesador. Este bus se encuentra en lo que en términos vulgares llamamos "placa base" o "placa madre". La memoria RAM almacena datos temporalmente, que se pierden cuando se desconecta. Y luego hay otra serie de dispositivos, los más comunes son el disco duro (que almacena datos permanentemente o hasta que sean borrados), los USB, teclados, pantallas, y por supuesto, la tarjeta gráfica, que en los últimos años se ha convertido en un computador en si mismo debido a su complejidad (lleva GPU que es un tipo de procesador especializado en gráficos, y memoria para ella sola).
Con la tecnología actual, el hardware no funciona sin un "cerebro" central, que es el procesador. El procesador es en si mismo otra máquina extremadamente compleja (tiene cientos de miles de millones de transistores en un espacio de micras), compuesta por muchas partes. Cada parte realiza una función. Así, por ejemplo, hay una parte con transistores que realizan operaciones matemáticas, otra parte que hace operaciones en memoria, otra que manda instrucciones a los dispositivos, etc.
Ya hemos dicho que los transistores son pequeños dispositivos que solo entienden de unos y ceros. Hay muchos tipos de agrupaciones de transistores, por ejemplo AND, NAND, OR, XOR. A su vez, la combinación de estos grupos producen operaciones complejas. Solo para realizar la suma de dos datos de 32 bits se necesitan cientos de transistores, que a su vez precisan de registros, otras instrucciones para manejar esos registros, etc. Explicar como funciona un procesador está fuera del alcance de este libro, pero el futuro programador tiene que tener nociones básicas de lo que es un ordenador, o de lo contrario se sentirá perdido cuando se manejen temas complejos.
Sin un reloj que regulase la cantidad de operaciones que pueden realizar estos transistores, sucedería que se calentaran tanto que reventarían. Además, habría problemas de sincronismo (unos transistores se adelantarían a otros sin que debieran, produciendo que el procesador se colgara inmediatamente).
A medida que avanza la técnica, se consiguen hacer transistores con menor gasto (se calientan menos), más pequeños (caben más), y más rápidos. Así, un ordenador de 4 Mhz de hace 20 años, podía hacer (en teoría) cuatro millones de instrucciones por segundo. Hoy en día, con 3 Ghz puede hacerse tres mil millones. En la práctica pueden ser más o menos, dependiendo de si tiene varios núcleos (core), la velocidad del bus, la memoria, etc. Generalmente suele ser bastante menos.
Las instrucciones de una máquina y el ensamblador
[editar]Los compiladores
[editar]El compilador es un programa traductor de lenguaje de alto nivel al lenguaje de maquina que es de bajo nivel
El sistema operativo
[editar]El sistema operativo es el programa principal. Se encarga de manejar a la "bestia". Se carga después de cargar el otro programa principal, la BIOS, y su función es ofrecer al resto de los programas una base segura y práctica donde trabajar.
Ya sabrás que hay varios sistemas operativos: Linux, Apple OS X, Windows, etc. Además de estos conocidos, toda máquina que lleve un sistema más o menos complejo, lleva también un sistema operativo. Eso significa que incluso el router de tu conexión a internet, o el firmware de tu DVD, son, de una forma u otra, sistemas operativos.
La importancia de conocer el sistema operativo para el que se va a programar es vital. Hay grandes diferencias entre unos sistemas u otros. Para programar, se usan las Librerías (en Windows las llaman DLLs), que llevan ya código escrito por otras personas que facilitarán enormemente el trabajo del programador de aplicaciones.
Afortunadamente para los usuarios de Free Pascal y Lazarus, pasar un programa de un sistema a otro suele ser casi trivial, debido a que los creadores de estos programas han puesto especial esfuerzo en ocultar las diferencias. Si no fuera así, sería un gran engorro, como de hecho sucede con muchas aplicaciones realizadas en C o C++.