2010-02-05 2 views
10

저는 컴퓨터 과학 학생이며 장르와 분위기 입력에 따라 음악을 구성하는 인공 지능 프로젝트를 진행할 것입니다. 이 프로젝트에 사용되는 알고리즘이 자원을 많이 소비 할 가능성이 있습니까? C++이 아닌 Java로 갈 경우 속도면에서 어떤 차이가 있습니까? (참고 :이 두 언어 만 알고 있고 C++보다 Java에 더 익숙합니다.)인공 지능 프로젝트 - 어떤 언어를 사용해야합니까?

NB : 불쌍한 영어에 대한 죄송합니다. 누군가가 할 수 있으면 필요한 경우이 게시물을 정리하십시오. 감사.

+3

이 질문은 많이 발생합니다. 짧은 대답 : 언어 선택은 응용 프로그램의 성능에 거의 영향을 미치지 않습니다. –

+1

크렘린 - 비 원어민이 더 명확하게 의사 소통하는 데 도움이되는 여러 게시물을 편집했지만 게시물에 실제로 필요하지 않습니다. 당신의 작문 영어 기술은 많은 영어 원어민의 영어 실력보다 낫습니다. –

+2

@ Earwicker : 응용 프로그램의 성능에서 언어는 (적어도 AI 프로그래밍에서는) 큰 차이를 만들지는 않겠지 만 * 프로그래머의 수행에서 * 언어 선택은 엄청날 수 있습니다. –

답변

12

자원 소비는 선택한 언어보다 알고리즘 방식에 영향을받습니다. Java에 익숙하다면 해당 언어로 응용 프로그램을 프로그래밍하십시오. C++ 구현이 10 % 더 빠를 수도 있습니다.

그렇다면 Artificial Intelligence API's for Java에 관심이있을 것입니다.

+0

유용한 링크를 제공해 주셔서 감사합니다. –

+0

C++ 구현은 10 배 더 빠릅니다. 방금 Java의 경우 40 초가 걸려서 16M 벡터 배열을 초기화했습니다. –

+0

C++에는 끔찍한 메모리 누수의 예가 있습니다. 요점은 개발자가 편안하다고 느끼는 언어를 사용하여 조숙 한 최적화를 피하는 것입니다. –

13

Java로 이동하면 더 편하게 사용할 수 있습니다. 그러면 프로그래밍이 아니라 문제를 해결하는 데 집중할 수 있습니다. 어쩌면 C++은 더 빠른 프로그램으로 끝날 수도 있지만 어쩌면 느리게 진행될 것입니다. 그리고 그 프로그램이 엄청나게 빠르다고 단호하게 말할 필요는 없습니다.

3

제 생각에 AI와 주로 관련된 언어는 Lisp입니다.

Why is Lisp used for AI?에 대한 답변보기 -이 내용은 60 년대와 70 년대에 언급되었지만 최근에는 동적 언어 (루비, 파이썬 등)가 사용되었습니다.

3

프로젝트의 개념 증명 단계에있는 것처럼 보입니다. 나는 당신의 가장 편한 언어를 사용하고자합니다. 잘 작성된 Java 코드는 더 빨리 실행되고 불완전하게 작성됩니다.

1

저는 몇 년 전에 비슷한 AI 프로젝트를했습니다. 어떤 솔루션을 구현할지는 모르지만 인공 지능 프로그램은 일반적으로 자원을 많이 소비하고 실행하는 데 시간이 오래 걸릴 수 있지만 다른 한편으로는 익숙한 언어가 필요합니다. 시간 내 완료.

그러므로 내 조언은 C++ (또는 C)를 알고 있다고 느끼면 그 중 하나를 사용하십시오. 당신이 그들을 모르는 경우에, 당신이 선택하기 전에 새로운 언어를 배우기에 투자 할 필요가있을 시간을주의 깊게 고려하십시오.

1

처음부터 시작한다면 가장 잘 아는 것을 사용하십시오. 개발 속도를 높이기 위해 확립 된 라이브러리를 사용하고 싶다면 먼저이를 조사하고 싶을 수도 있습니다.하지만 자바는 확실하게이를 가지고 있습니다.

신발에서 나는 확실히 Java를 고를 것입니다.

2

나는 이와 같은 프로젝트에 Common Lisp을 사용할 것이다. 당신이 Lisp을 모른다면, 나는이 유형의 프로젝트를 위해 그것을 배울 것입니다. 훌륭한 학습 경험이 될 것이며 CS 학생이기 때문에 도움이 될 것입니다. Lisp은 진짜 눈길을 끄는 언어입니다.

+3

많은 lisps (SBCL for one)가 원시 코드로 컴파일됩니다. Clojure는 JVM에서 실행되고 Java 라이브러리와 잘 통합되는 Lisp 언어이므로 두 가지 장점을 모두 활용할 수 있습니다. –

+0

@ 팀 : Clojure 언급 주셔서 감사합니다, 나는 그것을 위해 봤어요. 꽤 재미있어 보인다! –

0

내 조언은 모든 ADT, 모든 알고리즘 클래스, 계층 구조, 모든 것을 먼저 디자인하는 것입니다. 이런 종류의 프로젝트/프로그래밍은 C/C++ 언어 계열에서 설계하기가 어려울 수 있습니다. 아마도 문자열 입력이 적은 철학으로 다른 언어를 선택할 수 있습니다. 따라서이 문제를 해결하기 위해 설계된 언어를 사용 하시길 권장합니다. 예를 들어, functional paradigm 예 : LISP, logical paradigm 예 : PROLOG 또는 그와 비슷한 것을 사용하시기 바랍니다.

0

저의 3 학년 논문 프로젝트는 셀룰러 네트워크 라디오 주파수 할당을위한 휴리스틱 스 구현이었습니다. C++보다 Java를 선택하기 때문에 C++을 사용했을 때보 다 훨씬 쉽게 결과를 시각화 할 수있었습니다. 나는 C++에서 성능이 크게 달라졌을 것이라고 생각하지 않습니다. 당신의 알 고리의 복잡성 요소가 아마도 가장 큰 요인 일 것입니다.

나는 다음과 같은 이유로 Clojure에 함께 가고 싶어
1

:

  • 을 그것은 리스프, 그리고 Lisps는 AI 개발을위한 훌륭한 언어이다 (일부 역사뿐만 아니라, 진짜 콘크리트 이유 - this threadthis thread 참조)
  • Clojure의는 JVM에서 실행되며 큰 자바 상호 운용성을 가지고, 그래서 당신은 모든 위대한 자바 AI 라이브러리 (예 : Weka를) 이용할 수 플러스 당신이 이미 들어
  • 의 JVM 요즘 뛰어난 최적화 JIT 컴파일러가 자바 환경의 경험이 모든 실제적인 목적으로 이런 종류의 애플리케이션에서 C/C++만큼 빠른 성능을 얻을 수 있습니다.
관련 문제