¿Qué es la Programación de Computadoras?

INTRODUCCIÓN

Hoy en día, la mayoría de la gente no necesita saber cómo funciona una computadora. La mayoría de las personas simplemente puede encender una computadora o un teléfono móvil y señalar algún pequeño objeto gráfico en la pantalla, hacer clic en un botón o deslizar uno o dos dedos, y la computadora hace algo. Un ejemplo sería obtener información meteorológica de la red y mostrarla. Cómo interactuar con un programa de computadora es todo lo que una persona promedio necesita saber.

Pero, dado que aprenderá a escribir programas de computadora, necesita saber un poco sobre cómo funciona una computadora. Su trabajo será instruir a la computadora para hacer cosas.

pro-ce-eso / Sustantivo:
    una serie de acciones o pasos para alcanzar un fin.
pro-ce-di-mien-to / Sustantivo: 
    una serie de acciones llevadas a cabo en un cierto orden.
al-go-rit-mo / Sustantivo: 
    un conjunto ordenado de pasos para resolver un problema.

Básicamente, escribir software (programas de computadora) implica describir procesosprocedimientos; implica la creación de algoritmos. La programación de computadoras implica el desarrollo de listas de instrucciones: la representación del código fuente del software. Las cosas que estas instrucciones manipulan son diferentes tipos de objetos, por ejemplo, números, palabras, imágenes, sonidos, etc. Crear un programa de computadora puede ser como componer música, como diseñar una casa, como crear muchas cosas. Se ha argumentado que en su estado actual es un arte, no ingeniería.

Una buena pregunta que puede tener es "¿Por qué debería aprender a programar una computadora?"

Una razón importante para considerar el aprendizaje es que los conceptos subyacentes a esto serán valiosos para usted, independientemente de si hace una carrera profesional o no. Una cosa que aprenderá rápidamente es que una computadora es muy tonta, pero obediente. Hace exactamente lo que le dices que haga, que no es necesariamente lo que querías. La programación te ayudará a aprender la importancia de la claridad de expresión.

Una comprensión profunda de la programación, en particular la nociones de descomposición sucesiva como un modo de análisis y la depuración de soluciones de prueba, los resultados en importantes beneficios educativos en muchos dominios del discurso, incluidos los que no están relacionados con las computadoras y la información tecnología per se.

( Seymour Papert, en "Mindstorms" )


A menudo se ha dicho que una persona no realmente entender algo hasta que se lo enseñe a otra persona. En realidad, una persona realmente no entiende algo hasta después de enseñarlo a una computadora, es decir, expresarlo como un algoritmo ".

( Donald Knuth, en "American Mathematical Monthly", 81 )


Las computadoras han demostrado ser inmensamente efectivas como ayudas para limpiar pensando. Ideas a veces arrinconadas y a medias sobrevivió durante siglos porque las luminarias se han engañado a sí mismos tanto como sus seguidores o porque menor las luces, temiendo el ridículo, no podían convocar el valor de admitir que ellos no sabían lo que el Maestro estaba hablando acerca de. Una prueba tan infalible como podría ser si entiendes algo tan bien como crees que es expresar como un programa de computadora y luego ver si el programa lo hace lo que se supone que debe hacer Las computadoras no son aduladores y no hará ruidos entusiastas para asegurar su promoción o camuflar lo que no saben. Lo que obtienes es lo que tu dijiste.

( James P. Hogan en "La mente importa" )

Mark Guzdial tiene una publicación en el blog, ¿Por qué deberíamos enseñar programación ?, eso explica muchas razones por las cuales es importante aprender a programar computadoras.

¡Una última razón, puede ser muy divertido! Un compañero de trabajo dijo una vez: "No puedo creer que me paguen tan bien por algo que amo hacer".

Entonces... ¿a qué se parecen las instrucciones que entiende una computadora? Y, ¿qué tipo de objetos manipulan las instrucciones? Al final de esta lección, podrá responder estas preguntas. Pero primero intentemos escribir un programa en inglés.

PROGRAMACIÓN USANDO EL IDIOMA INGLÉS

¿Recuerdas lo que dije en la introducción a esta lección?

Escribir software, programas de computadora, es como escribir los pasos necesarios para hacer algo.

