yo estudiamos Inteligencia Artificial y Visión por computador, por lo tanto me conozco bastante bien el tipo de herramientas que se utilizan en este campo.
Básicamente: puede usar lo que quiera siempre que sepa cómo funciona detrás de la escena.
Ahora, dependiendo de lo que quiere lograr, se puede utilizar:
- lenguaje C, pero perderá una gran cantidad de tiempo en los errores de control y gestión de memoria en la aplicación de los algoritmos. Teóricamente, este es el lenguaje más rápido para hacer ese tipo de trabajo, pero si sus algoritmos no son computacionalmente eficientes (en términos de complejidad) o si pierde demasiado tiempo en la comprobación de errores, esto claramente no vale la pena. Así que le aconsejo que primero implemente su aplicación en otro idioma, y luego siempre podrá optimizar partes pequeñas de su código con enlaces de C.
- Octave/MatLab: lenguaje muy eficiente, casi tanto como C, y puede hacer algoritmos muy elegantes y concisos. Si te interesan las operaciones de vectorización, matriz y lineal, debes ir con eso. Sin embargo, no podrá desarrollar una aplicación completa con este lenguaje, estará más enfocado en algoritmos, pero luego siempre podrá desarrollar una interfaz usando otro idioma más adelante.
- Python: lenguaje todo en uno, elegante y accesible, utilizado en aplicaciones de gran escala como Google y Facebook. Puedes hacer casi todo lo que quieras con Python, cualquier tipo de aplicación. Se adaptará perfectamente si desea realizar una aplicación completa (con interacción del cliente y todo, no solo algoritmos), o si desea redactar rápidamente un prototipo utilizando librerías existentes, ya que Python tiene un gran conjunto de bibliotecas de alta calidad, como OpenCV. Sin embargo, si solo quiere hacer algoritmos, mejor debería usar Octave/MatLab.
La respuesta que se seleccionó como una solución es muy biaizada, y debe tener cuidado con este tipo de comentarios arcaicos.
Hoy en día, el hardware es más económico que el wetware (humanos) y, por lo tanto, debe usar lenguajes donde pueda generar resultados más rápidamente, incluso si cuesta unos pocos ciclos de CPU o espacio de memoria.
Además, mucha gente tiende a pensar que mientras implementes tu software en C/C++, estarás haciendo el Saint Graal de velocidad: esto simplemente no es cierto.Primero, porque la complejidad de los algoritmos importa mucho más que el lenguaje que está usando (un mal algoritmo nunca superará un algoritmo mejor, incluso si se implementa en el lenguaje más lento del universo) y segundo porque los lenguajes de alto nivel están haciendo mucho hoy de caché y optimización de velocidad para usted, y esto puede hacer que su programa se ejecute incluso más rápido que en C/C++.
Por supuesto, siempre puede hacer todo lo anterior en C/C++, pero ¿cuánto de su tiempo está dispuesto a perder para reinventar la rueda?