나는 현재 수치 방정식 시스템을 풀기 위해 C와 일부 포트란을 사용하고 있습니다.
나는이 두 언어 모두에 조금 지쳐 있지만 효율적인 코드가 필요합니다 ... OCaml로 전환하려고 생각하고 있습니다.
그만한 가치가 있습니까?
나는 현재 수치 방정식 시스템을 풀기 위해 C와 일부 포트란을 사용하고 있습니다.
나는이 두 언어 모두에 조금 지쳐 있지만 효율적인 코드가 필요합니다 ... OCaml로 전환하려고 생각하고 있습니다.
그만한 가치가 있습니까?
답변:
Jane Street Capital 의 사람들 은 그렇게 생각합니다. 그들은 2009 년 CMU에서 OCaml 사용에 대해 이야기했습니다 .
내가 생각할 수있는 유일한 단점은 행렬이 일류 시민이 아니라는 것입니다.
우선, 수치 계산의 경우 고급 언어가 저급 언어 보다 장기적으로 훨씬 유용하다는 특이한 진술을하고 싶습니다 . Fraunhofer Institut의 연구원을 일기 예보에 사용 된 수치 시뮬레이션에서 느슨하게 인용하겠습니다.
지난 10 년 동안 CPU는 1000 배 빨라졌고 알고리즘은 1000 * 1000 빨라졌습니다. 이는 어제의 CPU에서 실행되는 오늘날의 알고리즘이 오늘의 CPU에서 실행되는 어제의 알고리즘을 1000 배나 능가한다는 것을 의미합니다.
분명히 디스크 또는 RAM과 같은 CPU 속도 및 알고리즘으로 고려해야 할 매개 변수가 훨씬 더 많지만,이 문장은 낮은 수준의 언어를 선택하면 잘못된 요소 (1000 대신 1000)에 집중한다는 것을 이해하는 데 도움이됩니다. 1000 * 1000).
물론 특정 수치 알고리즘이 주어지면 C 또는 Fortran이 OCaml 또는 Common Lisp를 (실제로는 그렇지 않음) 큰 요인으로 이길 것으로 기대할 수 있습니다. 그러나 실제로 수치 문제에 관심이 있고 알고리즘을 개선하려는 경우 아이디어를 높은 수준으로 표현하고 알고리즘을 쉽게 개선 할 수있는 고급 언어를 선택해야합니다.
참고로 OCaml에서 숫자 코드 작성을 고려할 경우 OCaml이 매개 변수를 함수, 인라인 함수 및 언 박스 플로트에 전달하는 방법에 대해 반드시 알아야합니다. 이 모든 것은 Xavier Leroy의 노트에 자세히 설명되어 있습니다 .
최소한 멀티 스레드 프로그래밍을 볼 때까지 OCaml을 좋아했습니다.