포트란 학습


9

Fortran에서 프로그래밍하는 방법을 배우는 가장 좋은 방법이 무엇인지 궁금합니다.

나는 책을 찾고 있는데, 나에게 괜찮은 예는 "Fortran 95/2003 Explained""Fortran For Scientists and Engineers" 였습니다.

너희들이 어떻게 생각하는지 모르겠어?

내가 궁금해하는 또 다른 것은 사용해야 할 컴파일러입니다. Windows 7 컴퓨터 (64 비트)에서 작업합니다.

너희들이 나를 도울 수 있기를 바랍니다!

프로그래밍에 대한 나의 경험을 위해 :

  1. Matlab과 메이플은 프로그래밍 세계에 대한 첫 소개에서 친절했습니다. Matlab은 실제로 꽤 잘하는 프로그램입니다. 루프 작업에 어려움이있어서 더 효율적인 프로그램을 만들기 위해이를 결합하는 방법이 있습니다. 메이플은 기본 단계에 있습니다 (단순한 적분 등으로 솔루션을 검색하는 방법을 알고 있습니다).
  2. 그로부터 1 년 후 우리는 Visual Basic으로 C ++을 소개했습니다. 교수는 실제로 2 개월 후에 우리는 이미 포인터와 상속에 대해 논의하고있었습니다. 이 언어로 간단한 프로그램을 작성할 수 있는데, 수업 만하는 것은 여전히 ​​어려운 일이지만 연습 문제 일뿐입니다.
  3. 그리고 1 년 후 저는 Mathematica 8을 배워야했는데 요즘에도 정말 좋아지고 있습니다.

그래서 나는 약간의 프로그래밍 경험을 가지고 있지만, 그것이 엄청난 양이라고 말하지 않을 것입니다!

내가 포트란을 배우고 자하는 이유는 주로 이론 물리학을 스스로 할 수없고 이론을 테스트해야하기 때문에 수치 이론을 테스트 할 수있는 프로그램을 작성할 수 있어야하기 때문입니다. 나는 포트란이 수치 수학과 관련하여 사용할 언어가 친절하다고 들었습니다. 그래서 나는이 언어를 아는 것이 편리 할 것이라고 생각합니다.

추신 : Fortran95와 Fortran 2003의 차이점은 무엇입니까?


3
어디에서 왔는지, 가고 싶은 곳에 대해 좀 더 구체적으로 설명 할 수 있습니까? 프로그래밍 방법, 즉 다른 프로그래밍 언어를 알고 있습니까? 그리고 포트란에서 무엇을하고 싶습니까?
Pedro

그래, 아마 내 질문에 그것을 언급했을 것입니다, 내가 편집 할 수있게하십시오 :) @Pedro
Nick

1
나는 그것이 질문에 대답하지 않는다는 것을 알고 있지만 초보자로서 특정 성능 요구 사항이 없다면 Fortran보다 Python을 사용하는 것이 좋습니다. 파이썬이 비명을 지르기 때문에 실제 수학과 이론을 다루는 데 어려움이 줄어 듭니다. 또한 많은 수치 수학을 매우 간단하게 만드는 놀라운 패키지가 있습니다 (SciPy, Numpy, Matplotlib 검색). 이 도구를 사용하면 Python을 MATLAB과 매우 유사하게 만들 수 있지만, ewll과 같은 훌륭한 소프트웨어를 구축 할 수있는 언어가 있습니다. 말할 것도없이 오픈 소스입니다.
hadsed

1
Fortran 95는 Matlab과 유사하며 ISO 표준입니다. 파이썬을 사용하는 많은 사람들이 C / C ++에서 계산적으로 무거운 커널을 작성합니다. 하나는 성능을위한 것이고 다른 하나는 편리함 / 사용 편의성을위한 것입니다.
stali

답변:


4

