Curso de Programación #2 : ¿Qué es programar?

Dibujo de un globo terraqueo con los simbolos del potocolo de internet representando la conectiviad global

¿Qué es programar?

Comencemos por el principio: ¿Qué es programar? Bien, programar es ¡crear un programa!… ¿Y que es un programa? bueno, un programa es sencillamente un conjunto de instrucciones. Emmm … esto … me explico.

Un programa, desde el editor de texto mas sencillo, hasta el juego de ultima generación que imagines, pasando por cualquier programa que utilices en tus dispositivos, no es mas que un conjunto de instrucciones que le indican a tu ordenador o movil correspondiente que hacer, y como interactuar con la persona que sostiene el dispositivo.

Pero … ¡esto es imposible! ¿como va a ser algo tan complejo como un juego sólo un conjunto de instrucciones? pues si, efectivamente , lo es, un conjunto de miles, incluso millones de instrucciones cada una de ellas por separado muy sencilla, pero que funcionando en conjunto, forman algo tan complejo como un juego.

Como el cuerpo humano

El cuerpo humano es muy complejo, y sin embargo esta formado por miles de elementos mas pequeños y especializados, como las células, que trabajando en equipo forman lo que identificamos como “cuerpo humano”, igual funciona un programa.

Cualquier programa que imaginemos consiste en una secuencia de instrucciones , divididas en mutiples comandos pequeños, uno tras otro. Cada uno de ellos se encarga de una parte pequeña de la tarea, el conjunto forma nuestro programa. Puede que hagan falta millones de instrucciones para construir algo tan completo como un juego, pero es eso, una coleccion de instruciones.

Construyendo programas

Para construir un programa, su diseñador ha tenido que interpretar y estudiar las funciones que desaeaba para dicho software, y ha dividido esas funciones en bloques, que a su vez se dividen en funciones , cada una de las cuelaes se compone de varias instrucciones individuales.

Un ejemplo muy sencillo

Si queremos obtener una idea mas aproximada de lo que es un programa, imaginemos que invitamos a un amigo querido a nuestra casa, pero este nos llama por telefono porque se ha perdido. Le pedimos nos indique que es lo que ve a su alrededor para hacernos una idea de donde esta.

Es facil suponer que, a partir de la información de donde se encuentra, de donde queremos que llegue y nuestro conocimiento del lugar, podemos darle una serie de instrucciones que le permitan llegar a nuestra casa.

“Programando” a nuestro amigo

Le diremos, por ejemplo, “Toma la carretare al sur, en el segundo cruce gira a la derecha y continua medio kilómetro, cuando veas una casa con una fachada verde esmeralda, y oigas el sonido del mar, habras llegado a mi casa.”

Si nos fijamos bien, las instrucciones que le hemos propocionado, constituyen un “programa” tal que, si nuestro amigo ejecuta esas instrucciones en secuencia, llegara a nuestra casa. Tan sencillo como eso.

Una cuestión de orden

Es preciso señalar la enorme importancia del orden en las instrucciones de un programa. Si a nuestro amigo le decimos en primer lugar avanza medio kiloentro y luego que gire a la derecha, nuestro amigo aparecerá en cualquier lugar, menos en nuestra casa. Del mismo modo, al escribir un progama, hay que tener en cuenta, tanto las instrucciones que damos a la maquina, como el orden de estas.

No obstante, crear un programa para que un computador lo ejecute es algo que requiere algo mas de tiempo, hemos de tomar un problema complejo y dividirlo en procesos mas sencillos, y estos a su vez en tareas esenciales, de forma que la union de los diferentes elementos individuales, trabajando en equipo, den como resultado nuestro programa.

¿Tengo que aprender Swahili?

En el caso de nuestro amigo, utilizamos nuestro idioma para indicarle, la direccion, pero, si nunca has programado antes, te estaras preguntando que idioma comprende una maquina.

Las instrucciones que podemos dar a una maquina, en muchas ocasiones son tan simples como sumar dos numeros o mostrar una letra en pantalla. Parece poco y extremadamente básico, pero es la unión de miles de estas instrucciones que podemos indicar a la máquina lo que nos permite crear programas.

