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

Я студент средней школы, и у меня есть немного опыта программирования раньше. Теперь я хочу погрузиться в мир искусственного интеллекта и робототехники (создание ИИ-программ и игр и создание роботов). Какая парадигма программирования лучше для этих субъектов? Я выучу язык программирования, в соответствии с этим. Моя школа преподает Java, но поскольку это просто язык ООП, я не знаю, подходит ли он для этой работы. Является ли многопарадигмальный язык лучшим для них?

Должен Ли Я изучите Python, C, C++, Java или LISP для этого?

6 ответов


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

где ваши языковые навыки могут иметь значение в работе с другими. И я определяю это очень широко, чтобы включить такие вещи, как работа с пакетами, написанными другими людьми, обучение по книгам, которые имеют языковой подход и т. д. Это мой мнение, что хорошая книга об ИИ не будет цепляться за какие-либо конкретные языки, но будет использовать псевдокод для получить идеи. К сожалению, моя точка зрения не универсальна. И конечно, вы не можете написать пакет в псевдокоде. C / C++ и Lisp являются общими для этого, но не настолько, чтобы я хотел подтолкнуть вас к ним. Кроме того, если это станет для тебя чем-то большим, чем хобби, ты все равно выучишь кучу языков.

Я не эксперт по робототехнике. Одно из больших различий заключается в том, что в какой-то момент Вы захотите взаимодействовать с оборудованием на гораздо более низком уровне, что делает я думаю, что C или c++ были бы гораздо более распространенными. Другие люди упоминали Lego Mindstorms, что также является хорошей мыслью. Язык, стоящий за Mindstorms, является вариантом другого языка, LabVIEW, о котором вы, вероятно, не слышали. LabVIEW широко используется в промышленности для управления испытательным оборудованием, а контрольное испытательное оборудование очень похоже на управление роботом. Преимущество LabVIEW / Mindstorms в том, что это очень простота в использовании и получить хорошие результаты от очень быстро. Недостатком этого является то, что это совсем другой стиль программирования от любого из других языков, о которых идет речь, и знание этого не поможет вам в изучении других языков.


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

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

Удачи.


не сбрасывайте Java со счетов как "просто язык OO". Это был язык, выбранный на одном из моих классов ИИ. И мой любимый мультиагентный симулятор MASON-это java.

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

но я думаю, что независимо от вашего интереса, вы, вероятно, захотите используйте некоторые существующие рамки или платформы робототехники. например, ROS, Microsoft Robotics Studio, URBI и т. д. и вы, вероятно, захотите использовать один из выбранных ими языков. Я меньше знаю о разработке игр, но я предполагаю, что это аналогичная история с библиотеками и инструментами, которые вы захотите использовать.

Итак, короткий ответ: да. вы, вероятно, узнаете их все в ходе своей карьеры. используя каждый из них, когда в правильной ситуации.


тот факт, что вы упомянули как ИИ, так и робототехнику в целом, означает, что мы не можем дать вам конкретные ответы и конкретные причины, не выбирая то, что мы сами знакомы.

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

из моего опыт, если вы планируете читать книги по ИИ, которые дают образец кода, то будьте готовы прочитать много Lisp. Хотя вам не нужно изучать Lisp до уровня программирования в нем, вам нужно будет прочитать его и понять. Я бы посоветовал вам взять книгу о Lisp, такую как"Земля сюсюкать " Конрада Барски.

поскольку робототехника имеет дело непосредственно с оборудованием, вы можете найти себе драйверы устройств, которые почти всегда делаются в C, в то время как AI имеет дело с шаблоном поиск, который обычно выполняется на функциональном языке, таком как LISP, ML, OCAML, F#, или на языке логики, таком как PROLOG.

удачи и будьте настойчивы.


Я занимаюсь робототехникой около 6-7 лет. Я бы определенно рекомендовал C / C++ в качестве компилятора и Python в качестве интерпретатора.

C / C++ : Это хорошо, потому что: Его очень низкий уровень, чтобы иметь возможность легко взаимодействовать с оборудованием. Вы почти всегда увидите все микроконтроллеры с поддержкой C/C++. Это не относится к Java. Я никогда не видел, чтобы какой-либо другой язык компилятора так широко использовался. Java работает на виртуальной машине. Что делает его тяжелым двоичным, как по сравнению с двоичным файлом, созданным C / C++. И вы можете начать работу с C/C++, чтобы написать небольшой код очень скоро. C имеет указатели, которые известны как смертельные. Но я познакомился с ним, когда мне было 16, и я влюбился в него. Его имеет много концепций ООП и последняя версия C / C++ поставляются с библиотеками boost, которые очень просты в использовании и очень легко выйти из ошибок сегментации и т. д., Когда вы знаете, как его использовать. ROS (операционная система робота) почти полностью поддерживает и был написан в C / C++.

Python : Его в устном переводе. Но с python так много адаптивности, что вы можете написать чрезвычайно сложные коды AI и проверить их практически в кратчайшие сроки. Существует библиотека NumPy, которая упрощает векторизацию кода и, следовательно, обработку огромных данных куска (например, Matlab). Почему огромный кусок является важным фактором ? Потому что ИИ имеет дело с огромным набором данных для обучения и тестирования своих алгоритмов. Вы увидите даже часть ИИ, который компьютерное зрение имеет много данные для просмотра и управления. Matlab не является бесплатным. Python есть, и это здорово !!


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

Если вы хотите легко настроить, нет решения для пайки с графическим языком программирования (drag-n-drop + enter parameters), то Lego Mindstorms NXT 2.0 стоит посмотреть-только недостаток-это дорого. Существует ежегодный конкурс (Первая лига Lego, http://www.firstlegoleague.org/) что может быть отличным способом привлечь вашу школу.

плата Arduino также довольно проста в работе (даже без пайки), и для нее есть огромное количество ресурсов в сети (например,http://letsmakerobots.com/node/2164). Arduino использует вариант языка программирования C.

Я не использовал систему PICAXE, но, похоже, у нее есть хорошие ресурсы для образовательных целей. Он использует основной язык программирования (или блок-схема язык, подобный по духу Lego Mindsotrm NXT), и он имеет большие вводные уроки тоже, например http://letsmakerobots.com/start

Я ожидаю, что Rasberry Pi станет все более популярным (я только что получил свой неделю назад: -), и это позволит сделать больший выбор в языках программирования...

Это захватывающее время для DIY оборудования. Удачи вам!