No soy ingeniero de software, pero escribo código en un entorno de investigación científica.
Mi herramienta favorita de todas tiene que ser Python . Con NumPy y SciPy , no podría hackear un prototipo más rápido de lo que ya puedo. La sintaxis es increíblemente intuitiva, la documentación es excelente en Internet, la cantidad de bibliotecas para hacer cosas diferentes está fuera de los gráficos, y es rápida. Demonios, si quisiera probar algunos puertos paralelos de los algoritmos, sería igual de simple (aunque es cierto que todavía no he usado ninguna biblioteca paralela). Creo que incluso hay algunas implementaciones decentes de CUDA.
Otra herramienta que está a la altura es Emacs . No soy un usuario avanzado de ninguna manera, y todavía estoy descubriendo mucho al respecto, pero hombre, ¿me siento productivo? Cuando usaba VIM, siempre odiaba tener que cambiar de modo para hacer cosas. Con Emacs mantienes tus manos en la posición predeterminada del teclado en todo momento, y simplemente mantienes presionado Crtl o Alt / Meta y haces tus cosas. El mini buffer de línea de comando en la parte inferior es fantástico, no es especialmente sorprendente ya que estoy enamorado del shell Bash.
- ¿Cuáles son las desventajas de las pruebas colectivas?
- Cómo gestionar un pequeño equipo de personas que creen que son súper estrellas
- ¿Qué tan importante es la habilidad del desarrollador para mantener el software seguro?
- ¿Cómo debería un equipo de desarrollo de software elegir una estrategia de ramificación git?
- Cómo hacer un sitio simple de preguntas y respuestas como Quora, en Python
Finalmente, una cosa por la que tengo que estar extremadamente agradecido es Valgrind . Cuando intento optimizar el código, esto es lo primero que uso para perfilar mi código. No, no es perfecto, y probablemente ni siquiera soy consciente de todas sus trampas, pero cuando funciona funciona muy bien. El único inconveniente es que se necesitan entre 10 y 50 veces el tiempo de ejecución normal para realizar los diagnósticos, pero a veces en el software numérico estás haciendo una rutina iterativa, y puedes reducir tus tiempos y pruebas para que no sea un gran problema. Estaba navegando por StackOverflow para encontrar algunas herramientas para la creación de perfiles de código, descubrí Valgrind y lo estaba usando el mismo día, por lo que fue muy fácil de usar.
Hablando de eso , StackOverflow tiene que ser una de las mejores comunidades de codificación en línea que hay. En serio, no puedo decir cuánto he aprendido de los gurús que nos honran con su presencia allí. Y cuando no puedo encontrar mi pregunta respondida por publicaciones existentes, puedo publicar la mía y obtener respuestas y comentarios en cuestión de horas. Definitivamente muy útil.
Y si vamos a hablar sobre recursos, creo que debo mencionar mi copia de The C Programming Language de Kernighan & Ritchie. Uso este libro casi todos los días, junto con The Complete C ++ Reference de Schildt. Estos son dos libros que realmente aprecio, y aunque la referencia de C ++ podría ser reemplazada por la búsqueda en línea, es muy bueno tener una cosa organizada, completa y tangible frente a ti. K&R sin embargo … eso no puede ser reemplazado. Es increíble como primera lectura y como referencia, una herramienta imprescindible para cualquiera que haga cosas C-ish.