컴퓨터 과학을 위해 어떤 언어를 배워야합니까?


11

나는 전산 과학 개념에 완전히 익숙하지 않으며 좋은 출발점을 찾고 있습니다.

나는 객관적으로 가장 좋은 언어는 없지만, 계산 과학과 관련하여 논란의 여지없이 강력하고 눈에 띄는 언어-탁월한 능력과 효율성을 가진 언어를 배우고 싶습니다.

시작하기 위해 나는 그래픽 표현 / 시뮬레이션에 대한 요구와 함께 원자 결합 및 상호 작용과 관련된 모델링에 기울고있었습니다.

일부 언어는 다른 언어보다 일부 분야에서 더 나은 경향이 있습니까 (예 : 물리 대 순수 수학)? 아니면 다른 요인에 따라 언어를 선택합니까?

Fortran이라는 이름이 많이 들렸다 고 들었습니다.

제안?


1
C ++ 및 Fortran은 커뮤니티에서 잘 알려진 언어입니다. 최근에는 동적 언어 사용이 증가하고 있습니다. 종종 언어가 아닌 도서관을 선택합니다.
vanCompute

9
Real Programmers가 모든 언어로 Fortran을 작성할 수 있다는 내용이 떠 올랐습니다.
hardmath

1
다음은 답변이 많은 매우 유사한 질문입니다. scicomp.stackexchange.com/questions/304/c-vs-fortran-for-hpc
Ondřej Čertík

1
"나는 객관적으로 가장 좋은 언어가 없다는 것을 이해합니다"-정확하게 언어에 구애받지 않는 법을 배워서 당신이 던진 언어로 쓸 수 있습니까?
JM

2
영어를 마스터해야합니다. 그것 없이는 전산 과학의 어느 곳에서도 얻을 수 없습니다.
Johannes

답변:


15

대부분 작업을 수행하는 데 도움이되는 숫자 라이브러리가 있습니다. C / C ++에는 많은 수의 숫자 라이브러리가 구현되어 있지만, 저수준 언어 인 것이 무언가를 빠르게 프로토 타입 화하는 것이 최선은 아닙니다.

나는 해결책을 향해 빨리 가고 싶다고 생각합니다. Matlab이나 Mathematica와 같은 것을 사용하는 것이 좋습니다. 그들은 큰 툴셋을 가지고 있으며 매우 높은 수준입니다. 대부분의 경우 구현은 프로덕션 용도로 확장되지 않지만 다른 방법을 시도하기에 좋은 놀이터 일 수 있습니다. 경로를 알고 나면 언제든지 C / C ++로보다 효율적으로 무언가를 구현할 수 있습니다.


4
학계 내부와 외부의 많은 사람들은 최소한 자동화 된 테스트 도구가 최소한 없다면 코드를 신뢰하지 않습니다. matlab과 mathematica에서 툴링이 어떤지 알지 못하지만 Python 및 C ++와 같은 더 많은 주류 언어를위한 멋진 패키지가 있습니다.
cjordan1

3
MATLAB에는 MATLAB xUnit이 있지만 Python과 C ++에는 더 많은 (그리고 제 생각에는 더 나은) 테스트 스위트가 있습니다.
제프 옥스 베리

24

파이썬!

  1. numpy 라이브러리, 작은 스크립트 및 ipython 대화식 쉘을 사용하여 직접 시작하십시오 .
  2. 수많은 무료 서적과 튜토리얼 을 통해 더 발전하십시오 .
  3. scipy 를 프론트 엔드로 사용하여 생산성 이 높은 수치 루틴과 matplotlib 를 시각화 하여 생산성 을 높이십시오.
  4. 잘 개발하고 강력한 과학적 컴퓨팅 모듈을 이용 받아 Krypy , FeNiCS다른 사람을 많이
  5. 플랫 및 객체 지향 프로그래밍 사이의 원활한 전환과 Python의 고유 모듈 식으로 인해 대규모 프로젝트를 쉽게 처리 할 수 ​​있습니다.
  6. cython 에서 중요한 부분을 간단히 다시 작성하여 코드를 C 또는 Fortran처럼 빠르게 만드십시오 . Fortran 또는 C로 작성된 루틴을 쉽게 포함 할 수도 있습니다 .

이것은 과학적 컴퓨팅의 문제에 접근하는 가장 좋은 방법이라고 생각합니다. 작은 스크립트에서 장난감 예제를 사용하여 문제를 해결하는 것으로 시작하십시오. 보다 체계적이고 코드 모음을 설정하십시오. 그런 다음 코드를 작동 시키십시오 !!! 마지막으로 필요한 경우 코드 최적화를 수행하십시오. 바퀴를 재발 명하지 말고 조기 최적화를하지 마십시오.