En equipo

Os preguntareis como es posible crear un programa como un videojuego con solo instrucciones muy simples. Bien, aqui es donde podemos observar hasta donde llega la madriguera de conejos. Para crear un programa de ese tamaño, es posible que cien programadores hayan tenidoq que trabajar en el codigo ocho (o mas) horas al dia durante varios años. Pero no se asusten, nosotros empezaremos por el principio y veran que se pueden lograr objetivos interesantes en poco tiempo 🙂

Precisión, precisión, precisión

Ahora centremos nuestra atencion en la importancia de la precisión en las instrucciones que demos a la maquina. Un programa contendra un gran numero de instrucciones ejecutadas a una gran velocidad.

Si a nuestro amigo le indicamos tan solo una instruccion incorrectamente, puede acabar en cualquier lugar excepto en nuestra casa, ademas, entre tantos miles de instrucciones, no es trivial localizar la que causa el problema, por lo que deberemos ser extremadamente cautelosos.

Comandos

En programacion usamos diferentes lenguajes para escribir estas instrucciones, a traves de lo que llamamos comandos, un comando en programacion es algo asi como una frase en ingles, se usan palabras, numeros y signos de puntuacion para expresar ideas que explican a la computadora que hacer en cada momento.

Algunos comandos son muy cortos, otros contienen mas informacion, pero en esencia, todo se basa en secuencias de comandos que describen de forma precisa un proceso y las posibles variaciones que existen en este. En algunos lenguajes, cada comando se termina con un punto y coma, de forma similar a como finalizamos nuestras frases con un punto. En otros esta diferenciacion se realiza mediante un salto de linea. Esto dependera del lenguaje, pero os preocupeis ahora mismo por esto, lo iremos viendo poco a poco.

No todos son iguales

Cada lenguaje es unico, los hay expresados en mayusculas, otros todo en minusculas, otros no toman en cuenta esto y otros son extremadamente estrictos en este punto, sin embargo, lo principal es entender la sintaxis, es decir la gramática de dichos lenguajes. Lo veremos poco a poco, pero tómese en cuenta que dependiendo de la situación, el entorno o la máquina puede hacer falta usar diferentes lenguajes.

No se asusten, comenzaremos por comprender uno bien, y, una vez hecho, no les resultara especialmente complicado utilizar otros.

Finalizando

Un pequeño consejo, si no sabeis mecanografía, es el momento de aboradar su estudio a la vez que el presente curso. Pensad que la programacion se basa integramente en texto, y creedme, se acaban pasando muchas horas delante del un teclado. Por tanto, maximicen su velicidad editando texto, sea cual sea el metodo o herramienta que utilicen para ello, incluso si es un sistema basado en switch.

Por último, tomen en cuenta que programar es el arte de tomar un problema complejo, dividirlo en tareas mas sencillas y crear programas de forma que la maquina, siguiendo estas instrucciones que le hemos indicado, sea capaz de resolver el problema inicial de forma eficiente.


Curso de Programación #1: Inicio

Dibujo de un globo terraqueo con los simbolos del potocolo de internet representando la conectiviad global

Bienvenidos al Curso de Programación.

Hoy vamos a realizar una pequeña introduccion sobre lo que haremos antes de pasar al contenido.

Comenzamos.

Lo que pretendemos hacer aqui es iniciar un camino en el que no solo se trata de enseñar a todo aquel dispuesto a aprender o interesarse por este mundo de la programacion, es algo más amplio.

No es solo poder echar una manita a todo aquel dispuesto, a través de este curso, sino que ademas pretendo aumentar la base de programadores que, de serie, tienen en cuenta la inclusión.

Es algo conocido que nos centramos mucho en la parte visual a la hora de definir como deben de funcionar los interfaces de usuario y aunque no será en este curso donde trataré directamente cuestion del diseño accesible, es interesante tener estas cuestiones en cuenta mientras exploramos la base de la programación.

