내 2 센트
C / C ++보다는 일반적으로 작성하는 것이 더 쉽다고 생각합니다. 첫째, 파이썬과 같은 언어로 된 라이브러리는 결과가 있더라도 속도 이점을 얻는 데 반드시 필요한 것은 아닙니다. @David 가 그 이유를 잘 다루었 다고 생각
합니다.
언어 구현을 맨 위에서 가져 오면 어느 라이브러리에 액세스 할 수 있는지가 결정됩니다. 계산 과학에서 일반적으로 사용되는 언어에는 C, C ++, Python, Perl, Java, Fortran 및 R이 있습니다. 덜 일반적인 예는 Ocaml 및 Common Lisp입니다. 이제 이러한 언어의 대부분이 C로 작성 되었으므로 C에 대한 자연적인 외부 함수 인터페이스 가 있습니다. 그러나 파이썬에서 Perl 라이브러리를 호출하는 것은 쉽지 않습니다. 실제로 사람들은
구현 언어로 작성된 라이브러리, 일반적으로 표준 라이브러리의 일부이거나 광범위하게 사용 가능한 것 또는
언어 FFI를 통해 C / C ++ 라이브러리를 호출하십시오. 이것은 랩퍼가 존재하지 않는 것으로 가정합니다. 랩퍼가 있으면 (1)과 쉽게 구별 할 수 없기 때문입니다.
C / C ++ 함수를 직접 랩핑해야하기 때문에 (2)는 일반적으로 더 어렵다. 또한 라이브러리를 번들로 제공하거나 추가 종속성을 추가해야합니다. 이러한 이유로 사람들은 예를 들어 C에있는 GSL을 사용하지 않고 내장 언어 라이브러리를 사용할 가능성이 높습니다.
분포에서 랜덤 샘플을 생성하거나 적분의 직교와 같은 기본 수치 루틴을 생성하는 것과 같은 매우 일반적인 루틴의 경우 일부 라이브러리를 재사용하는 것이 쉽고 일반적입니다. 구현하려는 기능이 더 복잡 해짐에 따라 다른 라이브러리에서 원하는 정확한 기능을 찾을 가능성이 기하 급수적으로 높아질 수 있으며, 심지어는 기능을 검색하고 최종적으로 조정하는 데 많은 시간을 소비 할 수 있습니다 필요합니다 (예 : 코드 스타일 / 디자인이 문제가 될 수 있음). 그리고 위에서 논의한 바와 같이, 라이브러리의 일부에만 접근 할 수 있습니다. 반면에 알고리즘이 복잡하고 주요 초점이 아닌 경우 스스로 알고리즘을 구현하는 것은 어려울 수 있으며 물론 그 성가신 속도 문제를 해결해야합니다.
따라서 이것은 비용 / 이익 분석에서 최적화 문제가됩니다. 내 경험은 MCMC와 같은 비교적 표준적인 기술조차도 전체 소프트웨어를 설계하는 방법에 더 적합하기 때문에 일반적으로 자체 코드를 작성하는 것입니다.
물론 코드를 사용하지 않더라도 다른 사람들의 코드에서 배울 수 있습니다. 그러나 과학자들이 실제로 얼마나 자주 귀찮게하는지 모르겠습니다. 다른 사람들의 코드를 배우는 것이 소프트웨어 엔지니어 일 것입니다.