Проект Искусственного интеллекта - Что язык я должен пойти для? [закрытый]

Я - студент информатики, и я собираюсь работать над проектом искусственного интеллекта, который составит музыкальную мелодию согласно исходным данным настроения и жанру. Алгоритмы должны использоваться для этого проекта, вероятно, чтобы очень использовать ресурс? Это имело бы какое-либо значение (с точки зрения скорости), если я принимаю решение пойти с Java, а не C++? (Отметьте: Я знаю только эти два языка, и я более доволен Java, чем C++.)

NB: Извините за мой плохой английский язык. Если кто-то может, очистите это сообщение везде, где необходимо. Спасибо.

10
задан Kremlin Yocepf 5 February 2010 в 13:12
поделиться

9 ответов

На потребление ресурсов алгоритмический подход оказывает гораздо большее влияние, чем выбранный язык. Если вам удобно работать с Java, программируйте ваше приложение на этом языке - хотя реализация на Си++ может быть на 10% быстрее.

При этом вас может заинтересовать Искусственный интеллект API для Java.

12
ответ дан 3 December 2019 в 14:11
поделиться

Используйте Java, так как она вам удобнее. Это позволит вам сосредоточиться на решении проблемы, а не на программировании. Может быть, C ++ закончится более быстрой программой, а может и нет, но добраться туда будет медленнее, и вы категорически не заявляете, что программа должна быть невероятно быстрой.

13
ответ дан 3 December 2019 в 14:11
поделиться

Я бы использовал Common Lisp для такого проекта. Если вы не знаете Lisp, я бы выучил его для этого типа проекта. Это был бы отличный учебный опыт, и, поскольку вы студент CS, он вам только поможет. Лисп - это язык, который может по-настоящему открыть глаза.

2
ответ дан 3 December 2019 в 14:11
поделиться

В вашем случае строки и столбцы, вероятно, взаимозаменяемы, т.е. вопрос семантики, которая является. В этом случае можно создать столбцы, чтобы занять последовательность ячеек в списке data , а затем обнулить их, используя только:

  data[column_start:column_start+rows] = rows * [0]
-121--3213470-

Во-первых, обратите внимание, что в объявлении оператора отсутствовало определение пространства имен для A:

NAME::A operator * (double lhs, const NAME::A& rhs)

и затем решающий трюк состоит в том, чтобы добавить круглые скобки в объявление друга, как это было предложено в вашем «псевдокоде»

friend A (::operator *) (double lhs, const A& rhs);

Чтобы все это скомпилировать, вам нужно несколько форвардных объявлений, приходя к этому:

namespace NAME
{
    class A;
}

NAME::A operator * (double lhs, const NAME::A& rhs);

namespace NAME
{
    class A {
        public:
            friend A (::operator *) (double lhs, const A& rhs);
        private:
            int private_var;
    };
}

NAME::A operator * (double lhs, const NAME::A& rhs)
{
    double x = rhs.private_var;
}

Александр прав, но, вероятно, следует объявить оператор в том же пространстве имен, что и его параметры.

-121--2681525-

Я сделал аналогичный проект ИИ пару лет назад. Я не знаю, какое решение вы будете внедрять, но программы ИИ, как правило, потребляют много ресурсов и могут занять много времени, но, с другой стороны, вам понадобится язык, с которым вы знакомы, чтобы сделать это вовремя.

Поэтому мой совет состоит в том, что если вы чувствуете, что знаете C++ (или C), идите с одним из них. Если вы их не знаете, то внимательно подумайте о времени, которое вам нужно будет вложить в изучение нового языка, прежде чем выбирать.

1
ответ дан 3 December 2019 в 14:11
поделиться

Если ты начинаешь с нуля, используй все, что знаешь лучше всего. Если вы хотите использовать созданные библиотеки для ускорения разработки, то, возможно, сначала вы захотите изучить это - но Java наверняка имеет некоторые из них.

На вашем месте, я бы точно выбрал Java.

1
ответ дан 3 December 2019 в 14:11
поделиться

Мой совет - проектируйте все, что вам нужно в первую очередь, каждый ADT, каждый класс алгоритма, иерархию, все, что угодно. Такой проект/программирование может быть действительно сложно спроектировать в семействе языков Си/Си++, может быть, вы могли бы выбрать другой язык с философией менее строковых типов. Поэтому я рекомендую вам использовать язык, предназначенный для такого рода задач, лучше подходящий для вашего приложения, функциональная парадигма ex: LISP, логическая парадигма ex: PROLOG или что-то в этом роде.

0
ответ дан 3 December 2019 в 14:11
поделиться

Проблема, которую вы видите, вероятно, связана с отсутствием подходящего сетевого подключения к центральному хранилищу Maven по умолчанию.

После того, как вы разберете проблему с сетью, вам нужно будет ускорить работу с Maven и узнать, что она может сделать для вас. Для этого я бы предложил вам прочитать Лучшие сборки с Maven электронной книги . Он расскажет тебе все, что тебе нужно знать.

Один удобный наконечник во время начальной установки - это если вы разрабатываете на компьютере с несколькими пользовательскими профилями (т.е. вы входите в сеть, и ваш профиль синхронизируется при входе/выходе из сети), вы хотите сделать следующее:

1) Отредактируйте файл/.m2/settings.xml, чтобы локальный репозиторий находился вне вашего сетевого профиля, чтобы избежать перемещения данных каждый день. Пример конфигурации:

<settings>
<localRepository>/Users/Shared/Repository</localRepository>
</settings>

2) Рассмотрите возможность использования Artifaster для обеспечения центрального репозитория Maven в масштабах всей компании, который будет первым портом вызова для разрешения артефактов Maven, а repo1.maven.org/maven2 - вторым. Это означает, что ваш разработанный код остается в доме и любые специализированные артефакты, требующие лицензий (например, драйверы Oracle JDBC или материалы JTA), могут быть доступны без ручной установки.

Если вам нужна дополнительная помощь или совет, пожалуйста, свяжитесь со мной.

-121--3113814-

Если вы хотите сделать это дальше, ознакомьтесь с продуктами для блокировки смарт-карт CoreStreet . Это их дело.

-121--3802299-

Моим диссертационным проектом 3-го курса была реализация эвристики для распределения радиочастот сотовой сети. Я выбрал Java вместо C++, потому что это позволило мне визуализировать результаты гораздо проще, чем если бы я использовал C++. Я не верю, что производительность была бы значительно другой в C++ - фактор сложности вашего алгоса будет самым большим фактором, вероятно.

0
ответ дан 3 December 2019 в 14:11
поделиться

Мне кажется, что ты находишься на стадии доказывания концепции своего проекта. Я бы использовал любой язык, который тебе больше всего нравится. Хорошо написанный Java-код будет работать намного быстрее, чем плохо написанный C.

3
ответ дан 3 December 2019 в 14:11
поделиться

На мой взгляд, язык, в основном связанный с ИИ, - это Лисп.

См. Ответы на Почему Лисп используется для ИИ? - в верхних голосах упоминается, что это было в 60-х и 70-х годах, но в наши дни используются динамические языки (ruby, python и т. Д.).

3
ответ дан 3 December 2019 в 14:11
поделиться
Другие вопросы по тегам:

Похожие вопросы: