11
votes

Projet d'intelligence artificielle - quelle langue devrais-je aller?

Je suis un étudiant en informatique et je vais travailler sur un projet d'intelligence artificielle qui composera une mélodie musicale en fonction du genre et des intrants d'humeur. Les algorithmes doivent-ils être utilisés pour ce projet susceptible d'être très consommant de ressources? Cela ferait-il une différence (en termes de vitesse) si je choisis d'aller avec Java plutôt que C ++? (Remarque: Je ne connais que ces deux langues et je suis plus à l'aise avec Java que C ++.)

NB: Désolé pour mon mauvais anglais. Si quelqu'un peut, veuillez nettoyer ce post chaque fois que nécessaire. Merci.


4 commentaires

Cette question revient beaucoup. Réponse courte: le choix de la langue n'est pratiquement jamais un facteur d'exécution d'une application.


Kremlin - J'ai édité un certain nombre de postes pour aider les locuteurs non autochtones à communiquer plus clairement, mais votre message n'en a-t-il pas besoin! Vos compétences en anglais écrites sont meilleures que celles de nombreux locuteurs anglophones ...


@Arwicker: Dans la performance d'une demande, la langue peut ne pas faire beaucoup de différence (au moins dans la programmation d'AI), mais dans la performance du programmeur Le choix de la langue peut être énorme.


@Tim - bien sûr, totalement différent.


10 Réponses :


13
votes

Allez avec Java depuis que vous êtes plus à l'aise avec elle. Cela vous permettra de vous concentrer sur la résolution du problème, pas la programmation. Peut-être que C ++ se terminerait par un programme plus rapide, peut-être pas, mais l'obtention de là sera plus lent et vous n'indique pas catégoriquement que le programme doit être rapidement rapide.


0 commentaires

3
votes

Dans mon esprit, la langue généralement associée à l'AI est LISP.

Voir les réponses à Pourquoi LISP est-il utilisé pour AI? - Les principales mentions votées c'était le cas dans les années 60 et 70, mais ces journées dynamiques sont utilisées (rubis, python et telle).


0 commentaires

3
votes

Cela me semble que vous êtes au stade de la preuve de votre projet. J'utiliserais quelle que soit la langue la plus confortable avec. Le code Java bien écrit fonctionnera beaucoup plus vite que mal écrit c.


0 commentaires

12
votes

La consommation de ressources est beaucoup plus influencée par l'approche algorithmique que la langue choisie. Si vous êtes à l'aise avec Java, programmez votre application dans cette langue - même si une implémentation C ++ pourrait être 10% plus rapide.

Cela étant dit, vous pourriez être intéressé par API d'intelligence artificielle pour Java .


2 commentaires

Une implémentation C ++ pourrait facilement être 10 fois plus rapide. Je viens de courir dans un cas de Java prenant 40 secondes pour initialiser un éventail de vecteurs de 16 m.


Il existe des exemples de comptoirs de fuites de mémoire horribles en C ++. Je pense que le fait est d'éviter une optimisation prématurée en utilisant la langue que le développeur se sent à l'aise.



1
votes

J'ai fait un projet IA similaire il y a quelques années. Je ne sais pas quelle solution vous mettrez en œuvre, mais les programmes AI peuvent généralement être consommateurs de ressources et peuvent prendre beaucoup de temps à courir, mais d'autre part, vous aurez besoin d'une langue que vous connaissez bien pour l'obtenir. fait à temps.

Par conséquent, mon conseil est que si vous vous sentez savoir c ++ (ou c), allez avec l'un d'entre eux. Si vous ne les connaissez pas, examinez attentivement le temps dont vous aurez besoin d'investir dans l'apprentissage d'une nouvelle langue avant de choisir.


0 commentaires

1
votes

Si vous commencez à partir de zéro, utilisez ce que vous savez mieux. Si vous souhaitez utiliser des bibliothèques établies pour accélérer le développement, vous voudrez peut-être enquêter en premier - mais Java est certain d'en avoir.

Dans vos chaussures, je choisirais Java à coup sûr.


0 commentaires

2
votes

J'utiliserais des LISP commun pour un projet comme celui-ci. Si vous ne connaissez pas LISP, je l'apprendrais pour ce type de projet. Ce serait une excellente expérience d'apprentissage et puisque vous êtes un étudiant CS, cela ne vous aidera que. LISP est une langue qui peut être un véritable ouvre-yeux.


2 commentaires

Et de nombreux LISPS (SBCL pour une) compilent du code natif. Clojure est un dialecte LISP qui fonctionne sur la JVM et s'intègre bien aux bibliothèques Java, de sorte qu'il pourrait obtenir le meilleur des deux mondes.


@IM: Merci d'avoir mentionné Clojure, j'ai googlé pour cela. Semble assez intéressant!



0
votes

Mon conseil est conçu tout ce dont vous avez besoin d'abord, chaque ADT, chaque classe d'algorithme, hiérarchie, tout. Ce type de projet / programmation pourrait être très difficile à concevoir dans la famille de langues C / C ++, vous pouvez peut-être choisir une autre langue avec une philosophie dactylographiée moins à cordes. Donc, je vous encourage à utiliser une langue conçue pour ce type de problème, mieux adaptée à votre application, paradigme fonctionnel ex: lisp, paradigme logique ex: prolog ou quelque chose comme ça.


0 commentaires

0
votes

Mon projet de thèse de 3ème année était une mise en œuvre de l'heuristique de l'allocation de radiofréquence de réseau cellulaire. J'ai choisi Java sur C ++ parce que cela m'a permis de visualiser beaucoup plus facilement les résultats que si j'avais utilisé C ++. Je ne crois pas que la performance aurait été significativement différente de C ++ - le facteur de complexité de vos algues sera le facteur le plus important probablement.


0 commentaires

1
votes

J'irais avec le clojure pour les raisons suivantes:


0 commentaires