Antes de ver qué aspecto tiene un lenguaje de programación de computadora, usemos el idioma inglés para describir cómo hacer algo como una serie de pasos. Un ejercicio común que realmente lo hace pensar en cómo puede ser la programación de computadoras es describir un proceso con el que está familiarizado.

Describe cómo hacer un sándwich de mantequilla de maní y jalea.

En lugar de escribir mi propia versión de este ejercicio, busqué en Internet las palabras "sándwich de programación de computadora" usando Google. Uno de los hits devueltos fue http://teachers.net/lessons/posts/2166.html. En el enlace, Deb Sweeney (Tamaqua Area Middle School, Tamaqua, PA) describió el problema como:

Objetivo: Los estudiantes escribirán pasos específicos y secuenciales sobre cómo hacer un sándwich de mantequilla de maní y jalea.
Procedimiento: Los estudiantes escribirán un párrafo muy detallado y paso a paso sobre cómo hacer un sándwich de mantequilla de maní y jalea para la tarea. Al día siguiente, los alumnos ingresarán (leerán) sus instrucciones en la computadora (profesor). El profesor luego "hará" los programas, asegurándose de hacer exactamente lo que dijeron los estudiantes...

Cuando un profesor o mentor experimentado dirige este ejercicio, es excelente para demostrar cuán cuidadoso debe ser, qué tan detallado debe ser al escribir un programa de computadora.  Una demostración de este ejercicio está disponible en YouTube.

La programación en un lenguaje natural, por ejemplo, el alcance completo del idioma inglés, parece una tarea muy difícil. Pero, antes de pasar a los idiomas, podemos escribir programas hoy, quiero irme con una nota alta.  Haga clic aquí para leer sobre cómo Stephen Wolfram ve la programación en un lenguaje natural.

PROGRAMACIÓN USANDO UN ENTORNO DE BLOQUES

Hace poco menos de quince años, Mitchel Resnick y sus amigos del MIT presentaron un entorno de programación llamado Scratch . Proporciona un nuevo enfoque para la enseñanza de programación de computadoras a través de una interfaz gráfica de usuario que elimina la posibilidad de cometer ciertos errores comunes en la programación basada en texto.

Figura 1.1

Los programas se construyen conectando bloques, cada uno representando alguna funcionalidad disponible en el sistema. La Figura 1.1 muestra un programa simple que le pide a la persona que lo ejecuta su nombre y luego dice hola. El color se usa para las categorías a las que pertenecen los bloques. Observe que el bloque de preguntar y el bloque de respuesta correspondiente son del mismo tono de azul. Las formas de los bloques determinan dónde se pueden colocar para formar un programa aceptable. El bloque de unión verde redondeado cabe en un orificio redondeado en el bloque violeta decir .

Una de las fortalezas de Scratch es la facilidad con la que los estudiantes pueden construir juegos y simulaciones e historias animadas. Otra fortaleza es el sitio web Scratch, que proporciona acceso a muchos tutoriales y una comunidad de usuarios con programas que han escrito. Para obtener más información sobre Scratch, visite Scratch Wiki .

La programación basada en bloques es una excelente forma de comenzar. Pero, a medida que crece el tamaño de los programas que desea escribir o necesita una función que no está disponible en Scratch, es hora de cambiar a la programación basada en texto.

LENGUAJES DE PROGRAMACIÓN - IDIOMAS DE ALTO NIVEL

Casi toda la programación de computadoras actualmente se hace con lenguajes de programación de alto nivel . Hay muchos y algunos son bastante viejos. ¡COBOL, FORTRAN y Lispfueron ideados en la década de 1950! Como verá, los lenguajes de alto nivel facilitan la descripción de las piezas del programa que está creando. Ayudan al permitirte concentrarte en lo que intentas hacer en lugar de en cómo lo representas en una arquitectura informática específica. Ellos abstractas de distancia los detalles del microprocesador en su ordenador. Y, todos los lenguajes de alto nivel vienen con grandes conjuntos de cosas comunes que necesita hacer, llamadas bibliotecas.

En esta introducción, trabajará con dos lenguajes de programación: Logo y Java. El logotipo proviene de Bolt, Beranek & Newman (BBN) y el Instituto de Tecnología de Massachusetts (MIT).  Seymour Papert , un científico del Laboratorio de Inteligencia Artificial del MIT, ayudó a Wally Feurzeig en el logotipo de diseño de BBN en la década de 1970. Existe más investigación sobre su uso en entornos educativos que para cualquier otro lenguaje de programación.

