Подтвердить что ты не робот

Как выбрать язык для программирования искусственного интеллекта?

Каков наилучший язык программирования для целей искусственного интеллекта?

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

4b9b3361

Ответ 1

Все холодные бородатые гуру в том, что осталось от исследования ИИ, используют Lisp:)

Есть два больших лагеря: Common Lisp и Scheme. У них разный синтаксис и т.д. Много хорошего материала написано для обоих.

Java - очень популярный универсальный язык, но многие интересные вещи в AI/Functional Programming, такие как прохождение замыканий в качестве объектов первого порядка, неудобны в Java.

Мои личные предпочтения состоят в том, чтобы держаться подальше от Windows-языков, таких как С# и F #. Крутые люди развиваются под Unix. Или Linux, если они классные, но плохие.

Некоторые интересные, но странные люди программы в Haskell. Достаточно современный FP-язык с хорошей производительностью. Я попробовал это один раз, это заставило мой мозг больно; но вы можете быть умнее, чем я.


ОБНОВЛЕНИЕ: Ответы на вопросы Стива.

  • Я бы не стал платить за вариант Unix; что делают корпорации и исследовательские институты. Идея заключается в том, что вы хотите проводить исследования в области ИИ для оборудования, которое поглощает миллионы в их аппаратном обеспечении и не препятствует оплате нескольких тысяч для операционной системы. То, что вид снаряжения может иметь хорошую еду в столовой и/или хорошо оплачивать работу. Но я, конечно, не стучу Linux.

  • F # может быть классным, но я вижу целый ряд проблем, связанных с его запуском в Linux или любой другой Unix (что я подразумевал под "windowsy" ), и я не хочу работать под Windows ( что я имел в виду под "личным предпочтением" ).

  • Разрабатывать тему "windowsy": вы отмечаете, что F # является вариантом OCaml. Из моего собственного, по общему мнению, краткого исследования, кажется, что F # отсутствует функторы, объекты стиля OCaml, полиморфные варианты и препроцессор camlp4. Функциональный язык без функторов? В самом деле? Если бы кто-то был настроен не так, как Microsoft, как я, по общему признанию, я бы пришел к выводу, что они пошли вперед и собрали совершенно хороший функциональный язык OCaml во что-то, что они могли бы запустить в своей среде CLR, чтобы они могли претендовать на " функциональный язык. Наконец, поскольку я не подозреваю, я знаю, что Microsoft всегда уделяет приоритетное внимание доминированию на рынке над качеством продукта, я не планирую касаться F #. Но это мои личные предпочтения и четко обозначены как таковые, в то время как мы действительно больше заинтересованы в том, чтобы сделать хорошую рекомендацию для mary.ja45.

У меня есть больше причин рекомендовать Lisp через F # и даже OCaml и Haskell. Они в основном основаны на историческом преобладании Lisp по любому другому языку в поле AI.

  • Основная часть литературы по ИИ основана на программах, написанных в Lisp или Prolog. Если ничего другого, хорошее знание Lisp позволило бы ученику понять образцы программ. Мой личный любимый AI megaproject, Cyc, имеет время автономной работы в вашем выборе Common Lisp или C.

  • В индексе TIOBE языка программирования (как видно и используется в промышленности) Lisp занимает 15-е место, в то время как Haskell занимает 43-е место, а F # и OCaml - ниже 50-го. Присутствие на рынке, естественно, соотносится с возможностями трудоустройства.

Тем не менее, вполне возможно, что ряд более молодых "интересных в искусстве" языков будет стремительно расти. Если бы какой-то крупный научно-исследовательский институт опубликовал некоторые новаторские, определяющие полевые исследования, например, Scala, вы увидели бы, что Scala популярность резко возрастает в исследовательском сообществе и с некоторым отставанием в отрасли.

Я (очевидно) не могу комментировать другие качества F #, но вы так же приветствуете, что и мои рекомендации.

Ответ 2

Python, похоже, много используется в общем научном сообществе. Он имеет множество доступных библиотек и легко учится.

Ответ 3

Я брошу Scala в банк.

  • он может использоваться для функционального программирования
  • он может быть выполнен так же быстро, как Java
  • это современный язык с множеством приятных аспектов.
  • Java, похоже, немного популярен в AI, поэтому вы можете использовать все эти библиотеки Java из Scala

