과학 프로그래머를 위한 독서 목록
저는 과학 프로그래머가 되기 위해 일하고 있습니다.저는 수학과 통계학에서 충분한 배경은 있지만 프로그래밍에 대한 배경은 부족합니다.SP에 대한 대부분의 참조가 사소한 것에 가깝기 때문에 과학 프로그래밍에 언어를 사용하는 방법을 배우는 것이 매우 어렵다는 것을 알았습니다.
제 작업은 통계/재무 모델링을 포함하지만 물리 모델에는 포함되지 않습니다.현재 Python을 numpy와 scipy로 폭넓게 사용하고 있습니다.R/Mathematica 완료.코드를 읽을 수 있을 만큼 C/C++를 알고 있습니다.Fortran에 경험이 없습니다.
나는 이것이 과학 프로그래머에게 좋은 언어 목록인지 모르겠다.그렇다면 과학적 환경에서 이러한 언어의 구문과 디자인 패턴을 학습하기 위한 좋은 독서 목록은 무엇입니까?
어떤 단계에서는 부동 소수점 산술이 필요할 것입니다.잘 하는 것도 어렵고, 잘 하는 것도 덜 힘들고, 잘 못하는 것도 쉬워요.이 문서는 필독서입니다.
부동 소수점 산술에 대해 컴퓨터 과학자가 알아야 할 사항
꼭 추천합니다.
과학 및 엔지니어링 C++: Barton과 Nackman의 고도의 기술과 예에 대한 소개
나이 탓으로 미루지 마세요. 훌륭합니다.마음에 드는 언어의 수치 레시피(C, C++, 또는 Fortran의 경우)는 포괄적이고, 각 문제에 대해 항상 최적인 알고리즘은 아니지만 학습에 매우 적합합니다.
나도 좋아해
C++와 MPI에서의 병렬 과학 컴퓨팅: 병렬 알고리즘과 Karniadakis의 구현에 대한 심리스한 접근법
병렬 컴퓨팅을 빨리 시작할수록 좋습니다.
첫 번째 제안은 당신의 특정 분야의 상위 5개 대학을 살펴보고, 그들이 무엇을 가르치고 있는지, 교수들이 연구를 위해 무엇을 사용하고 있는지 살펴보는 것입니다.이를 통해 관련 언어/접근법을 검색할 수 있습니다.
또한 이 스택오버플로우 질문("과학적 환경에서 프로그래밍을 위한 프랙티스")도 살펴보십시오.
통계/재무 모델링을 한다고요?저는 이 분야에서 R을 사용하고 있으며, 특히 사회과학에서 통계 분석의 기준이 되고 있습니다(예를 들어 http://rinfinance.com 참조).Matlab은 아직 업계에서 널리 사용되고 있을 것입니다만, 이것이 변화하고 있는 것은 아닐까 하는 생각이 듭니다.퍼포먼스가 중요한 경우라면 최후의 수단으로 C++로 돌아갑니다.
R과 관련된 읽기 자료를 찾는 데 도움이 되는 관련 질문을 참조하십시오.
- 과학에 적합한 언어
- 언어 학습용 서적
- 할 수 있는 일, 할 수 있는 일, 할 수 있는 일, 할 수 있는 일, 할 수 있는 일, 할 수 있는 일, 할 수 있는 일, 할 수 있는 일, 할 수 있는 일, 할 수 있는 일, 할 수 없는 일
- r-for-for-for-for-for-for
통계와 재무에 관한 서적 추천에 관해서는 데이비드 러퍼트의 "통계와 재무"가 가장 일반적인 옵션이라고 생각합니다(대부분의 R코드는 여기에서 찾을 수 있고 저자의 웹사이트는 matlab 코드를 가지고 있습니다).
마지막으로 과학적 컴퓨팅이 통계적이지 않다면 Mathematica가 최고의 도구라고 생각합니다.프로그래머들 사이에서는 거의 언급되지 않는 것처럼 보이지만, 제가 보기에는 순수 과학 연구를 위한 최고의 도구입니다.matlab의 적분 방정식이나 편미분 방정식과 같은 것을 훨씬 더 잘 지원합니다.그들은 울프램 웹사이트에 좋은 책 목록을 가지고 있다.
언어면에서는 커버력이 좋은 것 같아요.Python은 실험과 프로토타이핑에 적합하고 Mathematica는 이론적인 것에 도움이 되며 C/C++는 심각한 수치 계산을 해야 할 경우에 적합합니다.
또, 어셈블리 언어나 기능 언어(해스켈 등)에 대한 이해를 깊게 하는 것도 추천합니다.실제로 사용하는 것이 아니라, 프로그래밍 스킬이나 스타일에 미치는 영향, 그리고 그것이 당신에게 가져다 주는 개념에 대한 영향 때문입니다.그것들은 또한 언젠가 유용하게 쓰일지도 모른다.
병행 프로그래밍(동시/분산)에 대해서도 학습하는 것이 중요하다고 생각합니다.이는 병행 프로그래밍이 과학적 문제에 필요한 컴퓨팅 파워를 이용할 수 있는 유일한 방법이기 때문입니다.실제로 기능적 언어를 사용하여 문제를 해결하든 그렇지 않든 기능적 프로그래밍에 노출되는 것은 매우 유용합니다.
아쉽게도 저는 독서에 대해 별로 제안할 것이 없습니다만, The Scientist and Engineer's Guide to Digital Signal Processing(디지털 신호 처리 과학자와 엔지니어 가이드(The Scientist and Engineer's Guide to Digital Signal Processing.
저는 최근 2년 동안 이 분야에 입문한 과학 프로그래머입니다.저는 생물학과 물리학 모델링에 더 관심이 있지만, 여러분이 찾고 있는 것은 분명 비슷할 것입니다.제가 취업이나 인턴십에 지원하면서 알아야 할 중요한 것은 두 가지가 있었지만, 결국 기회를 놓치게 되었습니다.하나는 이미 언급한 MATLAB입니다.다른 하나는 데이터베이스 설계입니다. SP의 어느 영역에 있든 많은 데이터를 관리해야 할 것입니다.
Michael Hernandez의 "Database Design for Mere Mortals"라는 책은 좋은 시작이라는 추천을 받았고 준비에 많은 도움을 주었습니다.아직 이해하지 못하셨다면 최소한 기본적인 SQL을 이해하셨는지 확인하겠습니다.
저는 어떤 숫자 레시피 책이라도 유용하게 쓰라고 제안합니다.
사용하는 언어나 시각화를 실시하는 경우에 따라서는, 다른 제안이 있을 수 있습니다.
내가 정말 좋아하는 또 다른 책은 디디에 베셋의 객체 지향적 수치적 방법의 구현이다.그는 자바와 스몰톡으로 많은 방정식을 하는 방법을 보여주지만, 더 중요한 것은 컴퓨터에서의 사용을 위해 방정식을 최적화하는 방법과 컴퓨터에서의 한계로 인한 오류에 대처하는 방법을 보여주는 데 도움을 주는 환상적인 일을 하는 것입니다.
도널드 크누스의 반 소비자 알고리즘에 관한 책이요
MATLAB은 설계, 신속한 개발 및 프로덕션 애플리케이션에 엔지니어링에서 널리 사용되고 있습니다(현재 프로젝트에는 네이티브 C++보다 하기 쉬운 고급 번호 크런칭을 수행하기 위한 MATLAB 생성 DLL이 있으며, FPGA에서도 신호 처리에 MATLAB 생성 코어를 사용하고 있습니다.이는 동일한 HA에 의한 코딩보다 훨씬 쉽습니다).nd(VHDL).또한 MATLAB을 위한 재무 도구 상자도 있습니다.
이는 MATLAB이 귀하의 분야에 가장 적합한 선택이라고 할 수는 없지만, 적어도 엔지니어링 분야에서는 널리 사용되고 있기 때문에 곧 보급되지 않을 것입니다.
과학 프로그래머가 직면한 문제 중 하나는 다른 사람이 실험을 재현하는 데 사용할 수 있는 코드(및 데이터) 저장소를 유지하는 것입니다.제 경험상, 이것은 상업 개발에는 필요 없는 기술입니다.
다음은 이에 대한 몇 가지 판독치입니다.
이것들은 컴퓨터 생물학의 맥락이지만 나는 그것이 대부분의 과학 프로그래밍에 적용된다고 생각한다.
또한 Python Scripting for Computational Science도 살펴보십시오.
좋아요, 다음은 제가 같은 목적으로 사용해 온 책 목록입니다.
OpenMP 사용: 휴대용 공유 메모리 병렬 프로그래밍(과학 및 엔지니어링 계산)
MPI 및 Open을 사용하는 C의 병렬 프로그래밍MP
Donald Knuth: 세미컨슈머컬 알고리즘, 컴퓨터 프로그래밍 기술 제2권
또한 최근에는 Python이 아닌 R을 사용하고 있습니다.
과학적 환경에서 일반적인 C++의 경우, Andrei Alexandrescu의 Modern C++ Design은 일반적인 디자인 패턴에 대한 표준 책일 것입니다.
이 블로그를 사용하시면 꼭 읽어보시길 권합니다.
C++ 템플릿을 사용하여 타입 세이프 유닛을 제공하는 방법에 대해 설명합니다.예를 들어, 속도에 시간을 곱하면 거리 등을 얻을 수 있습니다.
소스 코드를 읽는 것도 많은 도움이 됩니다.Python은 그런 의미에서 훌륭하다.과학 Python 툴의 소스코드를 파헤치는 것만으로 많은 정보를 습득했습니다.게다가 마음에 드는 툴의 메일링 리스트나 포럼을 팔로우 하면, 스킬을 한층 더 향상시킬 수 있습니다.
Donald Knuth: 세미컨슈머컬 알고리즘, 컴퓨터 프로그래밍 기술 제2권
프레스, Teukolsky, Vetterling, Flannery: C++의 숫자 레시피 (이 책은 훌륭합니다.라이선스에 주의해 주세요)
GNU Scientific Library의 소스 코드를 확인합니다.
과학 소프트웨어 쓰기: 좋은 스타일로의 가이드는 현대 과학 프로그래밍에 대한 전반적인 조언을 담은 좋은 책입니다.
Java의 경우 Unit-API를 살펴볼 것을 권장합니다.
구현은 Eclipse UOMO(http://www.eclipse.org/uomo) 또는 JScience.org)입니다(Unit-API에 대해 진행 중인 작업, JSR-275의 초기 구현이 있습니다).
언급URL : https://stackoverflow.com/questions/1671682/the-reading-list-for-scientific-programmer
'programing' 카테고리의 다른 글
생성된 URL의 "public/index.php"를 삭제하려면 어떻게 해야 합니까? (0) | 2022.11.27 |
---|---|
사전에서 요소 삭제 (0) | 2022.11.27 |
호출되지 않은 객체의 메서드를 확인하는 방법은 무엇입니까? (0) | 2022.11.27 |
google chrome 확장자 :: console.log()를 백그라운드페이지에서 사용하시겠습니까? (0) | 2022.11.27 |
MySQL 테이블에 인덱스를 추가하려면 어떻게 해야 합니까? (0) | 2022.11.27 |