Java es un lenguaje de programación bastante reciente. Apareció en 1995 justo cuando Internet comenzaba a llamar la atención. Java fue inventado por James Gosling, que trabaja en Sun Microsystems. Es un tipo de lenguaje de nivel medio. Una de las grandes ventajas de aprender Java es que ya hay muchos programas escritos ( consulte: Biblioteca de clases de Java).) que le ayudará a escribir programas con interfaces gráficas de usuario elaboradas que se comunican a través de Internet. Aprovecha el software que miles de programadores ya han escrito. Java se utiliza en una variedad de aplicaciones, desde teléfonos móviles hasta la manipulación masiva de datos de Internet. Puede trabajar con objetos de ventana, objetos de conexión a Internet, objetos de acceso a la base de datos y miles de otros. Java es el lenguaje utilizado para escribir aplicaciones de Android.

Entonces, ¿por qué estas lecciones comienzan con el lenguaje de programación Logo?

Ningún otro lenguaje de programación de computadora tiene la profundidad de la investigación como Logo, basado en su uso en entornos educativos. Sus raíces están en el desarrollo de entornos de aprendizaje interactivos. Wally Feurzeig estaba investigando el uso de una computadora compartida para mejorar la enseñanza de conceptos matemáticos en BBN (Bolt, Beranek y Newman). La pregunta que quería responder era si los niños abrazarían la nueva tecnología y aprenderían a usarla. Con cierto éxito demostrado usando un lenguaje de programación existente, Wally contrató a Seymour Papert para ayudar con el diseño de Logo. Seymour escribió la especificación funcional para Logo.  Daniel Bobrow luego escribió el primer intérprete de Logo. Desde estos primeros días, se han escrito cientos de libros y trabajos de investigación sobre su uso en el aula.  Cynthia Solomon , que inició Logo Groupde MIT con el Dr. Papert, ha creado un sitio web completo sobre Logo: logothings.wikispaces.com .

Me gusta usar el lenguaje Logo para enseñar programación introductoria porque es muy fácil de aprender. Cuanto más rápido consigas escribir programas informáticos interesantes, más diversión tendrás. Y ... ¡divertirse es importante! Pero no dejes que la simplicidad de Logo te engañe y piense que es solo un lenguaje de programación de juguetes . Logo es un derivado del lenguaje de programación Lisp, un lenguaje muy poderoso que todavía se utiliza en la actualidad para abordar algunas de las investigaciones más avanzadas que se realizan.  Brian Harveymuestra el poder del logotipo en su estilo de logotipo informáticoserie de libros.  Volumen 3: Más allá de la programación cubre seis temas de ciencias de la computación a nivel universitario con Logo.

Tanto Logo como Java tienen el mismo tipo de material necesario para escribir programas de computadora. Cada uno tiene la capacidad de manipular objetos (por ejemplo, funciones aritméticas para trabajar con números). Cada uno le permite comparar objetos y hacer una variedad de cosas dependiendo del resultado de la comparación. Lo más importante es que le permiten definir procedimientos con nombre . Los procedimientos nombrados son listas de instrucciones incorporadas y otros procedimientos nombrados. La abstracción de nombrar cosas le permite escribir programas en un idioma que usted mismo define. De eso se trata realmente la programación, como verán.

Solo para darle una idea de cómo es la programación en un lenguaje de alto nivel, este es un programa que nos saluda, pretendiendo saber inglés.

print [¡Hola, mundo!]
  

Este es uno de los programas más sencillos que se puede escribir en la mayoría de los idiomas de alto nivel.  IMPRIMIR es un comando en Logotipo Cuando se realiza, toma lo que le sigue y lo muestra. El programa "Hola mundo" es famoso; revise su descripción en Wikipedia haciendo clic aquí .

Además de los comandos, Logo tiene operadores que generan algún tipo de resultado. Aunque es un poco artificial, aquí hay un programa que muestra el producto de un número constante (diez) y un número aleatorio en el rango de cero a catorce.

print product 10 (random 15)
  

En este código fuente, la entrada del comando PRINT es la salida del operador PRODUCT.  PRODUCT multiplica todo lo que sigue por lo que sigue y arroja el resultado. Por lo tanto, PRODUCT necesita dos entradas.  RANDOM es un operador que emite un número que es mayor o igual a cero (0) y menor que el número que lo sigue. Entonces, PRODUCT obtiene su segunda entrada de la salida de RANDOM .

