레거시 Fortran Soapbox
나는 꽤 오랫동안 레거시 Fortran 코드 기반을 유지 / 개선하는 데 도움을 줬고 대부분의 경우 sixlettervariables 가 돈에 있다고 생각 했습니다 . 그러나 그 조언은 기술적 인 경향이 있습니다. 더 어려운 행은 "우수 사례"를 구현하는 것입니다.
- 필요한 코딩 스타일 및 코딩 지침을 설정합니다.
- 코드베이스에 제출 된 모든 항목에 대해 코드 검토 (코더 이상의 것!)를 요구합니다. (버전 제어는이 프로세스와 연결되어야합니다.)
- 단위 테스트 빌드 및 실행을 시작하십시오. 벤치 마크 또는 회귀 테스트도 마찬가지입니다.
요즘은 당연한 일처럼 들릴지 모르지만 과도하게 일반화 될 위험이 있지만 대부분의 포트란 코드 상점에는 확고한 문화가 있으며 일부는 "소프트웨어 엔지니어링"이라는 용어가 존재하기 전에 시작되었으며 시간이 지남에 따라 지배하게 될 것이라고 주장합니다. "지금 완료"입니다. (이것은 Fortran 상점에만 국한되지 않습니다.)
Gotchas 수용
하지만 이미 존재하는 끔찍한 오래된 레거시 코드베이스로 무엇을해야할까요? 나는 다시 작성에 Spolsky 조엘에 동의 하지 않습니다 . 그러나 내 생각에 sixlettervariables 는 허용 가능한 예외를 가리 킵니다. 소프트웨어 도구를 사용하여 더 나은 Fortran 구조로 전환합니다. 코드 분석기 ( FORCHECK ) 및 코드 재 작성기 ( plusFORT ) 는 많은 것을 포착 / 수정할 수 있습니다 . 손으로해야하는 경우 긴급한 이유가 있는지 확인하십시오. (저는 소프트웨어 버그 수정에서 나온 소프트웨어 버그의 수에 대한 언급이 있었으면 좋겠습니다. 겸손합니다. 그러한 통계는 Expert C Programming 에 있다고 생각 합니다.)
아마도 Fortran gotchas 게임에서 승리하는 가장 좋은 공격은 최고의 방어력을 갖는 것입니다. 언어를 상당히 잘 아는 것입니다. 이를 위해 ... 책을 추천합니다!
포트란 데드 트리 라이브러리
나는 수년 동안 "QA nag"로서 약간의 성공을 거두었지만 교육은 때때로 우연히 효과가 있으며 가장 영향력있는 것 중 하나는 누군가가 가지고있는 참고서라는 것을 발견했습니다. 나는 사랑하고 적극 추천합니다
과학자 및 엔지니어를위한 Fortran 90/95 , Stephen J. Chapman
이 책은 사용해서는 안되는 구조를 구체적으로 식별하고 더 나은 대안을 제공한다는 점에서 Fortran 77 과도 잘 어울립니다. 그러나 실제로는 교과서이며 Fortran 95의 핵심을 알고 싶을 때 증기가 떨어질 수 있습니다.
Fortran 90/95 Explained , by Michael Metcalf & John K. Reid
Fortran 95에 대한 참조 (원문)로. 가장 명쾌한 글은 아니지만 새로운 Fortran 95 기능을 최대한 활용하고 싶을 때 베일이 해제됩니다.
Fortran 77에서 Fortran 90으로 이동하는 문제에 초점을 맞춰
Fortran 90으로 마이그레이션 , Jim Kerrigan
그러나 책은 이제 절판되었습니다. (저는 O'Reilly의 Safari 사용을 이해하지 못합니다 . 왜 절판 된 책을 모두 사용할 수 없습니까?)
마지막으로, 훌륭한, 멋진 클래식,에 후계자에 관한 소프트웨어 도구 , 나는 지명
Michael Kupferschmid의 클래식 포트란
이 책은 "오직"Fortran 77으로 무엇을 할 수 있는지 보여줄뿐만 아니라 발생하는 더 미묘한 문제에 대해서도 설명합니다 (예 : EXTERNAL 선언을 사용해야하거나 사용해서는 안 됨). 이 책은 "Software Tools"와 똑같은 공간을 정확히 다루지는 않지만 "fun"이라고 태그를 붙인 세 개의 Fortran 프로그래밍 책 중 두 권입니다 .... ( 여기 세 번째입니다 ).
거의 모든 Fortran 컴파일러에 적용되는 기타 조언
- IMPLICIT NONE 동작을 적용하는 컴파일러 옵션이 있으며,이를 사용하여 먼저 IMPLICIT NONE 선언으로 수정하지 않고 문제 루틴을 식별 할 수 있습니다. 이 조언은 레거시 루틴에 삽입 된 IMPLICIT NONE 명령으로 인해 처음 빌드 폭탄이 터지기 전까지는 의미가 없어 보입니다. (뭐? 코드 리뷰에서이 문제를 파악하지 못했습니까? ;-)
- Fortran 77 코드를 디버깅 할 때 유용 할 수있는 배열 경계 검사를위한 컴파일러 옵션이 있습니다.
- Fortran 90 컴파일러는 거의 모든 Fortran 77 코드와 더 오래된 Fortran 코드를 컴파일 할 수 있어야합니다. Fortran 90 컴파일러에서보고 옵션을 켜고이를 통해 레거시 코드를 실행하면 구문 검사를 제대로 시작할 수 있습니다. 일부 상용 Fortran 77 컴파일러는 실제로 Fortran 77 모드에서 실행되는 Fortran 90 컴파일러이므로 어떤 빌드 스크립트를 사용하든 상대적으로 간단한 옵션이 될 수 있습니다.