¿Es el lenguaje C una buena opción para la programación de IA?

El software moderno de IA generalmente incorpora lenguajes de bajo y alto nivel para el desarrollo de software y, a menudo, se combina con alguna forma de aceleración de hardware. C (o C ++) puede ser una opción efectiva para construir partes de un sistema de IA.

Como ejemplo, la plataforma Tensorflow de Google utiliza C ++ y CUDA (para la aceleración de GPU) para las bibliotecas principales. También admite ASIC personalizados para la aceleración de hardware de estas bibliotecas.

Puede usar C ++ o Python para interactuar con estas bibliotecas. Las API de Python hacen que sea más fácil hackear experimentos rápidos y también pueden ser convenientes para construir herramientas de nivel superior. Python también podría usarse en la ruta de publicación (cuando los modelos realmente se usan), pero C ++ es más común para este tipo de trabajo, al menos en Google.

En cuanto a C vs C ++, este último tiene características de lenguaje de nivel superior (por ejemplo, punteros inteligentes) que facilitan algunas tareas de programación comunes. Algunas de las razones por las que los desarrolladores se han alejado históricamente de C ++ (soporte deficiente del compilador para la plataforma de destino, características de lenguaje ineficientes / problemáticas) se han resuelto o pueden resolverse restringiendo el uso de características de lenguaje particulares. Dado que personalmente creo que C ++ sería una mejor opción que C.

La esencia de un tipo de software de IA (redes neuronales profundas) se construye usando C ++, casi todo lo demás se construye usando lenguajes más fáciles de comprender y depurar como Python (90%) Java (9%) y Julia (1%) (estos% % son realmente solo por diversión!)

Básicamente, las personas que hacen IA están en el reloj por dos razones; si son voladores de wizz kid, están listos para entregar rápidamente resultados para su próximo papel maravilloso, o aplicación de mil millones de dólares. Para el resto de nosotros, estamos listos para cumplir con los plazos de entrega y los hitos del proyecto.

Sentarse mirando los volcados de la pila tratando de averiguar por qué su código C está escribiendo direcciones a las que no tiene derecho a escribir a las 3 de la mañana del día anterior a la fecha de entrega no es divertido, puedo decirle. Los idiomas que son “más fáciles” son más confiables para los desarrolladores y permiten la productividad personal, lo que permite un tiempo de hogar normal, buenas revisiones de administración, bonos y promociones.

Hola,
El lenguaje C es bueno para aprender un enfoque de programación orientado a objetos. Resuelve muchos problemas de la vida real. Pero, la implementación de código para AI es bastante complicada si usa lenguaje C. Aún así, si desea hacerlo, puede encontrar proyectos en AI usando C en http://mind.sourceforge.net/c.html .
Prefiero que aprendas MATLAB / Octave si quieres sobresalir en IA. Esto sería realmente útil para usted al analizar fácilmente los problemas de IA y su núcleo de contenido. Más tarde, cuando tenga experiencia en esto, puede escribir códigos pesados ​​en Python, C o R.

Muy mala elección. C ++ sería aún peor. C es un lenguaje de programación de sistemas y realmente C debe usarse solo para los niveles más bajos de un sistema operativo. No se deben utilizar lenguajes de sistemas para el desarrollo de aplicaciones. Sé que la gente podría responder a esto diciendo que C se usa para muchas aplicaciones. Hay una diferencia entre can y should.

Hay una gran cantidad de lenguajes desarrollados para AI, o adecuados para AI, mucho más que C. La mayoría de estos serán lenguajes extremadamente simples. Pero los lenguajes simples son muy poderosos. No se deje engañar por la aparente ‘sofisticación’ de C o C ++. Eso es realmente una complejidad que no ayudará. Un ejemplo de un lenguaje extremadamente simple pero poderoso es Smalltalk.

LISP fue un lenguaje desarrollado para IA y muchos idiomas tienen una herencia LISP.

No, no es. Codifico los controladores de Linux en C. Hay demasiado código para construir para abordar algoritmos complejos de IA.

Pero “AI” es un campo bastante grande. Por ejemplo, hace varios años estaba en un proyecto de árbol de decisiones, que algunos científicos de doctorado habían diseñado utilizando un algoritmo minimax “AI”. Sabían lisp, así que ese era el lenguaje para el proyecto. Descubrí que los datos se describían fácilmente mediante listas, listas ordenadas, listas ponderadas, filtros, mapas, etc. No soy un experto en lisp, pero cosas así serían muy tediosas en C. Incluso C ++ con STL sería una gran locura -y-trabajo de perno.

He oído a gente decir que el esquema y smalltalk son buenos para codificar diseños de IA, pero sé poco sobre ellos.

Para la mayoría de las cosas, ahora hay bibliotecas de Python. Aunque a menudo envuelven las bibliotecas C debajo del capó a través de cython u otros métodos similares. Si está desarrollando un software de IA fundamental que necesita ser rápido, escalable y en tiempo real, definitivamente querrá escribir algo de C. Si desea utilizar herramientas de IA para crear productos de alto nivel, es mejor que utilice los disponibles bibliotecas de python

C siendo un poco más alto que los lenguajes de bajo nivel son excelentes para escribir programas de nivel de chip como escribir juegos, sistemas operativos, programas específicos de hardware, etc. No hay biblioteca ni ningún tipo de marco para trabajar con ai, por lo que no se usa en ai o ml.

Sí, para funciones de bajo nivel. Para las heurísticas de IA de alto nivel, es mucho más elegante usar C ++.