¿Confuso?

La Figura 1.2 muestra un diagrama de plomería, una representación gráfica de cómo todos estos procedimientos encajan.

 

Figura 1.2

Todavía confuso?   No se preocupe, entraremos en los detalles de los operadores de Logo en la lección 8.

Finalmente, aquí hay un snipet de código fuente de Logo avanzado, solo para darle una idea de cómo se ve. Esta es una definición de procedimiento para seleccionar el número máximo de una lista de números.

 to getMax :maxNum :numList 
  if empty? :numList [output :maxNum]
  if greater? (first :numList) :maxNum [output getMax (first :numList) (butfirst :numList)]
  output getMax :maxNum (butfirst :numList)
  end 

Nuevamente, no se preocupe si no entiende exactamente cómo funciona este procedimiento. Pasará un tiempo antes de que escribas algo como esto. Pero, quiero que vea que las palabras que componen las instrucciones del programa y las instrucciones mismas son similares a las oraciones en inglés, por ejemplo, la primera línea y la mitad del procedimiento son similares a las oraciones:

Si la lista de números para procesar está vacía, imprima el número máximo procesado. 
  Si el primer número en la lista es mayor que el número máximo procesado hasta ahora, entonces...
  

Entonces, un lenguaje de programación de alto nivel es * tipo de * como el inglés, solo un paso más cerca de lo que parece el lenguaje que una computadora realmente entiende. Ahora pasemos a cómo se ve el idioma nativo de una computadora cuando se le da una representación simbólica.

LENGUAJES DE PROGRAMACIÓN - LENGUAJE DE ENSAMBLADOR

Una capa abstracta sobre el idioma nativo de una computadora es el lenguaje ensamblador. En lenguaje ensamblador, a todo se le dan nombres simbólicos amigables para los humanos. El programador trabaja con operaciones que el microprocesador sabe cómo hacer, cada una con un nombre simbólico. Los objetos en el microprocesador y las direcciones de las cosas en la memoria de la computadora también pueden recibir nombres significativos. Esto es realmente un gran paso sobre lo que una computadora entiende, pero sigue siendo tedioso para escribir un programa grande. Las instrucciones del lenguaje de ensamblador todavía tienen espacio para pequeños fragmentos de software que necesitan interactuar directamente con el microprocesador y / o aquellos que se ejecutan muchas, muchas, muchas veces.

La Tabla 1.1 es un ejemplo del lenguaje ensamblador DEC PDP-10, una función que devuelve el entero más grande en un grupo de ellos, llamado NUMARY. El grupo contiene miembros NUMNUM.

Tabla 1.1

Espero que esto te haga sentir lo primitivos que son los conjuntos de instrucciones de computadora. No voy a entrar en los detalles de cada instrucción. Si desea revisarlo en detalle por su cuenta, el Lenguaje de la máquina PDP-10 se detalla aquí .

Algunos puntos que quiero exponerte son los tipos generales de cosas que se hacen.

  1. mover objetos (números) a los registros de la computadora: almacenamiento temporal muy rápido,
  2. decrementando el valor en un registro,
  3. comparar los contenidos de un registro con algún valor en la memoria de la computadora, y
  4. transferir el control a una instrucción que no está en el orden secuencial estándar, hacia abajo en la página.

Entonces, como ha visto, los lenguajes de programación de nivel superior proporcionan una funcionalidad similar y en una forma más cercana al idioma inglés.

Pero existe un problema con el lenguaje ensamblador; es único para cada arquitectura de computadora. Aunque la mayoría de las computadoras portátiles y de escritorio en estos días usan la arquitectura Intel, este es solo el caso reciente. Y ... una variedad de arquitecturas de computadoras se usan comúnmente en sistemas de juegos, teléfonos inteligentes, tabletas, automóviles, electrodomésticos, etc.

Bien, estamos casi en un punto en el que puedo mostrarle el lenguaje de máquina, el idioma * nativo * de una computadora. Pero para que lo entiendas, voy a tener que explicar cómo se representa todo en una computadora.

COMPUTADORAS INTERNAS: PEDAZOS Y PIEZAS

