문제

저는 현재 대학에서 "Scientific Computing"이라는 수학 수업을 받고 있으며 교수는 C가 과학적 컴퓨팅에 사용되는 가장 일반적인 언어 이며이 교수가 얼마나 정확한 지 궁금해하고 있다고 말했습니다.

도움이 되었습니까?

해결책

내 사업 (Particle Physics)에서 우리는 Fortran 77에서 C ++ 및 Python으로 거의 이동했습니다. 우리의 사람들 케어 프로그래밍에 대해 모든 것을 알고 있지만 틈새 애플리케이션 (임베디드 DAQ 보드, 특수 목적 드라이버 등)을 위해서만 작성되었습니다.

그러나 C 학습은 당신에게 프로그래밍을위한 확고한 토대를 제공 할 것이며, 교수들과 논쟁하는 것은 거의 유익하지 않습니다.

다른 팁

나는 당신의 교수의 대답이 그것이 옳더라도 당신에게 잘 섬기고 있다고 생각하지 않습니다.

과학 컴퓨팅 및 데이터 시스템의 컨설턴트로서의 경험에 따르면 C는 확실히 많이 사용되지만 Fortran과 C ++도 사용됩니다. 파이썬은 가장 일반적으로 사용되는 스크립팅 언어입니다.

나는 이것이 바뀔 것이라고 생각합니다. 큰 문제는 이제 평행 컴퓨팅이며 이것은 내가 언급 한 전통적인 언어에서 고통 스럽습니다 (MPI 누구?). 나의 추측은 많은 병렬화가 가상 머신으로 이동해야한다는 것입니다 : Java 또는 .NET; 즉, 나는 병렬화가 JIT의 직업이어야한다고 생각합니다. 그것이 활성화 될지 여부, 요새, 또는 전통적인 언어 중 하나는 모르겠습니다. 인텔이 밀고 있습니다 병렬 도구 C/C ++의 경우, 그러나 Terracotta와 같은 것이 장기적으로 더 나을지 궁금합니다 (나는 그것을 시도한 과학계의 누구도 들어 본 적이 없지만 큰 금융은 그렇게 개방적이지 않습니다).

질문이 과학 컴퓨팅에서 일자리를 얻는 법을 배우는 것이라면, 내가 말하는 첫 번째 말은 프로그래밍 기술보다 과학 기술에 고용 될 가능성이 더 높다는 것입니다. 많은 과학 코드, 이에 대한 자세한 내용은 이 주제). 만약 너라면 ~이다 프로그래밍 기술 (아마도 HPC)을 위해 고용 될 예정이면,이 교수의 의견에 따르면, 그것들은 그다지 중요하지 않은 미래에 새로운 프로젝트에 쓸모 없을 수 있다고 생각합니다. 그러나 일부 파이썬을 아는 것은 아프지 않을 것입니다. Numpy.

Fortran은 과학적 목적으로 매우 일반적이지만 C는 대부분의 경우 모든 유형의 프로그래밍에 좋은 솔루션이 될 정도로 일반적인 목적입니다.

생물 정보학 및 계산 생물학의 경우 C는 매우 인기가 있습니다.

Mathematica, Matlab 및 기타 유사한 도구에서 많은 "과학 컴퓨팅"이 처리됩니다.

글쎄 ... 후드 아래에서 Matlab은 C 또는 C ++로 작성되었지만 Mathematica의 많은 부분이 Mathematica 자체로 작성되었습니다. 역사적 이유와 C의 본질적인 특성이기 때문에 많은 과학 및 하이테크 컴퓨팅 소프트웨어 라이브러리 등이 C/C ++로 작성됩니다.

C/C ++는 많은 실시간 및 고성능 애플리케이션에서 유리한 우위를 계속 누릴 것이라고 생각합니다. 원시 컴퓨팅 자체 (고급 언어로는 표현할 수 없음)가 아니라 단단한 루프의 로컬 최적화에 적합합니다. 및 다양한 구성 요소와 인터페이스하기 위해, 물리적 장비 조각 또는 예를 들어 병렬 컴퓨팅 프레임 워크와 같은 소프트웨어 요소.

DMCKEE가 지적했듯이 C에 대한 연구는 적어도 절차 적 프로그래밍을 크게 프로그래밍하기위한 좋은 토대를 제공합니다. 또한 실제 적용이 있으므로 교수의 의견에는 현재 강력한 후원이 있습니다. 그러나,,! 교수와 장로들로부터받은 지혜에 대해 계속해서 도전하면서 때로는 선의 마스터와 마찬가지로 목적지가 아니라 여행/과정을 위해 길을 가고 있다는 것을 이해합니다.

