icono-menu
icon-accountMi cuenta Carrito

Programaci贸n y razonamiento

Por Biltron 4 de abril de 2023 Javier Romera No hay comentarios
Biltron-Blog-Javier-Romera-Programacion-Razonamiento-ensamblador-1

Javier Romera repasa su experiencia en programaci贸n. Desde la 茅poca en la que programaba en ensamblador usando un “human and pen assembler”, hasta el momento actual en el que ve c贸mo algunos programadores usan herramientas como MIT APP INVENTOR para programar jugando a rompecabezas. Parece que no aprendemos esta m谩xima: pensar primero y programar despu茅s.

Una historia personal.

Mucho tiempo ha pasado desde que se comenz贸 el concepto de programaci贸n. Y mucho tiempo ha pasado desde que, en mi 茅poca de estudiante, programaba mi UC 1003 EMR聽(tra铆do oculto ilegalmente desde Francia, ya que hab铆a que declararlo en la frontera) en lenguaje ensamblador empleando el 鈥human and pen assembler (t茅rmino que uso para describir que no ten铆a ning煤n medio para emplear un ensamblador real).

De ah铆 al BASIC que se empleaba en alguna asignatura de la carrera. Sobre un PDP 11聽con terminales electromec谩nicos a 110 bauds hab铆a un salto enorme… hacia atr谩s.聽

Al comenzar a trabajar dispuse de acceso a un INTEL MDS-80, que inclu铆a un ensamblador y 隆oh maravilla! un compilador de un lenguaje de alto nivel: PL/M.

Y el mundo se lanz贸 a una carrera. Ordenadores personales que empezaron a ser asequibles; aparecieron compiladores a precio 鈥渞azonable鈥 que antes solamente eran asequibles para grandes corporaciones; bajaron los precios de los ordenadores mientras aumentaban sus capacidades; y aparecieron los ensambladores y compiladores libres y otros gratuitos鈥

Llegamos a hoy, en el que veo c贸mo algunos 鈥減rogramadores鈥 (perm铆taseme聽 el uso de comillas) son usuarios asiduos de MIT APP INVENTOR y programan jugando a los rompecabezas.

Biltron-Blog-Javier Romera-Programacion-Razonamiento-3

Libros para pensar.

Todo esto viene a colaci贸n del hecho de que, a pesar de haber empleado a lo largo de mi carrera una amplia gama de lenguajes en mayor o menor medida, hay una cosa que no parece haber cambiado mucho: independientemente del lenguaje ensamblador utilizado, entorno de trabajo que se emplee, es necesario pensar primero y programar despu茅s.

Hay numerosos libros dedicados a la 鈥渇ilosof铆a de la programaci贸n鈥 y se han elaborado numerosos estudios dedicados a c贸mo programar mejor. El libro The Mythical Man-Month supuso una revoluci贸n en un mundo en el que el tama帽o de los programas y la cantidad de memoria crec铆an de forma r谩pida. Mientras, la complejidad de los programas lo hac铆a de forma exponencial hasta hacerlos inviables por falta de organizaci贸n.

Pero hoy hablar茅 de uno que supuso para m铆 un avance, o m谩s bien una reafirmaci贸n, en mi forma de tratar de la programaci贸n. No es ese que comienza con la frase 鈥cualquier idiota puede escribir c贸digo鈥. Ese lo dejo para otro momento.聽

El libro se refiere a un lenguaje de programaci贸n ya en declive: el lenguaje FORTH. El libro en cuesti贸n se titula 鈥Thinking FORTH: A Language and Philosophy for Solving Problems鈥 y puede descargarse desde este enlace.

Pensar primero.

Solicita a un arquitecto que haga una casa. Es poco probable que lo primero que haga sea ir a por una excavadora y presentarse en el terreno. Dile a un programador que haga un programa y muy probablemente se abalanzar谩 sobre el teclado para comenzar a escribir c贸digo.聽

La misi贸n de un programador no es 鈥渆scribir un programa鈥 sino 鈥渞esolver un problema鈥 (que puede resolverse mediante programaci贸n). Para resolver un problema, el primer paso es comprender el problema. 鈥Lee atentamente el problema y compr茅ndelo antes de intentar resolverlo鈥, me dec铆a mi profesor de matem谩ticas.

Y eso no se hace comenzando a escribir c贸digo.

Biltron-Blog-Javier-Romera-Programacion-Razonamiento-2

Analizar lo global y pensar en el detalle.

Atacar un problema complejo de forma global es una tarea inabarcable. Pero perder la visi贸n global nos hacer perder la esencia del problema que se ataca. Dividir el problema en partes ayuda a ver m谩s en detalle cada parte. Pero 隆cuidado! Cada parte debe analizarse pensando en su relaci贸n con las otras partes.聽

Esta aproximaci贸n doble debe realizarse una y otra vez hasta tener el todo y las partes claramente organizadas en la mente, en un esquema sobre un papel鈥 A partir de este momento se puede comenzar a codificar. Al comenzar a codificar con la visi贸n global, se es m谩s consciente de lo que se hace y las implicaciones que tiene para el resto del trabajo. Y es posible que surjan cambios de visi贸n.聽

Comprobar el resultado y aprender.

Un programa es una obra compleja. Pero, a diferencia de otras obras, un programa tiene que funcionar. No solo m谩s o menos, sino lo m谩s cerca que sea posible de la perfecci贸n.聽

Desgraciadamente, no es f谩cil ver los fallos de nuestra propia obra. Se necesita un esp铆ritu cr铆tico para reconocer los propios fallos. Pero es necesario para mejorar. Cada fallo debe ser una fuente de razonamiento para mejorar. Lo que nos hace mejores programadores es la mejora de la visi贸n global del trabajo (recordemos: 鈥渞esolver problemas鈥) y no una lista de posibles errores de estilo que pueda corregir un 鈥lint.

Biltron-Blog-Javier-Romera-Programacion-Razonamiento-4

Conclusi贸n.

Cada persona, en base en la experiencia acaba creando un estilo propio. Al igual que podemos reconocer la mano de un pintor en un cuadro o la de un arquitecto en un edificio, tambi茅n es posible reconocer a un programador en su c贸digo.聽

Escribir buen c贸digo no es solo seguir unas normas (que pueden ayudar) sino pensar en escribirlo correctamente de principio a fin, es decir, desde el concepto hasta la validaci贸n. Para no cometer errores, usa MIT APP INVENTOR (l谩stima que no sirva para el 99% de mis trabajos. Por cierto, tampoco JAVA).

A pesar de lo que he dicho antes sobre el declive, aprender un lenguaje ensamblador diferente es aprender una forma diferente de pensar. En este sentido, el lenguaje FORTH aporta mucho ya que se trata de un lenguaje con una estructura que obliga a pensar de forma diferente. Dale una oportunidad.

Yo le estoy dando una a Kotlin聽y sus herramientas asociadas como entorno de trabajo para el desarrollo de aplicaciones Android. Y creo que me aporta aspectos nuevos en mi forma de ver este oficio. Un largo viaje desde el ensamblador mental hasta aqu铆.

Enviar comentario

He le铆do y acepto la Pol铆tica de Privacidad .

驴D贸nde comprar componentes electr贸nicos?

Biltron, tu tienda online

Tu tienda de componentes de electr贸nica online e instrumentaci贸n de las mejores marcas del mercado. Compra sencilla, env铆o inmediato y servicio de atenci贸n que te acompa帽a.