Su computadora crea con éxito la ilusión de que contiene fotografías, letras, canciones y películas. Todo lo que realmente contiene son bits, muchos de ellos, modelados de formas que no se pueden ver. Su computadora fue diseñada para almacenar solo bits: todos los archivos, carpetas y diferentes tipos de datos son ilusiones creadas por programadores de computadoras.

( Hal Abelson, Ken Ledeen, Harry Lewis, en "Blown to Bits" )

Básicamente, las instrucciones de la computadora realizan operaciones en grupos de bits. Un bit está encendido o apagado, como una bombilla. La figura 1.3_a muestra un interruptor abierto y una bombilla que está apagada, al igual que un transistor en una computadora representa un bit con el valor: cero. La figura 1.3_b muestra el interruptor en la posición cerrada y la bombilla encendida, de nuevo como un transistor en una computadora que representa un bit con el valor: uno.

[gallery size="full" columns="2" link="none" ids="504,505"]

Un microprocesador, que es el corazón de una computadora, es muy primitivo pero muy rápido. Toma grupos de bits y se mueve alrededor de sus contenidos, agrega pares de grupos de bits, sustrae un grupo de bits de otro, compara un par de bits, etc ... - ese tipo de cosas.

Dentro de un microprocesador, en un nivel muy bajo, todo es simplemente un conjunto de interruptores, también conocidos como bits: ¡cosas que están activadas o desactivadas! Es hora de expandirse sobre cómo se hace esto; Primero, exploremos cómo se pueden usar grupos de bits para formar números.

 REPRESENTACIÓN NUMÉRICA CON BITS

Solo hay 10 tipos diferentes de personas en el mundo: los que saben binario y los que no.

- Anónimo

Las computadoras están llenas de tropecientos bits que están activados o desactivados. La forma en que hablamos del valor de un poco en las comunidades de ingeniería eléctrica y ciencias de la computación es primero como un valor lógico ( verdadero si está activado , falso si está desactivado) y segundo como un número binario (1 si el bit está activado y 0 si es apagado). La mayoría de los bits en una computadora se manipulan en grupos, por lo que los humanos necesitamos una forma de describir grupos de bits, cosas / objetos que una computadora manipula. Hoy en día, los bits a menudo se agrupan en cantidades de 8, 16, 32 y 64.

Piense en cómo escribe números secuenciales comenzando con cero: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, etc. ... Nuestro sistema de números decimales tiene diez símbolos. En esta serie secuencial, cuando nos quedamos sin símbolos, los combinamos. Aprendiste a hacer esto hace tanto tiempo, en la escuela primaria, que hoy simplemente piensas en términos de números de un solo dígito, luego decenas, cientos, miles, etc. ... El número decimal 1234 es mil, doscientos, tres decenas y cuatro unidades.

Entonces, ¿cómo funciona el sistema de números binarios en las computadoras?

Bueno, con solo dos símbolos, escribiríamos los mismos números secuenciales que antes: 0, 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011. El número decimal 1234 en binario es 10011010010.

Dado que incluso los números razonables que utilizamos todo el tiempo forman números binarios muy largos, los bits se agrupan en 3s y 4s que son simples de convertir en números en los sistemas numéricos octales y hexadecimales. Para octal, agrupamos tres bits juntos. Tome el equivalente binario del decimal 1234, 10011010010, y coloque espacios entre cada grupo de tres bits, comenzando por la derecha y yendo a la izquierda.

10011010010 = 10 011 010 010

Ahora use los símbolos 0, 1, 2, 3, 4, 5, 6 y 7 (ocho símbolos, tan OCTAL) para reemplazar cada grupo.

10 011 010 010 = 2 3 2 2 = 2322

Las representaciones octales de los patrones binarios son ciertamente más fáciles de leer, escribir y recordar que las contrapartes binarias. Se puede lograr una representación aún más compacta al agrupar los bits en grupos de cuatro y convertirlos a hexNumerales.

Cuando agrupe cuatro bits y use dieciséis símbolos (0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 0, A, B, C, D, E y F) como sus abreviaturas, tienes una representación hexadecimal.

10011010010 = 100 1101 0010 = 4D2

A medida que continúe explorando cómo funcionan las computadoras, escuchará más sobre los números expresados en octal y hexadecimal; estas son solo representaciones más manejables de la información binaria: el mundo digital .