나는 Chapman의 책에 대한 두 번째 stali의 추천을 할 것입니다. 나는 Chapman의 Fortran 90 책에서 배웠으며 매우 도움이되었습니다. 포트란 언어를 가르쳐 줄 것입니다. 프로그래밍을위한 좋은 워크 플로우에 대해서는 알려주지 않으며, Fortran을 배우고 약간 프로그래밍 한 후에 다른 곳 살펴 봐야 합니다.

Fortran 프로그래밍에 도움이되는 대부분의 온라인 리소스는 Linux 기반이 될 것입니다. 마찬가지로, 계산 과학에서 대부분의 서면 자료는 Linux 사용자를 대상으로합니다. 따라서 VirtualBox (또는 가상 운영 체제를 실행할 수있는 일종의 소프트웨어)를 설치 한 다음 Linux 배포판을 설치하는 것이 좋습니다. 이전에 Linux를 사용해 본 적이 없다면 Ubuntu, Mint 또는 Fedora와 같은 사용자 친화적 인 배포판이 아마도 가장 좋은 방법 일 것입니다. 이러한 배포는 가상 환경에서 실행되는 경우 최소량의 구성이 필요하며 운영 체제를 탐색하는 데 유용한 GUI가 있습니다. 이러한 각 배포판에는 추가 소프트웨어를 설치하는 데 사용할 수있는 패키지 관리자가 있습니다. 패키지 관리자를 사용하여 gfortran을 설치할 수 있습니다.

텍스트 편집기 (또는 IDE)에서 소프트웨어를 개발하려고하므로 명령 행의 기본을 배우는 것이 좋습니다. Software Carpentry는이 작업에 유용한 자료를 제공합니다. (면책 조항 : Software Carpentry 워크샵의 일부를 가르쳤습니다.) 그런 다음 간단한 프로그램을 작성하고 명령 줄에서 컴파일하는 법을 배우고 Makefile을 사용하는 방법을 배울 수 있습니다.

Windows 기반 작업을 수행 할 때의 문제는 계산 과학을 수행 할 때 보게 될 대부분의 온라인 자료가 Linux를 사용한다고 가정 할 것이며, 조언이 처음부터 끝났다고 가정 할 것입니다. 다운하고 시간이 걸립니다. Cygwin은 더 많은 Linux와 같은 기능을 추가하는 API 계층이지만 Linux와의 대응은 완벽하지 않으며 Linux 용으로 컴파일 된 소프트웨어는 시스템에서 작동하지 않습니다. 여전히 Windows 기본 버전을 사용하거나 Windows 용 소프트웨어를 다시 컴파일해야합니다. Visual Fortran과 같은 Windows 네이티브 Fortran 컴파일러는 비용이 많이 들지만 여전히 대부분의 Fortran 사용자와 컴퓨터 과학자들은 소프트웨어 개발에 Linux를 사용한다는 문제를 겪게 될 것입니다. 개인적인. 그러나 정말로 필요한 경우어떤 이유로 Windows 기반 소프트웨어를 배포 하는 경우 Visual Fortran과 같은 것을 사용하는 방법을 찾기 위해 모든 노력을 기울여야합니다.


충고 감사합니다! 그러나 가상 머신 대신 windows7 또는 Linux Ubuntu를 먼저 시작할 때 선택할 수있는 일종의 이중 부팅 메커니즘을 만들 수 없는지 궁금합니다. 나는 그것이 실제로 많은 시간을 절약 할 수 있다고 생각합니다! 그리고 창문으로 가야한다면 리눅스 버전의 프로그래밍 경험을 갖게되어 창문의 단계를 훨씬 빨리 밟을 수 있습니다!
Nick

당신이 원한다면 할 수 있습니다. 듀얼 부팅 설정은 유연성이 떨어지고 기술 지식과 시간이 더 필요하다고 생각합니다 (파티션의 크기를 조정하고 부팅 로더를 올바른 방법으로 설정하는 등). 또한 가상 컴퓨터를 새 컴퓨터로 마이그레이션하기가 더 쉽다고 생각합니다. 이는 동료와 작업을 공유하거나 새 컴퓨터를 구입하여 모든 작업을 마이그레이션하려는 경우 유용 할 수 있습니다.
제프 옥스 베리

