Estos son algunos softwares que todo el mundo debería conocer:
1. Sistemas de control de revisiones: tanto si trabajas en un equipo de 100 personas como si estás solo, si estás trabajando en un diseño, deberías utilizar un software de control de revisiones. Se trata de un software que permite gestionar diferentes versiones de los documentos, ya sean esquemas o código fuente. Los documentos de texto, como el código fuente o los archivos de configuración, se prestan especialmente al control de revisiones, porque es fácil ver las diferencias entre las versiones y fusionar los cambios de una versión a otra, especialmente si hay más de una persona trabajando en un grupo de documentos.
2. Herramientas de comparación de archivos - Tanto si está fusionando el código fuente en un sistema de control de revisiones, como si sólo está tratando de ver cuál es la diferencia entre un archivo y otro, necesitará un software de comparación de archivos. Hay herramientas de línea de comandos como "diff", y hay software de comparación de archivos GUI. A mí me gusta el programa Beyond Compare, que no es gratuito, pero es barato y muy fácil de usar. También le permite comparar dos directorios, y le permite hacer una comparación de archivos de 3 vías. Hay versiones de Beyond Compare para Windows y Linux, y se está trabajando en una versión para OSX, pero aún no está disponible. ¡Otras herramientas que existen son SourceGear, DiffMerge (gratuita, multiplataforma = Win/OSX/Linux), Compare It! (económico, sólo para Windows), DeltaWalker (coste moderado, OSX) y UltraCompare (coste moderado, multiplataforma).
3. Editores: trabajar con archivos de texto puede ser fácil o difícil dependiendo del software que se utilice. Los editores de peso son los entornos de desarrollo integrados (IDE) como Eclipse o NetBeans o Visual Studio. Son estupendos si estás trabajando con herramientas de software específicas para programar un determinado procesador. Pero a veces sólo necesitas editar un archivo rápidamente. Los editores básicos que vienen con el sistema operativo (como Notepad en Windows, o TextEdit en el Mac) son ligeros pero no tienen muchas características. Me gusta disponer de un editor de peso medio: algunos buenos editores gratuitos de esta categoría son Notepad++ para Windows y TextWrangler para Mac; también he utilizado el UltraEdit, que no es gratuito, es un poco más potente y está disponible para Win/OSX/Linux. SlickEdit es un editor de nivel profesional que cuesta unos cuantos cientos de dólares y que probablemente sea excesivo para la mayoría de las tareas, pero algunos de mis compañeros de trabajo lo recomiendan. (¡espero que no lo maldigan!)
4. Herramientas de construcción -- si usted está empezando a escribir software en un IDE, puede simplemente hacer clic en "Build" y el programa compilará su código fuente para usted. Tenga cuidado con esta práctica. Significa que dejas que el IDE se preocupe de los detalles, lo cual está bien para sistemas pequeños en los que estás aprendiendo algo, pero hay muchas opciones para cambiar la forma en que se compila tu software, y en un IDE están enterradas en los menús, y no son fáciles de transferir de un proyecto a otro. Si tiene suerte, puede identificar los archivos utilizados para almacenar la configuración de la construcción, para que pueda comprobarlos en su sistema de control de revisiones, porque de lo contrario no está almacenando el código fuente completo de su proyecto.
5. Herramientas de secuencias de comandos - A veces usted necesita para armar una pieza rápida de software para hacer algo. A menudo es difícil hacer esto en C o C ++ porque tienes que gastar energía escribiendo código para analizar cadenas o leer archivos o lo que sea, y luego tienes que compilar el programa C / C ++ en un ejecutable por plataforma informática.
6. Herramientas de análisis numérico - A menos que estés haciendo algo realmente simple como un semáforo con acceso a Internet, es probable que estés haciendo algún tipo de matemáticas en un proyecto de sistema embebido. Tal vez quieras hacer un gráfico de los datos, o ajustar una curva a los datos, o resolver una ecuación, o diseñar un filtro de paso bajo, o explorar cómo algo en tu sistema varía cuando cambias un parámetro. Las herramientas de análisis numérico te ayudarán con estas tareas, e incluyen programas como MATLAB, Mathematica y MathCAD. Ninguno de ellos es gratuito, y una versión completamente equipada de MATLAB con todas las cajas de herramientas puede costar miles de dólares, pero proporcionan mucha funcionalidad. MATLAB está especializado en el análisis de datos y Mathematica en el álgebra simbólica. MathCAD se encuentra en algún punto intermedio, con un enfoque de "lo que ves es lo que obtienes": cada operación utilizada para derivar la salida que se ve en una hoja de trabajo de MathCAD es visible en esa hoja de trabajo, por lo que es muy transparente, y si usted imprime la hoja de trabajo alguien puede ver todos los pasos necesarios para duplicar sus esfuerzos. Compare esto con una hoja de cálculo de Excel, por ejemplo, donde lo que se ve son los resultados de una operación; para ver los pasos necesarios para realizar esa operación hay que mirar en cada una de las celdas y ver si hay una fórmula allí.
7. Utilidades de documentación - a menudo tendrá que comunicar sus ideas a los demás, y hay muchos tipos diferentes de software para ayudar a hacer esto. Sí, existen los programas no gratuitos de Microsoft como Visio para diagramas de flujo/gráficos, Word para documentos y PowerPoint para presentaciones. Sin embargo, a veces se necesita algo gratuito o más especializado para determinados tipos de documentos.
8. Software de terminal y comunicaciones: Cuando usted necesita comunicarse a través de puertos serie, es el momento de utilizar el software de terminal. Antes de los navegadores web, esto era mucho más común. ¿Qué software es bueno? Los amigos no dejan que sus amigos usen la versión de HyperTerminal incluida en Windows - no es muy robusta - y Microsoft finalmente dejó de incluirla con Windows cuando lanzó Vista. Mis favoritos son PuTTYtel y TeraTerm Pro.
9. Herramientas de control de calidad del software (QA): Si escribes software y crees que escribes software libre de errores, te estás engañando a ti mismo. Hay un montón de herramientas de software por ahí que pueden ayudarle a encontrar errores antes de que ellos lo encuentren a usted. Vale, aquí es donde tengo que admitir que soy un principiante y no estoy muy familiarizado con lo que hay ahí fuera. (¡Qué vergüenza!) Pero sé lo suficiente como para sugerir algunos lugares donde buscar. Algunas de las categorías principales son las siguientes:
10. Utilidades básicas de línea de comandos:
Muchos de los siguientes programas son utilidades de línea de comandos de UNIX de los días en que no había interfaces gráficas de usuario, y las cosas tenían que hacerse a mano. A menos que haya alguna mejora revolucionaria en las interfaces gráficas de usuario, siempre habrá mucho más que se pueda hacer a través de la línea de comandos, simplemente porque hay más combinaciones de cosas que se pueden hacer a través de scripts. Si usted está ejecutando OSX o Linux, ya tiene estos; si usted está ejecutando Windows puede descargar versiones binarias que se ejecutarán en su sistema operativo en los puertos nativos de Win 32 de algunas utilidades de GNU o Unxutils.