La Tabla 1.2 compara los sistemas de números decimal, binario, octal y hexadecimal.

Tabla 1.2

Entonces, si los grupos de bits más comunes en una computadora son 8, 16, 32 y 64, ¿qué tipos de números pueden representar estos grupos?

Un grupo de ocho bits tiene valores binarios 00000000 a 11111111, o expresados en decimal de 0 a 255. Un grupo de dieciséis bits tiene valores binarios de 0000000000000000 a 1111111111111111, o de 0 a 65535 decimales. No voy a escribir representaciones binarias para grupos de 32 y 64 bits. El rango de valores decimales para un grupo de 32 bits es de 0 a 4.294.967.295. El rango de valores decimales para un grupo de 64 bits es de 0 a 18,446,744,073,709,551,615 - o casi un dieciocho y medio quintillón .

Pero espera ... estos números son todos positivos (números enteros). Si vamos a permitir operaciones de resta en números, que pueden dar como resultado números negativos, necesitamos enteros. Las computadoras modernas usan un bit en cada uno de los grupos para representar el signo (positivo o negativo) cuando los grupos se usan para representar números enteros.  La Tabla 1.3 muestra el rango de números que pueden representarse con grupos de 8, 16, 32 y 64 bits.

Eso es lo más profundo que quiero llegar a la representación de los números en las computadoras y los sistemas numéricos binarios, octales y hexadecimales. Sí, las computadoras tienen operadores de división, pero no voy a cubrir los números que incluyen partes fraccionales, es decir, los números "racionales" e "irracionales" debido a la complejidad de sus implementaciones. Si quieres leer más, busqué en Google y encontré lo que parece ser un buen lugar para que leas más. Comience en All About Circuits - Sistemas de numeración y léalos y continúe por algunas páginas web más en la serie.  El enlace al número binario al comienzo de esta sección apunta a una página de Wikipedia que también le dará profundidad adicional, incluida la historia del sistema de números binarios.

SÍMBOLOS COMO BITS - CARACTERES ASCII

Ok, entonces los números son simplemente grupos de bits. ¿Qué otros objetos manipularán las instrucciones de la computadora? ¿Qué hay de los símbolos que componen un alfabeto?

No debe sorprender que los símbolos que componen los alfabetos sean solo números, grupos de bits, también. Pero, ¿cómo sabemos qué números se utilizan para representar qué símbolos o caracteres, como los voy a llamar a partir de este momento?

Se trata de estándares. En estas lecciones, usaremos el estándar del Código Estándar Estadounidense para el Intercambio de Información (ASCII). Es tan ubicuo que incluso tiene su propia página web, www.asciitable.com .

Veamos un par de ejemplos, entradas en la tabla. Aquí hay algunos caracteres, su valor decimal y su valor binario que luego se transforma en un número octal.

Uppercase 'A' = decimal 65 = binary 01000001 = 01 000 001 = octal 101
  Uppercase 'Z' = decimal 90 = binary 01011010 = 01 011 010 = octal 132
  The digit '1' = decimal 49 = binary 00110001 = 00 110 001 = octal 061

La Tabla 1.4 es una pequeña porción del conjunto completo de caracteres ASCII, lo suficiente para darle un sabor de su organización.

Aquí hay un poco de trivia, de días pasados cuando las computadoras eran tan lentas (en comparación con el día de hoy).

COMPRUEBA TU COMPRENSIÓN HASTA EL MOMENTO

Tómese un momento para ver si comprende la explicación de los números binarios.

AQUÍ hay un programa jLogo que convierte un byte de 8 bits en números y caracteres ASCII. ¡Pruébalo! .

PÍXELES

La imagen en la pantalla de su computadora (en realidad todas las cosas digitales) consiste en un grupo de puntos de colores llamados píxeles. Un pixel es un objeto. Tiene un color y una posición (sus coordenadas) que consiste en la fila y la columna en la que se encuentra. La Figura 1.4 muestra la interpretación de un artista, un aumento de una pantalla con un círculo dibujado en amarillo. Los pequeños puntos negros son los píxeles y los grandes puntos amarillos son los píxeles que se han coloreado.

Figura 1.4

