답변:
AI 프로그래밍을위한 강력한 언어가 필요하지 않습니다. 대부분의 개발자는 Keras, Torch, Caffe, Watson, TensorFlow 등과 같은 라이브러리를 사용하고 있습니다.이 라이브러리는 고도로 최적화되어 있지만 모든 작업을 처리하며 C와 같은 고성능 언어로 빌드됩니다. Python은 신경망 계층, 데이터로드, 처리 시작 및 결과 표시. 대신 C ++를 사용하면 성능이 거의 향상되지 않지만 메모리 관리를 관리해야하는 개발자가 아닌 사람에게는 더 어려울 것입니다. 또한 몇몇 AI 사람들은 매우 견고한 프로그래밍이나 컴퓨터 과학 배경을 가지고 있지 않을 수 있습니다.
또 다른 유사한 예는 엔진이 C / C ++로 코딩되고 종종 모든 게임 로직이 고급 언어로 스크립팅되는 게임 개발입니다.
C ++는 실제로 AI / ML 영역에서 가장 많이 사용되는 언어 중 하나입니다. 파이썬은 일반적으로 더 대중적이지만 다른 사람들이 지적했듯이 CPU 집중적 인 숫자 처리가 C ++로 수행되고 파이썬이 더 높은 수준의 함수에 사용되는 하이브리드 시스템을 갖는 것이 일반적입니다.
설명하기 위해 :
유연성이 얼마나 필요한지에 따라 달라집니다. 생산 준비가 완료된 시스템이 많고 조정이 많이 필요하지 않은 경우 C ++ (또는 C)도 좋습니다. 소프트웨어를 만드는 데 많은 시간을 할애해야하지만, 꽤 빨리 실행되어야합니다.
그러나 여전히 설정 및 매개 변수를 실험하고 아키텍처를 조정 해야하는 경우 C ++이 서투르게 작동합니다. 변경하기 쉽도록 Python과 같은 언어가 필요합니다. 일반적으로 Python과 같은 언어로 더 빠르게 코딩 할 수 있으므로 코드 변경이 더 쉽습니다. 당신이 지불하는 가격은 소프트웨어가 일반적으로 잘 작동하지 않는 것입니다.
그 절충이 어떻게 가장 잘 작동하는지 결정해야합니다. 일반적으로 코딩에 더 적은 시간을 소비하고 더 긴 런타임에 대해 너무 걱정하지 않는 것이 좋습니다. 코드를 작성하는 데 하루가 덜 걸리면 C 코드 버전을 따라 잡는 데 많은 시간이 걸립니다. 대부분의 경우 가치가 없습니다.
일반적인 접근 방식은 코어 라이브러리가 C / C ++로 구현되는 하이브리드 시스템으로, 많은 변경이 필요하지 않으며, 프론트 엔드 / 접착제 / 인터페이스는 Python으로되어 있습니다. 유연성과 속도가 필요하지 않기 때문입니다. 그 중요한.
그건 그렇고 AI에 관한 문제는 아니지만 해석 된 언어와 컴파일 된 언어의 일반적인 질문입니다. AI를 사용하면 많은 시스템이 여전히 애플리케이션보다는 연구에 중점을두고 있으며, 개발 속도가 실행 속도보다 우선합니다.
AI 애플리케이션을위한 소프트웨어 개발은 프로그래밍 자체와 프로토 타입으로 분리 될 수 있습니다. C / C ++는 매우 빠르게 실행되고 주류 운영 체제의 라이브러리로 제공 될 수 있기 때문에 응용 프로그램을 작성하는 데 유용한 언어입니다. 누군가가 턴키 어플라이언스를 배포하려는 경우 사전 컴파일 된 C / C ++ 애플리케이션이 최고의 표준입니다.
C ++은 GCC 나 LLVM 컴파일러로 프로그램을 컴파일하기 전에 어떤 알고리즘이 필요한지 알아야하는 중대한 문제가 있습니다. C ++은 주어진 소스 코드를 실행할 수 있고 효율적인 명령을 제공하지만 배열을 채워야하는 방식과 코드에 필요한 루프가 확실하지 않습니다. 이 질문은 응용 프로그램이 프로그래밍되기 전에 오는 프로토 타이핑 단계에 적합합니다. 문제는 컴파일 된 응용 프로그램을 빌드하고이를 운영 체제 패키지로 제공하는 방법이 아니라 다른 AI 알고리즘을 사용하여 일부 GUI 프로토 타입을 작성하고 팀 구성원과 진행 상황을 논의하는 것입니다.
스크립팅 프로그래밍을 기반으로하고 유사 의사 코드 기능을 제공하는 최고의 GUI 프로토 타입 언어는 Guido van Rossum이 발명했습니다. C ++을 대체하지는 않지만 새로운 종류의 도메인을 만듭니다. 소프트웨어가 구현되기 전에, 특히 혁신적인 인공 지능 영역에서 프로토 타입 단계가 필요합니다.
Python이 C ++보다 우수한 이유를 설명하기 위해 C ++로 소프트웨어 프로토 타입을 작성해야합니다. GUI 응용 프로그램을 빠르게 구현하기 위해 해당 언어를 사용할 수 있습니까? C ++은 빠른 편집주기를 가진 프로토 타입 언어가 아니라 시스템 프로그래머를위한 견고한 암석으로 설계되지 않았습니다. 즉, 프로토 타입이 이미 작동중인 경우 알고리즘이 수정되어 있고 문서가 작성된 경우 C ++로 코드를 다시 프로그래밍하는 것이 좋습니다. 즉, 주어진 Python 프로토 타입이 C ++로 변환되어 기존 운영 체제로 제공됩니다. 그러나 논문 작성, 대안 논의 및 혁신 관리와 관련된 사전 단계에서는 Python이 더 나은 선택입니다.
당신은 주장
C ++은 기술적으로 파이썬보다 강력한 언어입니다.
그러나 그 주장은 틀렸다 (또는 그다지 의미가 없다). 기억 프로그래밍 언어가 있습니다 사양 (영어로 작성 종종 어떤 문서). 예를 들어, n3337 은 C ++ 사양의 초안입니다. 나는 파이썬을 좋아하지 않지만 C ++보다 강력 해 보입니다 (C ++ 구현 이 일반적으로 파이썬보다 빠르 더라도 ) 반대로.
이론적으로 C ++과 Python은 Turing-complete (의도적으로) 프로그래밍 언어입니다.
그리고 파이썬은 C ++만큼 표현력이 좋습니다. 파이썬은 관련 제외 (C ++를 가지고 있지만하지 않는 것이 내가 프로그래밍 언어 기능의 이름을 수없는 반사 , 또한 볼 이 대답을하고 인식 dlopen
- 내 볼 manydl.c의 프로그램을 -의 LLVM 의 libgccjit 의 libbacktrace , 일부 고려 메타 -programming 라 A, 그들과 접근 방식을 Bismon 또는 같은 J.Pitrat의 블로그하면 ) 그것을 옹호.
아마도 당신은 프로그래밍 언어를 그것을 구현하는 소프트웨어라고 생각할 수 있습니다. 그렇다면 파이썬은 C ++만큼 표현력이 뛰어납니다 (배우기 쉽지만 환상입니다. 환상에 대한 자세한 내용 은 http://norvig.com/21-days.html 참조 ). 파이썬과 C ++는 문법이 매우 다르더라도 비슷한 의미를 가지고 있습니다 . 그들의 타입 시스템 은 매우 다릅니다.
슬프게도, 최근의 주요 기계 학습 라이브러리 (예 : TensorFlow 또는 Gudhi )는 실제로 C ++보다 Python에서 사용하기 쉽습니다. 그러나 TensorFlow와 Gudhi는 대부분 C ++로 코딩되며 C ++ API (Python만이 아니라)를 제공하고 문서화하므로 C ++ 코드에서 TensorFlow 또는 Gudhi를 사용할 수 있습니다 .
C ++은 멀티 스레드 프로그래밍을 가능하게 하지만 일반적인 파이썬 구현에는 GIL이 있고 바이트 코드화 되므로 C ++ (일반적 으로 GCC 또는 Clang 과 같은 컴파일러 를 최적화 하여 컴파일 되지만 Cling 과 같은 C ++ 해석기를 찾을 수 있음) 보다 상당히 느립니다 . Python의 일부 실험 구현은 JIT 컴파일 되고 GIL이 없습니다. 그러나 이것들은 성숙하지 않습니다 . TRL 을 높이기 위해 백만 유로를 투자하는 것이 좋습니다 .
C ++은 Python보다 배우기가 훨씬 어렵다는 점도 관찰하십시오. 십여 년에 걸친 C ++ 프로그래밍 경험에도 불구하고, 나는 대부분의 C ++을 실제로 알고 있다고 주장 할 수 없습니다.
안타깝게도 AI 소프트웨어 공학 (예 : 이 책 또는 저 책 책)을 가르치는 가장 최근의 책 은 예제로 Python (C ++ 아님)을 사용합니다. 실제로 C ++를 사용하는 최신 AI 책을 원합니다!
BTW, 나는 (같은 오픈 소스 소프트웨어 프로그램 이 하나, 또는 오래된 GCC MELT AI 기술을 사용하여), 그러나 그들은 파이썬을 사용하지 마십시오. AI 응용 프로그램에 대한 나의 접근 방식은 일부 DSL 설계를 시작 하는 것입니다.
일부 AI 접근법은 메타 프로그래밍과 관련이 있습니다. 예를 들어 시스템 코드 자체를 생성하는 것 (또는 대부분 또는 전부). J.Pitrat (2019 년 10 월에 사망)는이 접근 방식을 개척했습니다. 참조 자신의 블로그 , 자신의 CAIA 시스템 및 RefPerSys (그의 야망 대부분의 - 그리고 잘하면 모든 -의 C ++ 코드를 생성하는 것입니다)을 프로젝트.