¿Por qué uso C++? (y V)

Esta entrada es continuación de esta otra.

Aparte de los compiladores embebidos, cada uno de un fabricante y con sus propias idiosincrasias, mi herramienta principal de desarrollo es una versión Team de Visual Studio con todo instalado (me refiero a los analizadores de código y perfiladores y demás), que uso como IDE para todo aunque luego compile por línea de comandos cuando se trata de sistemas embebidos. A fecha de hoy tengo Visual Studio 2008SP1, que actualizaré en cuanto salga la 2010 final.

Uso el complemento de Whole Tomato Visual Assist, que es algo que uno debería instalar al menos cuando haga algo en C y/o C++, porque no tiene precio. El IntelliSense y el ofrecimiento de código funcionan incluso para los proyectos embebidos si alcanza a ver los ficheros adecuados (y ya me encargo yo de que los vea).

Dado que mi máquina principal es un Quad con 8 GB de RAM ejecutando Windows 7 de 64 bits, muchos (la gran mayoría) de los compiladores y herramientas de terceros para embedded no funcionan directamente bajo este sistema operativo, y más aún cuando hay mochilas y JTAGs de por medio, por lo que suelo tener una buena colección de máquinas virtuales, cada una de ellas conteniendo una tecnología. Uso vmWare porque, pese a lo que tarda a arrancar el programa en sí, es el que más rendimiento me da y con el que soporta más dispositivos montados en virtual. Además, lo tengo configurado de tal modo que cada máquina virtual sabe qué periféricos cargarse al inicio, de modo que no tengo que hacer apenas nada aparte de lanzar el sistema operativo deseado.

También suelo depurar en remoto sobre Windows XP/Vista o 7 cuando la cosa se complica y tendría que enmarranar mi sistema añadiendo drivers y cosas de terceros. Siempre que puedo lo hago con vmWare, pero a veces tengo que usar ordenadores físicos reales, y tengo dos para pruebas y una colección de placas base para montar rápidamente varias configuraciones más o menos estándar.

Muchos compiladores embebidos están en su máquina virtual, así como SDKs de terceros que o bien se pelean entre sí o bien para separar tecnologías y/o fabricantes. Me resulta mucho más claro y rápido localizar la máquina virtual del fabricante A y saber que todo lo que necesito está ahí dentro. Muchas veces, cuando llama algún cliente y sé en qué anda, mientras cojo el teléfono y empiezo a hablar tengo la vm cargada y lista para buscar la respuesta.

Todo mi código fuente está en el ordenador host, y cuando tengo que compilar algo desde una máquina virtual lo que suelo hacer es usar las carpetas compartidas del vmWare, y si eso no funciona porque el compilador es más pejigueras de lo normal, copio el código a la vm, lo compilo y saco el resultado volviendo a copiar, todo ello hecho de forma automática con algún tipo de scrpit.

En su momento intenté disponer de todo esto primero en Virtual PC, luego con discos virtualizados de MS y Windows Server y finalmente con el XP Mode de Windows 7, pero al final ha resultado imposible en primer lugar porque no todos los dispositivos USB conectados en virtual funcionan (eso en XP Mode, porque las otras tecnologías ni siquiera soportan USB), y menos aún aquellos conectados por puertos serie o paralelo, y no es que MS me haya hecho mucho caso pese a estar en la beta del XP Mode. Además, salvo en el último, el rendimiento de la pantalla virtual es más que penoso, sobre todo en los servidores, que encima me dan otros problemas con los JTAG que sí funcionan sin virtualizar en los mismos Windows clientes.

Otras de las herramientas que suelo usar habitualmente son el CursorWorkshop y el IconWorshop de Axialis, Paint.NET, Camtasia y Cygnus Hex Editor, todos ellos cortesía por ser MVP.

Bueno, pues eso es todo. Espero no haber levantado susceptibilidades con lo que he escrito, pero si ha sido así, piénsate a ver por qué te mosquea lo que digo. Y sí, sí que voy a darme el gustazo de comentarios que a) trabajo desde casa con muy pocas salidas y viajes, y b) no tengo horario fijo ni hago casi extras, o más bien sí que lo tengo pero no suelo cumplirlo muy a rajatabla, con el beneplácito de mis jefes (evidentemente se entiende que cumplo absolutamente todos mis objetos no solo a tiempo, sino muchas veces con tiempo de sobra, aunque la mayoría de situaciones son de las de “no importa lo que te cueste ni el tiempo que tardes, simplemente hazlo”). También hay que entender que yo no estoy en una cadena de producción de software (y esa es otra cosa de la que podríamos escribir largo y tendido y echarnos unas risas sobre la mentalidad de muchas empresas).

Un comentario sobre “¿Por qué uso C++? (y V)”

  1. Hola, Rafael, a ver si pudieras publicar una lista de libros que consideras que su lectura te ha sido provechosa. Aunque no todo el conocimiento viene de ellos siempre es interesante ver que lecturas discriminar o en cuales invertir, que no son precisamente baratos!

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *