miércoles, 23 de enero de 2019

"Cariño ¿me enseñas a programar?"

A comienzos de este año, mi pareja me sorprendió haciéndome la pregunta que tiene por título el post de hoy. Ya os conté que en agosto mi pareja se hizo del team GNU/Linux, y ahora le está dando un poco a la programación. Fue una grata sorpresa para mí, pero parece que quiere hacer ella también sus propias herramientas para automatizar sus tareas.


Yo ahora mismo le estoy enseñando C++ y la programación de scripts en GNU/Linux para que así vea un poco de programación orientada a objetos, y un lenguaje interpretado. Sé que a lo mejor lo ideal para empezar sería por Python, pero aquí si programamos como Richard Stallman manda. 

Lo curioso es que le está pegando bastante fuerte y, para estar aprendiendo, y más con C++, hay veces que hace cosillas con el código que me sorprenden bastante. Le he pedido permiso para enseñar algunos de los códigos que ha realizado ella y me ha dado permiso. Son códigos de ejercicios que le mando hacer para afianzar lo que le he enseñado. Dicho esto, vamos a ver sus primeros códigos.


A ver, hay cosillas que se pueden mejorar sin duda, pero está empezando, entendedlo. En este primer programa, yo le dije que hiciese algo sencillito, que pida 2 valores al usuario y que muestre algunas operaciones aritméticas. 

Yo lo que veo es, para empezar, una ausencia de comentarios bastante grande. Sé que es un código para una tarea muy sencilla, pero precisamente por esta razón los comentarios cobran un sentido mayor. Después también está el tema de declarar, línea por línea cada variable. Queda feo y además hace que haya más líneas cuando en una, podría declarar todas las variables. Algo como esto

int n1,n2, sum=0, diff=0,mult=0,div=0;

Y la verdad es que poco más que destacar. Me hizo gracia ese system para dar una pausa al programa, pero me pareció interesante.


Su ejecución no es muy complicada, basta con compilar (algo que ya sabe ya que es casi lo primero en aprender) con g++ y ejecutarlo. No hay mucho más, hace lo esperado. Pero donde me llevé una sorpresa mayor es en el segundo código.


También le pedí que hiciese ella un ejercicio a su gusto, y creo que este código es un testeo para una especie de calculadora para las cuotas de autónomos que tiene que pagar ella. Me llamó mucho la atención ese system inicial para limpiar la pantalla. Me gustó mucho ya que a mí me gusta que, cuando ejecuto un software, vea por la terminal solamente el software, nada de un ls encima ni nada. Un minipunto por eso.

También valoré positivamente el que incorporase el endl para añadir un espacio. Esto se lo expliqué, pero antes utilizó un \n en lugar de endl, cosa que aquí no, por lo que al menos está testeando varios caminos para obtener el mismo resultado, y eso para mí cuenta mucho.

Pero donde aluciné más es con la parte final, ya que el crear un archivo no se lo he explicado. Es decir, esas líneas las ha tenido que buscar ella por su cuenta, lo que ese aprender por autodidacta cuando es algo que está aprendiendo porque quiere, lo valoro muy pero que muy bien.

Por supuesto le pregunté que por qué hizo eso de crear un fichero. Os trascribo la conversación porque hay algunas cuestiones que no tienen desperdicio:

"Manu: Oye Lucia, he visto tu código para calcular el precio con el iva de un producto
  Lucia: ¿Y qué te parece?
 Manu: Bastante bien en general, sigues sin poner comentarios pero bueno. Solo una pregunta ¿Por qué creaste un fichero?"
 Lucia: ¿Por? No tiene sentido hacer eso que he hecho ¿no?
 Manu: No, no es por eso, es que me ha sorprendido bastante
 Lucia: Pues no sé, es que lo que quería era pasar los precios a un archivo y después manipular ese fichero con un script de linux para ponerlo en una especie de Base de datos, pero no sabía pasarlo a una base de datos, eso me tienes que enseñar"

Por lo visto, lo que quería era es hacer una llamada a ese script del que habla desde C++ con la función system() y que ese script ya pasase los precios a una base de datos. Me parece una idea interesante sin duda. 

Lo que le comenté es que, a lo mejor, necesitaba primero un bucle while en su programa en C++ para ir añadiendo precios sin tener que estar ejecutando el programa cada vez que quiera añadir un precio si los quiere añadir todos a la vez. También le dije que, a lo mejor, sería interesante ejecutar primero un script con una llamada desde system() para que sacase los precios sin aplicarle el IVA de una base de datos en la que tengamos ya los productos y pasar esos precios sin la aplicación del IVA a un archivo que, posteriormente, va a leer el código en C++ para realizar las operaciones necesarias y que pase los resultados a otro archivo. Finalmente, hacer otra llamada a otro script en GNU/Linux que analice estos datos y los pase a la base de datos.

Obviamente es mucho lío para una tarea tan sencilla, pero al menos demuestra la de cosas que puedes hacer si sabes un poco. Es cierto que todo esto lo podrías hacer directamente con un script en bash, pero al fin y al cabo C++ es orientado a objetos, más rápido y de bajo nivel, lo que nos puede aportar importantes ventajas.

Posiblemente apliquemos esta idea a un negocio de unos amigos simplemente para testear si en un negocio real se puede aplicar esto y es óptimo. Ya os iremos contando.

¿Hackeamos el Mundo?

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...

Entrada destacada

El server me sabe a poco.

Soy un fanático del Rock y de Debian . (Creo que voy a inventar Rockbian, que suena bien y todo xD) Llevaba tiempo queriendo unir estos 2 c...