C는 프로그래밍에서 널리 사용됩니다. 우리 대부분의 프로그래머는 특히 대학에있을 때 C에서 코딩하고 있습니다. 그것은 단지 당신의 교수 선호도입니다.

C는 많은 과학 컴퓨팅에 실제로 사용됩니까?

과학 컴퓨팅에는 여러 가지 다른 것들이 포함되며, 결과적으로 많은 다른 프로그래밍 언어가 과학 컴퓨팅에 사용됩니다.

전통적으로 과학적 컴퓨팅은 고성능 컴퓨팅을 의미했으며 대부분 선형 대수 및 일부 스펙트럼 방법 (예 : FFT)으로 범위가 제한되었으며 대부분 Fortran에서 수행되었습니다. 그 이후로, 과학 컴퓨팅의 폭은 현재 기술 컴퓨팅 (예 : 대량 데이터, 그래프 플로팅, 프로토 타이핑)을 고려하는 많은 사람들이 동일한 제목으로 떨어지고 다른 사람들이 상징적 계산과 같은 새로운 형태의 고성능 컴퓨팅을 선택하는 것을 고려하고 있습니다.

Python, R, Mathematica 및 Matlab과 같은 언어는 일반적으로 기술 컴퓨팅에 사용됩니다. C, C ++ 및 Fortran과 같은 언어는 여전히 숫자 위기에 사용됩니다. OCAML과 같은 언어는 대규모 상징적 계산에 사용됩니다.

과학자와 엔지니어를위한 전문 프로그래머 구축 소프트웨어로서 저는 거의 모든 수치 방법론이 C로 작성되었다고 말할 수 있습니다. 따라서 우리의 경우 확실히 사실입니다. C ++와 Fortran의 주머니가 있습니다. 성능 측면에서 잘 코딩 된 C와 좋은 컴파일러를이기는 것은 어렵습니다. 매우, 가끔 우리는 조립에 담그는 것입니다.

그러나 세상은 많이 바뀌 었습니다. Python은 훌륭한 언어 - 가장 좋은 언어 IMHO이며 기본 라이브러리를 호출 할 수 있습니다. 그런 다음 다시 소스 해석 언어가 있지만 거대한 숫자 메소드 라이브러리가 모두 C 또는 C ++를 컴파일했습니다. 그런 다음 OpenCL 및 많은 바인딩과 같은 모든 새로운 하드웨어 가속 메소드를 추가하십시오 ... C 또는 Fortran은 더 이상 유일한 대답이 아닙니다. 그러나 전통적인 CPU 번호 C 및 ASM이 클래스에서 최고입니다.

다른 실험실 및 연구 기관에서 일한 경험에 따르면 컴퓨터 언어를 배우면 기초와 프로그래밍 소개 만 제공한다고 말합니다. C 또는 Java는 소개로 선택하는 데 유리한 언어이므로 교수는 특정 확장에 맞습니다.

1 언어로 지식을 다른 언어에 적용 할 수 있다는 것은 계산/개발 작업 환경에서 성공의 열쇠입니다. 다른 회사/Institutes/Lab Group을 통해 움직일 때 각 회사는 언어/소프트웨어에서 자신의 선호도를 갖게 될 것입니다. 새로운 것을 빨리 배울 수 있다는 것은 하나의 특정 언어의 구문을 암기하는 것보다 더 중요합니다.

물론 프로젝트를 위해 선택한 언어를 선택하면 필요한 라이브러리가있는 1을 선택하십시오.

예, MPI와 함께 Ansi C.

때때로 사람들은 "목표 c"를 사용하기를 원합니다. 즉, 함수를 큰 클래스의 방법에 넣고 모든 사례가 별도의 코어에서 실행됩니다. 이것은 C ++가 아니라 "객체가있는 C"입니다. 메소드 객체 모델을 제외하고 C ++ 기능 중 어느 것도 사용되지 않습니다. 이것은 단지 동일한 오래된 c를 "합리적 객체 모델"으로 래핑하는 것입니다. 중간 레이어 등을 사용할 수 있습니다.

위의 좋은 예 : lammps.

Charm ++는 "현대적인 방식으로 좋은 오래된 C"를 얻는 또 다른 좋은 방법입니다.

과학 언어의 다른 언덕에는 LISP, Haskell 및 기타 메타 랭 그룹이 있습니다. 이것은 시간이 문제가되지 않고 대답의 존재 인 과학 프로그래밍의 "소프트"세계입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top