(추가적인 장점 : 파이썬은 라이센스 문제가없고, 대규모 커뮤니티 (예 : 스택 오버 플로우, 단위 테스트 또는 로깅과 같은 훌륭한 프로그래밍을위한 모듈)를 제공합니다.)




5

포트란 : Matlab과 유사하고 배우기 쉽고 사용하기 쉬우 며 빠르게 생산성을 얻을 수 있지만 수치 컴퓨팅에만 적합

C ++ : 마스터하기가 어렵지만 (수년이 걸릴 것입니다) 수치 컴퓨팅 외부에서 많은 것을 사용했습니다 (작업 보안)

파이썬 : 요즘에는 많이 추천했지만 사소한 작업에는 너무 느립니다. 기본적으로 계산 비용이 많이 드는 모든 커널을 C로 작성한 다음 Python에서 호출합니다. 이는 적어도 두 가지 언어를 배워야한다는 것을 의미합니다


1
Fortran과 C ++의 학습 곡선은 다소 비슷하다고 주장합니다. 나는 자바, matlab 및 c #의 배경에서 각각 몇 개월 만에 문제의 간단한 끝을 해결하기 위해 충분한 기술을 습득했습니다. 누군가가 아는 언어에 따라 대부분의 큰 코드가 날짜가 지정된 버전으로 작성되어 있기 때문에 포트란보다 c ++가 배우기가 훨씬 쉽다는 것을 알 수있었습니다.
Godric Seer

@Godric : 최대 600 페이지에서 Fortran 2008 표준은 C ++ 11 (~ 1300 페이지)의 절반 미만입니다.
stali

1
@stali, 예. 그러나 예를 들어 Fortran77로 작성된 약 1 억 5 천만 줄의 레거시 코드로 작업합니다. 그래서 나는 그것을 사용할 수 있도록 77의 스타일을 배워야했고, 90-95는 유지 보수가 가능한 변경 사항 (일반적인 블록이 무섭기 때문에)을 변경 한 다음 '08은 과거 10 년 동안 붙어 있지 않았습니다. 포트란은 구어이지만 지난 수십 년 동안 엄청난 변화를 겪었으며 처음부터 시작하지 않는 한 레거시를 배우는 것은 사소한 일이 아닙니다.
Godric Seer

2
나는 파이썬이 "사소한 일에는 너무 느리다"는 말에 동의하지 않을 것이다. 실제로 행렬 벡터 곱셈 등을 순수하게 파이썬으로 작성하면 시간이 나쁠 것입니다. NumPy, Scipy는 아마도 당신에게 필요한 모든 것을 가지고있을 것입니다. 또는 다른 50,000 개의 패키지 중 하나입니다.
Nico Schlömer

1
@ NicoSchlömer 나는 "사소한 일이 너무 느리다"고 동의합니다. Python (Numpy / Scipy)에서의 시뮬레이션은 Fortran90 버전의 동일한 코드보다 약 10 배 느립니다. Fortran90 또는 C ++을 권장합니다.
fronthem

4

간단한 답변
파이썬을 통해 객체 지향 코드의 기본에 대해 배우고 C를 통해 컴퓨터 과학의 기본에 대해 배우십시오. 두 언어가 모두 괜찮다면 C ++을 배우십시오 .C ++에서 거의 모든 것을 할 수 있기 때문에 (빠르게 쓰는 데는 시간이 걸리지 만) 빠르게 실행되도록하십시오.

더 긴 대답
여기에 문제가 있습니다. 첫 번째 프로젝트의 경우 누군가의 실험실에서 다른 사람의 코드를 작업하게됩니다. 어떤 경우에는 프로그래밍 언어를 선택하는 사람이됩니다. 개인적으로 생각하는 것은 대단합니다!

초심자로서, 당신은 실제로 팔꿈치에서 당신의 엉덩이를 한동안 알지 못할 것입니다. 따라서 다른 사람의 코드에서 작업함으로써 오는 구조와 한계를 갖는 것이 좋으며 실제 프로젝트에서만 작업 할 수있는 동기와 흥분을 갖는 것이 좋습니다.

그래도 실험실에서 사용하는 언어 (특히 Matlab 인 경우)에 관계없이 파이썬, C 및 C ++를 배워야합니다. 특히, 컴퓨터 과학 분야 출신이 아닌 경우 Kernighan과 Ritchie의 "C Programming Language"를 읽어야합니다. 35 살이었고 작가들이 펀치 카드로 프로그래밍하고 있다는 인상을 받았지만, 가장 희귀 한 조류는 영원한 컴퓨터 과학 책입니다. 그것은 많은 것들을 훨씬 더 명확하게 만들 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.