Como ejemplo, para mostrar una línea vertical delgada, los valores de color de una columna de píxeles se establecen en el color deseado de la línea. Si desea una línea vertical más gruesa, configure los valores de color de los píxeles de un grupo de columnas consecutivas con el color deseado. La figura 1.5 muestra una línea roja de un píxel de ancho y una línea naranja de tres píxeles de ancho. La línea naranja es en realidad un rectángulo muy delgado.

Figura 1.5


Siga este enlace a un applet que le permite experimentar pintando píxeles ampliados.

Por lo tanto, la ubicación de cada píxel obviamente se especifica mediante un par de números; ¿qué pasa con el color del píxel?

Bueno... el color de un píxel también se especifica como números, tres de ellos, llamados valores RGB (rojo, verde, azul). Juega con el siguiente programa JavaScript que te permite ver qué valores numéricos generan qué colores. ¿De qué color sale si establece el rojo en 170, el verde en 85 y el azul en 255? ¿Cuál es el valor RGB para tu color favorito?

Entonces, así como los grupos de bits representan números y símbolos, se usan para formar píxeles.

Exploración opcional: ¿por qué rojo, verde y azul? ¿Por qué estos colores?Hay muchas buenas explicaciones en Internet. Si está interesado, busque en la red o revise la entrada de Wikipedia para ver el color .

Ok ... Te expuse a una variedad de objetos que ves comúnmente cuando estás usando una computadora, cosas que pueden ser manipuladas con instrucciones en un lenguaje de programación de computadora. Ahora pasemos a las instrucciones de la computadora, ¡una cosa más que es solo un montón de bits!

LENGUAJES DE PROGRAMACIÓN
EL LENGUAJE DEL MICROPROCESADOR

Entonces, todo lo que una computadora tiene son bits. Has visto cómo se usan para representar cosas, píxeles, números y personajes. Mencioné que las computadoras realizan operaciones en los bits, como moverlos, agregar pares de ellos, etc. Una última pregunta obvia es: ¿cómo se representan las instrucciones que representa una computadora?

Bien, si instruyó a una computadora en su lengua materna (lenguaje de máquina), tendría que escribir instrucciones en forma de (sí, una vez más) números binarios . Esto es muy, MUY difícil de hacer. Aunque los pioneros de la informática lo hicieron, nadie lo hace en estos días.

Solo para darle algo que ver, solo para comparar, la Tabla 1.5 muestra cómo podría parecer el programa de lenguaje ensamblador de la Tabla 1.1 suponiendo que las instrucciones de la máquina se cargan en la memoria en las direcciones 100 a 107. Además, el grupo de números comienza en la dirección de memoria 111 y el tamaño del grupo está en la dirección de memoria 110.

Una explicación detallada del conjunto de instrucciones de cualquier computadora va más allá de lo que se puede presentar aquí. Solo quería que veas cómo la información simbólica en los programas de lenguaje ensamblador debe convertirse en números (bits) antes de que una computadora pueda realizarla. 

Si realmente quiere más detalles ahora, aquí hay una lección adicional de uno de mis libros introductorios favoritos de informática: The Computer Continuum.

La lección lo guiará a través de la programación de una computadora robótica muy simple. Y escribí un simulador para Robot Computer en jLogo con el que puedes jugar AQUÍ.

DEPURACIÓN

Ninguna introducción a la programación de computadoras estaría completa sin mencionar al menos la depuración . El término se refiere al descubrimiento y corrección de errores en programas de computadora. La computadora está haciendo lo que le ordenaste que hiciera, no lo que querías que hiciera. Si te gustan los acertijos, hay muchas posibilidades de que encuentres el proceso de depurar un desafío interesante.

El origen del término proviene de un error (una polilla) encontrado en un relevo de una computadora en 1947, por el almirante Grace Murray Hopper . Ella descubrió por qué su programa no funcionaba.

Figura 1.6

La depuración es un proceso. La buena noticia para nosotros es que los errores en los programas de nivel introductorio no son tan difíciles de diagnosticar y corregir. Básicamente se está reduciendo en las instrucciones, o dos, que no están haciendo lo que pretendías. Los pasos que debes seguir son como resolver acertijos Sudoku o Mastermind.

La depuración de un programa se puede hacer en pasos que coincidan con el Método científico .

  1. Observación,
  2. Hipotetizar,
  3. Haz predicciones, y
  4. Prueba