Una vez hayamos completado el curso de programación, y el de html que se publicar en paralelo avanzaremos juntos en esa direccion pero lo primero es lo primero.

El objetivo prioritario no es solo aprender a programar, sino hacerlo a ciegas. Y no solo a ciegas en el sentido de utilizar medios de apoyo para suplir lo que no tenemos de vista, no, se trata de ser capaces de programar a ciegas usando nuestra mente de un modo mucho mas potente que la media de programadores actuale.

Todo esto, seamos o no videntes, y no de los de las pelotas (bolas) de cristal, sino de aquellos que ven o no ven. Esto va a ser independiente en este caso, vamos a aprovechar para aprender a hacer las cosas razonandolas y posteriormente poniendonos en nuestro ordenador con nuestro editor de texto y demas manteriales.

¿Que materiales vamos a necesitar?

Pues algo muy sencillo, y que ya les adelanto desde aquí, voy a basar el programa, el curso, el viaje que predendo realizar con ustedes, porque no solo van a apdender, o trato de que aprendan ustedes, sino que yo mismo voy a aprender muchisimas cosas en el proceso, no solo de accesibilidad, sino de la misma programación y de como debe ser, por tanto, usemos los materiales mas asequibles que sean posibles.

Tras analiar varias perspectivas y varias opciones, aunque Python (paizon/piton), es un lenguaje muy atractivo en este sentido por su amplia variedad de entornos, pienso que debo ir a algo aún mas sencillo y ubícuo.

Teniendo en cuenta todas las argumentaciones que he ido tomando en este tiempo vamos a centrarnos en usar:

  • Un Navegador Web , el que sea, de su elección (a ser posible moderno)
  • Un editor de texto plano, no un word, algo del estilo de TextEdit, UltraEdit, IAWriter, Coda, cualquier editor de texto puro y duro, incluso el NotePad de Windows sirve.

Evidentemente si alguno de vosotros tiene un editor de texto puro y duro mas avanzado, o que le guste utilizar , es libre de usarlo , incluso editores de texto de código fuente.

No voy a imponer ninguna barrera en este sentido, ya que creo que el mejor medio de enseñar la base sin complicar la vida a nadie, con entorno ni otras cuestiones es usar una mínima base de HTML sobre la cual podamos ejecutar Javascript y utilizarndo nuestro navegador, para aprender los fundamentos de la programación.

Así pues los materiales a utilizar son tan sencillos como un editor de texto y un navegador.

En principio esto está muy pensado para hacerlo en un ordenador, pero no veo la razon por la cual no podamos usar un editor de texto sobre una carpeta de Dropbox y abrir los ficheros con Safari (u otro navegador web).

Así que cada cual puede crearse su entorno de una forma muy sencilla, porque todo lo que haremos seran ficheros de texto y ejecución en un navegador. Todo muy sencillo, muy limpio y accesible de tal manera que cada cual puede elegir el entorno que tenga accesbilizado o de uso diario si no utiliza herramientas de accesibilidad.

Aquellos de vosotros que nunca han utilizado una herramienta de apoyo, que nunca ha utilizado VoiceOver y que nunca ha utilizado nada relativo a herramientas que suplen discapacidades sensoriales, les insto a que vayan investigando sobre la materia.

Que es un lector de pantalla, si usan ios VoiceOver … o Mac, si usan Windows puede ser Jaws o les recomiendo mejor NVDA que es software libre, en el caso de Linux hay otros lectores (Orca por ejemplo), pero investiguen un poquito sobre lo que supone utilizar un ordenador a ciegas, porque muchos de los aspectos que vamos a tratar en este curso tienen que ver con hacer las cosas sin ver la pantalla, independientemente de que luego podamos usar los ojos.

Accesibilidad Universal

No quiero decir que aquellos de vosotros que veais no utiliceis los ojos, pero si quiero que aquellos que no ven se aproximen un poquito a lo que supone ver y que aquellos que ven se acerquen un poquito a lo que supone no hacerlo.

Yo estoy a medio camino , no me considero maestro ni de un lado ni del otro , sencillamente hare lo que pueda para que, entre todos, avancemos en el camino.

No obstante si intento integrar estas ideas, no, los videntes tienen la culpa de ver, ni los ciegos de no ver. Esta es una barrera que hemos de romper y encontrarnos en el centro.

Los que no ven pondiendose en el lugar y tratando de comprender los conceptos como los que ven para , eventualmente, poder llegar a diseñar a ciegas, que sera el tercer curso que avanzare en un futuro, una vez termine de aprender lo necesario para comenzar a contarlo.

Por otra parte para sentar las bases comunes que compartimos todos los que participamos en este proyecto y de este modo llegar al compromiso de la accesibilidad universal, un solo interfaz, que se adapte no solo al dispositivo, como trata el concepto de “Responsive” sino a la persona que tiene delante.

Llamemoslo “accesibilidad universal” hasta que acuñemos un termino mas apropiado, o incluyamoslo directamnete dentro del concepto de responsive.

Para mi “Responsive” deberia significar adaptarse al dispositivo, al mensaje y al receptor, incluso al emisor si este está implicado en el proceso de interacción.

Pero bueno, esto son conceptos mas filosoficos que quiza trataremos mas adelante, aqui y ahora vamos a centrarnos en programar y hacer que el navegador, a través de Javascript, realice ejercicios por nosotros y adquirir una base suficiente de programación que nos permita lograr que la maquina haga por nosotros aquello que le pedimos.

Vamos a comenzar por el principio, que es programar, pero nunca perdamos de vista, y no perdamos la perspectiva de que el objetivo a largo plazo no es solo programar, no es solo hacerlo sin depender de nuestra vista, de nuestro oido, de nuestro olfato y de nuestro tacto, sino supliendo aquello que no tengamos y optimizando el metodo para hacerlo todo lo rapido que seamos capaces, y todo lo bien que podamos pero tomando siempre en consideracion el hecho de que es la maquina la que debe adaptarse a la persona y no alreves.

Sentando las Bases

Lo dicho, esto ha sido el primer capitulo del Curso de Programacion introductorio en el que pretendo sentar ciertas bases filosoficas en torno al proyecto y quiero hacer constar aqui que, aunque tengo amplia experiencia en programacion, ()llevo haciendolo desde los 8 años y profesionalmente desde los 22) esto no quiere decir que yo sea el mejor programador del mundo ni lo que yo diga vaya a misa.

Lo que yo proporcione aqui sera mi punto de vista, lo mejor que haya encontrado, la forma que perciba mejor de explicarlo, pero en cualquier caso busco que todos los que participemos en el proyecto interactuemos a fin de llevar a cabo el objetivo de formar a mas programadores sensibilizados con la accesibilidad de serie y que tomen en cuenta estos conceptos de que no solo se trata de discapacidad, sino de las capacidades de las personas mayores y de las diferentes capacidades y formas de entender el mundo de diferentes personas.

¿Porque?

Por que a dia de hoy acabamos de aterrizar en dispositivos, incluido Android que cada vez mas nos proveen de herramientas de accesibilidad más básicas ya includas mas o menos, si el proveedor no las destruye, ios ya viene muy accesibilizado aun con sus fallos, inclusve en Windows a traves de NVDA se puede montar un sistema accesible con una inversion economica razonable … pero.

Pero, aunque estamos entendiendo muy bien que hemos de crear interfaces que respondan perfectamente al dispositivo del usuario, todavia no hemos comprendido que el objetivo final de nuestro interfaz de usuario es que la persona que hay detras de ese dispositivo sea capaz de manejarlo de la forma más optima respecto de sus capacidades y de su forma de entender el mundo.

Y esto es lo que vamos a trabajar aqui, o lo que pretendo trabajar aqui no solo la programación, sino el pensar mas alla a la hora de hacer las cosas.

Este curso funciona en consonancia … o en paralelo, con el curso de HTML. Os recomiendo seguir ambos.