Bajo un océano de bits, mes XXV

Por Javier Albizu, 25 Diciembre, 2019
Poco hemos avanzado a lo largo de este mes. Aunque, claro, dependiendo de cómo lo mire, no sólo no he avanzado sino que he retrocedido.

¿Cómo?
¿Que puede ser que me haya puesto un tanto dramático?.
¿Yo?.
Por favor.

En fin, vayamos por partes.

Me encuentro en una encrucijada el lo referente al C++.
Si algo me está quedando claro a partir del visionado de las clases de este año de Fran Gallego1, esto sería el hecho de que los textos de referencia que había seguido hasta el momento no estaban teniendo en cuenta las evoluciones que ha sufrido este lenguaje durante la última década.

Por lo que estoy viendo se han hecho esfuerzos significativos para “facilitar” el acceso hasta él y acercarlo hasta otros lenguajes más “amistosos”. El “nuevo C++”2 tiene cosas como “Auto”, “Fill” o “Pragma” diseñadas para este fin. Para abstraer al desarrollador a la hora de realizar cosas en apariencia triviales… pero, precisamente por esto, me resisto un poco a usarlas.

A pesar de que tengo claro que son funciones mucho más óptimas que las cosas que pueda ir haciendo yo al vuelo, me esconden lo que hay detrás de ellas (siempre y cuando no me ponga a analizar su código, claro). Pueden ser herramientas ideales para quien se quiera acercar a la programación de nuevas, pero no las considero útiles para el proceso de aprendizaje que me he propuesto. Al menos no en el momento en el que me encuentro ahora mismo.

A su vez, toda la filosofía alrededor de la programación orientada a objetos se me sigue haciendo muy abstracta. A pesar de los vídeos, me cuesta mucho terminar de conceptualizar y aterrizar la herencia y el polimorfismo. Si bien es cierto que tengo una idea muy somera acerca de todo ello, se me sigue haciendo un poco bola cuanto trato de “visualizarlas”. “Entiendo” lo que son las clases virtuales y las relaciones de parentesco que se pueden establecer entre ellas… pero me cuesta horrores conseguir aterrizar eso al terreno de lo concreto.

Podría ponerme con ello, tengo pendiente volver a rehacer desde cero el código que ya tengo para mi clon del Traz pero, en paralelo a todo esto, también sigo con la parte de más bajo nivel y no es cuestión de dispersarme aún más.

Porque otra cosa no pero, allí donde me adentro, la dispersión sigue siendo la norma.

Por un lado, hace poco descubrí los vídeos de Michael Steil3 y sus charlas acerca de las interioridades de distintas máquinas. Por el momento me he centrado en aquellas que tienen alguna relación con el 6502 pero, a buen seguro, antes o después van a terminar por caer también todas las demás.

Por otro, un compañero del trabajo me descubrió un par de semanas atrás el canal de ObiJuan4 y su FPGAWars. Empecé a echarle un ojo a sus charlas sobre FPGAs, a su repositorio de Git y al IceStudio, el entorno de desarrollo que ha creado junto a otro montón de gente para trabajar con FPGAs libres. Incluso estuve tentado de comprarme una IceZum Alhambra, pero en el último momento me frené. Ya tengo por casa un par de ZX-UNO y, a priori, podría utilizar alguna de ellas para el cacharreo.

Por lo que he podido ver, en principio IceStudio no soporta la FPGA que viene con el ZX-UNO, la Xilinx Spartan XC6SLX9-2TQG144C pero, ¿quién sabe?, quizás de aquí a un tiempo lo incluyan (o me termine de volver loco del todo al tratar de implementarlo yo mismo).

Porque, por supuesto, eso no es todo. Este mes me he apuntado a un curso. Sí, a otro más. En esta ocasión a uno de Electrónica Digital6.
Como no podía ser de otra manera, también voy con retraso en este y es muy probable que tampoco lo termine a tiempo, razón por la cual empezaré a descargarme los vídeos para poder consultarlos una vez que el curso haya terminado, pero la noche es joven.

Quizás, sumando todo esto al libro “Fundamentos de Sistemas Digitales” de “Thomas L. Floyd” que comencé a leer en julio (y que me prestaron hace cosa de una década), consiga llegar en algún momento hasta algún lugar.

La cosa es que este reto termina la primera semana de enero y, una vez llegada esa fecha, debería centrarme en el curso de acceso a la uni para mayores de 25.

Otra cosa es que sea capaz de hacerlo y no amplíe aún más mis quehaceres diarios para terminar definitivamente con mi salud mental y física.

Enlaces:

1. El profe
- C++ : Compilar y enlazar librerías estáticas
- C++ : Introducción básica a constexpr y const
- C++ : new, delete, excepciones, std::terminate y RAII. Asegurando liberación de recursos
- C++ : Gestión de memoria con std::unique_ptr (Smart Pointers)
- C++ : Include guards, const member initializers, explicit constructors
- C++ : Render System (1): update básico
- C++ : Entity Manager (1): std::vector reserve
- C++ : Entity Manager (2): range-based for, std::fill y emplace_back
- C++ : Manager-Render: enlace por referencia, includes y forward declarations
- C++ : Render System (2) : fill, copy & iterators
- C++ : Depurando con cgdb: reserve vs resize
- C++ : Function objects, operator() y lambdas
- C++ : Interfaces, override, final, virtual, vtable
- C++ : Interfaces puras y destructores virtuales
- C++ : Leer ficheros rápido usando iteradores y contenedores
- C++ : Sprites con PicoPNG, iteradores y std::memcpy
- C++ : Sistemas Physics y Collision en Entity-Component-System

2. El C++ moderno
- Auto
- Fill
- Pragma

3. Michael Steil y el 6502
- 27c3: Reverse Engineering the MOS 6502 CPU
- 25c3: The Ultimate Commodore 64 Talk
- 33c3: The Ultimate Game Boy Talk

4. Juán González-Gómez (ObiJuan)
- Tutorial: Electrónica digital para makers con FPGAs
- FpgaWars
- Tutorial de Electrónica Digital con FPGAs libres
- IceStudio
- Icezum Alhambra
- ZX-UNO

5. Electrónica Digital
- Coursera – Sistemas-digitales
- Fundamentos de Sistemas Digitales

El contenido de este campo se mantiene privado y no se mostrará públicamente.

Plain text

  • No se permiten etiquetas HTML.
  • Las direcciones de correos electrónicos y páginas web se convierten en enlaces automáticamente.
  • Saltos automáticos de líneas y de párrafos.