En el paso de observación, piensas mucho sobre lo que está sucediendo frente a lo que esperabas que sucediera. Un ejemplo es un programa que está dibujando algo, pero el revoltijo de líneas que ve en la pantalla no se ve bien. O bien, su programa tiene un botón que no hace nada cuando hace clic en él. Como programador, te acercas a estos errores como el legendario Sherlock Holmes se acercó a sus casos. Revise el programa que ha escrito y haga preguntas como: "¿Cómo podrían estas instrucciones producir lo que está sucediendo?"

La observación debería llevarte al punto donde puedes hacer una hipótesis sobre el mal comportamiento. Para que el dibujo no salga bien, una hipótesis podría ser algo así como: "Si el cálculo de las métricas (orientación, longitud, ...) de la primera línea está desactivado, eso podría producir lo que estoy viendo". Para que un botón no funcione, una hipótesis podría ser: "Si la ubicación del mouse cuando se hace clic se calcula incorrectamente, el programa ignorará el clic". Las hipótesis hechas a menudo se basan en la intuición. Esto se debe a que normalmente la persona que depura escribió el programa o al menos lo modificó.

Dada una hipótesis, el siguiente paso es descubrir cómo probarlo prediciendo lo que debería suceder si la hipótesis es correcta. Continuando con el ejemplo del programa de dibujo que funciona mal, digamos que nota algún código fuente que podría no producir resultados adecuados si lo que se le da no está dentro de los límites esperados. Este código podría producir resultados extraños. Esta es una predicción

Finalmente, se modifica el programa o se usa una función de depuración en el entorno de programación para probar la predicción. La modificación del programa puede ser la adición de instrucciones para imprimir cosas en la pantalla. La mayoría de los entornos de programación incluyen funciones de depuración, como el seguimiento o la configuración de puntos de interrupción para suspender un programa y examinar su estado interno. De cualquier manera, el programador recopila más información sobre lo que el programa está haciendo realmente, que es, en el caso de los errores, no lo que usted espera.

Las pruebas, incluso si no proporcionan una respuesta, le brindan información adicional que se puede usar para repetir el proceso. Estrechas tu exploración hasta que encuentres tu error.

FINALMENTE, ¿QUIÉN FUE EL PRIMER PROGRAMADOR DE COMPUTADORAS?

Ok ... ya que estás leyendo esto, accediendo a esta página web en la red, tienes Google y lleva una fracción de segundo responder a esta pregunta.

 

De la entrada de Wikipedia para Ada Lovelace :

 

Ada Lovelace , fue una matemática y escritora inglesa conocida principalmente por su trabajo en la computadora mecánica de propósito general temprana de Charles Babbage , la Máquina Analítica . Sus notas sobre el motor incluyen lo que se reconoce como el primer algoritmo destinado a ser llevado a cabo por una máquina. Debido a esto, a menudo se la describe como la primera programadora de computadoras del mundo

 

RESUMEN

La programación de computadoras es componer / autorizar un proceso / procedimiento para hacer algo, la representación de algoritmos en código fuente, con gran detalle.

pro-ce-eso / Sustantivo:
  una serie de acciones o pasos para alcanzar un fin.
  pro-ce-di-mien-to /
  Sustantivo: una serie de acciones llevadas a cabo en un cierto orden.
  al-go-rit-mo / Sustantivo:
  un conjunto ordenado de pasos para resolver un problema.
  

Como las computadoras no entienden inglés y sería imposible para un humano escribir un programa grande como una serie de números binarios que la computadora puede entender, necesitamos algo intermedio. Los lenguajes de programación de alto nivel actualmente caben en esta categoría. Dado el lenguaje de programación que ha elegido, siga las reglas para redactar declaraciones (o expresiones) que le indiquen a la computadora que haga lo que desee.

Debido a que una computadora es simplemente un manipulador muy rápido de bits (unos y ceros), a través del poder de la abstracción, los científicos de la computación tienen niveles de representación de objetos y funcionalidad, uno encima de otro. Ahora hemos estado trabajando en refinar y extender estas capas durante más de medio siglo. La Tabla 1.6 debería darle una idea de cómo nos encontramos con los lenguajes de programación de computadoras de hoy.

¡En la próxima lección comenzarás a escribir programas en Logo!

EJERCICIOS

LECTURA ADICIONAL

¡El libro "Blown to Bits" está disponible en línea gratis !
Encuentre las partes que le interesan y lea más sobre BITS...