Я решил все упражнения с базового курса ИИ в Scala. Он работал очень хорошо.

Ответ 4

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

Причины:

  • Это Lisp, и Lisps исторически были очень сильными в поле AI
  • Это homoiconic язык с мощными макросами, настолько отличный для генерации кода и генетического программирования. Это удивительно полезное свойство для программирования ИИ (и, возможно, объясняет некоторые из успеха Lisp вообще в этом пространстве)
  • Он работает на JVM и может легко получить доступ ко всем библиотекам Java для хруста числа (Weka, Colt и т.д.).
  • Это хорошо для быстрого интерактивного развития - это очень динамично, и вы можете делать практически все интерактивно в текущем REAL. Нет необходимости перекомпиляции и т.д.

Ответ 5

Если "все AI" вы также подразумеваете машинное обучение, которое, я думаю, Matlab, R и Python + Scipy должны быть обязательно упомянуты.

Ответ 6

Это важно, независимо от того, является ли среда программирования академической или нет, но для большинства неакадемических разработок AI-приложений я бы рекомендовал придерживаться основного языка, такого как Java или С++. Нужно иметь возможность легко взаимодействовать с другими COTS или программными пакетами с открытым исходным кодом, и это иногда может быть трудным или невозможным в более "экзотических" "языки. Для академической работы это может быть менее важной проблемой.

Кроме того, производительность может быть важна для многих приложений, а основные языки обычно имеют наиболее сильно оптимизированные компиляторы, например, С++ или Java.

Верно, что языки функционального программирования, такие как LISP, Scheme и т.д., имеют специализированные функции, которые могут облегчить реализацию определенных методов ИИ, но я не верю, что это верно для программирования, связанного с ИИ, например, методы количественного машинного обучения обычно не требуют функционального языка. Если вам нужен доступ к функциональным конструкциям и общим программным пакетам, для этого можно использовать инструменты для LISP, а недавно разработанные Clojure является LISP -вариантом, который запускается на JVM и может обращаться к библиотекам Java. Кроме того, Groovy - это другой язык на основе JVM, который включает поддержку закрытий.

Наконец, некоторые программисты, такие как гибкость парадигмы и/или быстрое прототипирование проектов ИИ. Ruby и Python оба рассматривают некоторые связанные с AI использование по этой причине в качестве языков с несколькими парадигмами, которые также могут использоваться для сценариев.

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

Ответ 7

Это действительно зависит от того, на какую проблему вы смотрите. Кроме того, как "глубоко" вы хотите пойти в материал AI. Если вы хотите учиться на основах и просто внедрять теоретический материал AI, переходите к языку более высокого уровня, как в функциональном программировании (и доказанном в ИИ), например, lisp, или прологе. Если вы знаете, с какой проблемой вы столкнулись и хотите эффективно, переходите к чему-то вроде Java, С++ и используйте инструментарий для создания этого материала. Поскольку вы упоминаете Machine Learning, посмотрите на Weka Toolkit в Java для некоторых из этих материалов.

Ответ 8

Выберите язык программирования с помощью методов AI так же, как вы выбираете язык для любого другого проекта:

  • В чем проблема, которую вы пытаетесь решить?
  • Есть ли хорошая поддержка для
    язык?
  • Каковы требования клиентов?

Я бы рекомендовал Prolog как очень хороший язык программирования, используемый для реализации систем AI.

Ответ 9

Нет "лучшего" языка. У каждого есть свои достоинства. Когда я изучал ИИ, в основном мы работали с lisp и прологом, но я был наиболее продуктивным в ИИ с Java/С#, а F # может многое предложить.

Ответ 11

Это также зависит от размера вашего набора данных. Для наборов данных веб-масштаба вы можете использовать Map-Reduce, а это означает Hadoop. Hadoop находится на Java, но вы можете использовать любой язык (Python и т.д.) Для своих функций Map-Reduce.

Ответ 12

Существует также java-инфраструктура, называемая weka, разработанная университетом waikato. Я не знаю, может ли это ответить на ваш вопрос, но это может помочь.

Цитата wikipedia: "Weka поддерживает несколько стандартных задач интеллектуального анализа данных, а именно, предварительную обработку данных, кластеризацию, классификацию, регрессию, визуализацию" И многое другое.