나는 마침내 모든 필요한 모든 단계를 통과 할 시간을 찾았습니다. VirtualBox와 Linux (Ubuntu)가 설치되어 있습니다. 이제 어떤 컴파일러가 최고의 컴파일러인지 궁금합니다. 나는 그 부분에 대해 온라인에서 많은 것을 찾을 수없는 것 같습니다 : s. 누군가 gfortran이라고 말하는 걸 들었습니까?
Nick

2
gfortran은 자유롭고 아마도 가장 저항이 적은 경로 일 것입니다. 대부분의 다른 컴파일러는 개인적 또는 학문적 사용을 제외하고는 라이센스를 구입해야합니다. (예를 들어 인텔의 컴파일러는 무료로 개인용으로 만 다운로드하여 사용할 수 있다는 것을 알고 있습니다. 자세한 내용은 라이센스를 읽어야합니다.) HighPerformanceMark는 컴파일러의 성능을 비교할 수있는 웹 사이트에 연결되어 있습니다.
Geoff Oxberry

6

Metcalfe 책은 Fortran의 최신 기능에 대한 주석이 달린 안내서로, 이전 버전의 언어를 알고 있지만 언어 프로그래밍에 대한 소개는 잘 모르는 경우 매우 유용합니다.

내 돈으로는 Chiver 's와 Sleightholme 책Brainerd 책 이 충분하지만 Ellis et al 만큼 좋지 않다고 생각하지만 Fortran 2003 이상에서는 업데이트되지 않았습니다.

나는 채프먼 책에 대한 강한 혐오감을 가지고 있습니다. 90/95 에디션을 너무 싫어하는 이유가 기억 나지 않아이 혐오감을 더 이상 정당화 할 수 없으므로 편견으로 할인 할 수 있습니다.

그러나 주저없이 추천하는 한 권의 책은 Arjen Markus의 책 입니다. 그것은 여전히 ​​언어의 기본 기능을 알아 내려고 시도하는 누군가에게 이상적인 소개는 아니지만 일단 숙달 한 후에는 가치있는 물질에 무게가 있습니다.

사용할 컴파일러는 Intel 컴파일러를 사용하며 일반적으로 만족합니다. 그것은 당신에게 중요 할 수있는 Visual Studio와 통합됩니다. NAG 컴파일러는 더 나은 오류 및 경고 메시지를 갖지만 실행 파일은 느리게 (일반적으로 경험이 다를 수 있음) 생성합니다. gfortran 컴파일러는 무료이며 충분한 리뷰를 얻지 만 내가 사용하는 것은 아닙니다. 더 많은 것을 알고 싶다면 다면체 가 당신에게 말할 것입니다.


Markus 책에는 훌륭한 TOC가 있습니다.
AlexE

그렇습니다. 마르쿠스 책은 참으로 훌륭한 책처럼 보입니다. 그래서 그것은 제가 분명히 고려할 책입니다! 컴파일러의 경우 빠른 실행 파일이 필요한 것만 필요합니다 (Visual Studio와의 통합 필요 없음).
Nick

인텔 컴파일러는 일반적으로 빠르다고 생각합니다.
AlexE

3

책의 경우 Metcalf / Reid / Cohen의 "Modern Fortran Explained"를 추천합니다. 그것은 교과서보다 더 많은 참조이지만, 일반적으로 프로그래밍에 일반적으로 노출되어 있다면 (C와 같이) 잘 작동합니다.

그 책 외에도 Ondřej Čertík 의 웹 사이트 http://fortran90.org/를 강력히 추천 합니다. 처음에는 포트란을 가르쳐주지는 않지만 일련의 모범 사례를 제공합니다. Fortran은 다양한 프로그래밍 방법을 허용합니다. 결국 하향 호환성이 있습니다. 여기에 제공된 모범 사례는 일관되고 현대적인 포트란 스타일을 개발하는 데 도움이됩니다. 또한 FAQ에서 관심을 가질 것입니다.


2
F90 모범 사례 페이지에 대한 의견이 많았 기 때문에 정말 도움이되었습니다.
Daniel Shapero

2

채프먼 스 책은 더 초보자 친화적이고 좋은 참고 자료라고 생각합니다. 두 번째 저자는 모두 전문가이지만이 책은 나중에 도서관에 추가 될 것입니다.

처음에는 Fortran 95를 고수하고 나중에 필요한 경우 Fortran 2003으로 이동하는 것이 좋습니다. Fortran 95는 배우기 쉽고 (거의 Matlab과 유사) 매우 빠르게 생산성을 높일 수 있습니다.

Linux에는 valgrind, gdb, gnuplot (빠른 viz), svn / hg 등과 같은 다양한 도구 세트 외에도 많은 무료 Fortran 컴파일러 (GNU, Solaris Studio, Open64 등)가 있습니다. 숫자 라이브러리 (blas / lapack / netcdf / fftw 등)를 포함하여 사전 컴파일 된 패키지는 명령이 필요하지 않습니다 (적어도 apt-get이있는 데비안에서는).

Windows의 경우 cygwin을 사용하면 GNU Fortran 컴파일러 외에도 위의 도구 / lib에 쉽고 빠르게 액세스 할 수 있으므로 cygwin을 사용하는 것이 좋습니다. 따라서 cygwin.com으로 가서 gfortran 및 선택한 편집기와 함께 핵심 패키지를 설치하십시오 (vim이 좋습니다). 좋은 시작이되어야합니다. 나중에 다른 것이 있다면 apt-cyg 패키지를 사용하여 물건을 설치하는 것이 좋습니다 .


1
vim (또는 그 문제에 대해서는 emacs)을 첫 번째 텍스트 편집기로 권장하지 않습니다. 직관적이지 않은 키 조합을 사용하여 첫 번째 텍스트 편집기로 사용하기위한 필수 기능 (잘라 내기, 복사, 붙여 넣기, 찾기, 찾기 / 바꾸기)이 너무 많으며 새로운 학습자가 간단한 작업을 수행하기 위해 수행해야하는 모든 추가 익숙하지 않은 단계가 있습니다. 텍스트 편집기를 권장하는 경우 소프트웨어 개발의 한 형태 일 수 있습니다.
제프 옥스 베리

1
첫 번째 편집자로서 저는 3 주, 3 개월 또는 3 년 후에 성장할 도구가 아니라 필요한 유일한 편집자가 될 수있는 도구를 추천합니다. 이러한 이유로 Emacs와 Vim은 모두 첫 번째 편집자에게 적합합니다. 물론 그들은 다른 사람들보다 초기에 습득 한 학습 곡선을 가질 수 있지만 많은 프로그래머가 그 가격을 지불하고 가치있는 보상을 찾았습니다.
고성능 마크

귀하의 의견은 잘못된 선택을합니다. vim / emacs를 배우고 가파른 학습 곡선에도 불구하고 평생 사용할 수있는 편집기를 갖추거나 배우기 쉬운 다른 도구를 사용하십시오. 많은 전문 프로그래머는 gedit, Sublime Text, TextMate, TextWrangler 등과 같은 가파른 학습 곡선을 가진 다른 도구를 사용하고 잘 작동합니다. Vim과 emacs는 훌륭한 편집자입니다. 저는 둘 다 사용하지만 프로그래밍을 위해 유일하고 명확하게 탁월한 선택은 아닙니다 (WolfgangBangerth도 IDE에 적합합니다).
제프 옥스 베리
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.