Я изучал искусственный интеллект и компьютерное зрение, поэтому довольно хорошо знаю, какие инструменты используются в этой области.
По сути: вы можете использовать все, что захотите, если знаете, как это работает за кулисами.
Теперь, в зависимости от того, чего вы хотите достичь, вы можете использовать:
- Язык C, но вы потеряете много времени на проверку ошибок и управление памятью при реализации ваших алгоритмов. Теоретически, это самый быстрый язык для выполнения такой работы, но если ваши алгоритмы неэффективны в вычислительном отношении (с точки зрения сложности) или если вы теряете слишком много времени на проверку ошибок, это явно не стоит. Поэтому я бы посоветовал сначала реализовать ваше приложение на другом языке, а затем позже вы всегда можете оптимизировать небольшие части кода с помощью привязок C.
- Octave / MatLab: очень эффективный язык, почти такой же, как C, и вы можете создавать очень элегантные и сжатые алгоритмы. Если вы занимаетесь векторизацией, матричными и линейными операциями, вам следует пойти на это. Тем не менее, вы не сможете разработать целое приложение с этим языком, оно больше сосредоточено на алгоритмах, но тогда вы всегда сможете разработать интерфейс, используя другой язык.
- Python: элегантный и доступный язык "все в одном", используемый в гигантских масштабных приложениях, таких как Google и Facebook. С Python вы можете делать практически все, что вы хотите, для любых приложений. Он будет идеально адаптирован, если вы хотите создать полноценное приложение (с клиентским взаимодействием и всеми, а не только алгоритмами) или если вы хотите быстро составить прототип с использованием существующих библиотек, поскольку Python имеет очень большой набор высококачественных библиотек, таких как OpenCV . Однако, если вы хотите создавать только алгоритмы, лучше использовать Octave / MatLab.
Ответ, который был выбран в качестве решения, очень предвзят, и вы должны быть осторожны с таким архаичным комментарием.
В настоящее время аппаратное обеспечение дешевле, чем программное обеспечение (люди), и поэтому вам следует использовать языки, на которых вы сможете быстрее получать результаты, даже если это будет стоить нескольких циклов ЦП или пространства памяти.
Кроме того, многие люди склонны думать, что, пока вы внедряете свое программное обеспечение в C / C ++, вы делаете Святой Грааль скорости: это просто неправда. Во-первых, потому что сложность алгоритмов важнее, чем язык, который вы используете (плохой алгоритм никогда не превзойдет лучший алгоритм, даже если он реализован на самом медленном языке во вселенной), и, во-вторых, языки высокого уровня в настоящее время делают очень много кэширования и оптимизации скорости для вас, и это может заставить вашу программу работать даже быстрее, чем в C / C ++.
Конечно, вы всегда можете делать все вышеперечисленное в C / C ++, но сколько времени вы готовы потратить впустую, чтобы изобретать велосипед?